МОДЕЛИРОВАНИЕ НА UML Политехнический университет 2012.

Презентация:



Advertisements
Похожие презентации
8. Моделирование логической структуры системы Диаграмма классов Диаграмма классов служит для моделирования классов и отношений между ними.
Advertisements

1 Диаграммы реализации (implementation diagrams).
Диаграммы UML Диаграмма классов (Class Diagram). Основные вопросы Что такое диаграмма классов Компоненты диаграммы классов и их назначение Пример диаграммы.
Объектно-ориентированный анализ и дизайн Copyright © Мухортов В. В., Няньчук-Татарский Н. А., Copyright © ООО «Интекс»,
WORK WITH UML Универсальный язык моделирования (UML) Studybook for students Author Dudnik Oxana.
Докладчик: Проектирование информационных систем всегда начинается с определения цели проекта. Основная задача любого успешного проекта.
Методология объектно- ориентированного программирования.
Технология программирования в историческом аспекте.
Диаграмма классов (class diagram). Объект Объект (object) – это некоторая сущность реального мира Объект обладает тремя характеристиками: состоянием,
4. Моделирование функциональных требований к системе.
7. Классы и отношения между ними Классы Класс это реализация типа объектов, т.е. класс определяет множество объектов и множество операций, допустимых.
Функциональное проектирование ИС. Декомпозиция всей системы на некоторое множество иерархически подчиненных функций. Основные идеи структурного анализа.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Разработка объектно- ориентированного ПО Итеративная модель разработки (развитие водопадной модели) анализ проектирование кодирование тестирование.
Теория экономических информационных систем Семантические модели данных.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
2. UML – унифицированный язык моделирования систем.
Проектирование архитектуры ИСО 1. UML 2 Структура определения языка 4.
Лекция 2: Описание класса 1. Поля 2. Методы 3. Конструкторы.
Диаграммы UML Диаграмма вариантов использования. Основные вопросы Назначение диаграммы вариантов использования Компоненты диаграммы вариантов использования.
Транксрипт:

МОДЕЛИРОВАНИЕ НА UML Политехнический университет 2012

Оглавление слайдов Об этом курсе Введение в UML Моделирование использования Моделирование структуры (3–87) Моделирование поведения

МОДЕЛИРОВАНИЕ НА UML Моделирование структуры

Моделирование структуры : составные части системы ( классы ) и отношения между ними Число возможных вариантов наборов объектов и связей необозримо велико Пытаться представить их ВСЕ в модели бессмысленно Как строить компактные ( полезные ) модели необозримых систем ?

Примеры моделей (1/2) 1. Наибольшее число Фибоначчи function MaxFib : integer; var f1, f2 : integer; begin f1:=1; f2:=1; while maxint – f1 > f2 do begin f2 := f1 + f2; f1 := f2 – f1 end; MaxFib := f2 end;

Примеры моделей (2/2) 2. Описание формального языка синтаксическими диаграммами Вирта Синтаксическое понятие « программа »:

Дескрипторы Дескриптор (descriptor) – описание общих свойств множества объектов, включая их структуру, отношения, поведение и т. д. Необходимы правила интерпретации описания Дескриптор – конечное описание (intent) бесконечного множества (extent) Литерал описывает сам себя Почти все элементы модели (классы, варианты использования, узлы, ассоциации …) – дескрипторы Примечания и пакеты – литералы

Моделирование структуры : Какой ? 1. Структура связей между объектами во время выполнения Ассоциации на диаграмме классов 2. Структура хранения данных Ассоциации с указанием кратности полюсов 3. Структура программного кода Структура классов и пакетов 4. Структура сложных объектов, состоящих из взаимодействующих частей Диаграмма внутренней структуры классификатора 5. Структура артефактов в проекте Диаграммы компонентов и размещения 6. Структура компонентов в приложении Классы и интерфейсы на диаграмме компонентов 7. Структура используемых вычислительных ресурсов Диаграммы размещения

Классификаторы Классификатор это дескриптор множества однотипных объектов может иметь экземпляры действующее лицо (actor), вариант использования (use case), артефакт (artifact), тип данных (data type), ассоциация (association), класс ассоциации (association class), интерфейс (interface), класс (class), кооперация (collaboration), компонент (component), узел (node) и др., (сигнал (signal), … ) применяющиеся в процессе моделирования поведения

Свойства классификаторов (1/4) 1. Имя Уникально ( в пространстве имен ), служит для идентификации 2. Экземпляры Прямые – экземпляры А Косвенные – экземпляры потомков классифика - торов А

Свойства классификаторов (2/4) 3. Абстрактный (abstract) не может иметь прямых экземпляров имя выделяется курсивом 4. Видимость (visibility) может ли составляющая одного классификатора использоваться в другом открытый + public – виден везде защищенный # protected – виден в контейнере закрытый – private – виден в своем элементе пакетный ~ package – виден в своем пакете

Свойства классификаторов (3/4) 5. Область действия (scope) определяет, как проявляет себя составляющая классификатора в экземплярах: используется общее значение или у каждого экземпляра свое экземпляр (instance) по умолчанию классификатор (classifier) подчеркивается

Свойства классификаторов (4/4) 6. Кратность (multiplicity) Все допустимые значения мощности Нижняя граница.. ВЕРХНЯЯ ГРАНИЦА кратность 0 нет экземпляров служба (utility) кратность 1 ровно один одиночка (singleton) кратность 8 фиксированное число (e.g. концентратор) кратность * произвольное число по умолчанию 7. Могут участвовать в отношении обобщения

Сущности на диаграмме классов Классы стереотипы интерфейсы типы данных шаблоны активные классы Пакеты Примечания

Класс Секции (compartment): Секция имени « стереотип » ИМЯ { свойства } кратность Секция атрибутов список описаний атрибутов Секция операций список описаний операций + доп. секции = примечания

Атрибуты видимость ИМЯ [кратность] : тип = начальное_значение {свойства} Видимость: + – # ~ ИМЯ: атрибут экземпляра, ИМЯ: атрибут класса Кратность: определяет атрибут как массив Тип: примитивный / определенный пользователем Начальное значение: при создании экземпляра атрибут получает указанное значение Свойства: ограничения и именованные значения, e.g. изменяемость (changeability)

Примеры описаний атрибутов ПримерПояснение name Только имя атрибута +name Имя и открытая видимость непосредственные манипуляции с именем -name:String Имя, тип и закрытая видимость манипуляции с атрибутом с помощью специальных операций -name[1..3]:String Кратность (для хранения фамилии, имени и отчества) -name:String = "Novikov" Дополнительно указано начальное значение +name:String {readOnly} Атрибут объявлен не меняющим своего значения после начального присваивания и открытым

Операции и методы Операция – спецификация действия с объектом Метод – выполняемый алгоритм видимость ИМЯ ( параметры ) : тип { свойства } Видимость : + – # ~ ИМЯ : операция экземпляра, ИМЯ : операция класса, ИМЯ : абстрактная операция Параметры : направление ПАРАМЕТР : тип = значение Сигнатура операции

Параметры Ключевое словоНазначение параметра in Входной параметр аргумент д. б. значением, которое используется в операции, но не изменяется out Выходной параметр аргумент д. б. хранилищем, в которое операция помещает значение inout Входной и выходной параметр аргумент д. б. хранилищем, содержащим значение return Значение, возвращаемое операцией Терминология : параметры – формальные аргументы – фактические Способы передачи параметров : по ссылке по значению Направления передачи параметров в UML:

Свойства операции 1. Параллелизм (concurrencу) - имеется несколько потоков управления ЗначениеОписание {sequential} Операция не допускает параллельного вызова (дальнейшее поведение системы не определено) {guarded} Выполняется только один из вызовов остальные задерживается {concurrent} Допускается произвольное число параллельных вызовов 2. Побочные эффекты ( ограничение {isQuery} ) True - не меняет состояния системы False (по умолчанию) - операция меняет состояние системы: присваивает новые значения атрибутам, создает или уничтожает объекты и т. п.

Примеры описания операций ПримерПояснение move() Только имя операции +move(in from, in to) Видимость операции, направления передачи и имена параметров +move(in from:Dpt,in to:Dpt) Подробное описание сигнатуры: указаны видимость операции, направления передачи, имена и типы параметров +getName():String {isQuery} Функция, возвращающая значение атрибута и не имеющая побочных эффектов +setPwd(in pwd:String="password") Процедура, для которой указано значение аргумента по умолчанию

Интерфейсы Интерфейс это именованный набор абстрактных составляющих

Типы данных (1/2) Тип данных это : множество значений ( потенциально бесконечное ) конечное множество операций значения не обладают индивидуальностью

Типы данных (2/2) Примитивные типы: Integer, Boolean, String, UnlimitedNatural Типы, которые определены в языке программирования Типы, которые определены пользователем: стереотип «enumeration» или «dataType»

Примеры типов данных Тип данных (в UML) это классификатор, экземпляры которого не обладают индивидуальностью (identity) Тип данных «Действительное число» Перечислимый тип данных «Трехзначная логика»

Идентификация классов: cловарь предметной области сотрудник подразделение вакансия должность прием перевод увольнение сотрудник создание ликвидация подразделение вакансия сокращение должность Словарь предметной области : существительные в ТЗ Сотрудник (Person) Подразделение (Department) Должность (Position)

Отношения на диаграмме классов Сущности на диаграммах классов связываются отношениями : Ассоциации в том числе агрегации и композиции Обобщения Зависимости Реализации

Отношения зависимости СтереотипПрименение «bind» Подстановка параметров в шаблон «call» Операция зависимого класса вызывает операцию независимого класса «derive» «Может быть вычислен по» «friend» Назначает специальные права видимости «instanceOf» Зависимый объект является экземпляром независимого класса «instantiate» Операции независимого класса создают экземпляры зависимого класса «refine» Указывает, что зависимый класс уточняет независимый «use» Зависимый класс каким-либо образом использует независимый класс

Отношение реализации Классификатор ( в частности, класс ) использует интерфейс зависимость со стереотипом «call» ( требуемый интерфейс ) указывает, что в операциях независимого класса вызываются операции зависимого класса Классификатор реализует интерфейс реализация ( обеспеченный интерфейс ) Класс может реализовывать много интерфейсов ( и наоборот )

Пример реализации и использования интерфейсов (1/2) Допустим, что класс Department для реализации операций связанных с движением кадров, использует операции класса Position, позволяющие занимать и освобождать должность другие операции класса Position классу Department не нужны.

Пример реализации и использования интерфейсов (2/2)

Отношение обобщения Применение обобщений: Множественное наследование (multiple inheritance) Класс является подклассом нескольких суперклассов «Проблема множественного наследования находится в головах архитекторов» Несколько иерархий обобщения Не требуется, чтобы у базовых классов был общий суперкласс Ограничение: частичная упорядоченность Отсутствие циклов в цепочках обобщений

Обобщение (1/2) В информационной системе отдела кадров должности, департаменты и сотрудники имеют собственное имя. Однако работа с собственным именем для этих сущностей производится не совсем одинаково. Назначение и изменение собственных имен подразделениям и должностям находится в пределах ответственности информационной системы отдела кадров, но назначение (тем паче изменение) собственного имени сотрудника явно выходит за эти пределы.

Обобщение (2/2)

Отношение ассоциации Ассоциация в UML это классификатор, экземпляры которого называются связями (link) Минимум: Объекты ассоциированных классов могут взаимодействовать во время выполнения

Отношение ассоциации : дополнения Имя ассоциации ( возможно, вместе с направлением чтения ) Кратность полюса ассоциации Агрегации или композиция Возможность навигации для полюса ассоциации Роль полюса ассоциации Многополюсные ассоциации Класс ассоциации Квалификатор полюса ассоциации Видимость полюса ассоциации Упорядоченность и изменяемость множества объектов на полюсе ассоциации

Имя ассоциации Позволяет различать ассоциации в модели Направление чтения

Кратность полюса ассоциации Сколько объектов класса участвуют в связи со стороны данного полюса Может быть задана как конкретное число как диапазон возможных значений, как неопределенное число *

Агрегация и композиция Агрегация это ассоциация между классом A (часть) и классом B (целое) Не изменяет направления навигации и не накладывает ограничений на время жизни Композиция – более сильные ограничения: Часть A может входить только в одно целое B Время жизни частей совпадает с временем жизни целого

Примеры агрегации и композиции Мягкая структура Жесткая структура 0..* = *

Структура элементов системы (1/2) Предприятие состоит из подразделений ( департаментов ), в каждом из которых определен набор должностей, которые могут быть либо заняты сотрудниками, либо быть вакантными

Структура элементов системы (2/2) / works for : Производный элемент (derived element) это элемент, который можно вычислить или определить по другим элементам ( для наглядности )

Композиция или атрибуты ? (1/2) Информационная система отдела кадров должна поддерживать иерархическую структуру подразделений на предприятии.

Композиция или атрибуты ? (2/2) Если примитивная часть, то атрибут Если есть взаимодействие, то композиция

Время жизни частей (1/3) В подразделении любого уровня, в том числе и на предприятии в целом, имеется единственная должность ( начальник ), которую система должна трактовать особым образом

Время жизни частей (2/3) Часть композита принадлежит только одному целому в каждый момент

Время жизни частей (3/3)

Время жизни частей ( дополнительно )

Роль полюса ассоциации (1/4) Информационная система отдела кадров должна поддерживать иерархическую структуру должностей ( начальник - подчиненный ).

Роль полюса ассоциации (2/4) Роль это интерфейс, который предоставляет классификатор в данной ассоциации Роль полюса ассоциации = спецификатор интерфейса это способ указать, как именно участвует классификатор в ассоциации видимость ИМЯ : тип

Роль полюса ассоциации (3/4) Взаимодействие между начальником и подчиненным происходит по определенному протоколу Начальник может запросить у подчиненного отчет о его работе Подчиненный может написать начальнику какой - либо запрос

Роль полюса ассоциации (4/4)

Направление навигации (1/2) Между классами Company и Person возможно взаимодействие только в одну сторону (от Company к Person) Между должностями начальник и подчиненный (класс Position) возможно взаимодействие в обе стороны

Направление навигации (2/2) Возможность навигации (navigability) определяет, можно ли эффективно получить доступ к объектам класса Навигация возможна только в направлении от Company к Person, но не наоборот Навигация в обе стороны

Многополюсные ассоциации (1/2) Один и тот же сотрудник может участвовать во многих проектах и занимать различные должности

Многополюсные ассоциации (2/2)

Класс ассоциации (1/2) Допускается ситуация, когда сотрудник может работать на нескольких должностях в разных проектах, а также возможно, чтобы одну и ту же должность в одном проекте занимало несколько сотрудников ( дробление ставки ). Размер заработной платы зависит от того, сколько конкретно времени проработал данный сотрудник в данной должности в данном проекте.

Класс ассоциации ассоциация, имеющая в своем составе свойства и составляющие класса Класс ассоциации (2/2)

Использование промежуточной сущности – необходимы доп. атрибуты Альтернатива классу ассоциации

Видимость полюса ассоциации (1/2) С точки зрения безопасности доступ к информации об отдельных сотрудниках не должен давать возможность каким - либо образом получить информацию о структуре всей компании.

Видимость полюса ассоциации (2/2) Видимость полюса ассоциации – указание того, является ли классификатор присоединенный к данному полюсу видимым для классификаторов ( кроме непосредственно связанных ), маршруты из которых ведут к нему

Квалификатор полюса ассоциации (1/2) Каждый сотрудник обладает уникальным номером ( ИНН ) по которому его можно однозначно идентифицировать

Квалификатор полюса ассоциации (2/2) Квалификатор полюса ассоциации это атрибут полюса ассоциации, позволяющий выделить объект класса, присоединенного к другому полюсу ассоциации

Сводная диаграмма классов ИС ОК

Советы по проектированию Описывать структуру удобнее параллельно с описанием поведения Не обязательно включать в модель все классы сразу, на первых порах достаточно 10% Не обязательно определять все составляющие класса сразу В процессе работы диаграмма должна легко охватываться одним взглядом не обязательно показывать на диаграмме все составляющие класса и их свойства Не обязательно определять все отношения между классами сразу пусть класс на диаграмме " висит в воздухе ", ничего с ним не случится Мы действительно сами следуем своим советам

Диаграммы реализации Реализация системы: Диаграммы компонентов – компоненты Диаграммы размещения – артефакты и их размещение по узлам Объединяют: Структуры логических элементов – компонентов Отображения компонентов на физические элементы – артефакты Структуры используемых ресурсов (nodes) с распределенными по ним артефактами Используются на поздних фазах разработки

Отношения между сущностями

Сущности : интерфейс Интерфейс может быть ( в зависимости от того, как используется ): Если классификатор реализует интерфейс обеспеченным ( реализация ) Если классификатор вызывает операции интерфейса требуемым ( зависимость )

Сущности : компонент Компонент UML ( компонент в сборочном программировании) является частью модели описывает логическую сущность, которая существует только на этапе проектирования (design time) в дальнейшем можно связать с физической реализацией (артефактом) времени исполнения (run time) взаимодействие описывается набором интерфейсов

Стандартные стереотипы компонентов СтереотипОписание «entity» постоянно хранимый информационный компонент, представляющий некоторое понятие предметной области «service» функциональный компонент без состояния, возвращающий запрашиваемые значения без побочных эффектов «subsystem» единица иерархической декомпозиции большой системы

Сущности : артефакт Артефакт это любой созданный искусственно элемент программной системы исполняемые файлы, исходные тексты, веб - страницы, справочные файлы, сопроводительные документы …

Стандартные стереотипы артефактов СтереотипОписание «file» физический файл «document» файл, который не является ни файлом исходных текстов, ни исполняемым файлом «executable»* выполнимая программа любого вида «library» статическая или динамическая библиотека «script» файл, содержащий текст, допускающий интерпретацию соответствующими программным средствами «source» файл с исходным кодом программы * Подразумевается по умолчанию

Отношение манифестации Манифестация это отношение, связывающее элемент модели и его физическую реализацию в виде артефакта Отношение типа " многие ко многим "

Сущности : узел Узел (node) это физический вычислительный ресурс, участвующий в работе системы

Спецификация развертывания Спецификации развертывания (deployment specification) позволяют задать специфичные для программной среды параметры

Ассоциация между узлами Ассоциация означает наличие канала связи Доп. информация : стереотипы, ограничения и именованные значения

Применение диаграмм реализации « Монолитное » настольное приложение диаграммы размещения не нужны Диаграммы размещения необходимы : Управление конфигурацией – « конструктор » Управление версиями Моделирование унаследованных приложений и данных Моделирование систем динамической архитектуры

Трехуровневая архитектура

Диаграмма компонентов (1/2) Необходимо разграничить права доступа к приложению на уровне категорий пользователей

Разграничение доступа к данным по категориям пользователей Диаграмма компонентов (2/2)

Диаграмма размещения (1/1)

Диаграмма размещения (2/2)

Экземпляры классификаторов Могут применяться на всех типах диаграмм, где есть классификаторы везде Экземпляры действующих лиц Экземпляры узлов Экземпляры классов

Экземпляры действующих лиц

Экземпляры узлов

Экземпляры классов Создание : instantiate Конкретный метод : create Объект является экземпляром класса : instanceOf Экземпляр классификатора : Имя подчеркнуто

Выводы Структура сложной системы описывается дескрипторами Диаграммы классов моделируют структуру объектов и связей между ними Классы выбираются на основе анализа предметной области, взаимного согласования элементов и теоретических соображений Диаграммы компонентов моделируют структуру артефактов и взаимосвязей между ними Диаграммы размещения моделируют структуру вычислительных ресурсов и размещенных на них артефактов