Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Описание системы в терминах UML



 

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

Диаграммы классов, диаграммы пакетов, диаграммы объектов

 

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

В задаче с двумя баками в первую очередь можно выделить два основных элемента: саму систему из двух баков и некое управляющее открытием/закрытием кранов устройство, называемое контроллером.

Как говорилось ранее, контроллер посылает системе из двух баков сигналы, управляющие поведением кранов Vinput, V1 и V2. Для правильного управления системой баков ему необходимо иметь значения интервалов времени Time1 и Time2, уровней L_plus и L_minus, а также получать от системы баков значение уровня воды во втором баке h2, необходимое для управления поведением выходного крана V2. Обобщая все вышеописанное, контроллер можно представить классом Controller:

Рисунок 48 - Диаграмма классов №1

 

Как видно из рис. 48, класс Controller содержит атрибуты h2 (для ясности описанный как элемент группы "inputs"), VinOn, VinOff , V1On, V1Off, V2On , V2Off (объединенные в группу "outputs "), Time1, Time 2, L_plus , L_minus (объединенные в группу "state "). Также класс содержит операции send_VinOn (), send_V 1On (), send _V2On (), send_V 2Off, необходимые для подачи сигналов на включение входного крана Vinput, крана V1, крана V2 и отключение крана V2. В описание класса внесена некая избыточность в виде сигналов VinOff, V1Off (избыточность, так как эти сигналы никогда не посылаются). Это сделано для того, чтобы в дальнейшем логичнее построить модель системы (так как логично предполагать, что если кран можно включить, то его можно и отключить). Также они введены на случай, если в задании потребуется, например, в определенный момент отключить подачу воды в систему, или изолировать баки друг от друга. И хотя в данном варианте задания эти сигналы никогда не будут посылаться, в дальнейшем в других элементах системы теоретическое существование этих сигналов также будет учитываться.

Как описано в задании, система двух баков должна реагировать на сигналы контроллера, а именно, управлять открытием/закрытием кранов, а также отслеживать ситуацию, когда уровень воды во втором баке становится выше уровня Н и при возникновении такой ситуации изменять скорость поступления воды во второй бак в соответствии с формулой (3). Также система должна отслеживать ситуацию переполнения баков и должным образом на нее реагировать. Исходя из этих требований можно провести декомпозицию системы на несколько частей, а именно выделить элемент, отвечающий за открытие (закрытие) крана Vinput, элемент, управляющий открытием/закрытием задвижек Р1 и Р2 (один для обоих кранов, так как описанные в формуле (5) функции, определяющие индивидуальные свойства кранов V1 и V2 совпадают друг с другом с точностью до коэффициента при 10-4 и коэффициента в показателе экспоненты). Третьим элементом системы можно выделить сами два бака, на которые возлагается задача управления протеканием воды между баками и отслеживания аварийной ситуации переполнения.

Первый элемент можно описать следующим классом Vinput_Control:

Рисунок 49 - Диаграмма классов №2

 

Как видно из рис. 49, класс Vinput_Control содержит атрибуты VinOn, VinOff (объединенные в группу "inputs"), Vin (для ясности описанный как элемент группы "outputs") описывающий входной поток воды в систему. Также класс содержит операции open_Vin (), close_Vin () управляющие входным потоком в зависимости от получаемых от контроллера сигналов в соответствии с формулой (1).

Второй элемент можно описать классом К_Control:

Рисунок 50 - Диаграмма классов №3

 

Как видно из рис. 50, класс K_Control содержит атрибуты Param_1, Param_2 (объединенные в группу "parameters") и представляющие собой как раз те коэффициенты, различающие между собой формулы (5) и (6) , VXOn, VXOff (объединенные в группу "inputs"), атрибут K (для ясности описанный как элемент группы "outputs"), описывающий выходной поток воды из первого и второго бака; атрибут Р (для ясности описанный как элемент группы "state") и управляющий положением задвижки в кранах V1 и V2. Также класс содержит операции up_K (), open_K (), down_K (), close_K () управляющие значением функций, определяющих свойства кранов V1 и V2 в зависимости от получаемых от контроллера сигналов в соответствии с формулами (5) - (6).

Третий элемент можно описать классом Two_Tanks:

Рисунок 51 - Диаграмма классов №4

 

Как видно из рис. 51, класс Two_Tanks содержит атрибуты K1, K2, Vin (объединенные в группу "input"), представляющие собой управляющие потоками V12 и Vout функции и входной поток в систему, h1 и h2 (объединенные в группу "outputs") представляющие собой уровни воды в первом и втором баках; H, D1, D2, A1, A2, V12, Vout (объединенные в группу "state") представляющие собой расстояние между дном первого и второго баков, диаметры баков, площади их оснований , а также выходные потоки воды из первого и второго баков. Также класс содержит операции up_V12_Vout (), down_V 12_Vout () вычисляющие значения h1 и h2 и управляющие выходным потоком из первого бака (в зависимости от уровня воды во втором баке и значения К1 в соответствии с формулой (3)) и выходным потоком из системы (в зависимости от значения К2 в соответствии с формулой (4)).

Так как классы Vinput_Control, K_Control и Two_Tanks были ранее выделены как элементы системы двух баков, то логично создать класс Tank_System, находящийся в отношении композиции с этими классами (рис. 52):

Рисунок 52 - Диаграмма классов №5

 

В свою очередь, класс Tank_System и класс Controller логично связать отношением композиции с классом System, представляющий собой всю систему двух баков (рис. 53):

Рисунок 53 - Диаграмма классов №6

 

На диаграмме объектов №1 для данной системы представлены объект класса Controller, объект класса Vinput_Control, объект класса Two_Tanks и два объекта класса K_Control, определяющие поведение крана К1 и К2 (рис. 54):

Рисунок 54 - Диаграмма объектов №1

 

На диаграммах объектов №2 и №3 представлены два составных объекта – объект класса Tank_System и класса System (рис. 55 и рис. 56):

Рисунок 55 - Диаграмма объектов №2

Рисунок 56 - Диаграмма объектов №3

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

 

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

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

"Режим нормальной работы системы" содержит следующие требования:

1) В начальный момент времени контроллер посылает системе двух баков сигнал открыть входной кран,

2) По истечении Time1 контроллер посылает системе двух баков сигнал открыть кран V1,

3) В течении 80 сек. происходит открытие крана V1,

4) По истечении Time2 контроллер посылает системе двух баков сигнал открыть кран V2,

5) В течении 80 сек. происходит открытие крана V2.

Далее система работает в нормальном режиме, то есть, вода протекает свободно через систему, при этом не происходит переполнения баков.

"Периодическое открытие/закрытие выходного крана" расширяет основной вариант использования и содержит следующие дополнительные требования:

1) Если после включения входного крана уровень воды во втором баке становиться ниже уровня L_minus, то контроллер посылает системе двух баков сигнал закрыть кран V2.

2) В течении 80 сек. происходит закрытие крана V2.

3) Если уровень воды во втором баке становится выше уровня L_plus, то контроллер посылает системе двух баков сигнал открыть кран V2.

4) В течении 80 сек. происходит открытие крана V2.

Далее цикл замыкается и система работает в режиме периодического открытия/закрытия выходного крана.

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

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

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

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

Диаграмма вариантов использования представлена на рис. 57:

Рисунок 57 - Диаграмма вариантов использования

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.