Uml for students

Post on 22-May-2015

1.712 views 1 download

Tags:

description

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

Transcript of Uml for students

Проектирование с использованием 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

Литература