Архитектурные стили и образцы проектирования
Основы программной инженерии
Кулямин В.В., ВМК МГУ
Образцы
•Образцы, шаблоны, паттерны (patterns)
-типовые решения для часто встречающихся задач, которые можно использовать в различных контекстах
Позволяют повторно использовать многократно опробованные решения
Могут существовать несколько различных образцов для решения достаточно похожих задач, отличающихся по итоговых характеристикам результатов
Образцы не придумываются – чтобы решение можно было считать образцом, оно должно многократно использоваться в разных системах с разными командами разработчиков
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
2 |
Пример: адаптер (adapter)
•Проблема:
изменяется интерфейс (но не функциональность!) широко используемого компонента, переделка всех использующих его компонентов трудоемка
•Возможное решение:
•Определяется целевой интерфейс, совпадающий со старым
•Вводится адаптер, реализующий этот интерфейс с помощью новой реализации
•При очередном изменении интерфейса достаточно сменить адаптер
•Все компоненты, использующие абстрактный интерфейс, при таких изменениях остаются неизменными
Клиент
Реализация f(int x, int y)
Реализация g(int x, byte y)
Целевой Клиент
интерфейс f(int x, int y)
Реализация
Адаптер
g(int x, byte y)
f(int x, int y) {return g(x,y)}
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
3 |
Виды образцов
•Образцы организации или процессов (process patterns)
-техники организации работ для решения типовых задач
•Архитектурные стили (architectural styles, architectural patterns)
-образцы архитектурных решений для систем в целом
•Образцы анализа (analysis patterns)
-образцы организации систем понятий в виде элементов программ (классов и пр.)
•Образцы проектирования (design patterns)
-образцы организации компонентов для решения определенной задачи в рамках подсистемы или группы модулей
•Идиомы (idioms)
-образцы организации элементов программ, применимые лишь к группе языков программирования, имеющих специфические конструкции
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
4 |
Образцы процессов
•Структурированные техники решения определенных задач разработки
•Обычно содержат
•Набор ролей с распределением ответственности между ними
•Определенную последовательность шагов с описанием выполняемых на каждом шаге действий
•Набор артефактов: входных, результирующих и промежуточных
•Описания специфических техник выполнения некоторых шагов или применения определенных инструментов для этого
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
5 |
Пример образца процесса
Инспекция программ по Фагану (M. Fagan, 1976)
•Проверка соответствия первичного и вторичного артефактов
•Роли участников: ведущий, автор (лучше всех понимает первичный артефакт), интерпретатор (обычно создатель вторичного артефакта), инспектор (обычный участник); обычно в группе 3-6 человек
•Действия
•Планирование
Ведущий убеждается, что артефакты готовы к работе, выбирает участников, определяет даты собраний и общий план
•Первичный обзор – собрание (2-4 ч)
Ведущий представляет задачи и наиболее важные характеристики Автор представляет первичный артефакт – основные идеи и правила, отвечает на вопросы
•Подготовка (2-3 дня)
Каждый самостоятельно изучает оба артефакта, составляет списки вопросов и замечаний
•Совместная инспекция – собрание (3-6 ч)
Интерпретатор представляет вторичный артефакт, отвечает на вопросы и замечания Участники выявляют проблемы и несоответствия Ведущий ведет журнал, классифицирует выявленные проблемы
•Доработка
Интерпретатор исправляет выявленные проблемы
•Контроль
Ведущий убеждается, что выявленные проблемы разрешены, при этом переработке должно подвергнуться не слишком много (5-10%), иначе нужно повторить
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
6 |
Архитектурные стили
•Образцы организации компонентов в рамках системы в целом или большой подсистемы
•Обычно определяют
•Набор типов (ролей) компонентов
•Связи между ними и типовые сценарии взаимодействия, в зависимости от типов
•Возможные вариации и альтернативы в устройстве компонентов и в сценариях их взаимодействия
•В рамках одной системы могут использоваться несколько стилей, определяя разные группы компонентов со специфическими сценариями взаимодействия между ними
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
7 |
Основные архитектурные стили
•Вызов-возврат (call-and-return)
•Конвейер (data flow)
•Хранилище (storage-based system)
•Интерактивная система (interactive system)
•Интерпретатор (interpreter)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
8 |
Вызов-возврат – разновидности
•Процедурная декомпозиция
•Основная схема построения программ в Fortran, C, Pascal, Ada и пр.
•Абстрактные типы данных
•Широко используемые библиотеки классов
•Независимые взаимодействующие объекты
•Многоуровневая система
•Все компоненты разбиваются на уровни
•Взаимодействие разрешено между компонентами одного или соседних уровней
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
9 |
Конвейер
|
|
|
|
F3 |
|
F5 |
|
F6 |
|
|
|
|
F1 |
|
F2 |
|
|
|
|
|
|
|
F8 |
|
F9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F4 |
|
|
|
F7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•Основные компоненты
•Фильтры – перерабатывают входные данные в выходные
•Каналы – передаю данные от одного фильтра к другому
•В целом – фильтры выстроены в некоторый граф, входы некоторых фильтров являются выходами некоторых других Граф в целом производит нужную трансформацию входных данных
•Свойства
•Изменения в форматах данных и трансформации реализуются добавлением одного или нескольких новых фильтров, удалением лишних или перестановкой
•Возможна инкрементальная обработка данных
•Общего состояния нет
•Обработка ошибок значительно снижает эффективность
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
10 |
