Архитектурный стиль, идиома, образец анализа

Архитектурный стиль определяет основные правила выделения компонентов и организации взаимодействия между ними в рамках системы или подсистемы в целом. Различные архитектурные стили подходят для решения различных задач в плане обеспечения нефункциональных требований — различных уровней производительности, удобства использования, переносимости и удобства сопровождения.

Идиома представляет собой типовое решение, определяющее специфическую структуризацию элементов кода на некотором языке программирования. Чаще всего это некоторый "трюк", с помощью которого можно придать программе на данном языке нужные свойства. При этом идиома может оказаться специфичной для языка и не иметь аналога в других языках. Кроме того, очень часто удачные идиомы при развитии языков программирования превращаются в новые синтаксические конструкции, делающие такую идиому ненужной.

Образец анализа является типовым решением по представлению набора понятий некоторой предметной области в виде набора классов и связей между ними.

36)Архитектурный стиль «многоуровневая система» . Архитектурный стиль « данные» представление- обработка» идиома «шаблонный метод»

Многоуровневая система

Назначение. Реализация больших систем, которые имеют большое количество разноплановых элементов, использующих друг друга.

Изменения в требованиях к решению одной из задач не должны приводить к изменениям в коде многочисленных компонентов, желательно, чтобы они сводились к изменениям внутри одного компонента. Интерфейсы между компонентами должны быть стабильными или даже соответствовать имеющимся стандартам.

Части системы должны быть заменяемы.

Разработка системы должна быть эффективно поделена между отдельными разработчиками. Выделяется некоторый набор уровней, каждый из которых отвечает за решение своих собственных подзадач.

Основными компонентами являются уровни. На каждом уровне может находиться много более мелких компонентов.

Достоинства:

Возможность легко заменять и переиспользовать компоненты одного уровня, не оказывая влияния на остальные уровни. Возможность отлаживать и тестировать уровни по отдельности.

Поддержка стандартов.

Недостатки:

Изменение функциональности одного уровня может привести к каскадному изменению всех уровней.

Падение производительности из-за необходимости проводить все вызовы и данные через все уровни.

Большое количество уровней может привести к существенному повышению сложности системы и падению ее производительности.

Данные–представление–обработка

Назначение. Интерактивные приложения с гибким интерфейсом пользователя. Требования к пользовательскому интерфейсу в интерактивных приложениях меняются чаще всего. Разные пользователи имеют разные наборы требований.

Одна и та же информация может быть представлена по-разному и в нескольких местах для удобства доступа к ней многих различных пользователей, имеющих разные привычки и разные навыки работы с информацией.

Изменения в данных должны немедленно отображаться в различных представлениях этих данных.

Внесение изменений в пользовательский интерфейс должно быть максимально простым, иногда оно даже должно быть возможно прямо во время работы приложения.

Выделяется три набора компонентов. Первый набор — данные, модель данных или просто модель (model) — соответствует структуре данных предметной области, в которой работает приложение. Компоненты второго набора — представления (view) — соответствуют различным способам представления данных в пользовательском интерфейсе. Каждому компоненту представления соответствует один компонент из третьего набора, обработчик (controller) — компонент, осуществляющий обработку действий пользователей.

Основными ролями компонентов в данном стиле являются модель, представление и обработчик.

У системы два базовых сценария работы — инициализация всех компонентов и обработка некоторого действия пользователя с изменением данных и обновлением соответствующих им представлений и обработчиков.

Идиома«шаблонный метод»

Назначение. Фиксация общей схемы некоторого алгоритма, имеющего много вариантов, с предоставлением возможности реализовать эти варианты за счет переопределения отдельных его шагов, без изменения схемы в целом.

Инвариантные части алгоритма нужно записать один раз и переиспользовать, изменяя только варьирующиеся шаги и элементы.

Метод, реализующий основную схему алгоритма, называется шаблонным методом. Он пишется один раз в абстрактном базовом классе и не переопределяется в потомках.

Достоинства:

Общая часть алгоритма реализуется явно и может быть легко переиспользована.

Изменяемые части алгоритма могут варьироваться удобным образом, не влияя друг на друга и давая в результате различные его модификации.

Алгоритм может быть параметризован большим набором политик, для каждой из которых возможна реализация по умолчанию.

Недостатки:

Снижение понятности кода за счет сложного потока управления.

Снижение производительности в случае большого числа параметров, из которых в каждом конкретном варианте алгоритма используется лишь несколько.