Языки описания архитектуры (ADL ) используются в нескольких дисциплинах: системная инженерия, разработка программного обеспечения и моделирование предприятия и инженерия.
Сообщество системной инженерии использует язык описания архитектуры в качестве языка и / или концептуальную модель для описания и представления системных архитектур.
Сообщество разработчиков программного обеспечения использует описание архитектуры язык как компьютерный язык для создания описания архитектуры программного обеспечения. В случае так называемой технической архитектуры архитектура должна быть доведена до сведения разработчиков программного обеспечения; a доводится до сведения различных заинтересованных сторон и пользователей. Некоторые разработанные ADL: (разработаны CMU ), AADL (стандартизированы SAE ), (разработаны UCI ), SBC-ADL (разработан Национальным университетом Сунь Ятсена ), Дарвин (разработан Имперским колледжем Лондона ) и Райт (разработан CMU).
В документе ISO / IEC / IEEE 42010, Системная и программная инженерия - Описание архитектуры, язык описания архитектуры определяется как «любая форма выражения для использования в описаниях архитектуры» и указывается минимум Требования к ADL.
Сообщество разработчиков и разработчиков корпоративного моделирования также разработало языки описания архитектуры, обслуживаемые на уровне предприятия. Примеры включают ArchiMate (теперь стандарт The Open Group ), DEMO, ABACUS (разработан University of Technology, Сидней ). Эти языки не обязательно относятся к программным компонентам и т. Д. Однако большинство из них относится к архитектуре приложения как к архитектуре, которая сообщается разработчикам программного обеспечения.
Большая часть написанного ниже относится в первую очередь к точке зрения сообщества разработчиков программного обеспечения.
Стандартная нотация (ADL) для представления архитектур помогает продвигать взаимное общение, воплощение ранних проектных решений и создание переносимой абстракции системы. В прошлом архитектуры в основном представлялись в виде прямоугольников с аннотациями, в которых указывались такие вещи, как природа компонента, свойства, семантика соединений и общее поведение системы. ADL являются результатом лингвистического подхода к формальному представлению архитектур и, как таковые, устраняют его недостатки. Также важны сложные ADL, которые позволяют проводить ранний анализ и технико-экономическое обоснование архитектурных проектных решений.
ADL были разделены на три широкие категории: прямоугольные неформальные чертежи, формальный язык описания архитектуры и на основе UML (Unified Modeling Language ). обозначения.
Прямоугольник долгое время был наиболее распространенным средством описания SA. Предоставляя полезную документацию, уровень неформальности ограничивал полезность описания архитектуры. Требовался более строгий способ описания SA. Цитируя Аллена и Гарлана (1997), «хотя эти [прямоугольные] описания могут предоставить полезную документацию, текущий уровень неформальности ограничивает их полезность. Поскольку обычно неточно, что подразумевается под такими архитектурными описаниями, это может быть невозможно анализировать архитектуру на предмет согласованности или определять ее нетривиальные свойства. Более того, нет способа проверить, что реализация системы соответствует ее архитектурному проекту ". Аналогичный вывод сделан в Perry and Wolf (1992), который сообщает, что: «Помимо предоставления ясной и точной документации, основная цель спецификаций - обеспечить автоматический анализ документов и выявить различные виды проблем, которые в противном случае могли бы возникнуть. незамеченным ".
С тех пор был проведен ряд исследований формальных языков для описания SA. Были предложены десятки формальных ADL, каждый из которых характеризуется различными концептуальными архитектурными элементами, разным синтаксисом или семантикой, ориентирован на конкретную операционную область или подходит только для различных методов анализа. Например, доменные ADL были представлены для работы со встроенными системами и системами реального времени (такими как AADL, EAST-ADL и EADL), приложениями контура управления (DiaSpec), архитектурами линейки продуктов (Koala) и динамическими системами. (Π-ADL)). ADL, ориентированные на анализ, были предложены для работы с доступностью, надежностью, безопасностью, потреблением ресурсов, качеством данных и анализом производительности в реальном времени (AADL, поведенческий анализ (Fractal)) и анализом надежности (TADL).
Однако эти усилия не нашли должного применения в промышленной практике. Некоторые причины отсутствия промышленного внедрения были проанализированы Вудсом и Хиллиардом, Панди, Клементсом и другими: формальные ADL редко интегрируются в жизненный цикл программного обеспечения, они редко поддерживаются зрелыми инструментами, почти не документированы, уделяя особое специфические потребности и не оставляя места для расширений, позволяющих добавлять новые функции.
В качестве способа преодоления некоторых из этих ограничений UML был указан как возможный преемник существующих ADL. Было представлено множество предложений по использованию или расширению UML для более точного моделирования программных архитектур.
На самом деле, как было подчеркнуто в недавнем исследовании, проведенном с практиками, в то время как практики в целом удовлетворены возможностями проектирования, предоставляемыми языками они используют, они недовольны возможностями анализа архитектурного языка и их способностями определять дополнительные функциональные свойства; архитектурные языки, используемые на практике, в основном берут начало в промышленном развитии, а не в академических исследованиях; От архитектурного языка требуется больше формальности и лучшего удобства использования.
Существует большое разнообразие ADL, разработанных академическими или промышленными группами. Многие языки не предназначались для ADL, но они оказались подходящими для представления и анализа архитектуры. В принципе ADL отличаются от языков требований, потому что ADL базируются на пространстве решений, тогда как требования описывают проблемные области. Они отличаются от языков программирования, потому что ADL не привязывают архитектурные абстракции к конкретным точечным решениям. Языки моделирования представляют поведение, в котором ADL сосредоточены на представлении компонентов. Однако существуют предметно-ориентированные языки моделирования (DSML), которые фокусируются на представлении компонентов.
Минимальные требования
Язык должен:
У ADL есть общие черты:
ADL различаются по своей способности:
Сообщество ADL в целом соглашается с тем, что архитектура программного обеспечения - это набор компонентов и связей между ними. Но существуют разные типы архитектур, например:
Большинство ADL реализуют архитектуру интерфейсных соединений.
Архитектура в контексте программных систем грубо делится на категории, в первую очередь программная архитектура, сетевая архитектура и системная архитектура. Внутри каждой из этих категорий существует ощутимое, но нечеткое различие между архитектурой и дизайном. Чтобы провести это различие как можно более универсально и четко, лучше рассматривать дизайн как существительное, а не как глагол, так что сравнение будет между двумя существительными.
Дизайн - это абстракция и спецификация шаблонов и органов функциональности, которые были или будут реализованы. Архитектура на ступень выше как по абстракции, так и по детализации. Следовательно, архитектура также является более топологической по своей природе, чем дизайн, поскольку она определяет, где встречаются основные компоненты и как они соотносятся друг с другом. Архитектура фокусируется на разделении основных областей функциональности на компоненты высокого уровня, где они будут физически или виртуально находиться, какие стандартные компоненты могут быть эффективно использованы, в общем, какие интерфейсы будет предоставлять каждый компонент, какие протоколы будут использоваться между их, а также какие методы и шаблоны высокого уровня могут лучше всего соответствовать расширяемости, ремонтопригодности, надежности, долговечности, масштабируемости и другим нефункциональным целям. Дизайн - это детализация этих вариантов и более конкретное разъяснение того, как функциональные требования будут выполняться посредством делегирования частей этой функциональности более детализированным компонентам и как эти более мелкие компоненты будут организованы внутри более крупных.
Часто часть архитектуры выполняется во время концептуализации приложения, системы или сети и может появиться в нефункциональных разделах документации требований. Канонически дизайн не оговаривается в требованиях, а скорее определяется ими.
Процесс определения архитектуры может включать эвристику, полученную архитектором или архитектурной командой благодаря опыту в данной области. Как и в случае с дизайном, архитектура часто развивается через серию итераций, и так же, как мудрость дизайна высокого уровня часто проверяется, когда происходит проектирование и реализация низкого уровня, мудрость архитектуры проверяется во время спецификации проекта высокого уровня. В обоих случаях, если мудрость спецификации ставится под сомнение во время детализации, может потребоваться другая итерация архитектуры или дизайна, в зависимости от обстоятельств.
Таким образом, основные различия между архитектурой и дизайном заключаются в детализации и абстракции и (как следствие) в хронологии. (Архитектура обычно предшествует дизайну, хотя частая реальность - перекрытие и циклическое повторение.)
Ниже в списке приведены кандидаты на звание лучшего ADL на сегодняшний день.
Актуальный список существующих в настоящее время архитектурных языков см. В Актуальный список ADL.
Подходы к архитектуре