Архитектура системы — принципиальная организация системы, воплощенная в её элементах, их взаимоотношениях друг с другом и со средой, а также принципы, направляющие её проектирование и эволюцию[1]:3.
Понятие архитектуры в значительной мере субъективно и имеет множество противоречивых толкований; в лучшем случае оно отображает общую точку зрения команды разработчиков на результаты проектирования системы.[2]:27 Существует большое количество определений архитектуры. Коллекция определений, относящихся, в основном, к архитектуре программного обеспечения, собрана на сайте Института программной инженерии Университета Карнеги — Меллона[3].
В настоящее время существует сильная тенденция рассматривать архитектурное и не архитектурное проектирование как различные виды деятельности; делаются попытки определить их как отдельные практики, однако эти виды проектирования в значительной мере «переплетены». Архитектурные решения в сравнении с обычными проектными решениями рассматриваются как более абстрактные, концептуальные и глобальные; они нацелены на успех всей миссии и на наиболее высокоуровневые структуры системы[4]:272.
- Общий план или концепция, используемая для создания системы, такой как здание или информационная система, или абстрактное описание системы, её структуры, компонентов и их взаимосвязей (Defining Architecture for IT: A Framework of Frameworks, Gartner, 2002)[5]:79-80.
- Конструктивные решения, которые после их принятия с трудом поддаются изменению; согласие в вопросе идентификации главных компонентов системы и способов их взаимодействия, а также выбор таких решений, которые интерпретируются как основополагающие и не подлежащие изменению в будущем.[2]:27
История возникновения понятия
правитьПо мере роста сложности решаемых задач возникла необходимость структурирования систем. Однако практики нашли термин «структура» недостаточным для описания всех аспектов системы[4]:272.
Термин «архитектура» в системной инженерии ввёл профессор университета Южной Калифорнии Эберхард Рехтин (англ. Eberhardt Rechtin) в начале 1990-х годов. Он считал, что по мере усложнения систем их «высокоуровневого проектирования» (или «концептуального проектирования»), как оно понималось в те годы, было недостаточно, чтобы приводить инженеров и проектировщиков к созданию точных и эффективных проектов. Он изучил архитектурные принципы в строительстве, чтобы понять, как создаются и разрабатываются сложные системы (например, здания)[6]:223.
Рехтин поясняет термин архитектура системы следующим образом:
Суть создания архитектуры — структурирование. Структурирование может означать превращение формы в функцию, извлечение порядка из хаоса, или преобразование частично сформированных идей клиента в пригодную для работы концептуальную модель[6]:223-224.
Термины «архитектура» и «архитектурное проектирование» уже используются в течение приблизительно 30 лет, особенно интенсивно в программной инженерии и таких проблемных областях, как ракетно-космическая отрасль[4]:272.
Сопутствующие понятия
правитьДля более подробного описания принципов построения архитектуры стандарт ISO/IEC/IEEE 42010-2011 вводит следующие понятия[7]:2.
- Архитектурная группа описаний (англ. architectural view) — представление системы в целом с точки зрения связанного набора интересов. Каждая группа описаний относится к одному или более стейкхолдеру. Термин «группа описаний» употребляется для выражения архитектуры системы при некотором методе описания.
- Архитектурное описание (англ. architectural description) — рабочий продукт, использующийся для выражения архитектуры.
- Архитектурный подход (англ. architectural framework) — соглашения, принципы и практики для описания архитектуры, установленные для конкретной области применения и/или конкретным сообществом стейкхолдеров.
- Архитектурный метод описания (англ. architectural viewpoint) — спецификация соглашений для конструирования и применения группы описаний. Шаблон или образец, по которому разрабатываются отдельные группы описаний посредством установления назначений и аудитории для группы описаний, а также приемы их создания и анализа. Метод описания устанавливает соглашения, по которым группа описаний создается, отображается и анализируется. Тем самым метод описания определяет языки (включая нотации, описания или типы продуктов), применяемые для определения группы описаний, а также все связанные методы моделирования или приемы анализа, применяемые к данным представлениям группы описаний. Данные языки и приемы применяются для получения результатов, имеющих отношение к адресуемым интересам.
- Вид модели (англ. model kind) — соглашения по средствам моделирования (например, сети Петри, диаграммы классов, организационные диаграммы и т. д.).
Виды архитектуры
правитьСвод знаний по системной инженерии (SEBoK) делит архитектуру на логическую и физическую[4]:269.
Логическая архитектура
правитьЛогическая архитектура поддерживает функционирование системы на протяжении всего её жизненного цикла на логическом уровне. Она состоит из набора связанных технических концепций и принципов. Логическая архитектура представляется с помощью методов, соответствующих тематическим группам описаний, и как минимум, включает в себя функциональную архитектуру, поведенческую архитектуру и временную архитектуру.
Функциональная архитектура. Функциональная архитектура представляет собой набор функций и их подфункций, определяющих преобразования, осуществляемые системой при выполнении своего назначения.
Поведенческая архитектура. Поведенческая архитектура — соглашение о функциях и их подфункциях, а также интерфейсах (входы и выходы), которые определяют последовательность выполнения, условия для управления или потока данных, уровень производительности, необходимый для удовлетворения системных требований. Поведенческая архитектура может быть описана как совокупность взаимосвязанных сценариев, функций и/или эксплуатационных режимов.
Временная архитектура. Временная архитектура является классификацией функций системы, которая получена в соответствии с уровнем частоты её исполнения. Временная архитектура включает в себя определение синхронных и асинхронных аспектов функций. Мониторинг решений, который происходит внутри системы, следует той же временной классификации [4]:287.
Физическая архитектура
правитьЦель проектирования физической архитектуры заключается в создании физического, конкретного решения, которое согласовано с логической архитектурой и удовлетворяет установленным системным требованиям.
После того, как логическая архитектура определена, должны быть идентифицированы конкретные физические элементы, которые поддерживают функциональные, поведенческие, и временные свойства, а также ожидаемые свойства системы, полученные из нефункциональных требований к системе.
Физическая архитектура является систематизацией физических элементов (элементов системы и физических интерфейсов), которые реализуют спроектированные решения для продукта, услуги или предприятия. Она предназначена для удовлетворения требований к системе и элементам логической архитектуры и реализуется через технологические элементы системы. Системные требования распределяются как на логическую, так и физическую архитектуру. Глобальная архитектура системы оценивается с помощью системного анализа и, после выполнения всех требований, становится основой для реализации системы[4]:296.
Архитектурное описание
правитьАрхитектура может быть зафиксирована с помощью полного архитектурного описания (АО) (см. рисунок). Стандарт ISO/IEC/IEEE 42010-2011 предписывает различать концептуальную архитектуру системы и одно из описаний данной архитектуры, являющееся конкретным продуктом или артефактом.
В сложных системах АО может разрабатываться не только для системы в целом, но и для компонентов системы. Два разных концептуальных АО могут включать группы описаний, которые будут соответствовать одному и тому же методу описания. Хотя системы, описываемые данными двумя группами описаний, будут соотноситься как целое и часть, это не пример множества групп описаний, соответствующих одному методу. Эти АО считаются отдельными, даже хотя они связаны через системы, которые они описывают[7]:3.
Концептуальный подход
правитьКонцептуальный подход определяет термины и понятия, относящиеся к содержанию и применению АО. На рисунке изображены основные понятия и их взаимосвязи. Все понятия определены в контексте архитектуры определенной системы и соответствующего архитектурного описания. Не нужно предполагать, что у системы существует лишь одна архитектура или что эта архитектура изображается лишь одним архитектурным описанием.
На рисунке прямоугольники изображают классы сущностей.
Линии, соединяющие прямоугольники, изображают связи между сущностями. Связь включает две роли (по одной в каждом направлении). Каждая роль может по желанию быть именована меткой. Роль, направленная от A к B, [помечена] ближе к B, и наоборот. Например, роли между «системой» и «средой» могут читаться: «„система“ живёт в „среде“» и «„среда“ влияет на „систему“». На рисунке роли обладают арностью 1:1, если не указано иное. Роль может обладать множественной арностью, например, роль, обозначенная как «1..*», применяется для обозначения многих, как в связях «один ко многим» или «многие к одному». Ромб (на конце линии связи) обозначает отношение части целого. Например, «группы описаний» являются частью «архитектурного описания». Эта нотация заимствована из UML.
Рассмотрим каждое составляющее концептуальной схемы подробнее. В контексте рассматриваемой схемы система распространяется на отдельные прикладные программные средства, системы в традиционном смысле, подсистемы, системы систем, продукты, семейства продукции, организации в целом и другие интересующие совокупности.
Система обитает в некоторой среде. Среда некоторой системы может влиять на данную систему. Её среда, или контекст, определяет обстановку и обстоятельства разработки, эксплуатации, политических и иных влияний на данную систему. Такая среда может включать другие системы, взаимодействующие с целевой системой, как напрямую через интерфейсы, так и косвенно иными путями. Такая среда определяет границы, определяющие предмет целевой системы по отношению к другим системам.
У каждой системы есть один или более стейкхолдеров. Каждый стейкхолдер обычно принимает участие в системе, или имеет интересы к данной системе. Интересы предполагают учёт таких аспектов системы как производительность, надежность, безопасность, распределённость и способность к эволюции.
Любая система существует для реализации в своей среде одной или более миссий.
В концептуальном подходе архитектурное описание организовано как одна или более архитектурных групп описаний.
Архитектурное описание выбирает для применения один или более подходящих методов описания. Выбор методов описания обычно основывается на соображениях и интересах заинтересованных сторон, которым адресовано это АО. Определение метода описания может возникать совместно с АО, а может быть определено отдельно. Метод описания, определенный отдельно от АО называется библиотечным методом описания.
Группа описаний может состоять из одного или более архитектурных описаний. Каждое такое архитектурное описание разрабатывается с применением установленных соответствующим ему методов архитектурного описания. Архитектурное описание может входить более чем в одну группу описаний[7]:4-6.
Типы групп описаний архитектуры
правитьСуществует три типа группы описаний: функциональные, логические и физические. Каждая из групп предназначена для описания собственных точек зрения и соответствующего им уровня сложности[6]:224.
Функциональная группа описаний
правитьДанная группа обеспечивает представление с точки зрения пользователей или операторов, которое включает продукты, относящиеся к фазам, сценариям и потокам задач операционной системы. Информационный поток может быть рассмотрен с пользовательского ракурса, также описываются и пользовательские интерфейсы. Примером продуктов, которые могут быть включены в это описание, будут функциональные данные или графики, сценарное описание (включая использование кейсов), блок-схемы задач, организационные диаграммы и схемы информационных потоков[6]:224.
Логическая группа описаний
правитьДанная группа обеспечивает представление с точки зрения руководителя или заказчика. Логическое представление включает продукты, которые определяют системные границы с её окружением и функциональные интерфейсы с внешними системами, также основные функции и поведение системы, потоки информации, внутренние и внешние наборы данных, внутренних и внешних пользователей, и внутренние функциональные интерфейсы. Примером продуктов могут быть блочные диаграммы функциональных потоков[англ.] (FFBD), контекстные диаграммы, N²-диаграммы, IDEF0-диаграммы, данные поточных диаграмм и различных стейкхолдеров — характерные продукты (в том числе бизнес-зависимые продукты)[6]:224.
Физическая группа описаний
правитьДанная группа обеспечивает представление с точки зрения проектировщиков. Включает в себя:
- продукты, которые определяют физические границы системы;
- физические компоненты системы и то, как они взаимодействуют и влияют друг на друга;
- внутренние базы данных и структуры данных;
- инфраструктуру информационных технологий (ИТ) системы;
- внешнюю ИТ-инфраструктуру, с которой система взаимодействует;
- требования, необходимые для развития системы.
Продукт может включать в себя физические блок-схемы на довольно высоком уровне детализации, топологии базы данных, интерфейс управления документами и стандарты. Все из трёх типов групп должны присутствовать в каждом описании архитектуры[6]:224.
Применение архитектурных описаний
правитьАрхитектурные описания в ходе жизненного цикла могут различно применяться всеми стейкхолдерами. Такие применения включают, но не ограничиваются, следующим:
- анализ альтернативных архитектур
- деловое планирование перехода от унаследованной архитектуры к новой;
- коммуникация организаций, участвующих в разработке, производстве, установке, эксплуатации и обслуживании систем;
- коммуникация между заказчиками и разработчиками как часть подготовки соглашения;
- критерии для сертификации соответствия реализации данной архитектуре;
- документирование разработки и обслуживания, включая подготовку материалов для хранилищ с целью повторного использования и учебных материалов;
- исходные данные для последующих мероприятий по системному проектированию и разработке;
- исходные материалы для инструментов создания и анализа системы;
- эксплуатационная и инфраструктурная поддержка; управление конфигурацией и ремонт; перепроектирование и обслуживание систем, подсистем и компонентов;
- поддержка планирования и финансирования[7]:9.
Примечания
править- ↑ ГОСТ Р ИСО/МЭК 15288, 2008.
- ↑ 1 2 Фаулер М., 2006.
- ↑ Community Software Architecture Definitions Архивная копия от 22 мая 2014 на Wayback Machine // Software Engineering Institute, Carnegie Mellon University
- ↑ 1 2 3 4 5 6 SEBoK, 2012.
- ↑ Данилин, Слюсаренко, 2005.
- ↑ 1 2 3 4 5 6 Systems Engineering Principles and Practice, 2011.
- ↑ 1 2 3 4 ISO/IEC 42010, 2011.
Литература
править- ГОСТ Р ИСО/МЭК 15288—2008. Системная инженерия — Процессы жизненного цикла систем. — 2008.
- Данилин А., Слюсаренко А. Архитектура и стратегия. «Инь» и «Янь» информационных технологий предприятия. — М.: Интернет-университет информационных технологий, 2005. — 504 с. — ISBN 5-9556-0045-0.
- Фаулер М. Архитектура корпоративных программных приложений.: Пер. с англ. — М.: Издательский дом «Вильямс», 2006. — 544 с. ISBN 5-8459-0579-6
- Pyster, A., D. Olwell, N. Hutchison, S. Enck, J. Anthony, D. Henry, and A. Squires (eds). Guide to the Systems Engineering Body of Knowledge (SEBoK) version 1.0. — The Trustees of the Stevens Institute of Technology, 2012.
- Kossiakoff A., Sweet W. N., Seymour S. J., Biemer S. M. Systems Engineering Principles and Practice. — 2-е изд. — Hoboken, New Jersey: A John Wiley & Sons, 2011. — 599 с. — ISBN 978-0-470-40548-2.
- ISO/IEC 42010:2011. System and software engineering — Architecture description. — 2011.
Ссылки
править- Glossary (architecture) // Software Engineering Institute, Carnegie Mellon University