Этапы разработки.
2008-11-24

1. Декомпозиция.
Проводится декомпозиция поставленной задачи и составление списка подзадач. Если речь идет о написании компонента составляется перечень компонентов, которые должны входить в его состав. Для многих задач декомпозиция проводится по ходу прочтения требований.
2. Прототипы и прогнозы.
Сделать или взять из SDK examples прототипы отдельных компонентов. Обычно в роли прототипов используются примеры из SDK или примеры использования Open-Source библиотек (если предполагаемая реализация компонента основывается на Open-Source библиотеке). Если какой-то из компонентов нужно написать с ноля, его написание выделяется в отдельную подзадачу. Прототип демонстрирует тот факт, что поставленная задача в принципе решаема. Так же прототип является основанием для грубого прогнозирования необходимого времени для решения задачи. Обычно код прототипа частично или полностью входит в конечный результат.
3. Архитектура.
Прототипы компонентов дают информацию о том, каким образом компоненты должны взаимодействовать, и какие связи между ними должны быть. Если предполагается что некоторые компоненты будут разрабатываться сторонними подрядчиками или вообще после релиза проекта, нужно сделать эти компоненты съемными – плагинами. Интерфейсы плагинов должны быть разработаны и документированы особенно тщательно. Так как их изменение требует гораздо больших затрат времени чем изменения интерфейсов обычных компонентов.
4. Планирование.
На основе архитектуры и прототипов, составляются детальные требования. Определяются критические места, оцениваются риски, проводится детальная оценка времени. Составляется план реализации компонентов. При этом особое внимание уделяется самым сложным и самым важным компонентам.
5. Реализация.
Начинается реализация компонентов. На основе реальной скорости реализации проводится коррекция запланированного времени, и при необходимости, принимаются меры, например исключаются некоторые пункты требований или снижается качество если это приемлемо и решает проблему нехватки времени.
6. Подзадачи.
Каждая отдельна подзадача, по возможности реализуется в отдельном тестовом приложении. Когда реализация закончена, код реализующий задачу интегрируется в основное приложение, а тестовое приложение оформляется в виде юнит-теста.

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