April 16th, 2009

cartoon

Аннотация к моему докладу на SoftwarePeople



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

В докладе будет представлена методика планирования, основанная на опыте кросс-дисциплинарных проектов в области разработки ПО, аппаратных комплексов, и микроэлектроники. Методика представляет собой систематический подход к планированию эмпирических процессов, увязывающий воедино problem solving и process engineering, и решающий обозначенную проблему. Данный подход делает практичным кастомизацию процесса разработки под каждый проект, позволяет проверять планы на логическую корректность, и в целом значительно упрощает групповую работу над планом, повышая его качество.

Также, в докладе будут рассмотрены социальные аспекты, связанные с планированием, и командный принцип Auftragstaktik, являющийся основным руководящим принципом в немецкой армии, имеющий оптимальный баланс управляемости и децентрализации в условиях неопределенности. Будет показано, что предлагаемая методика в полной мере реализует Auftragstaktik.

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

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

Второй способ использования данной модели близок по духу к agile - работать непосредственно с "картой целей", применяя тайм-боксинг планирование для определения их дат.

Также, модель может быть применена в качестве инструмента борьбы со сложностью при разработке общей структуры крупных планов, с целью распараллелить работы по планированию и обеспечить корректную сшивку независимо разработанных планов в общий план.