суббота, 27 октября 2012 г.

Что такое прототип и для чего он нужен?

Я продолжаю цикл "Интересные цитаты из книги Карла Вигерса". Все статьи по книге:
[1] [2] [3] [4]

В последнее время все чаще и чаще речь заходит о так называемых прототипах ПО. Вот и на confetQA (онлайн конференция для тестировщиков) о них говорят. Но что же это все-таки такое - прототипы?

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

Какие бывают прототипы?

Горизонтальный прототип (Horizontal prototype).

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

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

Вертикальный прототип (vertical prototype).

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

Одноразовые прототипы.

Прежде чем создать прототип, примите четкое и ясное решение, прекратите ли вы работать с ним после оценки или сделаете его частью выпускаемого продукта. Создайте одноразовый прототип (throwaway prototype), или исследовательский прототип (exploratory prototype), чтобы ответить на вопросы, разрешить неясности и улучшить требования.

Но при этом стройте его как можно более быстро и дешево. Иначе потом сложно будет с ним расстаться. И никогда, никогда (!) не кладите одноразовый прототип в основу архитектуры кода - так как для "дешевой" реализации прототипа разработчики используют крайне неоптимальные методы. В этом и заключается главная ловушка таких прототипов, жаль отказаться, а применить нельзя. Или показали пользователям, а те думают, что код уже практически написан. А ведь это не так, для этого есть...

Эволюционные прототипы.

В отличие от одноразового прототипа, эволюционный прототип (evolution prototype) представляет собой прочный архитектурный "фундамент"для постепенного создания окончательного продукта - по мере прояснения требований. Эволюционное прототипирование - один из компонентов модели спирального цикла разработки ПО.

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

Бумажные и электронные прототипы.

Не всегда для разрешения неопределенностей в требованиях нужен прототип в виде исполняемого кода. Бумажный прототип (paper prototype), иногда его называют низкокачественным прототипом - это дешевый, быстрый и низкотехнологичныйспособ выяснить, как может выглядеть некий фрагмент системы. Он помогает установить, действительно ли пользователи и разработчики одинаково понимают требования. Похожий метод, называемый методом раскадровки (storyboard), показывает предлагаемый интерфейс пользователя, без привлечения пользователей к работе с ним.

Вот такие бывают прототипы. Конечно, на одном только создании прототипа дело не заканчивается, его еще надо оценить, а тут есть свои ловушки и подводные камни... Но тем не менее - чем раньше вы получите feed-back от конечного пользователя, тем больше у вас шансов сделать именно такую систему, которая ему и нужна.

Пользователь может прочитать ТЗ и сделать свои выводы, а разработчики свои. Чтобы не получилось в итоге "ой, как неудобно с этим работать", очень полезно использовать прототипы. Особенно, если у вас не итеративная модель разработки и Заказчик свой продукт увидит не скоро...

3 комментария: