Архитектура программного обеспечения на практикеПредисловие
Что нового во втором издании
Благодарности
К читателю
Целевая аудитория
Части и главы
Часть 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. Авиационная система A-7E: конкретный пример применения
архитектурных структур
3.1. Связь с архитектурно-экономическим циклом
3.2. Требования и атрибуты качества
3.3. Архитектура авиационной электронной системы A-7E
Структура декомпозиции
Структура использования
Структура процессов
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. Архитектурное решение
Физическое представление системы ISSS
Представление декомпозиции модулей
Представление процессов
Клиент-серверное представление
Кодовое представление
Многоуровневое представление
Новое представление: отказоустойчивость
Взаимоотношения представлений
Адаптационные данные
Уточнение тактики «общие абстрактные службы»: кодовые
шаблоны для приложений
6.4. Заключение
6.5. Дополнительная литература
6.6. Дискуссионные вопросы
Глава 7. Проектирование архитектуры
7.1. Архитектура в контексте жизненного цикла
Когда приступать к проектированию?
7.2. Проектирование архитектуры
Атрибутный метод проектирования
7.3. Формирование рабочих групп
7.4. Создание макета системы
7.5. Заключение
7.6. Дополнительная литература
7.7. Дискуссионные вопросы
Глава 8. Моделирование условий полета. Конкретный пример архитектуры,
ориентированной на интегрируемость
8.1. Связь с архитектурно-экономическим циклом
8.2. Требования и атрибуты качества
Применение моделей
Рабочие состояния
8.3. Архитектурное решение
Время в системе моделирования условий полета
Архитектурный образец «структурная модель»
Организующие модули модели воздушного судна
Прикладные модули модели воздушного судна
Макет системы
Распределение функциональности между дочерними модулями
контроллера
Декомпозиция на группы
Декомпозиция групп на системы
8.4. Заключение
Производительность
Интегрируемость
Модифицируемость
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. Метод анализа компромиссных архитектурных решений —
комплексный подход к оценке архитектуры
11.1. Участники ATAM
11.2. Результаты проведения оценки по методу ATAM
11.3. Этапы ATAM
Операции на различных этапах оценки
Эффективное распоряжение ограниченными временными
ресурсами
11.4. Система Nightingale: конкретный пример проведения оценки
по методу ATAM
Нулевой этап: установление партнерских отношений
и подготовка
Этап 1: оценка
Этап 2: оценка (продолжение)
Этап 3: доработка
11.5. Заключение
11.6. Дополнительная литература
11.7. Дискуссионные вопросы
Глава 12. Метод анализа стоимости и эффективности — количественный
подход к принятию
архитектурно-проектных решений
12.1. Контекст принятия решений
12.2. Основы CBAM
Полезность
Вычисление коэффициента ROI
12.3. Реализация CBAM
Этапы
12.4. Конкретный пример: проект ESC агентства NASA
Этап 1: критический анализ сценариев
Этап 2: уточнение сценариев
Этап 3: расстановка сценариев согласно приоритетам
Этап 4: установление полезности
Этап 5: разработка для сценариев архитектурных стратегий
и установление их желаемых уровней реакции атрибута
качества
Этап 6: определение полезности «ожидаемых» уровней реакции
атрибута качества путем интерполяции
Этап 7: расчет общей выгоды, полученной от архитектурной
стратегии
Этап 8: отбор архитектурных стратегий с учетом ROI, а также
ограничений по стоимости и времени
12.5. Результаты оценки по методу CBAM
12.6. Заключение
12.7. Дополнительная литература
12.8. Дискуссионные вопросы
Глава 13. Всемирная паутина. Конкретный пример
реализации способности к взаимодействию
13.1. Отношение к архитектурно-экономическому циклу
13.2. Требования и атрибуты качества
Первоначальные требования
Требования приходят и уходят
13.3. Архитектурное решение
Реализация первоначальных требований: libWWW
Выводы из опыта применения libWWW
Ранний вариант архитектуры «клиент–сервер», реализованный
при помощи libWWW
Общий шлюзовой интерфейс (CGI)
Реализация первоначальных задач по качеству
13.4. Еще одна итерация архитектурно-экономического цикла: эволюция вариантов
веб-архитектуры систем электронной коммерции
Браузеры ради модифицируемости
HTTPS ради безопасности
Прокси-серверы ради производительности
Маршрутизаторы и брандмауэры ради безопасности
Выравнивание нагрузки ради производительности,
масштабируемости и готовности
Веб-серверы ради производительности
Серверы приложений ради модифицируемости,
производительности и масштабируемости
Базы данных ради производительности, масштабируемости
и готовности
13.5. Реализация задач по качеству
13.6. Архитектурно-экономический цикл сегодня
13.7. Заключение
13.8. Дополнительная литература
13.9. Дискуссионные вопросы
Часть 4. От одной системы к множеству
Глава 14. Линейки программных продуктов. Повторное использование
архитектурных средств
14.1. Обзор
14.2. За счет чего работают линейки программных продуктов?
14.3. Определение области действия
14.4. Варианты архитектуры линеек продуктов
Установление изменяемых параметров
Обеспечение изменяемых параметров
Оценка архитектуры линейки продуктов
Что и как оценивать
Когда приступать к оценке
14.5. Факторы, усложняющие применение линеек программных
продуктов
Стратегии принятия
Создание продуктов и развитие линейки продуктов
Организационная структура
14.6. Заключение
14.7. Дополнительная литература
14.8. Дискуссионный вопрос
Глава 15. CelsiusTech. Конкретный пример разработки
линейки продуктов
15.1. Связь с архитектурно-экономическим циклом
Ship System 2000: линейка продуктов для ВМС
Экономика линеек продуктов: обзор результатов, достигнутых
CelsiusTech
Чем руководствовалась компания CelsiusTech
Все было внове
Анализ коммерческого контекста
Организационная структура CelsiusTech
15.2. Требования и атрибуты качества
Операционная среда и физическая архитектура
15.3. Архитектурное решение
Представление процессов: удовлетворение требований
по распределению и средства расширения линейки продуктов
Многоуровневое представление
Представление декомпозиции на модули: системные функции
и группы системных функций
Применение архитектуры SS2000
15.4. Заключение
15.5. Дополнительная литература
15.6. Дискуссионные вопросы
Глава 16. J2EE/EJB. Конкретный пример стандартной вычислительной
инфраструктуры
16.1. Связь с архитектурно-экономическим циклом
16.2. Требования и атрибуты качества
Всемирная паутина и J2EE
16.3. Архитектурное решение
Архитектурная методика EJB
EJB-программирование
Дескрипторы размещения
16.4. Решения по размещению системы
Управление состоянием — старая проблема в новом контексте
Проблемы распределения и масштабирования
Организация пула ресурсов
Зависимость от производительности виртуальной машины Java
16.5. Заключение
16.6. Дополнительная литература
16.7. Дискуссионные вопросы
Глава 17. Архитектура Luther. Конкретный пример
мобильных приложений на основе архитектуры J2EE
17.1. Связь с архитектурно-экономическим циклом
Факторы влияния на архитектуру
Влияние архитектуры на компанию
17.2. Требования и атрибуты качества
17.3. Архитектурное решение
Пользовательский интерфейс
Приложения
Компоненты
Пример повторно используемого компонента: компонент
технологического управления
Следствия применения J2EE
17.4. Механизм реализации атрибутов качества в архитектуре Luther
17.5. Заключение
17.6. Дополнительная литература
17.7. Дискуссионные вопросы
Глава 18. Конструирование систем из коробочных
компонентов
18.1. Воздействие компонентов на архитектуру
18.2. Архитектурное несоответствие
Методики исправления интерфейсных несоответствий
Методики обнаружения интерфейсных несоответствий
Методики предотвращения интерфейсных несоответствий
18.3. Компонентное проектирование как поиск
18.4. Пример приложения ASEILM
Ансамбль Miva Empressa
Ансамбль Java-сервлетов
18.5. Заключение
18.6. Дополнительная литература
Глава 19. Будущее программной архитектуры
19.1. Снова архитектурно-экономический цикл
19.2. Создание архитектуры
19.3. Архитектура в рамках жизненного цикла
19.4. Влияние коммерческих компонентов
19.5. Заключение
Сокращения
Библиография
Алфавитный указатель