39071

Универсальный язык моделирования (UML)

Лекция

Информатика, кибернетика и программирование

UML – это набор различных видов диаграмм: диаграмма классов диаграмма объектов диаграмма связей диаграмма вариантов использования текстовый сценарий диаграмма действий диаграмма состояний диаграмма последовательности UML – это не средство разработки программного обеспечения это всего лишь средство понятных иллюстраций разрабатываемого проекта. Варианты использования Сценарий. Диаграмма вариантов использования. Описание вариантов использования.

Русский

2013-09-30

128.5 KB

34 чел.

Лекция 3

Универсальный язык моделирования (UML)

UML можно условно назвать графическим языком предназначенным для моделирования компьютерных программ. Под моделированием понимается создание наглядной визуальной интерпретации чего-либо. UML позволяет создавать подобную интерпретацию программ высокоуровневой организации. Он был разработан в конце 90х годов XX столетия. Его создали американцы Града Буч, Джеймс Рэмбро, Ивар Джекобсон.

UML – это набор различных видов диаграмм:

  •  диаграмма классов
  •  диаграмма объектов
  •  диаграмма связей
  •  диаграмма вариантов использования
  •  текстовый сценарий
  •  диаграмма действий
  •  диаграмма состояний
  •  диаграмма последовательности

UML – это не средство разработки программного обеспечения, это всего лишь средство понятных иллюстраций разрабатываемого проекта. Это язык понятный как заказчику так и программисту облегчающий их взаимодействия.

Лекция 28

Разработка объектно-ориентированного ПО. Действующий субъект. Варианты использования Сценарий. Диаграмма вариантов использования. Описание вариантов использования.

Разработка объектно-ориентированного ПО

Идея формализации разработки ПО развивалась в течение длительного времени. В начале программист просто обсуждал программу с пользователем (заказчиком) и сразу писал ее. Этот способ организации применим для достаточно небольших программ. Для более сложных программ процесс разработки стал разбиваться на несколько этапов, выполняемых последовательно. Обычно это были: анализ, планирование, кодирование и внедрение. Такая последовательность называется каскадной (водопадной) моделью. Для реализации каждого этапа привлекались отдельные группы, и каждая из них передавала результаты своего труда следующей (имеется действующий ГОСТ для такой разработки ПО). Данная модель имеет ряд недостатков:

  1.  ошибка накапливается от этапа к этапу (испорченный телефон);
  2.  в случае изменения требования заказчиков в процессе разработки тяжело вернуться к предыдущему этапу.

Объектно-ориентированный подход создавался для решения некоторых проблем, присущих процессу развития больших программ. Здесь резко упрощен процесс планирования, так как объекты программы соответствуют объектам реального мира. Итак, в начале определяются цели и задачи проекта, далее применяется ООП. В качестве примера современного метода разработки ПО рассмотрим так называемый унифицированный процесс. Он разбивается на 4 этапа:

начало                      развитие                   построение                   передача

                                                                    итерации

На начальной стадии выявляются общие возможности будущей программы и ее осуществимость.

Фаза оканчивается одобрением руководства проекта. На этапе развития планируется общая архитектура системы. Здесь определяются требования пользователя. На стадии построения осуществляется планирование отдельных деталей системы и пишется код.

В фазе внедрения система предоставляется конечным пользователям, тестируется и внедряется. Все этапы могут не выполнятся последовательно, а выполнятся параллельно. Каждый из них может быть разбит на ряд итераций. Унифицированный процесс дает возможность вернуться на более ранние стадии разработки.

Фаза развития обычно за основу берет технологию вариантов использования (use case). Моделирование вариантов использования позволяет будущим пользователям активно участвовать в разработке ПО. При этом подходе за основу берется терминология пользователя, а не программиста - это гарантирует взаимопонимание. В моделировании вариантов использование применяются 2 основные сущности:

  1.  действующие субъекты;
  2.  варианты использования.

Действующий субъект

Действующий субъект – это в большинстве случаев человек, который будет реально работать с создаваемой системой. Обычно этот человек инициирует некоторые события в программе, какую-либо операцию, но может быть и «приемником» информации выдаваемой программой. Кроме того, он может сопровождать и контролировать ситуацию. Обычно он называется актор или роль. Один человек может играть разные роли - продавец и бухгалтер, или наоборот – один и тот же актор может  представляться разными людьми, например продавцами могут быть и Иванов, и Петров, и Сидоров. Акторами могут быть системы, находящиеся во взаимодействии с нашей системой. Например, удаленная система в головном офисе, web-сервер и так далее. При разработке кандидата в акторы они рассматриваются с точки зрения их взаимодействия с системой: вводят ли они данные,  ожидают ли информацию от системы, помогают ли (взаимодействуют с другими акторами).

Вариант использования

Вариант использования – это специальная задача, обычно инициированная актором (но может быть и самой системой). Она описывает единственную цель, которую надо в данный момент достичь. Все что должна делать система должно быть описано с помощью вариантов использования на стадии ее разработки.

Сценарий

Варианты использования состоят в большинстве случаев из набора сценариев. Варианты использования определяют цель операции. Сценарий описывает способ достижения целей.

Например, варианты использования состоят в том, что служащие книжного магазина запрашивают у системы место нахождения конкретной книги на складе. Существует несколько сценариев:

  1.  книга есть на складе, компьютер выводит на экран номер полки, на которой она находится;
  2.  книга отсутствует, но система дает клиенту возможность заказать ее у издателя;
  3.  книги нет на складе и нельзя её заказать, система информирует об этом клиента.

Каждый сценарий должен сопровождаться своей документацией, в которой деталях описываются всевозможные события.

Диаграмма вариантов использования

Их строят с помощью UML. Акторы представляются человечками, варианты использования – эллипсами. Прямоугольная рамка (граница системы) окружает все варианты использования, оставляя за своими пределами акторов. То что внутри – это будущее ПО. Например, для книжного магазина мы можем нарисовать схему:

варианты использования, оставляя за своими пределами акторов. То что внутри – это будущее ПО. Например, для книжного магазина мы можем нарисовать схему:

На этой диаграмме линии, называемые ассоциациями, соединяют акторов с их вариантами использования (обычно без стрелок). Акторами являются Продавец, Менеджер, Система. Варианты: Регистрация продаж, Поиск книги, Заказ книги, Просмотр данных о реализации и Запрос данных о реализации.

Описание вариантов использования

К данной диаграмме должны быть добавлены описания всех вариантов использования (точнее детальное описание всех сценариев в вариантах использования). Простейшей реализацией описания является просто текст. Иногда используют таблицу, состоящую из двух колонок: в первой описывается деятельность актора, а во второй реакция на нее системы. Иногда используют диаграммы действий, которые являются разновидностью блок схемы и будут рассматриваться позже.

От вариантов использования к классам

Когда определены все действующие субъекты и варианты использования, процесс переходит из фазы развития в фазу построения программ. Первой проблемой, которую надо решить, является создание и развитие классов, которые будут входить в программу. Одним из подходов является использование имен существительных, встречающихся в кратких описаниях вариантов использования. Они являются кандидатами в классы, но нужно исключить слишком общие, а так же те, которые лучше представить в виде атрибутов. После определения кандидатов в классы необходимо рассмотреть глаголы вариантов использования. Часто глагол – это то сообщение, которое передается от одного объекта к другому. Диаграмму классов строят для того, чтобы показать классы и их взаимодействия. Кроме того, широко используют диаграммы последовательностей, которые являются разновидностью диаграмм взаимодействия.

Для иллюстрации разработки ПО рассмотрим простой пример. Имеется собственник жилья господин N, который сдает в аренду 12 комнат. Ему нужна программа, помогающая регистрировать жильцов и вести финансовую документацию. В настоящее время он ведет (имеются соответствующие формы) список жильцов, доходы от аренды, расходы и годовой отчет. Список жильцов содержит номер комнаты и фамилию съемщика, доход от аренды содержит номер комнаты, название месяца и плату в этот месяц. Расходы – это дата, получатель, сумма платежа и категория расходов. Годовой отчет – доход, расходы по категориям и прибыль. Действующие субъекты – заказчик N

Описание вариантов использования

  1.  Начать программу.

При запуске на экран должно выводиться меню, из которого пользователь выбирает нужное действие.

  1.  Добавить нового жильца.

На экране должно появиться сообщение, в котором программа просит пользователя ввести имя жильца и номер комнаты. Эта информация заносится в таблицу. Список автоматически сортируется по номерам комнат. Должна быть продумана возможность удалить имя жильца.

  1.  Ввести арендную плату.

Экран ввода арендной платы содержит сообщение, из которого пользователь узнает, что ему надо ввести, а именно: имя жильца, месяц оплаты, полученная сумма денег. Программа просматривает список жильцов и по номеру комнаты находит соответствующую запись в таблице доходов от аренды. Если плата вносится впервые, то должна быть создана строка с именем жильца, и плата вносится в столбец соответствующего месяца.

  1.  Ввести расход.

Должно быть приглашение на ввод имени получателя, суммы оплаты, дня и месяца, бюджетной категории. Программа создает строку, содержащую эту информацию, и вставляет ее в таблицу расходов.

  1.  Вывести список жильцов.

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

  1.  Вывести таблицу доходов от аренды.

Программа выводит таблицу, каждая строка которой состоит из номера комнаты и оплаты по месяцам.

  1.  Вывести таблицу расходов.

Выводится таблица, каждая строка которой состоит из значений месяца, дня, полученной суммы и бюджетной категории платежа.

  1.  Вывести годовой отчет.

Выводится отчет, состоящий из суммарной платы за прошедший год, списка всех расходов по каждой бюджетной категории и результирующий годовой баланс  (доходы-убытки).

Мы записали для каждого варианта использования только один сценарий, но их может быть несколько.

Например, вариант использования «добавить нового жильца», сценарий 2:

введенный номер комнаты уже занят, выдается сообщение об ошибке.

              Вариант использования «ввести арендную плату», сценарий 2:

программа не нашла введенную фамилию – выводится сообщение об ошибке.

Иногда вместо текстового описания используется диаграмма действий. Например она может иметь следующий вид:

          Диаграмма действий для добавления нового жильца

Лекция 30

Уточнение списка.

Мы выписали название строк различных таблиц. Из строк обычно получаются хорошие классы, если они составные или содержат сложные данные. Но строки жильцов и расходов содержат данные только об одном жильце  или платеже, к тому же уже есть претенденты на классы такие как: 2, 4, 14.

Строка арендной платы, которая имеет вид:

№ комнаты

ФИО

январь

февраль

декабрь

+

+

+

+

+

 

Это строка отсутствует, пока не вносится первый платеж. Последующие платежи вносят в уже существующую строку. Ее можно сделать классом, но тогда 8, 17, 11  убираем из претендентов.

Аналогично рассуждая,  оставляем следующие классы:

  1.  экран пользовательского интерфейса
  2.  жилец
  3.  экран вода жильцов
  4.  список жильцов
  5.  экран ввода арендной платы
  6.  таблица доходов от аренды
  7.  строка табличных доходов от аренды
  8.  расход
  9.  экран ввода расходов

10) экран табличных расходов

11) годовой отчет

Существительные, которые не стали классами, могут перейти в атрибуты. Например, жилец может иметь: № комнаты и ФИО. Расходы имеют атрибуты получатель, месяц, день, сумма бюджетная категория.

От глаголов к отношениям.

Рассмотрим варианты использования для определения, какими сообщениями будут использоваться классы.

Сообщение по сути это вызов метода в объекте, то есть надо определить методы класса. Например, рассмотрим варианты использования: вывести список жильцов (глаголы, которые там есть):

  1.  программа выводит  список
  2.  список состоит из 2-х частей

под программой мы имеем в виду экран пользовательского интерфейса.

Слово «выводит» означает, что объект экрана пользовательского интерфейса посылает объект списку жильцов, то есть вызывает его метод. В сообщении содержится указания вывести самого себя на экран. Этот метод мы назовем display().

Глагол «состоит» не относится ни к какому сообщению, он просто  определяет состав строки  объекта строки жильцов.

Рассмотрим варианты использования «добавить нового жильца»:

  1.  на экране отображается
  2.  программа просит ввести
  3.  информация заносится
  4.  записи сортируются

Глагол «отображается» означает, объект экрана пользовательского интерфейса посылает сообщение классу «экран ввода жильцов»; вывести себя и получить данные о пользователе. Это сообщение может быть вызовом  метода класса с именем getTenunt ()(жилец).

Глагол  «просит» и «вести» это не сообщение в объектном смысле они обеспеченны предыдущим методом.

Глагол «заносится» означает, что объект класса и «экран ввода жильцов» посылает сообщение объекту класса «список жильцов». В качестве аргументов посылается объект «класса жильцов».

Объект «список жильцов» может вставить этот объект в свой список. Этот метод может иметь имя insertTenent().

Глагол  «сортируется» - это не вид взаимодействия, а описание списка жильцов здесь выявляется этот объект «жилец» должен быть где-то создан до внесения его в список жильцов. Можно решить, что метод getTenunt () ранее введенный, может при вводе данных от пользователя создавать объект «жилец».

Все остальные варианты использования анализируется аналогично. В результате создается основа для связывания классов. Таким образом,  уточнив, какие классы будут использованы в программе и как они между собой связаны, мы можем построить программу классов. Классы стоит назвать покороче.

Диаграмма классов в общем виде имеет вид:

                          

             

                                   

                      

                                                                                                                

                         

                                                                                                      

                                                                                                         

В нашем случае объекты описываем только именами.

Диаграмма классов для нашей программы будет иметь следующий вид:

В виде ромба в диаграммах UML используют включение. Включение появляется, когда один объект является атрибутом другого объекта. Например, объект класса А является атрибутом класса В:

Class A

{};

Class B

{

A obj A;

};

 

Кроме того в диаграммах UML различают ещё кроме включения композиция.

Включение – это взаимоотношение типа «имеет». Композиция – взаимоотношение типа «состоит» (ромб закрашен).

Диаграммы последовательностей.

Диаграмма последовательностей – это один из 2-х типов диаграмм взаимодействия UML(Второй тип – совместная диаграмма). На этих диаграммах отображаются таким образом события развиваются во времени,  предполагается, что вертикальная ось диаграммы – это время. Оно начинается вверху и изменяется сверху вниз. Наверху имена объектов, которые принимают участие в данном варианте использования.

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

Линией жизни  называется пунктирная линия, уходящая вниз от каждого объекта. Она показывает, когда объект начинает и заканчивает своё существование.   

Горизонт линии представляет собой сообщения (вызовы методов). Прямоугольники под объектами называются блоком активности. Он показывает, что расположенный над ним объект является активным то метод данного объекта либо используется сам, либо вызвал на использование другую функцию, которую не завершила работу.

2. Диаграмма для вариантов использования «вывод списка жильцов»:

  1.  Диаграмма последовательности для вариантов использования «начать программу»:

При запуске программы определяется User Interface – это класс поддержки экрана пользовательского интерфейса. Допустим, программу создает единственный объект класса The User Interface. Когда он вступает в работу, первое что он делает – создает 3 основных структуры данных в программе – это объекты классов: tenantList(список жильцов), rentrentheard(строка доходов), expenceRecord(строка расходов).

Имена имеют только указатели на них. Имеются только вызовы (горизонт линии) и блок активности только у первого объекта, 3 остальных объекта не является активными.

Диаграмма последовательностей для вариантов использования «добавить нового жильца» :

В этом объекте есть методы, позволяющие получить от пользователя данные о жильце, создать новый объект Tenant и вызвать объект класса tenant List для добавления в список вновь созданного жильца. Когда всё это проделано, объект2 удаляется.

Разработав все диаграммы, можно писать код – это вторая часть построения.

Варианты использования становятся итерациями на новом этапе, каждая итерация может писаться и отлаживаться отдельными группами программы.


Зафиксиро-вать продажу

Заказать книгу

Найти книгу

Проверить данные о продаже

Запросить данные о продаже

менеджер по продажам

главный менеджер

система центрального офиса

продавец-консультант

Запустить программу

Добавить жильцов

Ввести арендную плату

Вывести расходы

Вывести список жильцов

Вывести таблицу доходов

Вывести таблицу расходов

Вывести годовой отчет

Начальное состояние

Конечное состояние

комната

иначе

Поместить данные в список жильцов

занята

Вывести сообщение

об ошибке

Вывести экран добавления жильца

Получить имя и номер комнаты

Имя

Данные

Метод

Имя

Данные

Метод

Имя

Данные

Метод

Экран ввода расходов (ЭВР)

Таблица  расходов

Один расход

Годовой отчет

Экран ввода жильцов (ЭВЖ)

Список  жильцов

Жилец

Интерфейс пользователя

Экран ввода оплаты (ЭВО)

Доходы

Строка доходов

дверь

двигатели

автомобиль

The User Interface

:tenantList

:tenand

display()

display()

[для всех объектов]

ew

new

The User Interface

:tanantList

:rentheard

:expenceRecord

new

:tenant List

:tenant Input Screen

new

:tenant

new

Объект 2

Предоставить данные

The User Interface

добавить

жильца

getTenant

Запросить

данные

Объект 1

:tenant List

:tenant Input Screen

:tenant

Объект 2

Предоставить данные

The User Interface

добавить

жильца


 

А также другие работы, которые могут Вас заинтересовать

59959. Водойми України. Розкриття значення води для життя людини у творах В. Сухомлинського. Інтегрований урок з природознавства та позакласного читання 159.5 KB
  Мета. Сформувати поняття про водойми: джерело озеро, болото, море; розвивати спостережливість і увагу; виховувати любов до природи, бережне ставлення до її багатств.
59960. Водиця – усьому цариця 32 KB
  Ми проведемо урок у формі гри етапами якої будуть різні конкурси. ІІ Проведення гри 1 конкурс РОЗМИНКА Командам пропонується написати географічний диктант. Кожна правильна відповідь...
59961. Военные походы фараонов 73.5 KB
  Цели урока: Образовательная расширить знания учащихся об основных понятиях урока подвести учащихся к пониманию причин последствий и характера военных походов фараонов Древнего Египта Развивающая создать условия для развития коммуникационных умений и навыков умения обобщать изученный материал делать выводы.
59962. Вогники наших сердець 51.5 KB
  Ведучий: Усі діти люблять свою маму і для кожного вона єдина і найкраща. Я дуже люблю свою маму Ведучий: В дарунок усім мамам танок Полькатрійка Розповідь віршів з показами фото слайдів під музичний супровід Учениця 1. Ведучий.
59963. НЕХАЙ ВОГОНЬ В СЕРЦЯХ ПАЛАЄ, А ПОЖЕЖ ХАЙ НЕ БУВАЄ 542 KB
  МЕТА: продовжувати ознайомлювати учнів із поняттям вогонь; формувати уявлення про причини виникнення пожежі в побуті та її наслідки; вчити учнів правильно діяти у випадку виявлення пожежі вдома чи інших об’єктах; розвивати навички самозахисту в умовах задимленого помешкання...
59965. План-конспект уроку фізичної культури на матеріалі волейбол 71.5 KB
  Ходьба: звичайна в обхід спортзалу; на п`ятках руки вгору; на носках руки в замок вгору; перекат з п’ятки на носок руки на пояс на зовнішній стороні стопи руки в сторони; на внутрішній стороні стопи руки за спину; в присіді...
59966. Правление князя Владимира Великого 66.5 KB
  ЦЕЛЬ: рассмотреть внешнюю и внутреннею политику Владимира Великого раскрыть её противоречия: рассмотреть территориальные изменения; установить хронологическую последовательность событий; изучить реформы Владимира и их значение для дальнейшего развития Русского государства...
59967. Ми можемо відкрити новий світ, коли навчимося ставити вірні запитання 387.5 KB
  Добре поставлене запитання – це запитання, на яке учень захоче відповісти, зможе відповісти або над яким він схоче задуматись, і він буде зацікавлений у співпраці. Уміння ставити запитання є необхідною ознакою фахової та педагогічної майстерності.