Унифицированный язык визуального моделирования Unified Modeling Language (UML). Стандарт, принятый консорциумом Object Managing Group (OMG) , 1997г 1. Статические аспекты поведения системы 2. Динамика поведения системы Разновидности CASE-средств CASE-средства верхнего уровня (полного жизненного цикла, upper CASE tools, full life-cycle CASE tools) предъявляют жесткие требования к процессу разработки и используемым ресурсам; попытки трансформировать их под конкретные проекты оказываются безуспешными; не позволяют оптимизировать деятельность на уровне отдельных элементов проекта. CASE-средства нижнего уровня (lower CASE tools) (Borland Enterprise Studio for Java,VantageTeam Builder фирмы CADRE) порождают проблему организации взаимодействия между различными командами, реализующими проект. Концептуальная модель UML сущности •структурные отношения диаграммы •зависимость •классов; •поведенческие •ассоциация •группирующие •обобщение •аннотационны е •реализация Диаграмма в UML - это графическое представление набора элементов в виде связанного графа с вершинами (сущностями) и ребрами (отношениями). •объектов; •прецедентов; •последовательностей •кооперации; •состояний; •действий; •компонентов; •развертывания. Типы сущностей Структурные - статические элементы модели, соответствующие концептуальным или физическим элементам системы: классы, интерфейсы, кооперации, прецеденты, компоненты, узлы; Поведенческие - динамические составляющие модели: взаимодействия и автоматы; Группирующие - организующие элементы модели - пакеты; Аннотационные - пояснительные части модели - примечания Класс - базовый элементы любой объектно-ориентированной системы Класс- описание совокупности однородных объектов с присущими им свойствами атрибутами, операциями, отношениями и семантикой. Атрибут - это свойство класса, которое может принимать множество значений. Множество допустимых значений атрибута образует домен. Операция - реализация функции, которую можно запросить у любого объекта класса. Изображение класса Атрибут < признак видимости > < имя атрибута >: < тип данных > = < значение по умолчанию > Операция < признак видимости > < имя операции > < (список аргументов) > Характеристики свойств класса Видимость : Область действия : • public (общий) «+» • protected (защищённый) «#» • private (закрытый) «-» • instance (экземпляр) • classifier (классификатор) Кратность: • не содержит ни одного экземпляра - служебный (Abstract) • содержит заданное число экземпляров • содержит произвольное число экземпляров Принципиальное назначение классов характеризуют стереотипы. Это, фактически, классификация объектов на высоком уровне, позволяющая определить некоторые основные свойства объекта (пример стереотипа – класс «действующее лицо»). Задание свойств класса Диаграммы классов Типы связей Зависимость - отношение использования, согласно которому изменение в спецификации одного элемента может повлиять на использующий его элемент. Часто зависимости показывают, что один класс использует другой в качестве аргумента. Обобщение - это отношение между общей сущностью и её конкретным воплощением. Объекты класса-потомка могут использоваться всюду, где встречаются объекты класса-родителя, но не наоборот. При этом он наследует свойства родителя (его атрибуты и операции). Операции потомка с той же сигнатурой, что и родителя, замешает операцию родителя; это свойство называют полиморфизмом. Класс, у которого нет родителей, но есть потомки, называется корневым. Класс, у которого нет потомков, называется листовым. Ассоциация - это отношение, показывающее, что объекты одного типа неким образом связаны с объектами другого типа («клиент» может сделать «заказ»). агрегирование – отражает отношение типа «часть-целое» композиция - часть может принадлежать только единственному целому; жизненный цикл частей и целого совпадают Свойства ассоциации Примеры отношений между классами Обобщение Прецеденты описывают функциональность системы, которая будет видна пользователям. Позволяют отобразить желаемое поведение системы с точки зрения взаимодействия с ней внешних объектов (актеров). Прецедентом также можно назвать какой-либо набор логически связанных между собой действий, приводящих к какому-то "логическому состоянию" системы. Т.е. это описание "на высоком уровне абстракции" какие случаи, ситуации обрабатывает система, какие реально действующие лица взаимодействуют с системой. Определение Прецедент - типичное взаимодействия пользователя с системой, которое: описывает видимую пользователем функцию, может представлять различные уровни детализации, обеспечивает достижение конкретной цели, важной для пользователя. Связи на диаграммах прецедентов Действующее лицо (актер, actor) Прецедент (use case) Связь типа «расширение» применяется, когда один прецедент подобен другому, но несет несколько большую функциональную нагрузку. Ее следует применять при описании изменений в нормальном поведении системы. Связь типа «использование» позволяет выделить некий фрагмент поведения системы и включать его в различные прецеденты без повторного описания. Динамические аспекты поведения системы Взаимодействия Взаимодействием (Interactions) называется поведение, выражаемое в обмене сообщениями между объектами данной совокупности в данном контексте, в результате чего достигается определенная цель. Взаимодействия проявляются: в кооперациях объектов в контексте системы или подсистемы в контексте операций в контексте классов. Сообщения Сообщение (Message) - это спецификация обмена данными между объектами, при котором передается некая информация в расчете на то, что в ответ последует определенное действие. Каждое взаимодействие можно моделировать двумя способами: акцентируя внимание на временной упорядоченности сообщений (диаграмма последовательностей) или на их последовательности (диаграмма кооперации) в контексте некоей структурной организации объектов. Виды действий Результатом получения сообщения является действие. UML позволяет моделировать действия нескольких видов: call (вызвать) - вызывает операцию, применяемую к объекту. Объект может послать сообщение самому себе, что приведет к локальному вызову операции; return (возвратить) - возвращает значение вызывающему объекту; send (послать) - посылает объекту сигнал; create (создать) - создает новый объект; destroy (уничтожить) - удаляет объект. Объект может уничтожить самого себя. Диаграмма последовательности обработки заказа Кооперативная диаграмма прохождения заказа Автоматы С помощью взаимодействий можно моделировать поведение сообщества совместно работающих объектов. Автомат же позволяет моделировать поведение отдельного объекта (объект экземпляр класса, прецедент или даже система в целом) Автомат (State machine) описывает поведение в терминах последовательности состояний, через которые проходит объект в течение своей жизни, отвечая на события, а также его реакций на эти события. Состояния объектов Состояние (State) объекта - это ситуация в его жизни, на протяжении которой он удовлетворяет некоторому условию, осуществляет определенную деятельность или ожидает какого-то события. Объекты могут реагировать на события: сигналы, операции или истечение промежутка времени. Событие (Event) - это спецификация существенного факта, имеющего место в пространстве и во времени. В контексте автоматов событие - это некий стимул, инициирующий переход из одного состояния в другое. Когда происходит событие, в зависимости от текущего состояния объекта имеет место та или иная деятельность. Результатом деятельности является изменение состояния системы или возврат значения. Виды событий сигналы, вызовы, истечение определенного промежутка времени изменение состояния. События могут быть: синхронными или асинхронными. внешними(передаются между системой и действующими лицами) или внутренними (передаются между объектами, существующими внутри самой системы). Сигналы Сигнал - это именованный объект, который асинхронно возбуждается одним объектом и принимается (перехватывается) другим. Сигналы обладают свойствами класса: могут участвовать в отношениях обобщения, что позволяет моделировать иерархии событий, в которых одни (например, сигнал СбойСети) являются общими, а другие (например, специализация события СбойСети под названием ОтказСкладскогоСервера) - частными. Как и классы, сигналы могут иметь атрибуты и операции. Вызовы Событие вызова предназначено для описания запроса на выполнение операции, обычно является синхронным. События времени и изменения Событие времени представляет собой истечение промежутка времени, отсчет времени начинается с момента входа в текущее состояние. Событие изменения описывает изменение состояния или выполнение некоторого условия. Взаимодействие классов Экземпляр любого класса может посылать сигнал принимающему объекту или инициировать в нем операцию. Отправив сигнал получателю, он продолжает свой поток управления, не дожидаясь от него ответа. Если объект инициирует операцию, он должен дождаться ответа от получателя. Любой экземпляр любого класса может быть получателем события вызова или сигнала. Если это синхронное событие, то отправитель и получатель находятся в состоянии рандеву на всем протяжении выполнения операции. Это означает, что поток управления отправителя блокируется потоком управления получателя, пока операция не завершится. Если это сигнал, то отправитель и получатель не входят в состояние рандеву: отправитель посылает сигнал, но не дожидается ответа от получателя. Диаграмма состояний объекта «заказ» Синтаксис метки перехода <Событие> <[Условие]> < / Действие> Синтаксис метки деятельности выполнить/< деятельность > Диаграмма деятельности - обработка заказа Диаграмма компонентов фрагмента КИС Управление отношениями с заказчиками Управление закупками Управление финансами Управление продажами Управление складом