Проектирование программной архитектуры

advertisement
СИСТЕМНОЕ И ПРИКЛАДНОЕ
ПРОГРАММНОЕ
ОБЕСПЕЧЕНИЕ
Лекция 12.
Подходы и методы проектирования
программной архитектуры.
Средства описания структуры.
Нотация UML.
Подходы и методы
проектирования
программной архитектуры
Проектирование ПО
SWEBOK:
• Основы проектирования
• Ключевые вопросы
• Структура и архитектура ПО
• Анализ качества и оценка
программного дизайна
• Нотации проектирования
• Стратегии и методы проектирования
3
1. Основы проектирования
• Общие концепции
•
•
•
•
[бизнес-]цель архитектуры
ограничения архитектуры
возможные альтернативы
используемые представления и решения
• Контекст проектирования
• процесс разработки (жизненный цикл)
• Процесс проектирования
• Архитектурное проектирование
- статическая и динамическая иерархия
• Детализация архитектуры
- нюансы структуры и поведения компонент
• Принципы проектирования
4
Принципы проектирования
1. Абстракция
•
•
параметризация (передача параметров)
специфицирование: поведения, данных и
управления
Декомпозиция и разбиение на модули
Связность и связанность модулей
Инкапсуляция
Разделение интерфейса и реализации
Достаточность, полнота и простота
2.
3.
4.
5.
6.
•
•
YAGNI – “You Ain’t Gonna Need It”
KISS – “Keep It Simple, Stupid”
5
2. Ключевые вопросы
проектирования
•
Параллелизм
•
•
•
•
•
•
вопросы организации параллельной обработки
Контроль и обработка событий
Распределение (размещение) компонентов
Обработка ошибок и исключительных
ситуаций, обеспечение отказоустойчивости
Взаимодействие с пользователем и
представление
Сохраняемость данных (жизненный цикл)
6
3. Структура и архитектура ПО
•
Архитектура – описание подсистем и
компонент, а также связей между ними
1. Архитектурные структуры и ракурсы
•
взгляд на систему с разных точек зрения:
-
поведение, структура, логика, физическое размещение,
реализация в коде
2. Архитектурные стили
•
«крупноблочные» шаблоны:
-
напр., клиент-сервер vs. распределённая система
3. Шаблоны проектирования
4. Семейства программ и фреймворков
•
повторное использование архитектурных
решений и компонент
7
4. Анализ качества и оценка
программного дизайна
1. Атрибуты качества
2. Анализ качества и техники оценки
•
практики обеспечения качества дизайна:
-
ревью
статический анализ
симуляция и прототипирование
3. Метрики
•
Количественные оценки дизайна:
-
трудоёмкость, сложность структуры,
показатели качества
8
5. Нотации проектирования
• Нотации – соглашения о способах
представления дизайна
• Определяются:
• стандартами (напр., UML)
• практиками
- напр., в XP – карточки функциональной ответственности
и связей класса
• внутренними соглашениями
• Описывают
• Структура (статика)
• Поведение (динамика)
9
6. Стратегии и методы
проектирования ПО
Общие стратегии
1.
•
•
•
•
Функционально-ориентированное проектирование
2.
•
3.
4.
5.
«Разделяй и властвуй» и пошаговое уточнение
Проектирование «сверху-вниз» и «снизу-вверх»
Абстракция данных и инкапсуляция
Итеративный и инкрементальный подход
структурный анализ: потоки данных, описание процессов
Объектно-ориентированное проектирование
Компонентное проектирование
Другие подходы
10
Парадигмы программирования
• Парадигма – совокупность идей и понятий,
определяющих стиль написания программ
• Основные парадигмы:
• Императивное программирование
• Функциональное программирование
• Ортогонально им – структурные парадигмы:
• Блочное/процедурное программирование
• Модульное программирование
• Объектно-ориентированное программирование
11
Императивное
программирование
• Поток выполнения с управляющими
структурами (циклы, if-then-else, возврат
значений, переходы break/goto/continue)
• Модификация изменяемых переменных
• именованные «ячейки памяти»
• Присваивание значений переменным
«Чистая» императивная парадигма не имеет
средств для высокоуровневых абстракций
• для этого применяют структурные парадигмы
12
Функциональное
программирование
Опирается на математическую теорию
• описание структур данных и действий над ними
• Операторы над структурами описываются как
функции
• Избегают изменяемых переменных
• в чистом виде – не используют вообще
• Упор на средства абстрагирования и
комбинирования функций
• функции являются «объектами первого класса»
- можно определять значение в любом месте,
- передавать как параметры и возвращать как результат
- набор операторов для композиции функций
13
Средства описания
структуры.
Нотация UML и другие.
Варианты использования
• Цель – описать основные сценарии
работы пользователя
• выделить и перечислить ключевые
взаимодействия с системой, дающие
значимый результат
• для описания подойдут
- чтобы проникнуться: пользовательские истории,
диаграммы связей (mind maps)
- чтобы быстро понять круг задач: диаграммы
прецедентов (вариантов использования) UML
15
Пользовательские истории
• User stories – рассказы о том, как
пользователи работают с программой
• Лучше писать живо и с юмором, чем
сухо
16
Mind maps
17
Mind maps
18
Диаграммы прецедентов
19
Описание процессов и
процедур
• Детализация сценариев:
• какие элементы взаимодействуют
• что друг у друга запрашивают
• Инструменты:
• псевдокод
• диаграммы UML: робастности,
сотрудничества, последовательности
действий, деятельности
• диаграммы Data Flow
20
Диаграмма робастности
21
Диаграмма сотрудничества
22
Диаграмма
последовательности действий
23
Диаграмма деятельности
24
Диаграмма потоков данных
(Data Flow)
25
Сложное поведение компонент
• Сложные алгоритмы и процедуры
• диаграммы деятельности, блок-схемы и
псевдокод
• Автоматы: смена состояний
• диаграммы состояний (UML)
26
Диаграмма состояний
27
Внутренняя структура
• Детальное описание элементов
системы:
•
•
•
•
классы (ООП) – диаграмма классов
диаграммы отношений
таблицы баз данных
схемы размещения компонент: диаграмма
развертывания (UML)
28
Диаграмма классов
29
Отношения на диаграмме
классов
30
Таблицы баз данных
31
Диаграмма развёртывания
32
Нотации: итоги
• Инструментов для создания
спецификаций много
• лекция покрыла только несколько
• Критерии выбора инструментов:
• стандартные (предписаны процессом)
• удобные (хорошо описывают)
• «компактные» (небольшое подмножество)
33
Литература и ссылки
• Х. Абельсон, Дж. Сассман. Структура и
интерпретация компьютерных программ.
• Г. Буч. Объектно-ориентированный анализ и
проектирование.
• Язык UML
• Курс по основам UML на Intuit:
- http://www.intuit.ru/studies/courses/32/32/info
• Дополнение по Robustness Diagram (англ.):
- http://www.agilemodeling.com/artifacts/robustnessDiagram.htm
• Инструменты для UML
- Visual Paradigm (community edition – некоммерческая)
http://www.visual-paradigm.com/download/vpuml.jsp?edition=ce
- StarUML http://staruml.sourceforge.net/en/
- ArgoUML http://argouml.tigris.org/
34
Download