Post on 22-May-2015
description
Проектирование с использованием UML
Владислав Иофе
28 апреля 2011 г.
2 из 48
Что обещано?
Мы расскажем о том, что такое UML: для чего он задумывался, и для
чего используется.
Вместе с вами мы рассмотрим:
наиболее употребимые виды диаграмм с примерами
инструменты работы с UML
UML-анекдот
и ответим на вопросы:
почему UML не достаточно
блок-схема – это UML?
После чего вы попрактикуетесь в проектировании небольшой
информационной системы с помощью UML.
3 из 48
Что такое UML
Объектно-ориентированное
программирование
Объектно-ориентированное
проектирование Графическая
нотация
4 из 48
История
1988-92 – основные работы по языкам графического
моделирования, десятки языков
1994 – и
1995 – Unified Method 0.8
1995 – “Three Amigos”
1996 – разработка стандарта переходит к
новый язык объектно-
ориентированного
моделирования
5 из 48
История
1997 – UML 1.0
2001 – UML 1.4.2, сейчас это международный
стандарт ISO
2005 – UML 2.0
2010 – UML 2.3, пока это последняя версия
6 из 48
Способы использования UML
Способы
использования
UML
Эскизное
моделирование (набросок от руки)
Проектирование (чертеж)
Программирование (граф.представление кода)
Практика
использования
+ Мартин Фаулер
Авторы
UML
Executable UML
Избирательность
передачи
информации,
нестрогость
Полнота
Пока
недоразвитые
инструменты.
Эффективность
?
7 из 48
Способы использования UML
Документирование
Бизнес-анализ (анализ требований)
Системная
архитектура (проектирование)
Понятия из
предметной области
Модель программы;
Понимание чужого кода
8 из 48
Виды диаграмм
9 из 48
Допустимый UML
Сам по себе UML не предполагает возможностей для расширения нотации кстати, за это его очень часть критикуют
Распространены соглашения, которых нет в стандарте
UML не достаточно «Команды разработчиков часто формируют собственные
локальные соглашения»
«… не надо избегать диаграмм, не имеющих отношения к UML, если не нашлось диаграмм UML, подходящих для ваших целей»
Диаграммы классов
Описывают типы объектов и
статические отношения между
ними
11 из 48
Основные понятия диаграмм классов
ПО UML
Класс
(Class)
Класс
(Class)
Наследование
(Inheritance)
Обобщение
(Generalization)
Инстанцирование
(Instantiation) Классификация
Свойство
(Property)
Функциональность
(Feature)
Свойство
(Property)
Атрибут
(Attribute)
Ссылка, связь
(Reference, link)
Ассоциация
(Association)
Метод
(Method)
Операция
(Operation)
12 из 48
Типичная диаграмма классов
13 из 48
Основные элементы: классы
14 из 48
Основные элементы: обобщения и классификации
Дискриминатор
15 из 48
Классификация vs. обобщение
Не всегда слова естественного языка
обозначают одно и то же (это, является):
Шарик – овчарка
Овчарка – это собака
Собаки являются животными
Овчарка – это порода собак
Собака – это биологический вид
16 из 48
Основные элементы: атрибуты
видимость имя: тип [кратность] = нач.значение {огранич.}
видимость: “+” – public, “-” – private, “#” – protected, “~” – package
кратность: [0..1] – необязательный,
[1] – обязательный,
[*] – множественный (массив, список)
ограничения: {frozen}, {readOnly}, {ordered}, {unique}, {nonunique}
Вычислимый (производный) атрибут: впереди ставится слеш (“/”)
Статический: подчеркивается
17 из 48
Основные элементы: операции
видимость имя (список параметров): возвращ.тип {огранич.}
видимость: “+” – public, “-” – private, “#” – protected, “~” – package
список параметров (может быть пустым):
направление имя : тип = значение по умолчанию направление: in, out, inout (по умолчанию – in)
Статическая: подчеркивается
18 из 48
Основные элементы: ассоциации
Направление ассоциации
Двунаправленная ассоциация
Класс-ассоциация Временное отношение
19 из 48
Основные элементы: ассоциации vs. атрибуты
ПО UML
Класс
(Class)
Класс
(Class)
Наследование
(Inheritance)
Обобщение
(Generalization)
Инстанцирование
(Instantiation) Классификация
Свойство
(Property)
Функциональность
(Feature)
Свойство
(Property)
Атрибут
(Attribute)
Ссылка, связь
(Reference, link)
Ассоциация
(Association)
Метод
(Method)
Операция
(Operation)
20 из 48
Основные элементы: ассоциации vs. атрибуты
Чтобы диаграмма
не была перегружена
«линиями»
21 из 48
Агрегация и композиция
Агрегация (aggregation) можно озвучить как
«часть – целое»
следует использовать с особой осторожностью, так как в нее вкладывают разный смысл!
Композиция (composition) это агрегация с доп.
ограничением:
нет совместного владения
в интерфейсе это «мастер – деталь»
в XML: вложение тега одного в другой
Можно и не указывать,
тогда
предполагается 0..1
22 из 48
Композиция: полушутя-полусерьѐзно
«Нельзя объять необъятное».
Козьма Прутков
Опровержение:
23 из 48
Основные элементы: перечисление
Перечисление
24 из 48
Модель предметной области Scrum
Sprint
имеет номер
на спринт обязательно формулируется цель!
начинается в определенную дату
заканчивается в назначенный день
а еще на Sprint фиксируется время Daily Scrum Meeting-ов (DSM)
и обязательно назначается время и место демонстрации (чтобы могли придти все желающие)
25 из 48
в Scrum-е работу выполняет команда
команда состоит из сотрудников, есть Scrum Master
не каждый сотрудник обязан быть приписан к определенной команде
при планировании Sprint-а фиксируется степень участия сотрудника
исходя из этого (и длины спринта) вычисляется итоговое количество рабочих часов
при помощи планируемого Focus factor-а (FF) эти часы пересчитываются в общее количество Story point-ов (SP) на Sprint
Модель предметной области Scrum
26 из 48
Модель предметной области Scrum
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 из 48
Основные элементы диаграммы классов Примечание
Операции
Атрибуты
«Производные»
атрибуты
Обобщение
Класс
Ассоциация
Композиция
Кратность
Переменка
10 минут
Диаграммы последовательности
Показывают поведение
нескольких объектов,
упорядоченные по времени их
проявления в рамках одного
прецедента *
* Прецедент – набор шагов для
достижения цели пользователя
31 из 48
Диаграммы последовательности: Google Checkout
Найденное
сообщение
Сообщение
Возврат
Активация
Самовызов
Линия жизни
Участник
Параметр
32 из 48
Диаграммы последовательности: Google Checkout
Примерно та же диаграмма
в исполнении Google:
Из официальной
документации
Не UML
Но не менее понятна
Выделяет
дополнительные
аспекты
(напр., границы разных
API)
33 из 48
Анекдот из Преисподней
Один политик, один вор и один
работник аудиторской компании
умерли и попали прямо в ад…
umljokes.com
Диаграммы состояний
Описывают поведение одного
объекта в нескольких
прецедентах
35 из 48
Диаграммы состояний: основные элементы
Начальное
псевдосостояние
Конечное
состояние
Состояние
Переход
Внутренние
активности
36 из 48
Основные элементы: переходы и их метки
Событие или
внешнее действие
Условия осуществимости
перехода
Внутренняя логика перехода
(реализация перехода)
Направление перехода
37 из 48
Основные элементы: состояния
Самопереход возвращает объект в то же состояние
Внутренние активности не инициируют entry и exit
38 из 48
Продвинутые элементы: супер- и параллельные состояния
Диаграммы деятельности
Описывают логику процедур,
бизнес-процессы и потоки работ,
в т.ч. параллельные.
40 из 48
Основные элементы
Начальный узел
Поток / ребро
Операция
Решение
Объединение
Ветвление
Конец
деятельности
Слияние
Есть диаграмма
вложенной
деятельности
41 из 48
Основные элементы: декомпозиция операции
Входной параметр Выходной параметр
42 из 48
Основные элементы: разделы
Не-UML
• Диаграммы планов счетов
44 из 48
Когда UML не достаточно
UML
НЕ-UML
Диаграмма плана счетов: личные финансы
45 из 48
Что мы не рассмотрели?
Диаграммы пакетов
Диаграммы прецедентов
Полезно в качестве самообразования
46 из 48
Инструменты
47 из 48
Инструменты
• MS Visio http://softwarestencils.com/uml/
• UML Graph http://www.umlgraph.org
• Violet http://www.horstmann.com/violet/
• UMLet http://www.umlet.com/
• ArgoUML http://argouml.tigris.org/
• StarUML http://staruml.sourceforge.net/en/
• Есть и коммерческие продукты
48 из 48
Литература