Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПКС / ПКС. Материалы лекций

.pdf
Скачиваний:
7
Добавлен:
19.09.2023
Размер:
3.23 Mб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

Кафедра информационных управляющих систем

Б1.В.24 «Программирование критических сервисов» для специальностей по направлению 09.03.02 «Информационные системы и технологии»

1.Cервисы программного обеспечения в международных стандартах.

2.Cервисы программного обеспечения в российских стандартах.

3.Критические объекты и процессы программных средств в международных стандартах. Часть 4: UML-диаграммы развертывания, объектов, классов и коммуникаций.

4.Шаблоны проектирования критических сервисов.

5.Программные компоненты для создания критического сервиса на языке Python.

6.Программные решения на основе критических сервисов в задаче развертывания микросервисной архитектуры.

Преподаватель: Параничев Андрей Викторович

Санкт-Петербург 2023

UML-диаграмма развертывания (Deployment)

 

72

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

Основные элементы:

node (узел) – управляющий объект программного обеспечения в виде одной из систем:

-устройство аппаратного обеспечения (hardware); например, системный блок;

-среда выполнения приложения (execution environment); например, операционная система (operating system);

-объект контейнеризации (container); например, zip-архив с модулями приложения;

artifact (артефакт) – физически инициированный элемент программного обеспечения (представимый в виде файла): инструкции, скрипты, модули запуска приложения, документы.

Для определения взаимодействия принято указывать одно из типовых действий: <<deploy>> (развертывание) – распределение памяти для артефакта или его сущности под конкретный объект;

<<manifest>> (декларирование) – конкретная физическая визуализация одного или более элементов с помощью артефакта.

UML-диаграмма развертывания (Deployment): пример

73

node

artifact

UML-диаграмма развертывания (Deployment):

74

пример скрипта PlantUML (начало)

 

@startuml

left to right direction

title Full-stack приложение на основе микросервисной архитектуры

node nPythonIDE as "Интегрированная среда разработки на Python\n{IDE=__PyCharm 2020.3.3__}\n{OS=__Windows x64__}"{

node nChecking as "Модуль проверки\nлогин-пароля\n{ RegExp = __[A-Za-z0-9]{8,}__}"{ artifact aKey as "API Token"

artifact aLogin as "Логин" artifact aPassword as "Пароль"

}

node nService as "Сервис обработки сообщений WhatsApp"{

}

node nRole as "Модуль управления ролью \n{ Operations = __CRUD__ }"{ node Guest as "Гостевой пользователь\n __{Read}__"

node User as "Зарегистрированный пользователь\n __{Create, Read}__"

node TopUser as "Привилегированный пользователь\n __{Create, Read, Delete}__" node Admin as "Администратор\n __{Create, Read, Update, Delete}__"

}

}

UML-диаграмма развертывания (Deployment):

75

пример скрипта PlantUML (окончание)

 

node nPythonRPC as "Сервер обработки RPC"{

node nDatabase as "Сервер базы данных \n{Database = __{MySQL,__\n __PostgreSQL, MariaDB}__}"{ artifact aMessages as "Число сообщений\n{MinCount = __10__}"

}

node nSpyne as "Веб-cервис Spyne"{

}

}

node nWebServer as "Веб-сервер"{

artifact aSelenium as "WebDriver Selenium\n{Version = __90.0.4430.24__}\n{OS = __Windows x86__}" artifact aBrowser as "Google Chrome\n{Version = __91.0.4472.101__}\n{OS = __Windows x64__}"

}

User .> TopUser : <U+003C><U+003C>manifest<U+003E><U+003E>

Admin ..> nDatabase : <U+003C><U+003C>deploy<U+003E><U+003E> Admin ..> nPythonRPC : <U+003C><U+003C>manifest<U+003E><U+003E> nPythonIDE --> nPythonRPC : "\n__XML__"

nPythonRPC -> nWebServer : " __SOAP API__\n"

aLogin .left.> aKey : \n<U+003C><U+003C>manifest<U+003E><U+003E> aPassword .right.> aKey : \n<U+003C><U+003C>manifest<U+003E><U+003E>

@enduml

UML-диаграмма развертывания (Deployment)

 

76

UML-диаграмма развертывания (Deployment): пример фрагмента

77

работы прототипа приложения

UML-диаграмма развертывания

78

(Deployment): пример скрипта и диаграммы в PlantUML

Back-end-часть

Front-end-часть

в виде развертываемого блока

в виде развертываемого блока

 

node

artifact

@startuml

node application {

 

artifact image

left to right direction

}

node database {

vendors "1" -- "*" navigators

node navigators

navigators "1" --- "30" image

node vendors

 

}

@enduml

UML-диаграмма объектов (Object)

 

79

Диаграмма объектов (Object) определяет то, каким образом создаются экземпляры объектов (инстанцируются), используя спецификации по их созданию.

Основные элементы:

спецификация экземпляра объекта (instance specification) представляет возможное или действительное существование экземпляра объекта в моделируемом программном компоненте; например, спецификация экземпляра объекта «_info1»;

слот (slot) устанавливает, что некоторый экземпляр объекта, смоделированный с помощью блока "instance specification", содержит данные в формате «имя : тип_данных = значение» (которые определены на основе спецификации значений);

например, «-_info1:InfoDebugger»;

взаимосвязь (link) определяет графическую взаимосвязь между двумя спецификациями объектов по их слоту; например, взаимосвязь между «ChainPattern» и «_info1».

}
1 – направление размещения блоков: сверху-вниз (top to down direction); 2 – скрытие блока «С» внутри стереотипного круга класса; 3 – скрытие блока «методы» (т.к. класс включает 3 блока, а не 2);
4 – скрытие обозначения стереотипа в названии: <<stereotype_object>>.
class "_info1:InfoLogger" as _info1 <<stereotype_object>>{
# nextLogger = _debug1
}
class "_debug1:DebugLogger" as _debug1 <<stereotype_object>>{
# nextLogger = _error1

UML-диаграмма объектов (Object): пример (начало)

 

80

instance specification

@startuml

skinparam classAttributeIconSize 0

1

'left to right direction

hide <<stereotype_object>> circle hide <<stereotype_object>> methods hide <<stereotype_object>> stereotype class ChainPattern <<stereotype_object

-_info1:InfoLogger

-_debug2:DebugLogger

-_error3:ErrorLogger

}

формат записи слота:

имя : тип_данных = значение slot

slot

2

3

4