Справочник от Автор24
Поделись лекцией за скидку на Автор24

Модели ПО

  • 👀 419 просмотров
  • 📌 359 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Модели ПО» pdf
Модели ПО UML UML – унифицированный язык моделирования (Unified Modeling Language) – это система обозначений, которую можно применять для объектно-ориентированного анализа и проектирования. Его можно использовать для: визуализации, спецификации, Конструирования документирования программных систем. Словарь UML включает три вида строительных блоков: •Сущности – это абстракции, которые являются основными элементами модели. •Диаграмма – это графическое представление набора элементов, чаще всего изображенного в виде связного графа вершин (сущностей) и путей (связей).Они группируют представляющие интерес наборы сущностей. Язык UML включает 13 видов диаграмм. •Связь – соединяют сущности между собой. Один из создателей языка UML, предлагает следующие три модели описания программных систем Модель классов представляет статические, структурные аспекты системы, связанные с данными. Модель состояний представляет временные, поведенческие, управленческие аспекты системы. Модель взаимодействия представляет кооперацию отдельных объектов, другими словами, все аспекты системы, связанные с взаимодействиями. Типичная процедура в программе обладает всеми тремя аспектами: •она использует структуры данных (модель классов), •упорядочивает операции во времени (модель состояний) •передает данные и управление между объектами (модель взаимодействия). Каждая модель содержит ссылки на сущности из других моделей. Например, модель классов связывает операции с классами, тогда как модели состояний и взаимодействия конкретизируют операции. Сначала аналитики конструируют модель приложения, не задумываясь о последующей реализации. Затем проектировщики добавляют в эту модель конструкции, необходимые для решения поставленных задач. Группа реализации кодирует конструкции приложения. В процессе разработки все три модели развиваются постепенно. аналитическая модель Модель определяется не только видом этапом разработки проектная модель модель реализации Модель классов (class model) описывает структуру объектов системы: • их индивидуальность, • отношения с другими объектами, Модель классов • атрибуты, •операции. Модель классов создает контекст для моделей состояний и взаимодействия. Изменения и взаимодействия не имеют смысла, если отсутствует изменяющийся объект или взаимодействующие объекты. Объекты (objects) — это основные блоки, на которые мы разбиваем наш систему, «молекулы нашей модели». Диаграмма классов Модель классов изображается на диаграммах классов. Обобщение позволяет классам использовать общую структуру и поведение, а связи между классами осуществляются при помощи ассоциаций. Классы определяют значения атрибутов для каждого объекта и операции, которые выполняются самими объектами или с их участием. Модель состояний Модель состояний (state model) описывает аспекты объектов, связанные с течением времени и с последовательностью операций, то есть события, связанные с изменениями, состояния, определяющие контекст событий, и упорядочение событий и состояний. Модель состояний охватывает вопросы управления — аспект системы, описывающий порядок осуществляемых операций без учета их фактического значения, участников и реализации. Диаграмма состояний Модель состояний изображается на диаграммах состояний. Каждая диаграмма состояний показывает порядок состояний и событий, возможный в рамках данной системы для одного класса объектов. Диаграммы состояний ссылаются на другие модели. Действия и события на диаграмме состояний становятся операциями объектов модели классов. Ссылки между диаграммами состояний становятся взаимодействиями в модели взаимодействия. Модель взаимодействия Модель взаимодействия (interaction model) описывает взаимодействие между объектами, то есть кооперацию объектов для обеспечения необходимого поведения системы как целого. Модели состояний и взаимодействия описывают разные аспекты поведения, и для полного описания поведения необходимы они обе. Диаграммы последовательности и деятельности Модель взаимодействия изображается при помощи вариантов использования на диаграммах последовательности и деятельности. Варианты использования описывают основные варианты взаимодействия системы с внешними актерами. Диаграммы последовательности показывают временную последовательность взаимодействия объектов вместе с самими объектами. Диаграммы деятельности показывают поток управления между последовательными этапами вычислений. Модель классов описывает структуры данных, которыми оперируют модели состояний и взаимодействия. Операции в модели классов связаны с событиями и действиями. Модель состояний описывает структуру управления объектов. Она показывает решения, зависящие от значений объектов, и действия, изменяющие значения объектов и состояния. Модель взаимодействия подчеркивает обмен между объектами и дает единый обзор операций в рамках системы. Отношения моделей Модели структуры бывают двух типов Диаграммы классов позволяют описать модель классов и их отношений (а значит, и возможные объекты) при помощи графической системы обозначений. Диаграммы классов полезны как для абстрактного моделирования, так и для проектирования конкретных программ Диаграммы объектов - на таких диаграммах изображаются отдельные объекты и отношения между ними. Диаграммы объектов полезны для документирования тестовых ситуаций и обсуждения примеров. Диаграмма классов описывает бесконечное множество диаграмм объектов. Объекты и классы – предмет модели классов Объекты JoeSmith (Джо Смит), MarySharp (Мэри Шарп) и безымянная личность являются экземплярами класса Person (Человек). Синтаксис В языке UML для обозначения объекта используется прямоугольник, внутри которого ставится имя объекта, двоеточие и имя класса, к которому относится этот объект. Как правило, имя объекта и имя класса выделяются полужирным шрифтом (в различной литературе предлагается их подчеркивать). Для обозначения класса в UML тоже используется прямоугольник. Имя класса записывается полужирным шрифтом и располагается посередине прямоугольника. Имя класса начинается с заглавной буквы. Значения и атрибуты ЗНАЧЕНИЕ (VALUE) – ЭТО ЭЛЕМЕНТ ДАННЫХ. ЗНАЧЕНИЯ МОЖНО ОПРЕДЕЛИТЬ, ИЗУЧИВ ПРИМЕРЫ, ПРИВЕДЕННЫЕ В ДОКУМЕНТАЦИИ ПО ПОСТАВЛЕННОЙ ЗАДАЧЕ. АТРИБУТ (ATTRIBUTE) – ЭТО ИМЕНОВАННОЕ СВОЙСТВО КЛАССА, ОПИСЫВАЮЩЕЕ ЗНАЧЕНИЕ, КОТОРОЕ МОЖЕТ ИМЕТЬ КАЖДЫЙ ОБЪЕКТ КЛАССА. АТРИБУТЫ – ЭТО ПРИЛАГАТЕЛЬНЫЕ. ОНИ ПОЛУЧАЮТСЯ АБСТРАГИРОВАНИЕМ ТИПИЧНЫХ ЗНАЧЕНИЙ. ИМЯ АТРИБУТА УНИКАЛЬНО В РАМКАХ КЛАССА (НО НЕ ОБЯЗАТЕЛЬНО УНИКАЛЬНО ВО МНОЖЕСТВЕ ВСЕХ КЛАССОВ). Атрибуты обеспечивают детализацию классов Класс Person (Человек) имеет атрибуты name (имя) и birthdate (датарождения). Name – это строка, а birthdate – дата. У одного из объектов класса Person атрибут name имеет значение «Джо Смит», a birthdate имеет значение «21 октября 1983». У другого объекта того же класса атрибут name имеет значение «Мэри Шарп», а атрибут birthdate имеет значение «16 марта 1950». Синтаксис Согласно системе обозначений UML, атрибуты указываются во втором (сверху) отделе прямоугольника, обозначающего класс. После каждого атрибута могут быть указаны необязательные сведения о нем (например, тип и значение по умолчанию). Перед значением по умолчанию ставится знак равенства. Как правило, название атрибута указывается обычным шрифтом (не полужирным) и первая буква названия не заглавная. Во втором отделе прямоугольника объекта могут быть указаны значения атрибутов. В этом случае после названия атрибута ставится знак равенства, после которого записывается значение этого атрибута. Значения атрибутов выравнивается по левому краю и не выделяются полужирным шрифтом Операции и методы Операция – это функция или процедура, которая может быть применена к объектам класса. Операциями класса Company (Компания) могут быть hire (нанять), fire (уволить) и payDividend (выплатить Дивиденды). Операциями класса Window (Окно) могут быть open (открыть), close (закрыть), hide (скрыть) и redisplay (перерисовать). Все объекты одного класса имеют общий список операций. Каждая операция в качестве неявного аргумента принимает свой целевой объект. Поведение операции зависит от класса целевого объекта. Объект всегда знает свой собственный класс, а потому он всегда знает и правильную реализацию операции. Операции и методы Одна и та же операция может быть применена к разным классам. Такая операция называется полиморфной: в разных классах она может принимать разные формы. Методом (method) называют реализацию операции в конкретном классе. Например, класс File (Файл) может иметь операцию print (печать). Печать ASCIIфайлов, двоичных файлов и цифровых изображений может осуществляться разными методами. Все эти методы с логической точки зрения выполняют одно и то же действие: печать файла. Поэтому они и являются реализациями одной и той же операции print. При этом каждый метод может быть реализован своим собственным кодом. Если операция реализована несколькими методами в разных классах, очень важно, чтобы у всех методов была одна и та же сигнатура (signature) – количество и типы аргументов, а также тип возвращаемого значения. Операции Класс Person (Человек) с атрибутами name (имя) и birthdate (дата рождения) и операциями changejob (сменить Работу) и changeAddress (сменить Адрес). Атрибуты и операции называются составляющими класса. У класса File (Файл) есть операция print (печать). У класса GeometricObject (Геометрический Объект) есть операции move (перемещение), select (выделение) и rotate (поворот). Операция move имеет один аргумент delta (смещение) типа Vector (Вектор), операция select имеет аргумент р типа Point (Точка) и возвращает значение типа Boolean (логическое значение). Операция rotate имеет аргумент angle (угол), который относится к типу чисел с плавающей точкой и имеет значение по умолчанию 0.0. Синтаксис Система обозначений UML предписывает перечислять операции в третьем отделе прямоугольника класса. Название операции указывается обычным шрифтом и выравнивается по левому краю. Первая буква названия – строчная. После названия операции могут быть указаны необязательные дополнительные сведения, такие как список аргументов и тип возвращаемого результата. Список аргументов указывается в круглых скобках. Аргументы отделяются друг от друга запятыми. Перед типом возвращаемого результата ставится двоеточие. Пустой список аргументов в круглых скобках явно показывает, что данная функция не принимает никаких аргументов. Если же списка просто нет, никаких выводов делать нельзя. Мы не указываем операции для отдельных объектов, поскольку у всех объектов одного класса операции одинаковые. Отношения между классами Существует четыре типа связей в UML: •Зависимость •Ассоциация •Обобщение •Реализация Эти связи представляют собой базовые строительные блоки для описания отношений в UML, используемые для разработки хорошо согласованных моделей. •Зависимость Первая из них – зависимость – семантически представляет собой связь между двумя элементами модели, в которой изменение одного элемента (независимого) может привести к изменению семантики другого элемента (зависимого). Графически представлена пунктирной линией, иногда со стрелкой, направленной к той сущности, от которой зависит еще одна; может быть снабжена меткой. Зависимость – это связь использования, указывающая, что изменение спецификаций одной сущности может повлиять на другие сущности, которые используют ее. •Ассоциация Ассоциация – это структурная связь между элементами модели, которая описывает набор связей, существующих между объектами. Ассоциация показывает, что объекты одной сущности (класса) связаны с объектами другой сущности таким образом, что можно перемещаться от объектов одного класса к другому. •Ассоциация Например, класс Человек и класс Школа имеют ассоциацию, так как человек может учиться в школе. Ассоциации можно присвоить имя «учится в». В представлении однонаправленной ассоциации добавляется стрелка, указывающая на направление ассоциации. Двойные ассоциации представляются линией без стрелок на концах, соединяющей два классовых блока. Ассоциация может быть именованной, и тогда на концах представляющей её линии будут подписаны роли, принадлежности, индикаторы, мультипликаторы, видимости или другие свойства. •Ассоциация Множественность ассоциации представляет собой диапазон целых чисел, указывающий возможное количество связанных объектов. Он записывается в виде выражения с минимальным и максимальным значением; для их разделения используются две точки. Устанавливая множественность дальнего конца ассоциации, вы указываете, сколько объектов может существовать на дальнем конце ассоциации для каждого объекта класса, находящегося на ближнем ее конце. Количество объектов должно находиться в пределах заданного диапазона. Множественность может быть определена как единица 1, ноль или один 0..1, любое значение 0..* или *, один или несколько 1..*. Можно также задавать диапазон целых значений, например 2..5, или устанавливать точное число, например 3. •Ассоциация Агрегация – особая разновидность ассоциации, представляющая структурную связь целого с его частями. Как тип ассоциации, агрегация может быть именованной. Одно отношение агрегации не может включать более двух классов (контейнер и содержимое). Агрегация встречается, когда один класс является коллекцией или контейнером других. Причём, по умолчанию агрегацией называют агрегацию по ссылке, то есть когда время существования содержащихся классов не зависит от времени существования содержащего их класса. Если контейнер будет уничтожен, то его содержимое — нет. Графически агрегация представляется пустым ромбом на блоке класса «целое», и линией, идущей от этого ромба к классу «часть». •Ассоциация Композиция — более строгий вариант агрегации. Известна также как агрегация по значению. Композиция – это форма агрегации с четко выраженными отношениями владения и совпадением времени жизни частей и целого. Композиция имеет жёсткую зависимость времени существования экземпляров класса контейнера и экземпляров содержащихся классов. Если контейнер будет уничтожен, то всё его содержимое будет также уничтожено. Графически представляется как и агрегация, но с закрашенным ромбиком. •Обобщение Обобщение – выражает специализацию или наследование, в котором специализированный элемент (потомок) строится по спецификациям обобщенного элемента (родителя). Потомок разделяет структуру и поведение родителя. Графически обобщение представлено в виде сплошной линии с пустой стрелкой, указывающей на родителя. •Реализация Реализация – это семантическая связь между классами, когда один из них (поставщик) определяет соглашение, которого второй (клиент) обязан придерживаться. Это связи между интерфейсами и классами, которые реализуют эти интерфейсы. Это, своего рода, отношение «целое-часть». Поставщик, как правило, представлен абстрактным классом. В графическом исполнении связь реализации – это гибрид связей обобщения и зависимости: треугольник указывает на поставщика, а второй конец пунктирной линии – на клиента. Связи и ассоциации Связь (link) – это физическое или концептуальное соединение между объектами. Например, Джо Смит работает на компанию Симплекс. В большинстве случаев связь соединяет ровно два объекта, но бывают связи, соединяющие большее количество объектов. С математической точки зрения связь является кортежем (tuple), то есть списком объектов. Связь – это экземпляр ассоциации. Связи и ассоциации Ассоциация (association) – это описание группы связей, обладающих общей структурой и общей семантикой. Например, человек может работать на какую- либо компанию. Связи, являющиеся экземплярами некоторой ассоциации, соединяют объекты тех классов, которые соединены между собой этой ассоциацией. Ассоциация описывает множество потенциальных связей точно так же, как класс описывает множество потенциальных объектов. Связи и ассоциации обычно присутствуют в постановке задачи в виде глаголов. Пример модели финансового приложения Брокерские конторы должны иметь возможность выполнять следующие действия: записывать принадлежность различных акций, отслеживать дивиденды, предупреждать клиентов об изменениях на рынке и вычислять предписываемую маржу Пример модели финансового приложения Диаграмма классов показывает, что человек может быть владельцем акций неопределенного количества компаний (от нуля и более). С другой стороны, владельцами акций одной компании могут быть несколько человек. Пример модели финансового приложения На диаграмме объектов показаны примеры. Джон, Мэри и Сью являются владельцами акций General Electric. Сью и Элис являются владельцами акций компании IBM. Джефф не купил никаких акций, а потому и связи для него нет. Синтаксис Система обозначений UML предписывает изображать связь как линию между двумя объектами. Линия может состоять из нескольких прямолинейных сегментов. Если у связи есть имя, оно подчеркивается. В нашем примере Джон является владельцем акций General Electric. Ассоциация соединяет между собой классы и тоже обозначается линией (которая тоже может иметь несколько прямолинейных сегментов). В нашем примере люди являются владельцами акций компаний. По нашему соглашению названия связей и ассоциаций выделяются курсивом, а сегменты линий привязываются к прямоугольной сетке. Удобно по возможности расставлять классы так, чтобы ассоциация читалась слева направо. Кратность Кратность (multiplicity) – это количество экземпляров одного класса, которые могут быть связаны с одним экземпляром другого класса через одну ассоциацию. Кратность ограничивает количество связанных между собой объектов. В литературе чаше всего рассматриваются два значения кратности: 1 и «много», но в общем случае кратность может быть потенциально бесконечным подмножеством неотрицательных целых чисел. На диаграммах UML кратность указывается явно около конца линии, которой обозначается ассоциация. Значение кратности указывается в виде диапазона, например «1» (ровно один), «1..*» (один и более) или «3..5» (от трех до пяти включительно). Специальный символ «*» обозначает слово «много» (many) – нуль и более. Кратность определяет количество экземпляров одного класса, которые могут быть связаны с экземпляром другого класса Кратность нуль-или-один Одно из окон рабочей станции может быть выделено для сообщений об ошибках. Однако можно и не выделять такого окна. (Слово console на диаграмме – это название полюса ассоциации) Несколько связей между двумя объектами можно моделировать несколькими ассоциациями Кратность «много» указывает, что объект может быть связан с произвольным количеством объектов. Однако для каждой ассоциации между конкретной парой объектов может существовать только одна связь (за исключением мультимножеств и последовательностей – рассматриваются далее). Если между двумя объектами должно быть две связи, необходимо создать две ассоциации Кратность и требования к ПО Кратность зависит от предположений и от определенных разработчиком границ задачи. Нечеткие требования часто затрудняют определение кратности. Не следует сильно беспокоиться о правильных значениях кратности на начальных этапах разработки системы. Сначала следует определить классы и ассоциации, а затем указывать кратность. Если кратность не указана на диаграмме, она считается неопределенной. Недооценивая кратность, вы можете ограничить гибкость приложения. С другой стороны, переоценка кратности вызывает дополнительные расходы и требует указания дополнительной информации для того, чтобы различать членов множества. Имена полюсов ассоциации Кратность неявно подразумевает наличие полюсов ассоциации (association end). Например, ассоциация один-к-многим имеет два полюса, у одного из которых указана кратность «один», а у другого – «много». Концепция полюса ассоциации – одна из важнейших в UML. Полюс ассоциации может иметь не только кратность, но и свое собственное имя. Имена полюсов ассоциаций часто присутствуют в описаниях задач в виде существительных. Имя полюса указывается около конца ассоциации . Каждый полюс ассоциации может иметь имя Person (Человек) и Company (Компания) участвуют в ассоциации WorksFor (Работает На). Человек по отношению к компании является сотрудником (employee), а компания по отношению к человеку – работодателем (employer). Использование имен полюсов ассоциаций не является обязательным, но чаще всего оказывается проще указывать имена полюсов вместо имен ассоциаций или, по крайней мере, вместе с ними. Имена полюсов ассоциаций обязательны для установления ассоциаций между двумя объектами одного и того же класса. Имена container и contents позволяют различить два случая использования класса Directory (Каталог), который имеет ассоциацию с самим собой. Каталог может содержать вложенные каталоги и даже может содержаться сам в себе. Имена полюсов ассоциаций позволяют различать между собой разные ассоциации между одними и теми же классами. Каталог имеет ровно одного пользователя, который является владельцем, и множество пользователей, которые имеют право работать с каталогом. Если между парой классов существует только одна ассоциация, имени классов может быть вполне достаточно, поэтому имена полюсов можно не указывать. Моделирование ссылок на один и тот же класс При построении диаграмм классов следует корректно использовать имена полюсов ассоциаций и не вводить отдельный класс для каждой ссылки. В некорректной модели Человек с Ребенком может быть представлен двумя экземплярами: один для родителя и один для ребенка. В корректной модели экземпляр Человека принимает участие в двух и более связях: дважды в качестве родителя и произвольное количество раз в качестве ребенка. В корректной модели нужно показать, что ребенок не обязательно должен иметь родителя, чтобы рекурсия могла быть прервана. Упорядочение Достаточно часто объекты у полюса ассоциации с обозначением кратности «много» не имеют никакого выраженного порядка. В этом случае их можно рассматривать как множество. В примере изображен экран рабочей станции с перекрывающимися окнами. Каждое окно присутствует на экране не более чем в одном экземпляре. Окна имеют явный порядок, и в каждой конкретной точке экрана видимо только одно из них (верхнее). Упорядочение является внутренним свойством ассоциации. Упорядоченность множества объектов можно указать при помощи слова {ordered}, которое ставится около соответствующего полюса ассоциации. Мультимножества и последовательности Бинарная ассоциация обычно позволяет создать между парой объектов не более одной связи. Однако указав около полюса ассоциации слова {bag} или {sequence}, вы можете разрешить создание множества связей между двумя объектами. В примере маршрут – это последовательность аэропортов, причем один и тот же аэропорт можно посетить несколько раз. Обратите внимание, что разница между {ordered} и {sequence} состоит в том, что первое обозначение запрещает наличие дубликатов, а второе – разрешает. Мультимножество (bag) – это совокупность элементов, в которой допускается наличие дубликатов. Последовательность (sequence) – это упорядоченная совокупность элементов, в которой также допускается наличие дубликатов. Обозначения {bag} и {sequence}, как и {ordered}, применимы только к бинарным ассоциациям. Классы ассоциаций Подобно тому, как объекты класса могут быть описаны при помощи атрибутов, связи ассоциации также могут быть описаны атрибутами. UML позволяет представлять информацию такого характера при помощи классов ассоциаций. Класс ассоциации – это ассоциация, которая одновременно является классом. Подобно связям ассоциации, экземпляры класса ассоциации обладают индивидуальностью, связанной с теми объектами, между которыми они проводятся. Подобно обычным классам, классы ассоциаций могут иметь атрибуты и операции и участвовать в ассоциациях. Классы ассоциаций присутствуют в формулировке задачи в виде наречий или получаются абстрагированием известных значений. Связи ассоциации могут обладать атрибутами В примере представлен процесс accessPermission (разрешение доступа) является атрибутом AccessibleBy (Доступно). Данные в нижней части рисунка показывают возможные значения каждой связи. В UML класс ассоциации обозначается прямоугольником, прикрепленным к ассоциации пунктирной линией. Основанием для введения классов ассоциаций послужила возможность создания ассоциаций типа многие-ко-многим. Атрибуты таких ассоциаций без всяких сомнений являются принадлежностью связей и не могут быть приписаны ни к одному из объектов-участников. На рисунке атрибут accessPermission относится к файлу и пользователю одновременно и не может быть прикреплен только к одному из них без потери информации Атрибуты в ассоциациях типа одинко-многим На рисунке показаны атрибуты двух ассоциаций типа один-ко-многим. Каждый человек, работающий на компанию, получает зарплату и занимает некоторую должность. Босс оценивает работу каждого сотрудника. Атрибуты могут присутствовать и в ассоциациях типа один-к-одному. Не следует упаковывать атрибуты ассоциации в класс На рис. показано, каким образом можно упаковать атрибуты ассоциации типа один-к-одному или один-ко-многим в класс, противоположный полюсу с кратностью «один». Для ассоциаций типа многие-комногим это сделать невозможно. Как правило, упаковывать атрибуты ассоциации в класс все же не рекомендуется, поскольку кратность ассоциации может измениться. Оба варианта, изображенных на рис., допустимы для ассоциации типа один-комногим, однако только первая форма останется корректной, если кратность ассоциации WorksFor изменится на многие-ко-многим. Класс ассоциации позволяет четко указать индивидуальности На рисунке показан класс ассоциации, участвующий в другой ассоциации. Пользователи могут проходить авторизацию на нескольких рабочих станциях. Каждая авторизация обладает приоритетом и правами доступа. Пользователь имеет домашний каталог на всех рабочих станциях, где он авторизован, но у нескольких рабочих станций и пользователей может быть один домашний каталог. Классы ассоциаций являются важным аспектом модели классов, поскольку они позволяют точно указать индивидуальности и маршруты навигации. Классы ассоциаций существенно отличаются от обычных классов Не следует путать классы ассоциаций с ассоциациями, которые были выделены в отдельные классы. Класс ассоциации порождает один-единственный экземпляр для каждой пары экземпляров человека и компании. Напротив, экземпляров покупок (акций) между одним человеком и одной компанией может быть сколько угодно. Каждая покупка обладает собственной индивидуальностью и собственными значениями количества, даты и стоимости. Квалифицированные ассоциации Квалифицированной называется ассоциация, у которой имеется специальный атрибут (квалификатор), используемый для того, чтобы отличать друг от друга объекты, находящиеся на полюсе ассоциации с кратностью «много». Квалификаторы могут быть определены для ассоциаций типа один-ко-многим и многие-комногим. Квалификатор позволяет выбрать отдельный объект из множества целевых объектов, уменьшая таким образом эффективную кратность до значения «один». Квалифицированная ассоциация с целевой кратностью «один» или «не более одного» образует четкий маршрут для поиска целевого объекта по исходному. Для обозначения квалификатора используется небольшой прямоугольник, который пристыковывается к исходному классу около конца линии, обозначающей ассоциацию. Квалификатор может быть пристыкован к любой стороне прямоугольника исходного класса. Исходный класс вместе с квалификатором определяют целевой класс. Квалифицированные ассоциации Банк обслуживает множество счетов. Счет принадлежит одному единственному банку. В контексте банка уникальный счет определяется своим номером. Банк и Счет – это классы, а Номер Счета – квалификатор. Квалификация уменьшает эффективную кратность ассоциации до единицы. Ассоциации: а) квалифицированная б) неквалифицированная Обе модели (квалифицированная и неквалифицированная) вполне корректны, но модель с квалифицированной ассоциацией сообщает дополнительную информацию. В квалифицированной модели добавляется ограничение на кратность: сочетание банка и номера счета дает не более одного счета. Квалифицированная модель также передает значение номера счета для прослеживания модели, что отражается в методах. Сначала следует найти банк, а затем указать номер счета, и в результате вы получаете нужный счет. Обобщение Обобщение (generalization) – это отношение между классом (суперклассом) и одной или несколькими его вариациями (подклассами). Обобщение объединяет классы по их общим свойствам, благодаря чему обеспечивается структурирование описания объектов. Суперкласс характеризуется общими атрибутами, операциями и ассоциациями. Подклассы добавляют к ним свои собственные атрибуты, операции и ассоциации. Говорят, что подкласс наследует составляющие суперкласса. Обобщение иногда называется отношением типа «является», поскольку каждый экземпляр подкласса одновременно является экземпляром суперкласса. Простое обобщение упорядочивает классы в рамках некоторой иерархии. В этом случае каждый подкласс имеет одного непосредственного предка (его суперкласс). Однако возможна более сложная форма обобщения, при которой подкласс может иметь несколько непосредственных суперклассов. Уровней обобщения может быть много. Обобщение обозначается большой незакрашенной стрелкой. Стрелка указывает на суперкласс. Обобщение Оборудование может быть насосом (Pump), теплообменником (HeatExchanger) или резервуаром (Tank). Насосы бывают нескольких типов: центробежные (CentrifugalPump), мембранные (DiaphragmPump) и плунжерные (PlungerPump). Резервуары бывают сферические (SphericalTank), с наддувом (PressurizedTank) и с плавающей крышей (FloatingRoofTank). То, что символ обобщения резервуара изображен ниже символа обобщения насоса, никакого особого значения не имеет Модель классов системы управления окнами для рабочей станции Класс Window определяет общие параметры окон всех типов, в частности прямоугольную границу, определяемую атрибутами х1, у1, х2, у2, и операции, позволяющие отображать и скрывать окно, а также помещать его на передний или на задний план в общем наборе окон. Холстом (canvas) называется область, в которой может отображаться графика. Canvas наследует границу от класса Window и добавляет размеры области холста, которые определяются атрибутами сх1, су1, сх2, су2. Canvas содержит множество элементов, на что указывает ассоциация с классом Shape. Все фигуры характеризуются цветом и шириной линии. Фигуры могут быть линиями, эллипсами или многоугольниками. Каждый класс фигур обладает своими собственными параметрами. Многоугольник (Polygon) определяется списком его вершин. Эллипсы (Ellipse) и многоугольники являются замкнутыми фигурами, которые характеризуются цветом и шаблоном заливки. Линии (Line) являются одномерными, а потому не могут быть залиты. Холст поддерживает операции добавления и удаления элементов. Агрегация Агрегация (aggregation) – это частный случай ассоциации, описывающий объекты, состоящие из частей. Составляющие являются частями агрегации. Агрегат с семантической точки зрения представляет собой расширенный объект, обрабатываемый многими операциями как единое целое, хотя физически он состоит из нескольких объектов. Агрегация определяется как отношение между классом-агрегатом и одним составляющим классом. Агрегат из составляющих частей разных типов должен моделироваться как несколько агрегаций. Например, газонокосилка состоит из ножа, двигателя, нескольких колес и корпуса. Композиция Композиция (composition) – это частный случай агрегации, характеризующийся двумя дополнительными ограничениями. Составляющая часть может принадлежать не более чем одному агрегату. Более того, составляющая часть, приписанная к некоторому агрегату, автоматически получает срок жизни, совпадающий со сроком жизни агрегата. Таким образом, композиция подразумевает, что части принадлежат целому. Это удобно для программирования: удаление объекта-агрегата автоматически вызывает удаление всех его составляющих, если он образует их композицию. Для обозначения композиции используется небольшой закрашенный ромбик, который ставится рядом с классом-агрегатом (для агрегации, не являющейся композицией, используется не закрашенный ромбик). Композиция На рисунке изображена компания, состоящая из отделений, которые, в свою очередь, состоят из отделов. Компания косвенно является композицией отделов. Однако компания не является композицией сотрудников, поскольку компания и человек являются независимыми объектами одинакового уровня. Моделирование состояний Модель состояний Модель состояний описывает последовательности операций, происходящих в системе в ответ на внешние воздействия (в противоположность содержанию, предмету и реализации операций, описываемым моделью классов). Модель состояний состоит из нескольких диаграмм состояний, по одной на каждый класс, поведение которого во времени важно для приложения. Диаграмма состояний — это стандартная концепция из информатики (графическое представление конечного автомата), связывающая события и состояния. События представляют внешние воздействия, а состояния — значения объектов. События Событие (event) — это происшествие, случившееся в определенный момент времени, например нажатие пользователем левой кнопки мыши или вылет рейса 123 из Чикаго. Часто события соответствуют глаголам в прошедшем времени (питание было включено, будильник был установлен) или выполнению некоторого условия (опустошился лоток для бумаги, температура опустилась ниже точки замерзания) в описании задачи. К событиям относятся не только нормальные происшествия, но и ошибочные ситуации. Одно событие может логически предшествовать другому или следовать за ним. События могут быть и несвязанными друг с другом. Рейс 123 должен вылететь из Чикаго прежде, чем он сможет прибыть в Сан-Франциско. Эти два события находятся в причинноследственной связи. Однако рейс 123 может вылететь как перед вылетом рейса 456 из Рима, так и после него. Эти два события не связаны друг с другом. Несвязанные события называются параллельными (concurrent). Они никак не влияют друг на друга. события сигналов Виды событий события изменения события времени Событие сигнала Сигнал (signal) — это явная односторонняя передача информации от одного объекта другому. Сигнал отличается от вызова подпрограммы, который может возвращать значение. Объект, передающий сигнал другому объекту, может рассчитывать на получение ответа, но этот ответ будет отдельным сигналом, и его отправка (или задержка) будет целиком зависеть от второго объекта. Событие сигнала (signal event) — это событие получения или отправки сигнала. Обычно более важным считается получение сигнала, потому что оно влияет на объектполучатель. Обратите внимание на разницу между сигналом и событием сигнала: сигнал — это сообщение между объектами, а событие сигнала — это происшествие. Классы сигналов Каждая передача сигнала является уникальным происшествием, но можно группировать их в классы сигналов и дать каждому классу имя, подчеркивая общую структуру и поведение. Например, вылет рейса 123 Юнайтед Эйрлайнс из Чикаго 10 января 1991 года — это экземпляр класса сигналов Вылет Рейса. Некоторые сигналы являются обычными происшествиями, но большинство из них характеризуются атрибутами, в которых хранятся передаваемые этими сигналами значения. Классы сигналов Например, на рисунке класс FlightDeparture (Вылет Рейса) обладает атрибутами airline (авиакомпания), flightNumber (номерРейса), city (город) и date (дата). В UML сигнал обозначается ключевым словом «signal» в угловых кавычках («»), которое ставится над именем класса сигнала в верхнем разделе прямоугольника. Во втором разделе указываются атрибуты сигнала. События изменения Событие изменения (change event) — это событие, вызванное выполнением логического выражения. Суть события состоит в том, что некоторое выражение постоянно проверяется, и как только его значение изменяется с «ложно» на «истинно», осуществляется событие изменения. Разумеется, в реализации никакой непрерывной проверки осуществляться не будет, но она должна быть достаточно частой, чтобы в масштабе приложения казаться непрерывной. В UML событие изменения обозначается ключевым словом when, за которым следует логическое выражение в круглых скобках. Несколько примеров: •when (температура в комнате < установка нагрева) •when (температура в комнате > установка охлаждения) •when (заряд батареи < нижнее ограничение) •when (давление в шинах < минимальное давление) Событие времени (time event) — это событие, вызванное достижением момента абсолютного времени или истечением временного интервала. События времени В UML момент абсолютного времени обозначается ключевым словом when, за которым следует временное выражение в круглых скобках. Временной интервал обозначается ключевым словом after, за которым следует выражение, результатом вычисления которого является временной интервал: •when (дата = 1 января 2000 г.) after (10 секунд) Состояния Состояние (state) — это абстракция значений и связей объекта. Множества значений и связей группируются в состояние в соответствии с массовым поведением объектов. Например, состояние банка может быть либо «платежеспособен», либо «банкрот», в зависимости от того, что больше: активы или обязательства. Состояния часто соответствуют отглагольным формам или деепричастиям (Ожидает, Дозванивается) или выполнению некоторого условия (Включен, Ниже Точки Замерзания). Состояния Система обозначений состояния в UML: прямоугольник со скругленными углами, в котором ставится необязательное название состояния. Название состояния выделяется полужирным шрифтом и пишется с заглавной буквы. События и состояния События — это точки на линии времени, а состояния – интервалы. Состояние соответствует интервалу между двумя точками, обозначающими два полученных объектом события. Например, между снятием трубки и нажатием первой цифры телефонная линия находится в состоянии Зуммер. Состояние объекта зависит от предыдущих событий, которые в большинстве случаев перекрываются последующими событиями. Например, события, произошедшие до того, как трубка была повешена, не влияют на будущее поведение. Состояние Свободно «забывает» о событиях, полученных до сигнала повесить трубку. Переходы Переход (transition) — это мгновенная смена одного состояния другим. Например, когда вы отвечаете на входящий звонок, телефонная линия переходит из состояния Ringing (звонок) в состояние Connected (разговор). Говорят, что переход запускается (fire) при смене исходного состояния целевым. Исходное и целевое состояния обычно отличаются друг от друга, но они могут и совпадать. Переход запускается, когда происходит связанное с ним событие (если только необязательное сторожевое условие не приводит к игнорированию события). Выбор целевого состояния зависит как от исходного состояния, так и от полученного события. Событие может вызвать переходы во множестве объектов. С концептуальной точки зрения эти переходы происходят одновременно Сторожевое условие Сторожевое условие (guard condition) — это логическое выражение, которое должно быть истинным, чтобы переход мог запуститься. Например, сигнал светофора на перекрестке может переключиться только в том случае, если на дороге имеются ожидающие этого машины. Переход со сторожевым условием запускается в тот момент, когда осуществляется соответствующее событие, но только если в этот же момент выполнено его сторожевое условие. Например, «когда будешь выходить утром из дома (событие), если на улице будет ниже нуля (условие) — надень перчатки (целевое состояние)». Сторожевое условие проверяется только один раз, в тот момент, когда осуществляется событие, и если условие выполняется — происходит переход. Обратите внимание, что сторожевое условие концептуально отличается от события: условие проверяется только один раз, тогда как наличие события, по сути, проверяется непрерывно. •В UML для обозначения перехода используется линия, соединяющая исходное состояние с целевым. •На одном из концов линии, указывающем на целевое состояние, ставится стрелка. • Линия может состоять из нескольких сегментов. •Событие может быть указано в качестве метки перехода. •После события в квадратных скобках можно указать необязательное сторожевое условие. •Название события обычно выделяется курсивом, а сторожевое условие записывается в квадратных скобках. Обозначение Диаграмма состояний работы светофоров на перекрестке На рисунке показаны переходы со сторожевыми условиями для светофоров на перекрестке. Одна пара фотоэлементов контролирует полосы в направлении север-юг, из которых возможен поворот налево. Другая пара контролирует полосы в направлении запад-восток, из которых тоже возможен поворот налево. Если на одной из пар полос отсутствуют машины, управляющая логика светофора пропускает часть цикла, разрешающую левый поворот. Диаграммы состояний Диаграмма состояний — это граф, узлами которого являются состояния, а направленными дугами — переходы между состояниями. • Диаграмма состояний описывает последовательности состояний, вызываемые последовательностями событий. •Названия состояний должны быть уникальными в рамках диаграммы. •Все объекты класса следуют диаграмме состояний, описывающей общее для них поведение. • Диаграмма состояний может быть реализована непосредственной интерпретацией или преобразованием семантики в эквивалентный программный код. •Модель состояний состоит из множества диаграмм состояний, по одной на каждый класс, поведение которого с течением времени важно для приложения. • Диаграммы состояний должны быть согласованы по интерфейсам (событиям и сторожевым условиям). Диаграммы состояний • Отдельные диаграммы взаимодействуют друг с другом посредством передачи событий, а также косвенно, через сторожевые условия. Некоторые события и сторожевые условия присутствуют только на одной диаграмме, тогда как другие — на нескольких. • Класс, имеющий несколько состояний, характеризуется важным поведением во времени. Если же класс обладает одним состоянием, его поведение во времени можно игнорировать. •Диаграммы состояний с одним состоянием можно описать в простой форме без всякой графики, а именно в виде таблицы воздействий и откликов, в которой будут приводиться события и сторожевые условия, а также вызываемое ими поведение. Диаграммы состояний •Для обозначения диаграммы состояний в UML используется прямоугольник. •Название диаграммы указывается в пятиугольном теге в левом верхнем углу. •Внутри прямоугольника изображаются состояния и переходы, образующие диаграмму Основные обозначения для диаграмм состояний • Состояние (state). Обозначается прямоугольником со скругленными углами, в котором может быть указано имя состояния. Для начальных и конечных состояний имеются специальные обозначения (сплошной кружок и «бычий глаз» или перечеркнутый кружок соответственно). • Переход (transition). Изображается линией, соединяющей исходное состояние с целевым. Стрелка ставится около конца линии, указывающего на целевое состояние. Линия может состоять из нескольких прямолинейных сегментов. Основные обозначения для диаграмм состояний • Событие (event). Событие сигнала изображается меткой на переходе. После названия события в круглых скобках можно указать атрибуты. Событие изменения обозначается ключевым словом when, после которого в круглых скобках указывается логическое выражение. Событие времени также обозначается ключевым словом when, после которого в круглых скобках указывается временное выражение, или ключевым словом after, после которого в круглых скобках указывается интервал времени). • Диаграмма состояний (state diagram). Заключается в прямоугольную рамку. Название диаграммы указывается в небольшом пятиугольном теге в верхнем левом углу рамки. Основные обозначения для диаграмм состояний • Сторожевое условие (guard condition). Может быть указано в квадратных скобках после события. • Действия (effects, см. следующий раздел). Могут прикрепляться к переходу или состоянию. Указываются после символа косой черты (/). Действия, если их несколько, отделяются друг от друга запятыми и выполняются параллельно. (Если нужно выполнять действия последовательно, их можно разделить промежуточными состояниями.) • Название состояния обычно выделяют полужирным шрифтом и делают первую букву заглавной. • Названия событий – пишут курсивом, начиная со строчной буквы. Сторожевые условия и действия не выделяются шрифтом и тоже пишутся со строчной буквы. Одноразовые диаграммы состояний Диаграммы состояний могут описывать непрерывные циклы или одноразовые жизненные циклы. Одноразовые диаграммы состояний описывают объекты с конечным сроком существования. Такие диаграммы имеют начальное и конечное состояния. Сразу после создания объект оказывается в начальном состоянии. Вход в конечное состояние означает уничтожение объекта. Диаграмма состояний с точками входа и выхода На рисунке (верхняя диаграмма) показан упрощенный жизненный цикл игры в шахматы с начальным состоянием по умолчанию (сплошной кружок) и конечным состоянием по умолчанию («бычий глаз»). Начальное и конечное состояние можно обозначать точками входа и выхода. На рисунке(нижняя диаграмма) точка входа Start соединена с первым ходом белых, и игра заканчивается одним из трех возможных состояний. Точки входа (пустые кружки) и выхода (кружки с символом X) ставятся на периметре диаграммы состояний и могут иметь имена. Поведение на диаграммах состояний •Действие (effect) — это ссылка на поведение, выполняемое в ответ на произошедшее событие. •Деятельность (acitivity) — это фактическое поведение, которое может вызываться любым количеством действий. Деятельность может выполняться при переходе, при входе в состояние или при выходе из него, а также при наступлении какого-либо иного события в состоянии. Деятельность может описывать внутренние управляющие операции, например установку атрибутов или порождение других событий. Эта деятельность не имеет аналогов в реальном мире и предназначена для структурирования управления при реализации. Например, программа может увеличивать внутренний счетчик на единицу каждый раз при осуществлении какого-либо события. Деятельность для всплывающего меню На рисунке показана диаграмма состояний для всплывающего меню рабочей станции. При нажатии правой кнопки мыши меню отображается на экране. Когда пользователь отпускает эту кнопку, меню исчезает. Пока меню отображается на экране, в нем подсвечивается один элемент, над которым в данный момент находится указатель мыши. Деятельность обозначается косой чертой (/), после которой ставится название или описание деятельности. Деятельность указывается после вызывающего ее события. Ключевое слово do используется для обозначения текущей деятельности и не может использоваться в качестве имени события. Текущая деятельность Текущей (do activity) называется деятельность, занимающая некоторый промежуток времени. По определению такая деятельность может выполняться только в некотором состоянии и не может прикрепляться к переходу. Например, индикатор аварии у ксерокса может мигать в состоянии «Замятие бумаги». Текущая деятельность включает непрерывные операции, такие как отображение картинки на телеэкране, а также последовательные операции, завершающиеся по прошествии некоторого промежутка времени (например, закрытие клапана). Для обозначения текущей деятельности используется ключевое слово do и символ косой черты. Текущая деятельность может быть прервана событием, полученным в процессе выполнения этой деятельности. Это событие может вызвать переход из состояния, в котором осуществляется текущая деятельность, но может и не вызвать такого перехода. Например, робот, перемещающий деталь, может столкнуться с сопротивлением, что приведет к остановке его движения Деятельность при входе и при выходе Деятельность может быть прикреплена не только к переходу, но и ко входу в состояние или к выходу из него. Никаких отличий в возможностях двух систем обозначений нет, однако часто при всех переходах в одно и то же состояние выполняется одинаковая деятельность, которую, в таком случае, удобнее привязать к самому событию. Деятельность при переходах Показана схема управления открыванием гаражной двери. Пользователь порождает событие depress (нажатие) нажатием кнопки, посредством которой он закрывает и открывает дверь. Каждое событие изменяет направление движения двери на противоположное, однако для обеспечения безопасности дверь должна быть открыта полностью, прежде чем ее можно будет снова закрыть. Система управления включает деятельность motor up (двигатель вверх) и motor down (двигатель вниз) для двигателя. Двигатель порождает события door open (дверь открыта) и door closed (дверь закрыта), когда перемещение двери завершается. Оба перехода в состояние Opening (Открывание) приводят к открытию двери. Деятельность при входе Показана та же самая модель, в которой деятельность прикреплена к входу в состояние. Деятельность при входе изображается внутри значка состояния с ключевым словом entry и символом /. Такая деятельность выполняется при входе в состояние по любому из входящих переходов. Деятельность при входе эквивалентна прикреплению той же деятельности к каждому из входящих переходов. Если входящий переход имеет свою собственную деятельность, она выполняется в первую очередь. Деятельность при выходе указывается внутри символа состояния после ключевого слова exit и символа /. Эта деятельность выполняется в первую очередь при выходе из состояния по любому из исходящих переходов. Если к состоянию привязано несколько видов деятельности, они выполняются в следующем порядке: 1) деятельность при входящем переходе, 2) деятельность при входе, 3) текущая деятельность, 4) деятельность при выходе, 5) деятельность при исходящем переходе. Событие в состоянии и переход в себя В принципе, в состоянии может произойти любое событие. Entry и exit — частные случаи возможных событий. Как показано на рис., существует отличие между событием в состоянии и переходом в себя: деятельность при входе и при выходе выполняется только в том случае, если происходит переход в себя. Переход по завершении Часто единственным назначением состояния является последовательное выполнение некоторой деятельности. Как только деятельность завершается, запускается переход в следующее состояние. Стрелка без названия события обозначает автоматический переход, который запускается, как только завершается деятельность, связанная с исходным состоянием. Такой переход называется переходом по завершении, потому что он переключается завершением деятельности в исходном состоянии Моделирование взаимодействий Взаимодействия можно моделировать на разных уровнях абстрагирования Модель взаимодействия — это глобальный взгляд на поведение множества объектов, она описывает взаимодействие объектов между собой для получения нужных результатов. Взаимодействия можно моделировать на разных уровнях абстрагирования. •На самом высоком уровне взаимодействие системы со внешними действующими лицами описывается вариантами использования. Каждый вариант использования описывает элемент функциональности, предоставляемой системой ее пользователям. Варианты использования полезны для представления в модели неформальных требований. Взаимодействия можно моделировать на разных уровнях абстрагирования •Диаграммы последовательности более детализированы, они показывают сообщения, которыми обмениваются объекты с течением времени. К сообщениям относятся асинхронные сигналы и вызовы процедур. Диаграммы последовательности полезны для демонстрации последовательностей поведения, видимых пользователям системы. •Диаграммы деятельности содержат всю информацию и показывают поток управления между этапами вычислений. Диаграммы деятельности могут показывать не только потоки управления, но и потоки данных. С их помощью документируются этапы диаграмм последовательности, необходимые для реализации операции или бизнес-процесса. Действующие лица Действующее лицо (actor) — это непосредственный внешний пользователь системы. Это объект или множество объектов, непосредственно взаимодействующих с системой, но не являющихся ее частью. Действующими лицами могут быть люди, устройства и другие системы — все, что взаимодействует с интересующей нас системой непосредственно Пример Действующими лицами по отношению к системе бюро путешествий могут быть путешественники, агенты и авиакомпании. Объект может быть связан с несколькими действующими лицами, если его поведение обладает разными гранями . Действующее лицо должно иметь одну четко определенную цель. Объекты и классы обычно сочетают в себе несколько назначений (целей). Действующее же лицо представляет лишь одну грань объекта в его взаимодействии с системой. Одно и то же лицо может представлять объекты разных классов, ведущие себя одинаково по отношению к системе. Варианты использования Различные взаимодействия действующих лиц с системой группируются в варианты использования. Вариант использования (use case) — это связный элемент функциональности, предоставляемый системой при взаимодействии с действующими лицами. Пример Лицо Клиент может купить напиток в торговом автомате. Клиент кидает монеты в автомат, выбирает продукт и забирает свой напиток. Ремонтник может провести техническое обслуживание автомата. Вариант использования подразумевает обмен последовательностью сообщений между системой и действующими лицами. Варианты использования торгового автомата Купить напиток. Торговый автомат выдает напиток после того, как клиент выбирает нужный вариант и платит за него. Провести плановый ремонт. Ремонтник выполняет плановое техобслуживание автомата, необходимое для обеспечения его безотказной работы. Провести техническое обслуживание. Ремонтник выполняет незапланированное обслуживание автомата при выходе его из строя. Загрузить продукты. Обслуживающий персонал загружает продукты в торговый автомат для пополнения запасов продаваемых напитков. Частью варианта использования являются и сбойные ситуации. Вариант использования: Покупка напитка. Краткое описание: Торговый автомат выдает напиток после того, как клиент выбирает нужный вариант и платит за него. Действующие лица: Клиент. Исходные условия: Автомат ожидает опускания монеты. Описание: Автомат изначально находится в состоянии ожидания и выводит на дисплей сообщение «Опустите монеты». Клиент опускает монеты в щель автомата. Автомат выводит на дисплей принятую от клиента сумму и включает подсветку кнопок с названиями напитка. Автомат выдает соответствующий напиток и выдает сдачу, если напиток стоит меньше, чем заплатил клиент. Исключения: Отмена: Если клиент нажмет кнопку отмены до того, как произведет выбор напитка, автомат вернет клиенту деньги и перейдет в состояние ожидания. Напиток отсутствует: Если клиент выбирает напиток, который в данный момент отсутствует в автомате, выводится сообщение: «Напиток отсутствует». Автомат готов к приему монет и выбору напитка клиентом. Недостаточно денег: Если клиент выбирает напиток, который стоит больше, чем он заплатил, выводится сообщение: «Необходимо доплатить пп.пп руб. для покупки этого напитка», где пп.nп — недостающая сумма. Автомат продолжает принимать монеты и готов к выбору напитка клиентом. Нет сдачи: Если клиент вставил достаточное количество монет для покупки напитка, но в автомате нет денег, чтобы корректно выдать сдачу, выводит сообщение «Невозможно выдать сдачу». Автомат продолжает принимать монеты и готов к выбору напитка клиентом. Постусловия: Автомат готов к приему монет. Варианты использования системы заключаются в прямоугольник, снаружи которого изображаются действующие лица. Название системы может быть указано около одного из краев прямоугольника. Вариант использования обозначается эллипсом, внутри которого указывается его название. Значок «человечек» обозначает действующее лицо. Его имя ставится рядом со значком или под ним. Действующие лица соединяются с вариантами использования сплошными линиями. Синтаксис диаграммы вариантов использования Варианты использования для торгового автомата Модель последовательности представляет собой углубленное рассмотрение ситуаций, описываемых вариантами использования. Модели последовательности Такие модели бывают двух типов: •сценарии •диаграммы последовательности Сценарии Сценарий (scenario) — это последовательность событий, осуществляющихся в процессе одного конкретного выполнения системы, например в соответствии с каким-либо вариантом использования. Сценарий можно рассматривать как журнал выполнения фактической системы или как мысленный эксперимент, в котором участвует предлагаемая система. Сценарий может быть представлен в виде текста. Пример: сценарий описывает on-line брокерскую сделку Джон Доу входит в систему. Система устанавливает безопасные соединения. Система выводит информацию по портфолио. Джон Доу вводит заказ на покупку 100 акций GE по рыночной цене. Система проверяет наличие необходимых средств для совершения сделки. Система выводит запрос подтверждения и предполагаемую стоимость. Джон Доу подтверждает сделку. Система размещает заказ на фондовой бирже. Система выводит номер транзакции. Джон Доу выходит из системы. Система устанавливает незащищенное соединение. Система выводит сообщение о завершении сеанса. Фондовая биржа сообщает о результатах торгов. Диаграммы последовательности Диаграмма последовательности показывает участников взаимодействия и последовательность сообщений, которыми они обмениваются. Она описывает взаимодействие системы с действующими лицами в процессе полного или частичного выполнения варианта использования. Синтаксис диаграммы последовательностей Каждое действующее лицо, как и система, обозначается вертикальной линией, которая называется линией жизни. Каждое сообщение — горизонтальной стрелкой, направленной от отправителя к получателю. Время направлено сверху вниз, однако масштаб на диаграмме не соблюдается. Диаграмма показывает только последовательность сообщений, а не точный их порядок во времени. В системах реального времени можно накладывать ограничения на последовательности событий, однако это требует дополнительных обозначений. На диаграммах последовательности могут изображаться и параллельные сигналы. Сигналы между участниками взаимодействия не обязаны чередоваться Диаграмма последовательности для онлайновой брокерской сделки Диаграмма деятельности показывает последовательность этапов, образующих сложный процесс, например вычислительный алгоритм или технологический процесс. Модели деятельности Диаграмма деятельности показывает поток управления, подобно диаграмме последовательности, но сосредоточивает внимание на операциях, а не на объектах. Диаграммы деятельности особенно полезны на ранних этапах проектирования алгоритмов и технологических процессов. Прямоугольники со скругленными углами — это виды деятельности, порядок которых обозначается стрелками. СИНТАКСИС ДИАГРАММЫ ДЕЯТЕЛЬНОСТИ Ромбик обозначает точку принятия решения. Сплошная полоса показывает разделение или слияние параллельных потоков управления Диаграмма деятельности брокерской системы при обработке заказа Сетевая брокерская система начинает с проверки заказа. Затем заказ реализуется на фондовой бирже. Если выполнение заказа проходит успешно, система выполняет три действия одновременно: отправляет клиенту подтверждение, обновляет сетевой портфель ценных бумаг с учетом результатов сделки и заканчивает сделку со второй стороной, снимая средства со счета клиента и перечисляя наличные или ценные бумаги. Когда все три параллельных потока завершаются, система объединяет их в один поток и закрывает заказ. Если же выполнение заказа оказывается неудачным, система отправляет сообщение об этом клиенту и тоже закрывает заказ.
«Модели ПО» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 493 лекции
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot