Лекция 6.1

advertisement
СОВРЕМЕННЫЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ ПО
Лекция 6:
Функциональные
спецификации
Часть 1
Зачем?
• Напомним: ТЗ – это:
• декларируемый набор функций
- описывает, что система должна делать
• если нужно – юридический документ
• требования ТЗ – для планирования работы
• Функциональная спецификация – это:
• надо больше программистам
• хотя и не только
• описывает, как система работает
- сценарии работы пользователей с системой
- модули и их взаимодействие
• помогает понимать систему:
- а значит, разрабатывать её и поддерживать
2
Зачем описывать поведение?
• При создании продукта
• лучше представлять замысел
- прежде чем строить здание, хорошо бы продумать, где
будут окна-двери, и понадобится ли второй лифт;
- ведь чем позже вносятся изменения – тем они дороже,
- если вообще возможны.
• стремление к одинаковому видению проекта у
команды
• С прицелом на поддержку/развитие
• Проще смотреть картинки и читать линейный
текст, чем изучать код
3
Содержимое ФС
• Множество стандартов и нестандартов
• (в чём несколько отличается от ТЗ)
• крупные методологии предписывают
определённую структуру ФС
• но структура вовсе не обязательно строгая
• Выбор (очень) зависит от контекста
• главная цель – описать систему
4
Общая схема
• Примерное содержимое ФС:
• Варианты использования
- ключевые сценарии
• Описание процессов и процедур
- детализация сценариев, компоненты
• Сложное поведение компонент
• Внутренняя структура
- детализация структуры компонент
- отношения между компонентами
- схемы БД и размещения компонент
5
Вариации
• Детали внутреннего устройства могут
выноситься в отдельный документ
• Детальная архитектура
• Также ФС может содержать:
• Чёткое разграничение целей и «антицелей»
проекта
• Списки открытых вопросов
• Специальные примечания
- маркетинговый контекст, комментарии экспертов в
предметной области
• И другое, полезное в конкретной ситуации
6
Варианты использования
• Первый шаг – отразить
пользовательские сценарии
• выделить и перечислить ключевые
взаимодействия с системой, дающие
значимый результат
• для описания подойдут
- чтобы проникнуться: пользовательские истории,
диаграммы связей (mind maps)
- чтобы быстро понять круг задач: диаграммы
прецедентов (вариантов использования) UML
7
Пользовательские истории
• User stories – рассказы о том, как
пользователи работают с программой
• Лучше писать живо и с юмором, чем сухо
© Dilbert.com
8
Mind maps
9
Mind maps
10
Диаграммы прецедентов
11
Описание процессов и
процедур
• Расписываются сценарии:
• какие элементы взаимодействуют
• что друг у друга запрашивают
• Инструменты:
• псевдокод
• диаграммы UML: робастности,
сотрудничества, последовательности
действий, деятельности
• диаграммы Data Flow
12
Диаграмма робастности
Actors – действующие лица
Boundary objects – элементы интерфейса
Control elements – управляющие процессы
Entity objects – элементы модели предметной области
Use cases (опционально) – варианты использования
© http://iconixprocess.com/iconix-process/analysis-and-preliminary-design/robustness-analysis/
13
Диаграмма робастности
14
© http://iconixprocess.com/iconix-process/analysis-and-preliminary-design/robustness-analysis/
Диаграмма сотрудничества
15
Диаграмма
последовательности действий
16
Диаграмма деятельности
17
Диаграмма потоков данных
(Data Flow)
18
Сложное поведение компонент
• Сложные алгоритмы и процедуры
• диаграммы деятельности, блок-схемы и
псевдокод
• Автоматы: смена состояний
• диаграммы состояний (UML)
19
Диаграмма состояний
20
Внутренняя структура
• Детальное описание элементов
системы:
•
•
•
•
классы (ООП) – диаграмма классов
диаграммы отношений
таблицы баз данных
схемы размещения компонент: диаграмма
развертывания (UML)
21
Диаграмма классов
22
Отношения на диаграмме
классов
23
Таблицы баз данных
24
Диаграмма развёртывания
25
Итоги
• Инструментов для создания
спецификаций много
• лекция покрыла только несколько
• Критерии выбора инструментов:
• стандартные (предписаны процессом)
• удобные (хорошо описывают)
• «компактные» (небольшое подмножество)
26
Ссылки
• Инструменты для UML
• Visual Paradigm (community edition –
некоммерческая) http://www.visualparadigm.com/download/vpuml.jsp?edition=ce
• StarUML http://staruml.sourceforge.net/en/
• ArgoUML http://argouml.tigris.org/
• Подробный курс по UML на INTUIT:
• http://www.intuit.ru/studies/courses/32/32/info
• Дополнение по Robustness Diagram (англ.):
• http://www.agilemodeling.com/artifacts/robustnessDia
gram.htm
• Mind Maps:
• XMind http://www.xmind.net/
27
Download