InfoWorld, США
Методы скорой (agile) разработки, позволяющие создавать программное обеспечение быстрее, чем традиционным способом, похоже, себя не оправдывают. В этом постарался убедить своих слушателей Стив Макконнелл, главный разработчик компании Construx Software Builders и автор нескольких книг (в их числе Code Complete, Rapid Development и Project Survival Guide), выступая на недавней конференции SD West 2006, прошедшей в Санта-Кларе (Калифорния).
Касаясь вопроса о правильных и неправильных, по его мнению, суждениях, связанных с разработкой программного обеспечения, Макконнелл отметил, что именно мешало реализации методов скорого программирования до сих пор.
По его словам, предполагалось, что эта технология будет ориентирована на индивидуальных программистов, а не на процессы и инструментальные средства, как это в основном происходит сейчас.
По его словам, эта технология вызвала огромный энтузиазм, что, впрочем, было и в случае с другими новыми технологиями, такими как CASE.
Макконнелл одновременно подверг критике и те методы создания программных продуктов, которые исходят из предположения, будто разработчики всеведущи и им известны все требования еще до того, как они приступают к созданию архитектуры. По словам Макконнелла, на этом абсолютно неверном предположении, например, основана традиционная каскадная (waterfall) методология программирования, которой принято противопоставлять скорые, или итерационные методы.
К «правильным» суждениям, касающимся разработки программного обеспечения, по мнению Макконнелла, относятся следующие:
- Понимание того, что разработкой программ занимаются живые люди, и их личные качества имеют определяющее значение для успеха программных проектов.
- Разработку программного обеспечения крайне важно вести поэтапно и постепенно.
- Затраты на исправление ошибок со временем растут.
- Ход мыслей разработчика в целом предсказуем и следует определенным интеллектуальным шаблонам.
- Способность определять точные сроки со временем улучшается.
- Самая мощная форма повторного использования - это полное повторное использование.
- Управление рисками позволяет максимально детально разобраться во многих вопросах, возникающих в процессе разработки. (Макконнелл разделяет операции управления рисками на внешние, которые дополняют проект, и внутренние, такие как контроль выполнения проекта и создание прототипов пользовательского интерфейса.)
- Разное по типу программное обеспечение требует разных методик разработки.
- Создан свод знаний по программной инженерии SWEBOK, где представлены такие дисциплины, как управление конфигурацией, поддержка и тестирование.
«Я не уверен, что SWEBOK дает ответы на все вопросы, — заметил Макконнелл. — И тем не менее я считаю, что это неплохое начало».
Среди наихудших методологических воззрений Макконнелл упомянул следующие:
- Существует только два способа разработки: применять итерационный подход ко всему и отвергать итерационный подход вообще в пользу каскадной модели.
- Проекты, выполняющиеся по методу скорой разработки, избавлены от проблем, связанных с постепенным увеличением стоимости исправления ошибок. "Исследования пока не подтверждают этого", - настаивает Макконнелл.
- Мы должны смириться с отдельными недоработками в программных проектах, поскольку они направлены на решения особо "неприятных" проблем.
- Требования всегда меняются. "Единственная и наиболее распространенная причина изменения требований заключается в том, что эти требования на первом этапе реализации проекта не были тщательно изучены и точно сформулированы", - считает Макконнелл.
- Можно напряженно заниматься "извлечением" требований, но бывает и так, что они уже готовы как бы сами по себе.
- Один единственный подход к разработке прекрасно подходит для всех без исключения проектов.
Один из участников конференции, инженер-разработчик компании Stryker Endoscopy Прабху Раджаван сказал, что прежде он уже читал некоторые работы Макконнелла, и ему понравилось, что во время презентации тот особо подчеркивал уникальность каждого программного проекта. Не меньший отклик в душе Раджавана нашли слова Макконнелла, сказанные относительно идентификации рисков и управления ими.