Смекни!
smekni.com

Unified Modeling Language как унифицированный язык моделирования (стр. 3 из 3)


Для создания диаграммы взаимодействия были использованы теги (ref и sd), созданные в Sequence diagram. Если при проверке наличия деталей выясняется, что у нас есть детали, то переходим к конечному этапу – «произвести ремонт». А если деталей нет, тогда переходим к этапу заказа и получения деталей.

Диаграмма классов

Диаграмма классов, Class diagram — статическая структурная диаграмма, описывающая структуру системы, она демонстрирует классы системы, их атрибуты, методы и зависимости между классами.

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

• концептуальная точка зрения - диаграмма классов описывает модель предметной области, в ней присутствуют только классы прикладных объектов;

• точка зрения спецификации - диаграмма классов применяется при проектировании информационных систем;

• точка зрения реализации - диаграмма классов содержит классы, используемые непосредственно в программном коде (при использовании объектно-ориентированных языков программирования).

Каждый класс имеет свое название и свои атрибуты и операции, которые впоследствии будут реализованы в программном коде. Если операция имеет какой-либо тип, например, +Записать информацию в БД(Num : int:Zakaz: stirng; Zakazchik: string; Status: boolean) : boolean, то в таком случае в программном коде данная операция будет представлена в виде функции указанного типа с параметрами, которые находятся в круглых скобках. Класс «Номер заказа» имеет стереотип «entity» (сущность).

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

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

На данном этапе мы разделил классы на три пакета: «Сущность», «Управление», «Реализация». Каждый пакет непосредственно взаимодействует с другим, так пакет «Сущность» порождает связь с пакетом «Управление», а пакет «Управление в свою очередь» порождает связь с пакетом «Реализация». Классы, находящиеся в пакетах, могут так же между собой взаимодействовать, это наглядно показано на рисунке. Деление на пакеты было произведено по функциональному принципу. В пакет «Сущность» мы поместили 2 класса: «Заявка», «Номер заявки» - так как именно эти классы порождают наш бизнес-процесс и отражают его сущность. В пакет «Управление» мы поместили 3 класса: «Управляющий заказами», «Финансовый директор», «Бухгалтерия», так как эти классы осуществляют управление бизнес-процессом. И, наконец, пакет «Реализация», в него вошли 3 класса: «БД», «Механик», «Поставщик», так как именно в этих классах происходит реализация бизнес-процесса.

Deployment Diagram (Диаграмма развертывания)

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

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

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

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

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

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

unified language диаграмма кодогенерация

Кодогенерация на Delphi

Unit СТО_Бизнес;

Interface

Type

Заявка = Class;

Class = Class;

Бухгалтерия = Class;

БД = Class;

Заявка = Class(TObject)

Public Procedure Составление_текста_заявки();

End;

Class = Class(TObject)

Public Procedure Произвести_осмотр_согласно_заявке();

End;

Бухгалтерия = Class(TObject)

Public Procedure Произвестит_расчет();

Public Procedure Получение_квитанции_об_оказанеии_услуг();

End;

БД = Class(TObject)

Public Procedure Ввод_данных_в_БД();

Public Procedure Сохранение_данных();

Public Procedure Создать_новую_запись_в_БД();

End;

Implementation

Procedure Заявка.Составление_текста_заявки();

Begin

Raise Exception.Create('Not yet implemented');

End;

Procedure Class.Произвести_осмотр_согласно_заявке();

Begin

Raise Exception.Create('Not yet implemented');

End;

Procedure Бухгалтерия.Произвестит_расчет();

Begin

Raise Exception.Create('Not yet implemented');

End;

Procedure Бухгалтерия.Получение_квитанции_об_оказанеии_услуг();

Begin

Raise Exception.Create('Not yet implemented');

End;

Procedure БД.Ввод_данных_в_БД();

Begin

Raise Exception.Create('Not yet implemented');

End;

Procedure БД.Сохранение_данных();

Begin

Raise Exception.Create('Not yet implemented');

End;

Procedure БД.Создать_новую_запись_в_БД();

Begin

Raise Exception.Create('Not yet implemented');

End;

End.

Кодогенерация на C#

using System;

public class Class {

public void Произвести_осмотр_согласно_заявке() {

throw new System.Exception("Not implemented");

}

}

using System;

public class БД {

public void Ввод_данных_в_БД() {

throw new System.Exception("Not implemented");

}

public void Сохранение_данных() {

throw new System.Exception("Not implemented");

}

public void Создать_новую_запись_в_БД() {

throw new System.Exception("Not implemented");

}

}

using System;

public class Бухгалтерия {

public void Произвестит_расчет() {

throw new System.Exception("Not implemented");

}

public void Получение_квитанции_об_оказанеии_услуг() {

throw new System.Exception("Not implemented");

}

}

using System;

public class Заявка {

public void Составление_текста_заявки() {

throw new System.Exception("Not implemented");

}

}