Файл: Автоматизация управления жизненным циклом продукции.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 18.10.2024

Просмотров: 7

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Кафедра безопасности информационных систем


ОТЧЁТ

по лабораторной работе № 5, 7

по дисциплине «Автоматизация управления жизненным циклом продукции»


Выполнили: студенты группы ИБ-81вп

___________/Покладов Д. В./
_____________/Чамата Т. А./

_____________/Суянов С. В./

«__» ___________ 2022г.

Принял: доцент каф. ИСАУ

__________/Олимпиев, А. А./

«__» ___________ 2022г.

САНКТ-ПЕТЕРБУРГ
2022

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


В результате анализа предметной области были выявлены основные процессы и действующие лица. Подробное описание:

    1. Загрузку технического задания выполняет заказчик (Проект-менеджер) в автоматизированную систему управления (далее АСУ). Статус документа «В разработке».

    2. Стороння команда получает запрос на разработку документа (плана графика), по итогу формирования которого, загружает его в АСУ на согласование со статусом «В разработке».

    3. Со стороны заказчика осуществляется проверка и согласование документа. По итогу рассмотрения статус документа меняется на «согласован» или «не согласован» с комментариями причин и предложений.

    4. Заказчик запрашивает предоставление промежуточных отчётов в ходе выполнения проекта, обозначенных в согласованном «плане графике».

    5. Исполнитель подготавливает отчёт и загружает его в АСУ на согласование со статусом «В разработке».

    6. Со стороны заказчика осуществляется проверка и согласование документа. По итогу рассмотрения статус документа меняется на «согласован» или «не согласован» с комментариями причин и предложений.

    7. Согласно документу «План график», заказчик запрашивает финальный отчёт.

    8. Исполнитель подготавливает отчёт и загружает его в АСУ на согласование со статусом «В разработке».

    9. Со стороны заказчика осуществляется проверка и согласование документа. По итогу рассмотрения статус документа меняется на «согласован» или «не согласован» с комментариями причин и предложений.


На рисунке №1 представлена схема UML-диаграмма последовательностей. Рисунок наглядно отображает функциональную составляющую программы автоматизирования процессов. Описание функций:

  • Проект-менеджер создаёт проект в АСУ загрузитьТехзадание(техзадание) для исполнения сторонней организацией. Далее он же делает запрос планГрафик=запроситьПланГрафик сторонней команде для согласования.

  • Сторонняя компания разрабатывает «планГрафик», обозначив в нём промежуточные даты для согласия и предоставления промежуточных отчётов запуская функцию загрузитьПланГрафик(планГрафик).

  • Проект-менеджер делает запрос проверкаПланГрафика() согласно предоставленному графику. Проверка отчётов может быть делегирована команде проект-менеджера, но права на смену статуса принадлежат только проект-менеджеру, как лицу, принимающему решение (далее ЛПР). ЛПР запускает функцию загрузитьСтатусПроверки().

  • АСУ запускает функцию уведомитьСменаСтатуса().

  • Проект-менеджер делает запрос выполнитьЭтап(планГрафик, техзадание), что бы получить промежуточные результаты выполненных работ.

  • Сторонняя команда в ответ на запрос делает загрузку, используя функцию загрузитьОтчёт().

  • Проект-менеджер, после согласования использует функцию загрузитьСтатусПроверки().

  • АСУ запускает функцию уведомитьСменаСтатуса().

  • По итогу согласования всех промежуточных операций, проект-менеджер делает запрос на согласование итогового отчёта запросОтчёта(). Процедура согласования аналогична промежуточным. В том числе и смена статуса, который делает ЛПР со стороны заказчика.

  • Стороння команда загружает отчёт в АСУ с помощью функции загрузитьОтчёт().




Рисунок 1 – UML-диаграмма последовательностей
      1. Построение диаграммы классов


Проанализировав все полученные данные, были выделены следующие классы:

  • Компания – юридическое лицо;

  • Пользователь – сотрудники компании, с доступом к АСУ;

  • Проект – обозначение текущих процессов (объект данных);

  • Статус –класс, являющийся моделью программного обеспечения, служит для сокращения системного кода;

  • Документ – модель передачи информации по проекту (объект данных).




Рисунок 2  диаграмма классов

Связи классов:

  • как минимум одна компания может иметь n работников, т.е. пользователей;

  • пользователь может составить 0 или n документов;

  • каждый документ имеет только один статус;

  • и множество документов может быть в составе одного проекта.
  1. Построение документно-ориентированная база данных


Создание коллекции, в базе данных, по примеру диаграммы классов в соответствии с рисунком 3.



Рисунок 3  коллекция документно-ориентированной базы данных



Рисунок 4  схема коллекции «lab57»



Рисунок 5  класс «MongoHandler»

Выводы: при выполнении лабораторной работы был проведен анализ фрагмента программной архитектуры разрабатываемого изделия, построена диаграмма последовательностей, диаграмма классов. Был приобретен опыт работы с документно-ориентированной базой данных.

  1. ЗАДАНИЕ № 7. Разработка макета программы для автоматизации процессов жизненного цикла


Выполненные требования к ИС:

  • функции программы соответствуют техническому заданию, которое было составлено при решении задания 4;

  • в программе реализованы экранные формы, которые соответствуют проработанной бизнес-логике в соответствии с заданием (рисунок 7);

  • в программе присутствуют классы, которые соответствуют разработанным диаграммам;

  • результаты действий пользователя (вводимые данные, установка свойств, переключение состояний и т. п.) сохраняются NoSQL документно-ориентированной базе данных и соответствуют запросам, которые были проработаны в задании 5.



Рисунок 6  управление документами
Ниже представлен код страницы просмотре документов, реализованный с помощью фреймворка Vue (рисунок 6):










Рисунок 7  экранные формы для внесения данных

Код страницы, содержащей форму для создания документа (рисунок 7), представлен ниже:









Рисунок 8  обновление данных



Рисунок 9  выбор статуса



Рисунок 10  выбор статуса

Код веб-сервера, передающий запросы к классу управления базой данных, представлен ниже:

main.py

from asyncio import ensure_future

from sanic import Sanic

from web.routes import setup_routes
from web.plugins import middlewares
from sanic_cors import CORS


class Web:
def __init__(self, app, run_test=False):
super().__init__()
self.sanic = Sanic(name='Lab57')

self.__app = app
self.loop = app.loop

CORS(self.sanic,
resources={r"/api/*": {"origins": "*"}, r"/auth/*": {"origins": "*"}},
automatic_options=True
)

self.sanic.update_config({
"ACCESS_LOG": True,
"FALLBACK_ERROR_FORMAT": "json",
"KEEP_ALIVE": True,
"KEEP_ALIVE_TIMEOUT": 600})

middlewares.setup_middlewares(self.sanic)

setup_routes(self, app)

def start(self):
self._init_web_server()

def _init_web_server(self):
self.server = self.sanic.create_server(
host='0.0.0.0',
port=9999,
return_asyncio_server=True,
debug=False
)

task = ensure_future(self.server)

routes.py

from os import path
from sanic.response import json


def setup_routes(web, app):
sanic = web.sanic
db = app.mongo_handler

@sanic.route("/api/companies", methods=['GET'])
async def handler(req):
data = db.get_company()
for d in data:

del d["_id"]
return json(status=200, body=data)

@sanic.route("/api/documents", methods=['GET'])
async def handler(req):
data = db.get_documents()
for d in data:
del d["_id"]
return json(status=200, body=data)

@sanic.route("/api/documents", methods=['POST'])
async def handler(req):
data = req.json
db.set_document(data)
return json(status=200, body={})
Выводы: при решении задания были получены знания о работе системы управления документно-ориентированными базами данных, приобретены навыки работы в ней на языке программирования Python.