СОВРЕМЕННЫЕ ТЕХНОЛОГИИ РАЗРАБОТКИ ПО Лекция 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