2. 2 из 48
Что обещано?
Мы расскажем о том, что такое UML: для чего он задумывался, и для
чего используется.
Вместе с вами мы рассмотрим:
наиболее употребимые виды диаграмм с примерами
инструменты работы с UML
UML-анекдот
и ответим на вопросы:
почему UML не достаточно
блок-схема – это UML?
После чего вы попрактикуетесь в проектировании небольшой
информационной системы с помощью UML.
3. 3 из 48
Что такое UML
Объектно-ориентированное
проектирование Графическая
нотация
Объектно-ориентированное
программирование
4. 4 из 48
История
1988-92 – основные работы по языкам графического
моделирования, десятки языков
1994 – и новый язык объектно-
ориентированного
моделирования
1995 – Unified Method 0.8
1995 – “Three Amigos”
1996 – разработка стандарта переходит к
5. 5 из 48
История
1997 – UML 1.0
2001 – UML 1.4.2, сейчас это международный
стандарт ISO
2005 – UML 2.0
2010 – UML 2.3, пока это последняя версия
6. 6 из 48
Способы использования UML
Практика
использования Эскизное Избирательность
+ Мартин Фаулер передачи
моделирование информации,
(набросок от руки) нестрогость
Способы
Проектирование
использования Полнота
(чертеж)
UML
Пока
Программирование недоразвитые
(граф.представление кода) инструменты.
Авторы Эффективность
UML
?
Executable UML
7. 7 из 48
Способы использования UML
Модель программы;
Понимание чужого кода
Системная
Бизнес-анализ архитектура
(анализ требований) (проектирование)
Документирование
Понятия из
предметной области
9. 9 из 48
Допустимый UML
Сам по себе UML не предполагает возможностей для
расширения нотации
кстати, за это его очень часть критикуют
Распространены соглашения, которых нет в стандарте
UML не достаточно
«Команды разработчиков часто формируют собственные
локальные соглашения»
«… не надо избегать диаграмм, не имеющих отношения к
UML, если не нашлось диаграмм UML, подходящих для ваших
целей»
11. 11 из 48
Основные понятия
диаграмм классов
ПО UML
Класс Класс
(Class) (Class)
Наследование Обобщение
(Inheritance) (Generalization)
Инстанцирование
Классификация
(Instantiation)
Свойство Атрибут
(Property) Свойство (Attribute)
Ссылка, связь Функциональность (Property) Ассоциация
(Reference, link) (Feature) (Association)
Метод Операция
(Method) (Operation)
14. 14 из 48
Основные элементы:
обобщения и классификации
Дискриминатор
15. 15 из 48
Классификация vs. обобщение
Не всегда слова естественного языка
обозначают одно и то же (это, является):
Шарик – овчарка
Овчарка – это собака
Собаки являются животными
Овчарка – это порода собак
Собака – это биологический вид
17. 17 из 48
Основные элементы:
операции
видимость имя (список параметров): возвращ.тип {огранич.}
видимость: “+” – public, “-” – private, “#” – protected, “~” – package
список параметров (может быть пустым):
направление имя : тип = значение по умолчанию
направление: in, out, inout (по умолчанию – in)
Статическая:
подчеркивается
18. 18 из 48
Основные элементы:
ассоциации
Направление ассоциации
Класс-ассоциация Временное отношение
Двунаправленная ассоциация
19. 19 из 48
Основные элементы:
ассоциации vs. атрибуты
ПО UML
Класс Класс
(Class) (Class)
Наследование Обобщение
(Inheritance) (Generalization)
Инстанцирование
Классификация
(Instantiation)
Свойство Атрибут
(Property) Свойство (Attribute)
Ссылка, связь Функциональность (Property) Ассоциация
(Reference, link) (Feature) (Association)
Метод Операция
(Method) (Operation)
20. 20 из 48
Основные элементы:
ассоциации vs. атрибуты
Чтобы диаграмма
не была перегружена
«линиями»
21. 21 из 48
Агрегация и композиция
Агрегация (aggregation) Композиция (composition)
можно озвучить как это агрегация с доп.
«часть – целое» ограничением:
следует использовать с особой нет совместного владения
осторожностью, так как в нее в интерфейсе это
вкладывают разный смысл! «мастер – деталь»
в XML: вложение тега одного в
другой
Можно и не указывать,
тогда
предполагается 0..1
24. 24 из 48
Модель предметной области
Scrum
Sprint
имеет номер
на спринт обязательно формулируется цель!
начинается в определенную дату
заканчивается в назначенный день
а еще на Sprint фиксируется время Daily Scrum Meeting-ов (DSM)
и обязательно назначается время и место демонстрации (чтобы
могли придти все желающие)
25. 25 из 48
Модель предметной области
Scrum
в Scrum-е работу выполняет команда
команда состоит из сотрудников, есть Scrum Master
не каждый сотрудник обязан быть приписан к определенной команде
при планировании Sprint-а фиксируется степень участия сотрудника
исходя из этого (и длины спринта) вычисляется итоговое количество рабочих часов
при помощи планируемого Focus factor-а (FF) эти часы пересчитываются в общее
количество Story point-ов (SP) на Sprint
27. 27 из 48
Пример кода на C#
public abstract class Backlog
{
public Employee ProductOwner { get; set; }
public Team Team { get; set; }
}
public abstract class BacklogItem
{
public long Id { get; set; }
public string Name { get; set; }
// ...
}
public class ProductBacklog : Backlog
{
public ProductBacklogItem[] Items { get; set; }
}
public enum ProductBacklogItemState
{
None,
InSprint,
Done
}
public class ProductBacklogItem : BacklogItem
{
public ProductBacklog Backlog { get; set; }
public ProductBacklogItemState State { get; set;
}
28. 28 из 48
Основные элементы диаграммы классов
Примечание
Класс
Атрибуты
«Производные»
атрибуты
Операции
Ассоциация
Кратность
Обобщение
Композиция
30. Диаграммы последовательности
Показывают поведение
нескольких объектов,
упорядоченные по времени их
проявления в рамках одного
прецедента *
* Прецедент – набор шагов для
достижения цели пользователя
31. 31 из 48
Диаграммы последовательности:
Google Checkout
Участник
Найденное
сообщение
Сообщение
Возврат
Активация
Самовызов
Линия жизни
Параметр
32. 32 из 48
Диаграммы последовательности:
Google Checkout
Примерно та же диаграмма
в исполнении Google:
Из официальной
документации
Не UML
Но не менее понятна
Выделяет
дополнительные
аспекты
(напр., границы разных
API)
33. 33 из 48
Анекдот из
Преисподней
Один политик, один вор и один
работник аудиторской компании
умерли и попали прямо в ад…
umljokes.com
35. 35 из 48
Диаграммы состояний:
основные элементы
Состояние
Переход
Начальное
псевдосостояние
Конечное
состояние
Внутренние
активности
36. 36 из 48
Основные элементы:
переходы и их метки
Направление перехода
Событие или Условия осуществимости Внутренняя логика перехода
внешнее действие перехода (реализация перехода)
37. 37 из 48
Основные элементы:
состояния
Самопереход возвращает объект в то же состояние
Внутренние активности не инициируют entry и exit
38. 38 из 48
Продвинутые элементы:
супер- и параллельные состояния
40. 40 из 48
Основные элементы
Начальный узел Слияние
Поток / ребро
Есть диаграмма
Операция вложенной
деятельности
Ветвление
Объединение Конец
деятельности
Решение
41. 41 из 48
Основные элементы:
декомпозиция операции
Входной параметр Выходной параметр