На этом шаге рассмотрим моделирование системной архитектуры.
Визуализация, специфицирование, конструирование и документирование программных систем требуют их представления с различных точек зрения. Разные заинтересованные лица – конечные пользователи, аналитики, разработчики, системные интеграторы, тестировщики, технические писатели и менеджеры проекта – имеют различное представление о проекте, и каждый из них видит систему по-разному в разные моменты его жизненного цикла. Системная архитектура является, пожалуй, наиболее важным продуктом, который может быть использован для управления всеми этими разнообразными точками зрения и тем самым управляет итеративным и пошаговым процессом разработки системы на протяжении всего ее жизненного цикла.
Архитектура – это набор существенных решений относительно:
Архитектура программного обеспечения касается не только его структуры и поведения, но также пользовательских свойств, функциональности, производительности, гибкости, возможности повторного использования, понятности, экономических и технологических ограничений и компромиссов, а также эстетических вопросов.
Как показано на рис. 1, архитектура программной системы может быть наилучшим образом описана с помощью пяти взаимосвязанных представлений. Каждое представление – проекция организации и структуры системы, сосредоточенная на определенном ее аспекте.
Рис.1. Моделирование системной архитектуры
Представление вариантов использования системы охватывает варианты использования, описывающие поведение системы с точки зрения конечных пользователей, аналитиков и тестировщиков. Их взгляд в действительности специфицирует не истинную организацию программной системы, а лишь некие движущие силы, формирующие системную архитектуру. В языке UML статические аспекты этого представления передаются диаграммами вариантов использования, а динамические его аспекты – диаграммами взаимодействий, состояний и деятельности.
Представление системы с точки зрения дизайна охватывает классы, интерфейсы и кооперации, формирующие словарь проблемы и ее решение. Это представление в основном поддерживает функциональные требования к системе, то есть сервис, который она должна предоставлять конечным пользователям. Статические аспекты этого представления в UML сосредоточены в диаграммах классов и объектов, а динамические передаются диаграммами взаимодействий, состояний и деятельности. Диаграмма внутренней структуры класса, в частности, также полезна.
Представление взаимодействия системы показывает поток управления, проходящий через разные ее части, включая возможные механизмы параллелизма и синхронизации. Это представление касается производительности, масштабируемости и пропускной способности системы. Статические и динамические аспекты этого представления в UML представлены в некоторых видах диаграмм, используемых в представлении дизайна, но сфокусированы на активных классах, управляющих системой, и передаваемых между ними сообщениях.
Представление реализации системы охватывает артефакты, используемые для сборки и физической реализации системы. Это представление в первую очередь относится к управлению конфигурацией версий системы, состоящей из независимых (в определенной степени) файлов и компонентов, которые могут быть собраны различными способами для формирования работающей системы. Оно также связано с отображением из логических классов и компонентов в физические артефакты. В UML статические аспекты этого представления отражены в диаграммах артефактов, динамические аспекты – в диаграммах взаимодействия, состояний и деятельности.
Представление развертывания системы охватывает узлы, образующие топологию оборудования, на котором работает система. Это представление в основном связано с поставкой, распределением и установкой частей, составляющих физическую систему. Его статические аспекты в UML описываются диаграммами размещения, а динамические – диаграммами взаимодействий, состояний и деятельности.
Каждое из этих пяти представлений может быть достаточным для различных заинтересованных лиц, имеющих отношение к разработке и эксплуатации системы, позволяя им сосредоточиться только на тех аспектах архитектуры, которые непосредственно их касаются. Однако все эти представления также взаимодействуют друг с другом. Узлы из представления размещения содержат компоненты из представления реализации, которые, в свою очередь, представляют собой физическую реализацию классов, интерфейсов, коопераций и активных классов из представлений дизайна и взаимодействия. UML позволяет выразить каждое из пяти представлений.
На следующем шаге рассмотрим жизненный цикл разработки программного обеспечения.