
4. АРХИТЕКТУРЫ ПРОГРАММНЫХ СИСТЕМ
4.2. Проектирование архитектуры
Технологии разработки программного обеспечения. Учеб. пособие -149-
ноценные элементы), для того чтобы реализация выбранных функций стала
возможной.
Таким вот образом в систему можно вводить все новые и новые эле-
менты, пока они не закончатся. На любом из таких этапов действия по инте-
грации и тестированию не представляют большой сложности; равным обра-
зом легко обнаружить источник недавно появившихся неисправностей. Чем
мень
ше приращение, тем более предсказуемы бюджет и график и тем больше
диапазон решений по поставке у управленцев и специалистов по маркетингу.
Заглушенные элементы, несмотря ни на что, приближают момент за-
вершения работы над системой. Поскольку заглушки относятся к тем же ин-
терфейсам, которые будут присутствовать в окончательной версии системы,
даже в отсутствии полноценной функциональности они помогают уяснить и
протестировать взаимодействие между компонентами. Проверить это взаи-
модействие с помощью ко
мпонентов-заглушек можно двумя способами: пу-
тем генерирования жестко закодированных искусственных выходных данных
или считывания таких данных из файла. Кроме того, они способны генериро-
вать искусственную нагрузку, по результатам которой можно приблизитель-
но определить, ско
лько времени уйдет на фактическую обработку данных в
законченной рабочей версии системы. Это помогает на ранней стадии проек-
тирования выявить требования по производительности системы, включая ра-
бочие взаимодействия и узкие места.
Согласно Кусумано (Cusumano) и Селби (Selby), компания Microsoft
выстраивает свою стратегию на основе эволюционного жизненного цикла
поставки (Evolutionary Delivery Life Cycle). По той версии методики, которой
пользуется Microsoft, «завер
шенный» макет системы создается на раннем
этапе жизненного цикла продукта, а впоследствии с некоторой регулярно-
стью (во многих случаях ежедневно), строятся «рабочие» версии с сокращен-
ной функциональностью. В результате получается рабочая система, о доста-
точности характеристик которой можно принять решение в любой момент и
которую в любой же момен
т можно развернуть. Есть, впрочем, одна пробле-
ма, которую следует предусмотреть, – дело в том, что та рабочая группа, ко-
торая заканчивает свою часть системы первой, задает интерфейс, которому
должны соответствовать все последующие системы. Это обстоятельство ста-
вит в невыгодное положение наиболее сложные части системы – их разра-
ботка сопряжена со значительно большими объемами ан
алитических дейст-
вий, вследствие чего вероятность первоочередного определения их интер-
фейсов сильно снижается. Таким образом, и без этого сложные подсистемы
становятся еще более сложными. По нашему убеждению, все согласования
по поводу интерфейсов следует проводить на этапе создания макета системы –
при таком условии на последующих стадиях разработки можно будет обра-
тить большее внимание на д
остижение эффективности.