Архитектура программного обеспечения на практике — Основываясь на собственном, причем весьма обширном, опыте, авторы, с одной стороны, раскрывают основные технические вопросы проектирования, специфицирования и проверки правильности, а с другой - неизменно подчеркивают важность коммерческого контекста, в котором проводится проектирование крупных систем. Цель книги заключается в том, чтобы представить процесс разработки архитектуры программных систем как можно более реалистично, отразив как возможности, так и ограничения, с которыми сталкиваются компании. Приводимые в этой связи конкретные примеры успешных архитектурных решений демонстрируют основные технические и организационные моменты. Всем, кто занимается проектированием, разработкой или координацией производства крупных программных систем (или планирует приступить к подобной деятельности), кто планирует заказать такую систему для своего предприятия или правительственного учреждения, книга поможет разобраться в современном состоянии программной архитектуры.
Название: Архитектура программного обеспечения на практике Автор: Басс Л., Клементс П., Кацман Р. Издательство: Питер Год: 2006 Страниц: 574 Формат: DJVU Размер: 11,6 МБ ISBN: 5-469-00494-5 Качество: отличное Серия: Классика Computer Science Язык: русский
Содержание:
Предисловие Что нового во втором издании Благодарности К читателю Целевая аудитория Части и главы Часть 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. Авиационная система А-7Е: конкретный пример применения архитектурных структур 1.1. Связь с архитектурно-экономическим циклом 1.2. Требования и атрибуты качества 1.3. Архитектура авиационной электронной системы А-7Е Структура декомпозиции Структура использования Структура процессов 1.4. Заключение 1.5. Дополнительная литература 1.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. Участники АТАМ 11.2. Результаты проведения оценки по методу АТАМ 11.3. Этапы АТАМ Операции на различных этапах оценки Эффективное распоряжение ограниченными временными ресурсами 11.4. Система Nightingale: конкретный пример проведения оценки по методу АТАМ Нулевой этап: установление партнерских отношений и подготовка Этап 1: оценка Этап 2: оценка (продолжение) Этап 3: доработка 11.5. Заключение 11.6. Дополнительная литература 11.7. Дискуссионные вопросы Глава 12. Метод анализа стоимости и эффективности - количественный подход к принятию архитектурно-проектных решений 12.1. Контекст принятия решений 12.2. Основы СВАМ Полезность Вычисление коэффициента ROI 12.3. Реализация СВАМ Этапы 12.4. Конкретный пример: проект ESC агентства NASA Этап 1: критический анализ сценариев Этап 2: уточнение сценариев Этап 3: расстановка сценариев согласно приоритетам Этап 4: установление полезности Этап 5: разработка для сценариев архитектурных стратегий и установление их желаемых уровней реакции атрибута качества Этап 6: определение полезности «ожидаемых» уровней реакции атрибута качества путем интерполяций Этап 7: расчет общей выгоды, полученной от архитектурной стратегии Этап 8: отбор архитектурных стратегий с учетом ROI, а также ограничений по стоимости и времени 12.5. Результаты оценки по методу СВАМ 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. Заключение Сокращения Библиография Алфавитный указатель