Проблемы в процессе разработки программного обеспечения
Организация процесса разработки ПО
Лекция 12
Многие проекты разработки программного обеспечения терпят неудачу. Можно выделить несколько основных показателей, характеризующих "провал" проектов.
• Неточное понимание требований конечных пользователей
• Неспособность работы в условиях меняющихся требований
• Разрабатываемый продукт состоит из несовместимых модулей
• Программное обеспечение трудно поддерживать или расширять
• Позднее обнаружение существенных изъянов проекта
• Плохое качество программного обеспечения
• Неприемлемая производительность
• Каждый сотрудник занимается чем-то своим, причем непонятно, кто, когда, где и зачем что-либо меняет
• Ненадежный процесс создания-выпуска ПО
Большинство неудач происходит вследствие сочетания следующих основных причин.
• Неумелое управление специальными требованиями
• Неопределенная и неточная связь
• "Хрупкая" архитектура
• Чрезмерная сложность
• Необнаруженные противоречия в требованиях, проектах и реализациях
• Недостаточное тестирование
• Субъективная оценка состояния проекта
• Неспособность справиться с реализовавшимся риском
• Неуправляемое распространение изменений
• Недостаточная автоматизация
Своевременное распознание причины позволяет не только устранить ее симптомы, но и занять более выгодное положение с точки зрения разработки и поддержки качественного программного обеспечения посредством процесса, который можно повторить, а результаты действия которого можно предсказать.
Советы по организации производственных процессов можно сформулировать следующим образом.
1. Разрабатывайте итеративно
2. Управляйте требованиями
3. Пользуйтесь модульными архитектурами
4. Используйте визуальное моделирование
5. Осуществляйте проверку качества
6. Следите за изменениями
Классический подход к разработке программного обеспечения включает каскадный жизненный цикл.
Основной проблемой этого подхода является рост риска со временем; так что устранять ошибки предыдущих этапов становится слишком дорого.
Альтернативой каскадному подходу является спиральный итеративный процесс. При таком подходе установление рисков, угрожающих проекту, осуществляется на более ранних этапах жизненного цикла, когда еще можно эффективно и своевременно реагировать на них. С помощью данного подхода осуществляется непрерывное обнаружение, исследование и реализация.
Итеративный подход устраняет основные причины проблем в процессе разработки программного обеспечения.
1. Существенные недоразумения становятся очевидными на ранних этапах жизненного цикла, когда еще можно принять меры по их устранению.
2. Описанный подход способствует установлению обратной связи с пользователем в целях выяснения истинных требований к системе.
3. Группа разработчиков сосредотачивается на особо важных вопросах проекта, а не на тех, которые только отвлекают внимание команды от действительно опасных моментов.
4. Непрерывное итеративное тестирование позволяет объективно оценить состояние проекта.
5. Противоречия в требованиях, проектах и реализациях выявляются раньше.
6. Нагрузка команды (особенно команды тестирования) возрастает по мере развития проекта.
7. Команда может обучаться и вследствие этого непрерывно улучшать процесс.
8. На протяжении всего жизненного цикла проекта его организаторы могут получать реальное представление о текущем состоянии проекта.