Similar presentations:
UML. Модель. Диаграммы
1.
UMLМодель. Диаграммы.
2.
Модель UML – совокупность конечного множестваконструкций языка, главные из которых – это
сущности и отношения между ними.
Сущности и отношения образуют граф, где
сущности – вершины, отношения - рёбра.
Вершины и рёбра нагружены дополнительной
информацией и могут иметь сложную внутреннюю
структуру.
Диаграмма – графическое представление модели
составленное в соответствии с набором правил
3.
Помимо сущностей и отношений надиаграмме присутствуют другие элементы
модели (конструкции языка): тексты, написаны
внутри фигур сущностей или рядом с линиями
отношений, рамки и значки. Эти элементы
несут смысловую нагрузку.
4.
Типы элементов UML• Фигура (shape)
• Линия (line)
• Значок (icon)
• Текст (text)
• Рамка (frame)
5.
ФигурыЯвляются двумерными замкнутыми
изображениями.
Внутри фигуры могут помещаться другие элементы.
Единственное требование: должно быть
однозначно понятно что элемент находится внутри
фигуры, в частности изображение элементы не
должно пересекать границу фигуры.
6.
ЛинииВсегда присоединяются обоими своими концами к
фигурам или значкам.
Толщина и форма линий произвольны и не имеют
значения: прямые, ломанные, плавные и пр.
Стиль имеет значение: сплошная или пунктирная
(их всего два).
К линиям могут быть пририсованы дополнительные
элементы: стрелки, текст и т.д.
Пересечение допускается но рекомендуется
избегать
7.
ЗначкиВ отличии от фигур не имеют внутренней структуры
куда можно что-то поместить.
8.
ТекстыАлфавит не фиксирован.
Гарнитура, размер и цвет не имеют значения, а
начертание (курсивный, подчёркнутый или прямой)
имеет.
9.
РамкаЧастный случай фигуры, которая используется как
контейнер для фигур, линий, значков, текстов.
Имеет прямоугольную форму, и, как правило, имя
рамки.
Пустые рамки не допускаются.
10.
11.
Оформление диаграммы12.
Диаграммы и тегиДиаграмма
Тег
Вариантов использования (прецедентов)
use case или uc
Классов
class
Состояний (автомата)
state machine или stm
Деятельности
activity или act
Последовательности
sd
Коммуникации
comm
Компонентов
components или cmp
Размещения
deployment
Объектов
object
Композитной структуры
class или component
Обзора взаимодействий
interaction
Синхронизации
timing
Пакетов
package
13.
Моделированиепрецедентов
Диаграмма вариантов использования (Use
Case)
14.
Моделирование прецедентов – способ выявления идокументирования требований (функциональных):
• Устанавливаются границы системы
• Выявляются актёры (действующие лица)
• Выявляются прецеденты
• Определяется прецедент
• Устанавливаются основные и альтернативные
потоки
15.
Модель прецедентов состоит из следующихкомпонентов:
• Граница (контекст) системы – прямоугольник
очерчивающий прецеденты.
• Актёры – роли, выполняемые людьми или
сущностями, использующими систему.
• Прецеденты – то, что актёры могут делать с
системой.
• Отношения – значимые отношения между
актёрами и прецедентами.
16.
АктёрыАктёр – роль, которую выполняет внешняя сущность. Сущности
могут играть несколько ролей одновременно либо исполнять их
последовательно. Роль может исполняться многими сущностями.
Актёры всегда внешние по отношению к системе.
Правильно
Неправильно
17.
Время как актёрЕсли необходимо смоделировать что-то, происходящее с системой
в определённый момент, но не инициируемое ни одним из
актёров, можно ввести актёра «Время».
18.
ПрецедентЭто последовательность действий, включая
альтернативные и ошибочные, которые система может
осуществлять, взаимодействую с актёрами.
Каждому прецеденту присваивается описательное имя:
глагол или глагольная группа (допускаются отглагольные
существительные). Имя должно быть уникальным.
19.
Пример20.
Спецификацияпрецедентов
21.
Имя прецедентаПрецедент: Доставить
Краткое описание
Описание:
Доставка товара покупателю
Актёры, вовлечённые в прецедент
Главные актёры:
Служба доставки, ….
Второстепенные актёры:
Покупатель, …
Предусловия:
Состояние системы до начала прецедента:
1. …
«Не выявлены»
Постусловия:
Состояние системы после окончания прецедента:
Фактические этапы прецедента
1. …
«Не выявлены»
Основной поток:
1. …
Альтернативные потоки:
Альтернативные потоки
Альтернативный поток 1:
1. …
Альтернативный поток 2:
…
«Не выявлены»
22.
С точки зрения прецедента существуют два типаактёров:
1. Главные – могут инициировать прецедент
2. Второстепенные – взаимодействующие с
прецедентом, но только после его
инициализации.
Прецедент всегда инициируется одним актёром,
однако в разные моменты времени это могут быть
разные актёры.
23.
Предусловия ограничивают состояние системы,необходимое для инициализации прецедента.
Должны быть выполнены все перечисленные
условия.
Постусловия описывают условия которые будут
истинными после выполнения прецедента.
24.
Основной поток описывает этапы прецедента,отражающие идеальную ситуацию.
Простые отклонения от идеального сценария –
создают ветвления основного потока.
Сложные отклонения – создают альтернативные
потоки.
Каждый этап потока должен быть выражен
формулой:
<номер><кто-либо><совершает некоторое
действие>
25.
Правильно1.Прецедент запускается, когда покупатель выбирает
опцию «разместить заказ».
2.Покупатель заполняет в форме свои имя и адрес.
Неправильно
1.Инициация.
2.Вводятся данные покупателя.
26.
Ветвление потокаn. Если <кто-либо><совершает некоторое действие>
n.1. <кто-либо><совершает некоторое действие>
n.2. <кто-либо><совершает некоторое действие>
...
n+1. Если <логическое выражение>
…
Используется многоуровневый список, вложенный список под
выражение – то что происходит есть условие выполняется.
Т.к. события могут произойти, а могут и нет, то ветвление не
генерирует постусловий.
27.
Повторения в потокеn. Для <выражение итерации>
n.1. Сделать что-то.
n.2. Сделать что-то ещё.
…
n+1. …
n. Пока <логическое выражение>
n.1. Сделать что-то.
n.2. Сделать что-то ещё.
…
n+1. …
28.
Альтернативные потокиУ каждого прецедента может быть один основной поток и
множество альтернативных. Альтернативные пути
перехватывают ошибки, ответвления и прерывания
основного потока.
Альтернативные потоки могут быть задокументированы
отдельно или добавляться в конце прецедента.
29.
Альтернативные потоки могут быть инициированы:• Вместо основного – в этом случае его инициирует главный
актёр.
• После определённого этапа основного (в отличии от
ветвления может не вернуться в основной поток) – должен
начитаться со слов:
1. Альтернативный поток начинается после шага N основного
потока
• В любой момент времени– должен начитаться со слов:
1. Альтернативный поток начинается в любой момент
времени
Если нужно вернуться в основной поток:
N. Альтернативный поток возвращается на шаг M основного
потока
30.
Обобщение актёровПравильно
Ещё правильней
31.
Обобщение актёров выносит поведение, общее длядвух и более актёров, в актёра-родителя.
Актёры-потомки наследуют роли и отношения с
прецедентами от актёра-предка. Актёр-потомок
может использоваться вместо актёра-предка
(принцип замещаемости).
32.
Отношение «include»Выносит шаги, общие для нескольких прецедентов, в отдельный
прецедент, который затем включается в остальные т.е. позволяет
включать поведение одного прецедента в поток другого
прецедента.
Включаемый прецедент предоставляет поведение своему
базовому прецеденту. В базовом прецеденте необходимо точно
указать место, где должно быть включено поведение включаемого.
33.
34.
Прецедент: Изменить данные сотрудниковОписание:
Руководитель изменяет данные сотрудников
Главные актёры:
Руководитель
Предусловия:
1. Руководитель входит в систему
Постусловия:
1. Данные сотрудников изменены
Основной поток:
1.
include Получить данные сотрудников
2.
Система выводит данные сотрудников
3.
Руководитель меняет данные
Альтернативные потоки:
Нет
35.
Если включаемый прецедент неполный, он простосодержит часть потока событий и является фрагментом
поведения и не может быть инициализирован актёром
напрямую.
Неполный
Полный
36.
Отношение «extend»Это способ введения нового поведения в существующий
прецедент.
Базовый прецедент предоставляет набор точек
расширения, в которые может быть добавлено новое
поведение. А расширяющий предоставляет сегмент
вставки, который можно ввести в базовый в указанные
места.
Точки расширения не являются частью потока выполнения.
37.
Прецедент: Вернуть книгуОписание:
Библиотекарь возвращает взятую книгу
Главные актёры:
Библиотекарь
Предусловия:
1. Библиотекарь авторизовался в системе
Постусловия:
1. Книга возвращена
Основной поток:
1.
Библиотекарь находит карточку читателя
2.
Система выводит список взятых читателем
книг
3.
Библиотекарь находит в списке
возвращаемую книгу
Точка расширения: просроченная книга
4.
Библиотекарь возвращает книгу
Альтернативные потоки:
Нет
38.
В отношении «extend»можно точно указать,
какие именно точки
базового прецедента
подлежат расширению.
Также точки расширения
можно показать на
диаграмме перечислив
их в новой ячейке
прецедента
39.
• В отношении следует указывать одну илинесколько точек расширения, если не указана
ничего, предполагается, что отношение относится
ко всем точкам расширения.
• В расширяющем прецеденте должно быть столько
сегментов сколько точек расширения определено
отношением.
• Два прецедента могут расширять один базовый,
порядок их выполнения не определён.
40.
Расширяющий прецедент: Взять штрафОписание:
Сегмент 1: Библиотекарь выписывает штраф
Главные актёры:
Библиотекарь
Сегмент 1 предусловия:
1. Книга просрочена
Сегмент 1 постусловия:
1. Система зафиксировала штраф
Основной поток сегмента 1:
1. Библиотекарь вводит срок просрочки штрафа
2. Система распечатывает штраф
41.
Нарисовать диаграмму прецедентовПриложение позволяет оператору просматривать список
записей, фильтровать и сортировать список, удалять
записи, изменять их значения и добавлять новые. При
удалении и изменении записей следует выводить
предупреждающее сообщение и запрашивать
подтверждение. При изменении записей и добавлении
новых следует выполнять проверку вводимых данных.
42.
Моделированиеклассов
43.
Класс надо рассматривать как шаблон объектов: определяетструктуру (свойства) объектов. Все объект одного класса имеют
одинаковый набор операций, атрибутов и отношений. Значения
атрибутов могут отличаться.
44.
Ячейка имени• Рекомендуется записывать имя в стиле
UpperCamelCase. Не использовать специальные
символы (-, &, ? и т.д.). Не использовать
аббревиатуры и сокращения, хотя допускаются
широко используемые в предметной области
акронимы, например «UML».
• Имя должно быть существительным или именной
группой.
45.
Ячейка атрибутов• Рекомендуется записывать имена в стиле
lowerCamelCase. Избегать специальных символов и
сокращений.
• В качестве имени используются существительные
или именные группы.
46.
ВидимостьДополнение
+
#
~
Видимость
Семантика
Public (Открытый)
Доступ имеет любой
элемент
Private (Закрытый)
Доступ имеют только
элементы класса
Protected
(Защищённый)
Доступ имеют только
элементы класса и его
потомков
Package (Пакетный)
Доступ имеет любой
элемент находящийся в
том же пакете что и класс
47.
КратностьПозволяет моделировать коллекции или
неопределённые значения (допускающие null).
48.
Ячейка операцийСочетание имени операции и типов всех её
параметров образуют сигнатуру операции.
видимость имя (направление имяПараметра :
типПараметра = значениеПоУмолчанию, …) :
возвращаемыйТип
49.
• Сигнатура должна быть уникальной.• В качестве имени используются глаголы или
глагольные группы.
• Имена параметров являются существительным или
именной группой.
• В операции может быть от нуля до нескольких
параметров.
• Каждый параметр имеет тип
• Возвращаемый тип может быть не указан т.е. void
50.
• Для параметров может быть указано направление(in, out, inout, return), по умолчанию in.
• Для параметра может быть задано значение по
умолчанию.
51.
Виды диаграмм классов•Классы анализа – концептуальная
(аналитическая) диаграмма классов
•Класс области решений
52.
Концептуальнаядиаграмма классов
Классы анализа
53.
Классы анализа представляют абстракциюпредметной области. Самое важное свойство –
он должен однозначно проецироваться на
реальное прикладное понятие, например
покупатель или продукт.
Важно, чтобы классы аналитической модели
являлись классами анализа, а не следовали из
проектных соображений. При реализации
проекта допускается что классы анализа будут
переработаны.
Следует избегать деталей реализации.
54.
Класс анализа включает• Имя. Должно отражать его назначение.
• Имена атрибутов, типы атрибутов считаются
необязательными.
• Операции – приблизительные формулировки
обязанности классов. Параметры и
возвращаемые типы приводятся только если
они важны для понимания модели.
Видимость обычно не указывается
55.
Выявление классов: Анализсуществительное/глагол
Анализируется текст. Существительные и именные
группы, встречающиеся в тексте, указывают на
атрибуты класса, а глаголы и глагольные группы на
операции класса.
Самый сложный аспект – выявление «скрытых»
классов, которые свойственны предметной области
но не упоминаются явно.
56.
Отношения междуклассами
57.
АссоциацияАссоциации – отношения между классами.
Ассоциации могут иметь:
• Имя ассоциации
• Имена ролей
• Кратность
• Возможность навигации
58.
Имя ассоциацииАссоциация обозначает действие, производимое
исходным объектом над целевым объектом, именем ассоциации должен быть глагол или
глагольная группа.
Может применяться стрелка, указывающая
направление, в котором должно читаться имя
ассоциации.
59.
Имена ролейИмена ролей называют роль, которую могут играть
объекты, поэтому они должны быть
существительными или именными группами.
Рекомендуется использовать или названия ролей,
или имя ассоциации.
60.
КратностьКратность ограничивает число объектов класса, которые могут
быть вовлечены в отношение.
Если кратность не задана, значит она неизвестна, а не
предполагается равной 1.
Кратность
0..1
1
0..*
*
1..*
1..5
1..5,7..8,14,20..*
Семантика
0 или 1
Всегда 1
Нуль или больше
Нуль или больше
1 или больше
От 1 до 5
От 1 до 5, или от 7 до 8, или 14, или 20 и более
61.
Рефлексивные ассоциацииЕсли класс имеет ассоциации с самим собой, то
это рефлексивная ассоциация.
62.
Возможность навигацииСмысл навигации в том, что «сообщения
могут посылаться только в направлении, в
котором указывает стрелка.
63.
СинтаксисЗначение (общепринятое)
Есть возможность навигации от A
кB
Есть возможность навигации от B
кA
Есть возможность навигации от A
кB
Нет возможности навигации от B
кA
64.
ОбобщениеЭто отношение между более общим
элементом и более специальным
элементом, когда более специальный
полностью совместим с общим, но
содержит больше информации.
Специальный элемент может
использоваться везде где
предполагается использование общего
– принцип замещаемости.
65.
public class A{
}
public class B : A
{
}
66.
НаследованиеВ иерархии обобщения кроется наследование между
классами: подклассы наследуют все возможности своих
надклассов:
• атрибуты;
• операции;
• отношения;
• ограничения;
67.
ПереопределениеПодклассы могут переопределять унаследованные
операции, предоставляя новую операцию с точно
такой же сигнатурой (имена параметров и тип
возвращаемого значения не считаются частью
сигнатуры).
68.
Абстрактные операции и классыАбстрактные операции не имеют реализации. В
UML абстрактные операции записываются
курсивом.
Класс имеющий абстрактные операции – считается
абстрактным т.к. невозможно создать экземпляр
подобного класса. Имя абстрактного класса так же
записывается курсивом.
69.
Множественное наследованиеВ UML допускается множественное наследование – у
класса может быть более одного непосредственного
суперкласса.
Множественное
Самое обычное
70.
Вложенные классыНекоторые языки программирования позволяют
размещать описание класса в описании другого класса.
Таким образом создаётся вложенный класс (inner class).
Только внешний класс может создавать и использовать
объекты вложенного.
71.
public class A{
public class B
{
}
}
72.
Агрегация и композицияАссоциации можно уточнить до агрегации или её
более строгой формы – композиции (композитной
агрегации).
Агрегация – свободный тип отношения целое-часть
между объектами.
Композиция – строгий тип отношения целое-часть
между объектами.
73.
В отношении целое-часть один объект (целое) используетсервисы другого (части).
В отношении агрегации:
• Агрегат (целое) может существовать как независимо от
части, так и вместе с ним.
• Части могут существовать независимо от агрегата.
• Части могут принадлежать сразу нескольким агрегатам.
74.
Агрегация транзитивна, т.е. если C является частьюB, а B частью A, то и C является частью A.
75.
В композиции:• Одновременно часть может принадлежать только
одному целому – композиту.
• Часть не может существовать отдельно от целого.
• Композит обладает исключительной ответственностью за
свои части, т.е. он отвечает за их создание и удаление.
• Композит может передавать части другому объекту.
76.
Композиция и атрибутыАтрибуты – точный эквивалент отношения
композиции между классом композитом и классом
атрибутом.
Отличия:
• Типом атрибута может быть простой тип, например
int, или double – простые типы всегда
моделируются как атрибут.
• Существуют классы которые не являются частью
предметной области, например Time или Date, - их
так же следует моделировать как атрибуты.
77.
При проектировании необходимо всегдапытаться достичь максимальной
конкретизации и уточнить ассоциации до
одного из отношений агрегации.
78.
Зависимости между классамиЗависимость обозначает отношение, когда изменение
одного элемента может повлиять на поведение другого.
Однако отношение не является ни ассоциацией ни
обобщением. Например объект одного класса, передаётся
как параметр в операцию другого.
79.
Зависимость использования «use»public class A {
public void GiveB(B b) {
}
public B TakeB() {
return new B();
}
public void DoIt() {
var b = new B();
b.DoSomething();
}
}
80.
Зависимость «use» универсальная, может использоватьсядля всех трёх перечисленных примеров, но есть более
специализированные стереотипы:
• «call» - вызов. Операция класса-клиента вызывает
операцию класса-поставщика.
• «parameter» - клиент использует поставщика в качестве
параметра
• «send» - используется когда класс поставщик посылается
подпискам на событие.
• И другие.
81.
public class A {public delegate void AEventHandler(object sender, B e);
public event AEventHandler SampleEvent;
public void OnSampleEvent() {
if (SampleEvent != null)
SampleEvent(this, new B("Send"));
}
}
public class B {
public B(string s) { Text = s; }
public String Text { get; set; }
}