Uml for students

48
Проектирование с использованием UML Владислав Иофе 28 апреля 2011 г.

description

Презентация к семинару "Проектирование с использованием UML"

Transcript of Uml for students

Page 1: Uml for students

Проектирование с использованием UML

Владислав Иофе

28 апреля 2011 г.

Page 2: Uml for students

2 из 48

Что обещано?

Мы расскажем о том, что такое UML: для чего он задумывался, и для

чего используется.

Вместе с вами мы рассмотрим:

наиболее употребимые виды диаграмм с примерами

инструменты работы с UML

UML-анекдот

и ответим на вопросы:

почему UML не достаточно

блок-схема – это UML?

После чего вы попрактикуетесь в проектировании небольшой

информационной системы с помощью UML.

Page 3: Uml for students

3 из 48

Что такое UML

Объектно-ориентированное

программирование

Объектно-ориентированное

проектирование Графическая

нотация

Page 4: Uml for students

4 из 48

История

1988-92 – основные работы по языкам графического

моделирования, десятки языков

1994 – и

1995 – Unified Method 0.8

1995 – “Three Amigos”

1996 – разработка стандарта переходит к

новый язык объектно-

ориентированного

моделирования

Page 5: Uml for students

5 из 48

История

1997 – UML 1.0

2001 – UML 1.4.2, сейчас это международный

стандарт ISO

2005 – UML 2.0

2010 – UML 2.3, пока это последняя версия

Page 6: Uml for students

6 из 48

Способы использования UML

Способы

использования

UML

Эскизное

моделирование (набросок от руки)

Проектирование (чертеж)

Программирование (граф.представление кода)

Практика

использования

+ Мартин Фаулер

Авторы

UML

Executable UML

Избирательность

передачи

информации,

нестрогость

Полнота

Пока

недоразвитые

инструменты.

Эффективность

?

Page 7: Uml for students

7 из 48

Способы использования UML

Документирование

Бизнес-анализ (анализ требований)

Системная

архитектура (проектирование)

Понятия из

предметной области

Модель программы;

Понимание чужого кода

Page 8: Uml for students

8 из 48

Виды диаграмм

Page 9: Uml for students

9 из 48

Допустимый UML

Сам по себе UML не предполагает возможностей для расширения нотации кстати, за это его очень часть критикуют

Распространены соглашения, которых нет в стандарте

UML не достаточно «Команды разработчиков часто формируют собственные

локальные соглашения»

«… не надо избегать диаграмм, не имеющих отношения к UML, если не нашлось диаграмм UML, подходящих для ваших целей»

Page 10: Uml for students

Диаграммы классов

Описывают типы объектов и

статические отношения между

ними

Page 11: Uml for students

11 из 48

Основные понятия диаграмм классов

ПО UML

Класс

(Class)

Класс

(Class)

Наследование

(Inheritance)

Обобщение

(Generalization)

Инстанцирование

(Instantiation) Классификация

Свойство

(Property)

Функциональность

(Feature)

Свойство

(Property)

Атрибут

(Attribute)

Ссылка, связь

(Reference, link)

Ассоциация

(Association)

Метод

(Method)

Операция

(Operation)

Page 12: Uml for students

12 из 48

Типичная диаграмма классов

Page 13: Uml for students

13 из 48

Основные элементы: классы

Page 14: Uml for students

14 из 48

Основные элементы: обобщения и классификации

Дискриминатор

Page 15: Uml for students

15 из 48

Классификация vs. обобщение

Не всегда слова естественного языка

обозначают одно и то же (это, является):

Шарик – овчарка

Овчарка – это собака

Собаки являются животными

Овчарка – это порода собак

Собака – это биологический вид

Page 16: Uml for students

16 из 48

Основные элементы: атрибуты

видимость имя: тип [кратность] = нач.значение {огранич.}

видимость: “+” – public, “-” – private, “#” – protected, “~” – package

кратность: [0..1] – необязательный,

[1] – обязательный,

[*] – множественный (массив, список)

ограничения: {frozen}, {readOnly}, {ordered}, {unique}, {nonunique}

Вычислимый (производный) атрибут: впереди ставится слеш (“/”)

Статический: подчеркивается

Page 17: Uml for students

17 из 48

Основные элементы: операции

видимость имя (список параметров): возвращ.тип {огранич.}

видимость: “+” – public, “-” – private, “#” – protected, “~” – package

список параметров (может быть пустым):

направление имя : тип = значение по умолчанию направление: in, out, inout (по умолчанию – in)

Статическая: подчеркивается

Page 18: Uml for students

18 из 48

Основные элементы: ассоциации

Направление ассоциации

Двунаправленная ассоциация

Класс-ассоциация Временное отношение

Page 19: Uml for students

19 из 48

Основные элементы: ассоциации vs. атрибуты

ПО UML

Класс

(Class)

Класс

(Class)

Наследование

(Inheritance)

Обобщение

(Generalization)

Инстанцирование

(Instantiation) Классификация

Свойство

(Property)

Функциональность

(Feature)

Свойство

(Property)

Атрибут

(Attribute)

Ссылка, связь

(Reference, link)

Ассоциация

(Association)

Метод

(Method)

Операция

(Operation)

Page 20: Uml for students

20 из 48

Основные элементы: ассоциации vs. атрибуты

Чтобы диаграмма

не была перегружена

«линиями»

Page 21: Uml for students

21 из 48

Агрегация и композиция

Агрегация (aggregation) можно озвучить как

«часть – целое»

следует использовать с особой осторожностью, так как в нее вкладывают разный смысл!

Композиция (composition) это агрегация с доп.

ограничением:

нет совместного владения

в интерфейсе это «мастер – деталь»

в XML: вложение тега одного в другой

Можно и не указывать,

тогда

предполагается 0..1

Page 22: Uml for students

22 из 48

Композиция: полушутя-полусерьѐзно

«Нельзя объять необъятное».

Козьма Прутков

Опровержение:

Page 23: Uml for students

23 из 48

Основные элементы: перечисление

Перечисление

Page 24: Uml for students

24 из 48

Модель предметной области Scrum

Sprint

имеет номер

на спринт обязательно формулируется цель!

начинается в определенную дату

заканчивается в назначенный день

а еще на Sprint фиксируется время Daily Scrum Meeting-ов (DSM)

и обязательно назначается время и место демонстрации (чтобы могли придти все желающие)

Page 25: Uml for students

25 из 48

в Scrum-е работу выполняет команда

команда состоит из сотрудников, есть Scrum Master

не каждый сотрудник обязан быть приписан к определенной команде

при планировании Sprint-а фиксируется степень участия сотрудника

исходя из этого (и длины спринта) вычисляется итоговое количество рабочих часов

при помощи планируемого Focus factor-а (FF) эти часы пересчитываются в общее количество Story point-ов (SP) на Sprint

Модель предметной области Scrum

Page 26: Uml for students

26 из 48

Модель предметной области Scrum

Page 27: Uml for students

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; }

Page 28: Uml for students

28 из 48

Основные элементы диаграммы классов Примечание

Операции

Атрибуты

«Производные»

атрибуты

Обобщение

Класс

Ассоциация

Композиция

Кратность

Page 29: Uml for students

Переменка

10 минут

Page 30: Uml for students

Диаграммы последовательности

Показывают поведение

нескольких объектов,

упорядоченные по времени их

проявления в рамках одного

прецедента *

* Прецедент – набор шагов для

достижения цели пользователя

Page 31: Uml for students

31 из 48

Диаграммы последовательности: Google Checkout

Найденное

сообщение

Сообщение

Возврат

Активация

Самовызов

Линия жизни

Участник

Параметр

Page 32: Uml for students

32 из 48

Диаграммы последовательности: Google Checkout

Примерно та же диаграмма

в исполнении Google:

Из официальной

документации

Не UML

Но не менее понятна

Выделяет

дополнительные

аспекты

(напр., границы разных

API)

Page 33: Uml for students

33 из 48

Анекдот из Преисподней

Один политик, один вор и один

работник аудиторской компании

умерли и попали прямо в ад…

umljokes.com

Page 34: Uml for students

Диаграммы состояний

Описывают поведение одного

объекта в нескольких

прецедентах

Page 35: Uml for students

35 из 48

Диаграммы состояний: основные элементы

Начальное

псевдосостояние

Конечное

состояние

Состояние

Переход

Внутренние

активности

Page 36: Uml for students

36 из 48

Основные элементы: переходы и их метки

Событие или

внешнее действие

Условия осуществимости

перехода

Внутренняя логика перехода

(реализация перехода)

Направление перехода

Page 37: Uml for students

37 из 48

Основные элементы: состояния

Самопереход возвращает объект в то же состояние

Внутренние активности не инициируют entry и exit

Page 38: Uml for students

38 из 48

Продвинутые элементы: супер- и параллельные состояния

Page 39: Uml for students

Диаграммы деятельности

Описывают логику процедур,

бизнес-процессы и потоки работ,

в т.ч. параллельные.

Page 40: Uml for students

40 из 48

Основные элементы

Начальный узел

Поток / ребро

Операция

Решение

Объединение

Ветвление

Конец

деятельности

Слияние

Есть диаграмма

вложенной

деятельности

Page 41: Uml for students

41 из 48

Основные элементы: декомпозиция операции

Входной параметр Выходной параметр

Page 42: Uml for students

42 из 48

Основные элементы: разделы

Page 43: Uml for students

Не-UML

• Диаграммы планов счетов

Page 44: Uml for students

44 из 48

Когда UML не достаточно

UML

НЕ-UML

Диаграмма плана счетов: личные финансы

Page 45: Uml for students

45 из 48

Что мы не рассмотрели?

Диаграммы пакетов

Диаграммы прецедентов

Полезно в качестве самообразования

Page 46: Uml for students

46 из 48

Инструменты

Page 47: Uml for students

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/

• Есть и коммерческие продукты

Page 48: Uml for students

48 из 48

Литература