
4. АРХИТЕКТУРЫ ПРОГРАММНЫХ СИСТЕМ
4.1. Планирование архитектуры
Технологии разработки программного обеспечения. Учеб. пособие -137-
ни одной отдельно взятой структуры, которую можно было бы уверенно на-
звать архитектурой, не существует. В частности, все нетривиальные проекты
делятся на блоки реализации; между этими блоками распределяются некото-
рые обязанности, и они же в большинстве случаев выступают в качестве базы
для разделения задач между группами программистов. В таких элементах на-
ряду с программами и данными, доступными для вызова или обращения со
стороны други
х программных средств и блоков реализации, содержатся при-
ватные программы и данные. В крупных проектах эти элементы почти всегда
разделяются на мелкие части, а обязанности по работе с ними распределяют-
ся между несколькими мелкими группами разработчиков. Довольно часто
описания сист
ем составляются при помощи таких структур. Ориентирован-
ные на разделение функций системы между различными группами исполни-
телей реализации, они отличаются чрезмерной статичностью.
Другие структуры в большей степени ориентируются на взаимодейст-
вие элементов в период прогона с целью исполнения функции системы.
Представим, что систему предполагается сконструировать в виде ряда парал-
лельных процессов. В этом случ
ае часто применяется другая структура,
включающая процессы периода прогона, программы из вышеописанных бло-
ков реализации, совместно формирующие отдельные процессы, а также ус-
тановленные между этими процессами отношения синхронизации.
Можем ли мы взять любую из этих структур в отдельности и назвать ее
архитектурой? Нет, не можем – и это несмотря на то, что все они содержат
архитектурные свед
ения. В состав любой архитектуры эти структуры входят
наравне со многими другими. В этой связи, очевидно, что, поскольку в соста-
ве архитектуры может содержаться несколько структур, в ней должны при-
сутствовать несколько элементов (например, блок реализации и процессы),
несколько вариантов взаимодействия между элементами (например, разбие-
ние на состав
ляющие и синхронизация) и даже несколько контекстов (на-
пример, время разработки и время прогона). Представленное определение не
устанавливает сущность архитектурных элементов и отношений. Является ли
программный элемент объектом? процессом? библиотекой? базой данных?
коммерческим изделием? Он может быть чем угодно, причем возможности
не ограничиваются вышеприведенными вариантами.
В-третьих, согласн
о нашему определению, программная архитектура
есть у любой вычислительной системы с программным обеспечением. Связа-
но это с тем, что любую систему можно представить как совокупность ее
элементов и установленных между ними отношений. В простейшем случае
система сама по себе является элементом, не представляющим, вероятно, ни-
какого интереса и бесполезным, однако тем не мен
ее согласующимся с поня-
тием «архитектура». То обстоятельство, что архитектура есть у каждой сис-
темы, совершенно не означает, что она является общеизвестной. Кто знает,
быть может, специалистов, спроектировавших систему, уже не найти, доку-
ментация тоже куда-то исчезла (или ее никогда не существовало), исходный