Преимущества и недостатки прототипирования

Прототипирование преимущества и недостатки

Преимущества и недостатки прототипирования

Преимущества прототипирования

Прототипирование имеет много преимуществ при разработке программного обеспечения – одни материальные, другие абстрактные.

Сокращение времени и затрат: создание прототипов может улучшить качество требований и стандартов, доступных разработчикам. Поскольку из-за необходимости вносить изменения позже, их цена растет экспоненциально, раннее определение того, что действительно хочет пользователь, может привести к более быстрой и менее затратной разработке программного обеспечения.

Улучшенное и увеличенное взаимодействие с пользователем: прототипирование требует участия пользователя, чтобы увидеть и общаться с прототипом, обеспечивая лучшую и более полную обратную связь и более точное описание требований и системы. Наличие протестированного пользователем прототипа позволяет избежать многих недоразумений и недоразумений, которые могут возникнуть, когда обе стороны некритически полагают, что другая сторона понимает то, что они сказали. Поскольку пользователи знают проблемную область лучше, чем кто-либо в команде разработчиков, усиление взаимодействия должно привести к продукту, который будет иметь более ощутимое и нематериальное качество. Полученный продукт, скорее всего, будет лучше соответствовать воображению пользователя по внешнему виду, функциональности и дизайну.

Недостатки прототипирования

У прототипирования тоже есть недостатки.

Недостаточный анализ: концентрация на ограниченном прототипе может отвлечь разработчиков от правильного анализа всего проекта. Это может привести к игнорированию лучших решений, созданию неполных описаний или преобразованию ограниченных прототипов в плохо спроектированные конечные продукты, которые трудно поддерживать . Если прототип имеет ограниченную функциональность, он не может быть хорошо масштабирован, если прототип используется в качестве отправной точки для конечного продукта, что может остаться незамеченным, если разработчики слишком сосредоточены на создании прототипа в качестве модели.

Путаница пользователя в отношении прототипа и результирующей системы: пользователи могут ошибочно полагать, что прототип, который следует отбросить, является ненастроенной целевой системой (например, они часто не осознают усилия, необходимые для дополнения проверок ошибок и функций безопасности, которых не может иметь прототип). Из-за этого они могут предположить, что прототип точно моделирует получившуюся систему, даже если это не входит в намерения разработчиков. Пользователи также могут ошибочно полагаться на функции, которые были включены в прототип для их оценки и которые в конечном итоге были удалены из полученной системы. Если от пользователей требуется, чтобы все предлагаемые свойства были включены в результирующую систему, это может привести к конфликту.

Непонимание разработчиками потребностей пользователей: разработчики могут предположить, что пользователи разделяют их цели (например, предоставление базовой функциональности вовремя и в рамках бюджета), не понимая более широких коммерческих вопросов. Например, представители клиентов на корпоративных встречах по программному обеспечению. Они могут заказать эту функцию под влиянием примеров «аудита транзакций» (которые записывают изменения, которые могут отображаться в таблице различий), не осознавая, что это требует дополнительного кодирования и, как правило, более мощного оборудования для обработки дополнительных обращений к базе данных. Пользователи могут подумать, что им может потребоваться аудит во всех областях, в то время как разработчики могут счесть это необходимой или ненужной функцией, потому что они уже сформировали представления об объеме требований пользователей. Если разработчики взяли на себя обязательство предоставить эту функциональность до рассмотрения требований пользователей, они окажутся между двумя жерновами, особенно если заказчик договорился о санкциях за несоблюдение требований реализации.

Разработчики цепляются за прототип: разработчики могут слишком цепляться за прототип, для создания которого они приложили много усилий; это может привести к таким проблемам, как попытка преобразовать ограниченный прототип в результирующую систему, даже если она не имеет подходящей базовой архитектуры (это может означать, что следует использовать отбрасываемое прототипирование вместо эволюционного).

Избыточное время разработки прототипа: ключевой особенностью прототипирования является тот факт, что оно должно быть выполнено быстро. Если разработчики упускают этот факт из виду, они могут попытаться разработать слишком сложный прототип. Когда от прототипа отказываются, точные разработанные требования, которые он предоставляет, не могут дать достаточного увеличения производительности, чтобы обеспечить время, потраченное на разработку прототипа. Пользователи могут застрять в обсуждениях деталей прототипа, что задерживает команду разработчиков и задерживает доставку конечного продукта.

Затраты на реализацию прототипирования: начальные затраты на создание команды разработчиков прототипов могут быть высокими. Многие компании имеют определенную методологию разработки, и ее изменение может потребовать переобучения и смены инструментов. Поэтому многие компании пытаются внедрить прототипирование без переподготовки своих сотрудников.

Распространенная проблема при внедрении прототипов – высокая ожидаемая производительность при недостаточных усилиях, скрытых в кривой обучения. Если эти базовые структуры опущены, может произойти снижение производительности.

Лучшие проекты с использованием прототипирования

Хотя заявлено, что некоторая форма прототипирования может использоваться в любом проекте, прототипирование приносит наибольшую пользу системам, которые имеют много взаимодействий с пользователями.

Было установлено, что прототипирование очень эффективно для анализа и проектирования онлайн-систем, особенно для обработки транзакций , где использование экранных диалогов гораздо более актуально. Чем сильнее взаимодействие между компьютером и пользователем, тем больше преимуществ от быстрого создания системы, с которой пользователь может играть.
Для систем с минимальным взаимодействием с пользователем, таких как пакетная обработка или системы, которые обычно выполняют вычисления, прототипирование не приносит особых преимуществ. Иногда кодирование, необходимое для создания системных функций, может быть слишком интенсивным, а потенциальные выгоды, которые может принести прототипирование, слишком малы.

Прототипирование особенно подходит для разработки хороших интерфейсов для взаимодействия человека с компьютером

«На сегодняшний день одним из наиболее продуктивных применений быстрого прототипирования является итеративная разработка требований пользователей и проектирование человеко-машинного интерфейса»