
- •Часть 1. Планирование архитектуры
- •Заключение
- •Дополнительная литература
- •4.10. Дискуссионные вопросы
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 6. Управление воздушным движением. Пример разработки, ориентированной на высокую готовность
- •Глава 7. Проектирование архитектуры
- •Глава 8. Моделирование условий полета. Конкретный пример архитектуры, ориентированной на интегрируемость
- •8.4. Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 9. Документирование программной архитектуры
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 10. Реконструкция программной архитектуры
- •Глава 11. Метод анализа компромиссных архитектурных
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 12. Метод анализа стоимости и эффективности — количественный подход к принятию
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 13. Всемирная паутина. Конкретный пример реализации способности к взаимодействию 374
- •Глава 14. Линейки программных продуктов.
- •Заключение
- •Дополнительная литература
- •Глава 15. CelsiusTech. Конкретный пример разработки
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Заключение
- •Дополнительная литература
- •Заключение
- •Часть 1. Планирование архитектуры
- •Часть 2. Создание архитектуры
- •Часть 3. Анализ архитектуры
- •Часть 4. От одной системы к множеству
- •Часть 1
- •Глава 1
- •1.1. Откуда берутся варианты архитектуры?
- •1.2. Программный процесс и архитектурно-экономический цикл
- •1.3. Из чего складывается «качественная» архитектура?
- •1.4. Заключение
- •1.5. Дискуссионные вопросы
- •Глава 2
- •2.1. Чем является программная архитектура и чем она не является
- •2.2. Другие взгляды на архитектуру
- •2.3. Архитектурные образцы, эталонные модели и эталонные варианты архитектуры
- •2.4. Почему программная архитектура так важна?
- •2.5. Архитектурные структуры и представления
- •2.6. Заключение
- •2.7. Дополнительная литература
- •2.8. Дискуссионные вопросы
- •Глава 3
- •3.1. Связь с архитектурно-экономическим циклом
- •3.2. Требования и атрибуты качества
- •3.3. Архитектура авиационной электронной системы а-7е
- •3.4. Заключение
- •3.5. Дополнительная литература
- •3.6. Дискуссионные вопросы
- •Часть 2
- •Глава 4
- •4.1. Функциональность и архитектура
- •4.2. Архитектура и атрибуты качества
- •4.3. Атрибуты качества системы
- •4.4. Практическое применение сценариев атрибутов качества
- •4.5. Другие атрибуты качества системы
- •4.6. Коммерческие атрибуты качества
- •4.7. Атрибуты качества архитектуры
- •4.8. Заключение
- •4.9. Дополнительная литература
- •4.10. Дискуссионные вопросы
- •Глава 5
- •5.1. Определение тактики
- •5.2 Тактики реализации готовности
- •5.3. Тактики реализации модифицируемости
- •5.4. Тактики реализации производительности
- •5.5. Тактики реализации безопасности
- •5.6. Тактики реализации контролепригодности
- •5.7. Тактики реализации практичности
- •5.8. Взаимосвязь тактик и архитектурных образцов
- •5.9. Архитектурные образцы и стили
- •5.10. Заключение
- •5.11. Дополнительная литература
- •5.12. Дискуссионные вопросы
- •Глава 6
- •6.1. Связь с архитектурно-экономическим циклом
- •6.2. Требования и атрибуты качества
- •6.3. Архитектурное решение
- •6.4. Заключение
- •6.5. Дополнительная литература
- •6.6. Дискуссионные вопросы
- •Глава 7
- •7. 1. Архитектура в контексте жизненного цикла
- •7.2. Проектирование архитектуры
- •1. Выбор модуля для декомпозиции
- •2А. Выбор архитектурных мотивов
- •2Ь. Выбор архитектурного образца
- •2D. Задание интерфейсов дочерних модулей
- •7.3. Формирование рабочих групп
- •7.5. Заключение
- •7.6. Дополнительная литература
- •7.7. Дискуссионные вопросы
- •Глава 8
- •8.1 Связь с архитектурно- экономическим циклом
- •8.2. Требования и атрибуты качества
- •8.3. Архитектурное решение
- •8.2 Заключение
- •8.5 Дополнительная литература
- •8.6. Дискуссионные вопросы
- •Глава 9
- •9.1. Варианты применения архитектурной документации
- •9.2. Представления
- •9.3 Выбор значимых представлений
- •9.4. Документирование представления
- •9.5. Перекрестная документация
- •9.6. Унифицированный язык Моделирования
- •9.7. Заключение
- •9.8. Дополнительная литература
- •9.9. Дискуссионные вопросы
- •Глава 10
- •10.1. Введение
- •10.2. Извлечение информации
- •10.3. Создание базы данных
- •10.4. Объединение представлений
- •10.5. Реконструкция
- •10.6. Пример
- •10.7. Заключение
- •10.8. Дополнительная литература
- •10.9. Дискуссионные вопросы
- •Часть 3
- •Глава 11
- •Результаты проведения оценки по методу атам
- •Этапы atam
- •1 Источник: приводится по изданию [Clements 02а] (адаптированная версия).
- •11.4. Система Nightingale: конкретный пример проведения оценки по методу атам
- •11.5. Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 12
- •Результаты оценки по методу свам
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 13
- •13.1. Отношение к архитектурноэкономическому циклу
- •13.4. Еще одна итерация архитектурноэкономического цикла: эволюция вариантов веб-архитектуры систем электронной коммерции
- •13.7. Заключение
- •13.8. Дополнительная литература
- •13.9. Дискуссионные вопросы
- •Часть 4
- •Глава 14
- •За счет чего работают линейки программных продуктов?
- •Варианты архитектуры линеек продуктов
- •Факторы, усложняющие применение линеек программных продуктов
- •Заключение
- •Дополнительная литература
- •Дискуссионный вопрос
- •Глава 15
- •Связь с архитектурноэкономическим циклом
- •Требования и атрибуты качества
- •Архитектурное решение
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 16
- •Связь с архитектурноэкономическим циклом
- •16.3. Архитектурное решение
- •16.4. Решения по размещению системы
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 17
- •17.2. Требования и атрибуты качества
- •17.3. Архитектурное решение
- •17.4. Механизм реализации атрибутов качества в архитектуре Luther
- •Заключение
- •Дополнительная литература
- •Дискуссионные вопросы
- •Глава 18
- •18.1. Воздействие компонентов на архитектуру
- •18.2. Архитектурное несоответствие
- •18.3. Компонентное проектирование как поиск
- •18.4. Пример приложения aseilm
- •18.5. Заключение
- •18.6. Дополнительная литература
- •Глава 19
- •19.1. Снова архитектурноэкономический цикл
- •19.2. Создание архитектуры
- •19.3. Архитектура в рамках жизненного цикла
- •Влияние коммерческих компонентов
- •Заключение
- •8 Все перечисленные специалисты работают в корпорации Inmedius (Питтсбург, сша).
5.8. Взаимосвязь тактик и архитектурных образцов
Мы представили вашему вниманию ряд тактик, при помощи которых архитекторы реализуют те или иные атрибуты качества. Как правило, для проведения в жизнь отдельной тактики или нескольких тактик архитекторы подбирают подходящие образцы. Каждый образец, хотим мы того или нет, реализует сразу несколько тактик. Не желая оставить это утверждение без должной аргументации, мы рассмотрим образец «активный объект» (Active Object), описание которого содержится в работе [Schmidt 00]:
Расцепляя исполнение метода и его вызов, образец проектирования «активный объект» усиливает параллелизм и упрощает синхронизированный доступ к объектам, находящимся в собственных потоках управления.
У этого образца шесть элементов: агент — интерфейс, через который клиенты вызывают публично доступные методы активного объекта; запрос метода, определяющий интерфейс для исполнения методов активного объекта; список активизации, содержащий буфер ожидающих запросов методов; планировщик, принимающий решение о том, какие запросы методов следует исполнить далее; слуга, который определяет поведение и состояние, моделируемые в виде активного объекта; и будущее, посредством которого клиент получает результат вызова метода.
Задача этого образца состоит в усилении параллелизма; параллелизм, как известно, относится к производительности. Таким образом, можно утверждать, что он реализует тактику производительности «введение параллелизма». Но — обратите внимание, какие еще тактики принимают в нем участие.
♦ Информационная закрытость (модифицируемость). Каждый элемент выбирает для себя обязанности и скрывает их выполнение за интерфейсом.
♦ Посредник (модифицируемость). В роли посредника выступает агент, буферизующий изменения вызова метода.
♦ Время связывания (модифицируемость). Образец активного объекта предполагает, что запросы на объект поступают к нему в период прогона. При этом точное время связывания клиента с агентом не установлено.
♦ Политика планирования (производительность). Планировщик реализует политику планирования.
Итак, любой образец реализует сразу несколько тактик, которые зачастую даже относятся к разным атрибутам качества. Кроме того, при реализации этого образца
также принимаются решения о реализации тех или иных тактик. К примеру Реализация может предусматривать ведение журнала запросов к активному объекту в расчете на возможное восстановление, ведение контрольного журнала или обеспечивать контролепригодность.
Для проведения анализа архитектор должен иметь представление обо всех встроенных в реализацию тактиках, а на этапе проектирования от него требуется принятие решений о том, какие тактики смогут наилучшим образом выполнять поставленные перед системой задачи.
5.9. Архитектурные образцы и стили
Архитектурный образцы (стили) в программном обеспечении — это аналоги архитектурных стилей, применяемых в строительстве зданий (например, известны готический стиль, стиль эпохи Возрождения, античные стили). Любой архитектурный образец состоит из нескольких ключевых характеристик и правил, которые в сочетании обеспечивают архитектурную целостность. Архитектурный образец определяется:
4* набором типов элементов (например, репозитария данных или компонента, вычисляющего математическую функцию);
♦ топологической схемой элементов, обозначающей взаимосвязь между ними;
♦ набором семантических ограничений (например, фильтры в составе стиля «каналы и фильтры» — это преобразователи данных; они постепенно преобразуют входящие потоки в выходящие, но при этом не располагают контролем над восходящими и нисходящими потоками элементов);
♦ набором механизмов взаимодействия (например, вызовов подпрограмм, событий-подписчиков, досок объявлений), регламентирующих координацию элементов в рамках установленной топологии.
Совсем недавно Мэри Шоу (Магу Shaw) и Дэвид Гарлан (David Garlan) попытались классифицировать набор архитектурных образцов, которые тогда назывались архитектурными стилями, или идиомами. Усилиями сообщества программных инженеров на основе результатов их исследований были сформулированы архитектурные образцы — по аналогии с образцами проектирования и образцами кодирования.
В своей работе [Shaw 96] Мэри Шоу выдвинула гипотезу о существовании высокоуровневых абстракций сложных систем, которые на тот момент не изучались и не классифицировались, — впрочем, аналогичная ситуация в тот момент складывалась во многих других инженерных дисциплинах.
Образцы регулярно проявляются в решениях систем, но иногда их трудно обнаружить, поскольку, в разных дисциплинах одни и те же архитектурные образцы называются по-разному. Ситуация требовала систематизации повторяющихся архитектурных образцов, формулирования их свойств и преимуществ. Один из вариантов такой классификации представлен на рис. 5.14.
Образцы на этой иллюстрации подразделяются на родственные группы в рамках иерархии наследования. К примеру, событийная система изображается как
вторичный стиль независимых элементов. У самих событийных систем два вторичных образца: неявный и явный вызов.
Какая связь между архитектурными образцами и тактиками? Как мы уже говорили, любую тактику следует рассматривать как фундаментальный «строительный блок» проектного решения, из которого, в свою очередь, выводятся архитектурные образцы и стратегии.