Разработка ПО с помощью UML
-
Upload
custis -
Category
Technology
-
view
809 -
download
1
description
Transcript of Разработка ПО с помощью UML
![Page 1: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/1.jpg)
Разработка ПО с помощью UML
Юрий Солдаткин
Ведущий разработчик C#
30 мая 2013 года
![Page 2: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/2.jpg)
Краткое содержание
Зачем нужен UML
Способы использования
TOP-4 диаграмм
Где заканчивается UML
и что с этим делать?
Практика
2/41
![Page 3: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/3.jpg)
История UML
Наскальная живопись
Чертежи
UML
3/41
![Page 4: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/4.jpg)
Программирование
(графическое
представление кода)
Эскизное
моделирование
(набросок от руки)
Способы использования UML
Проектирование
(чертеж)
Способы
использования
UML
Авторы UML
Практика
использования
+ Мартин Фаулер Избирательность
передачи
информации,
нестрогость
i
Полнота
i
Пока
недоразвитые
инструменты.
Эффективность?
i
Executable UML
4/41
![Page 5: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/5.jpg)
Документирование
Способы использования UML
Бизнес-анализ (анализ требований)
Системная
архитектура (проектирование)
Понятия
из предметной области
i
Модель программы;
Понимание чужого кода
i
5/41
![Page 6: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/6.jpg)
Какие бывают диаграммы
6/41
![Page 7: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/7.jpg)
Диаграммы классов
Описывают типы объектов
и статические отношения между ними.
7/41
![Page 8: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/8.jpg)
Классы
8/41
![Page 9: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/9.jpg)
Знакомые слова
ПО UML Класс
(Class)
Класс
(Class)
Наследование
(Inheritance)
Обобщение
(Generalization)
Инстанцирование
(Instantiation)
Классификация
(Classification)
Свойство
(Property)
Атрибут
(Attribute)
Ссылка, связь
(Reference, link)
Ассоциация
(Association)
Метод
(Method)
Операция
(Operation)
Функциональность
(feature)
9/41
![Page 10: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/10.jpg)
Атрибуты
10/41
![Page 11: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/11.jpg)
Ассоциации
Направление ассоциации
Класс-ассоциация ВрЕменное отношение
Двунаправленная ассоциация
11/41
![Page 12: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/12.jpg)
Атрибуты и ассоциации
Чтобы диаграмма
не была перегружена
«линиями»
![Page 13: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/13.jpg)
Операции
видимость имя (список параметров): возвращ.тип {огранич.}
– вигимость: “+” – public, “-” – private, “#” – protected, “~” – package – список парамдтров (моедт быть пустым):
• направление имя : тип = значение по умолчанию – направлднид: in, out, inout (по умолчанию – in)
•Статичдская:
– погчдркивадтся
13/41
![Page 14: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/14.jpg)
Агрегация и композиция
Агрегация (aggregation)
можно озвучить как
«часть – целое»
следует использовать
с особой осторожностью,
так как в нее вкладывают
разный смысл!
Композиция (composition)
это агрегация с доп.
ограничением:
нет совместного владения
в интерфейсе это
«мастер – деталь»
в XML: вложение тега одного
в другой
Можно и не указывать,
тогда предполагается 0..1
![Page 15: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/15.jpg)
Классификация и обобщение
Не всегда слова естественного языка
обозначают одно и то же (это, является):
Шарик – овчарка
Овчарка – это собака
Собаки являются животными
Овчарка – это порода собак
Собака – это биологический вид
15/41
![Page 16: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/16.jpg)
Дополнительные фишки
Параметризованный
класс (шаблон) Параметр
Подстановка
параметра
Перечисление
16/41
![Page 17: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/17.jpg)
Как этим пользоваться?
Не пытайтесь задействовать сразу все
доступные понятия
Подходит для делового языка, но без
технических подробностей и все упрощая
Не надо строить модели для всего
на свете
17/41
![Page 18: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/18.jpg)
Библиотека
18/41
![Page 19: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/19.jpg)
Контакт?
19/41
![Page 20: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/20.jpg)
20/41
![Page 21: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/21.jpg)
Диаграммы последовательности …и как не выстрелить себе в ногу
Показывают поведения нескольких объектов,
упорядоченные по времени их проявления
в рамках одного прецедента.
Прецедент – набор шагов для достижения цели
пользователя.
i
21/41
![Page 22: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/22.jpg)
Диаграммы последовательности
Участник
Найденное
сообщение
Сообщение
Возврат
Активация
Линия жизни
22/41
![Page 23: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/23.jpg)
Когда применять?
Требуется рассмотреть поведение
нескольких объектов в рамках одного
прецедента
Не очень подходит для точного
определения поведения
23/41
![Page 24: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/24.jpg)
Диаграммы деятельности
Описывают логику процедур,
бизнес-процессы и потоки работ,
в том числе параллельные.
24/41
![Page 25: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/25.jpg)
Основные элементы
Начальный узел
Поток / ребро
Операция
Решение
Объединение
Ветвление
Окончание
деятельности
Слияние
Есть диаграмма
вложенной
деятельности
25/41
![Page 26: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/26.jpg)
Декомпозиция операции
Входной параметр Выходной параметр
26/41
![Page 27: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/27.jpg)
Разделы
27/41
![Page 28: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/28.jpg)
Назначение
Диаграммы деятельности описывают
логику процедур, бизнес-процессы
и потоки работ
Диаграммы деятельности также
применяются для:
описания параллельных процессов
блок-схем алгоритмов
(в особенности параллельных алгоритмов)
визуальное программирование workflow
описания прецедентов (use case-ов)
28/41
![Page 29: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/29.jpg)
Мартин Фаулер:
Мне часто приходилось видеть, как
диаграммы деятельности применялись для
описания прецедентов. Опасность такого
подхода состоит в том, что часто эксперты
в предметной области с трудом могут им
следовать. Если дело обстоит так, то лучше
обойтись простой текстовой формой.
29/41
![Page 30: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/30.jpg)
Диаграммы состояний
Описывают поведение одного объекта
в нескольких прецедентах.
30/41
![Page 31: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/31.jpg)
Основные элементы
Начальное
псевдосостояние
Конечное
состояние
Состояние
Переход
Внутренние
активности
31/41
![Page 32: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/32.jpg)
Переходы и их метки
триггер [защита] / действие
Событие
или внешнее действие
Условия
осуществимости перехода
Внутренняя логика перехода
(реализация перехода)
Направление перехода
32/41
![Page 33: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/33.jpg)
Состояния
Самопереход возвращает объект
в то же состояние
Внутренние активности не инициируют
entry и exit
33/41
![Page 34: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/34.jpg)
Супер- и параллельные состояния
34/41
![Page 35: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/35.jpg)
Когда применять?
Описание поведения одного объекта
в нескольких прецедентах
Плохо подходят для описания
взаимодействия нескольких объектов
Полезно применять для классов,
проявляющих интересное поведение
35/41
![Page 36: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/36.jpg)
Не-UML
Сам по себе UML не предполагает
возможностей для расширения нотации
кстати, за это его очень часто критикуют
Применение по соглашению
(conventional use)
нет в стандарте
но широко используется
36/41
![Page 37: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/37.jpg)
Не-UML
UML недостаточно!
«Команды разработчиков часто формируют
собственные локальные соглашения»
«Во многих случаях полезными могут оказаться
различные диаграммы, и не надо избегать
диаграмм, не имеющих отношения к UML,
если не нашлось диаграмм UML, подходящих
для ваших целей»
Примеры:
диаграмма потоков экранов
таблица решений
37/41
![Page 38: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/38.jpg)
Инструменты
MS Visio
UML Graph
Violet
UMLet
ArgoUML
StarUML
…Есть и коммерческие продукты
38/41
![Page 39: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/39.jpg)
Литература
39/41
![Page 40: Разработка ПО с помощью UML](https://reader033.fdocuments.net/reader033/viewer/2022052505/555e1927d8b42a9e188b583f/html5/thumbnails/40.jpg)
Практика
40/41