Этап интеграции
Наращиваемая разработка предполагает наращиваемую интеграцию программных модулей. Эта задача не так проста, как может показаться на первый взгляд. Для больших систем интеграция отдельных модулей может потребовать больше времени и усилий, чем любой из более ранних этапов ЖЦ, включая реализацию. Еще Аристотель заметил, что целое больше простой суммы частей. Интеграция модулей должна быть тщательно спланирована в самом начале жизненного цикла ПО. Программные компоненты, подлежащие отдельной реализации, должны быть идентифицированы на ранних стадиях анализа системы. Порядок реализации должен позволять как можно более плавную наращиваемую интеграцию. Основная трудность, связанная с наращиваемой интеграцией, заключается в существовании взаимных обратных зависимостей между модулями. Хороший проект системы отличается минимальной связностью (coupling) модулей. Тем не менее, время от времени два модуля оказываются зависимы друг от друга, так что ни один из них не может функционировать изолированно. Что делать, если необходимо поставить один из модулей еще до того, как другой готов к применению? Ответ состоит в написании специальной программы (макета, заглушки) для временного " заполнения бреши" так, чтобы все модули оказались интегрированными. Программная процедура, предназначенная для имитации работы отсутствующего модуля, называется заглушкой (stubs). В отличие от традиционных программных систем, основанных на понятии главной программы, в современных объектно-ориентированных системах, управляемых событиями, отсутствует центральная интеллектуальная (главная) программа. Более того, в современных системах отсутствует четко определенная интеграционная структура. Традиционные стратегии интегрирования сверху-вниз или снизу-вверх не применимы к современным системам. Объектно-ориентированные системы должны быть спроектированы под интеграцию. Каждый модуль должен быть как можно более независимым. Зависимости между модулями необходимо идентифицировать и минимизировать на этапах анализа и проектирования. В идеале, каждый модуль должен образовывать один поток обработки, который запускается в ответ на определенное требование клиента. Использования заглушек как операций замещения следует, по возможности, избегать. Если система спроектирована недостаточно качественно, этап интеграции приведет к хаосу и поставит под угрозу весь проект по разработке системы.
|