Информационная система «Обитель зла. Корпорация «Umbrella».

Архитектура ПО.

Версия 1.5

Дата

Версия

Описание

Автор

24.02.08

1.0

Начальное описание архитектуры 1-й версии информационной системы «Обитель зла».

Гришуль Е., Шафоростов Н.

31.03.08

1.1

Изменены диаграммы прецедентов использования, логического представления

Гришуль Е., Шафоростов Н.

05.04.08

1.2

Добавлено представление данных, инфологическая модель БД

Гришуль Е., Шафоростов Н.

30.05.08

1.3

Изменены описания прецедентов использования (добавлены диаграммы), изменено описание БД

Гришуль Е., Шафоростов Н.

05.06.08

1.4

Изменены диаграмма развёртывания, производительность и масштабируемость

Гришуль Е., Шафоростов Н.

27.06.08

1.5

Изменены диаграммы классов

Гришуль Е., Шафоростов Н.

1. Введение

1.1 Общие положения

Данный документ описывает архитектурный обзор информационной системы «Обитель зла».

1.2 Ссылки

  • План разработки (версия 1.3)

  • Список рисков (версия 1.5)

  • Спецификация требований (версия 1.2)

2. Архитектурное представление

Данный документ описывает архитектуру ПО в виде представлений прецедентов использования, процессов и развёртывания.

3. Цели и ограничения

Здесь представлены некоторые ключевые ограничения, влияющие на архитектуру.

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

4. Представления прецедентов использования

Прецеденты использования:

  • Вход в систему

  • Посылка запросов (выдача заданий)

  • Работа с БД сотрудников

  • Работа с БД вирусов

  • Генерация отчётов

4.1 Вход в систему

описывает процесс авторизации пользователя в системе.

Роли, участвующие в этом варианте использования: все роли системы.

4.2 Посылка запросов

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

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

Диаграмма состояний для этого прецедента использования

4.3 Работа с БД сотрудников

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

Прецедент использования включает в себя следующие прецеденты: Добавление нового сотрудника и Управление данными сотрудника.

Роли, участвующие в этом варианте использования: руководитель

Диаграмма коопераций для прецедента Управление данными сотрудника

4.4 Работа с БД вирусов

описывает процесс управления базой вирусов (поиск в базе, добавление нового вируса, просмотр/изменение информации о существующем в базе вирусе, удаление вируса из базы).

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

Поиск продукта и Управление базой вирусов.

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

Диаграмма последовательностей для этого прецедента использования

4.5 Генерация отчётов

описывает процесс составления сотрудниками корпорации отчёта о проделанных работах.

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

5. Логическое представление

Логическое представление информационной системы «Обитель зла» разделено на 3 пакета:

  • уровень представления (содержит классы пользовательских действий для всех форм интерфейса)

  • уровень бизнес-логики (содержит классы, реализующие логику работы системы и взаимодействия с БД)

  • уровень доступа к данным (содержит классы, реализующие хранение, управление и взаимодействие приложения с данным из БД)

5.1 Логический обзор пакетов

5.1.1 Бизнес-логика и доступ к данным

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

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

Название класса

Комментарии

DbLayer

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

Описание

методы

getConnection()

возвращает соединение с базой данных

close()

закрывает соединение с базой данных

getLoggedInUserID()

возвращает поле ID пользователя, залогинившегося в системе

setLoggedInUserID( int value )

устанавливает поле ID пользователя, залогинившегося в системе

getLoggedInEmployee()

возвращает Сотрудника, залогинившегося в системе

getEmployeeByID( int id )

возвращает Сотрудника по его ID

tryToLogin( String username, String password )

проверяет, существует ли пользователь с такой парой username/password в базе – в случае нахождения устанавливает его ID методом setLoggedInUserID( int value ), возвращает true, иначе возвращает false

addNewPerson( DbPerson person )

добавляет Человека в базу данных

addEmployee( DbEmployee employee )

добавляет Сотрудника в базу данных

addNewAttachment( DbAttachment newAttachment )

добавляет Вложение в базу данных

addNewMessage( DbMessage message )

добавляет Сообщение в базу данных

Название класса

Комментарии

DbLayer (продолж.)

addNewTask( DbTask task, DbMessage description )

добавляет новую задачу в базу данных

reportTaskProgress( DbTaskProgress taskProgress )

запись отчётов в Ход_Выполнения по проценту выполнения

getTaskProgressPercentage( int taskId )

получение процента выполнения задачи по ID задачи

getTotalEmployees()

возвращает общее число сотрудников

getTotalTasks()

возвращает общее число задач (вирусов) в разработке на данный момент

getTotalFinishedTasks()

возвращает общее число выполненных задач (завершённых вирусов)

readPersonInfo( ResultSet reader, DbPerson person )

возвращает информацию о человеке

readEmployeeInfo( ResultSet reader, DbEmployee result )

возвращает информацию о сотруднике

updateEmployeeInfo( DbEmployee employee )

обновляет информацию о сотруднике

updatePersonInfo( DbEmployee employee )

обновляет информацию о человеке

getEmployeeInfoByPassport( String passport )

возвращает информацию о сотруднике по паспорту

readMessage( ResultSet reader, DbMessage result )

заполняет поля объекта-сообщения

readAttachments( DbMessage message )

заполняет поля объекта-вложения

getAllEmploys()

получить список всех сотрудников (список объектов-сотрудников)

getTaskProgress( int taskID )

получить список всех отчётов по задаче

getAllTasks( boolean selectFinished, boolean selectDeleted, TaskType service )

получить список всех задач (список объектов-задач)

fireEmployee( int id )

увольнение сотрудника

deleteTask( int id )

удаление задачи

checkTaskActive( int taskid )

проверяет, завершена ли задача. Если нет – возвращает true.

fetchNewTask( DbEmployee employee )

присвоение задачи определённому сотруднику

updateTaskField( DbEmployee employee )

обновление поля РАБОТАЕТ_НАД в таблице СОТРУДНИК

cleanup()

очистка всех таблиц (удаление всех данных)

TransactionScope

private класс для реализации выполнения вложенных транзакций

DbPerson

Класс для описания человека

Описание

поля

int ID

ID человека

String Name

Имя

String Surname

Фамилия

String Patronymic

Отчество

String Passport

Паспортные данные

String Description

Характеристика

Timestamp BirthDate

Дата рождения

методы

toString()

возвращает строку – Фамилия Имя Отчество

DbEmployee

Класс для описания сотрудника

Описание

поля

int HumanID

ID человека

Timestamp PlacementDate

Дата приёма на работу

Timestamp FiredDate

Дата увольнения

String Login

Логин

String Password

Пароль

byte[] Photography

Фотография

EnterpriseRole Role

Должность

Integer TaskID

ID задачи

методы

DbEmployee()

пустой конструктор

DbEmployee( String surname, String name, String patronymic, String passport, Timestamp birthDate, Timestamp placementDate, Timestamp firedDate, EnterpriseRole role, String login, String password, byte[] photography )

конструктор с параметрами

clone()

клонирование

DbTask

Класс для описания задачи

Описание

поля

int ID

ID задачи

String Name

Название

boolean Deleted

Статус – удалена

Date Finished

Дата завершения

TaskType Type

Тип задачи

методы

DbTask()

пустой конструктор

DbTask( String name )

конструктор с параметрами

DbTask( String name,TaskType type )

конструктор с параметрами

DbMessage

Класс для описания задачи

Описание

поля

int ID

ID сообщения

int From

ID автора сообщения

Timestamp When

Дата отправки

String Text

Содержимое сообщения

ArrayList<DbAttachment> Attachments

Список вложений

методы

DbMessage()

пустой конструктор

DbMessage( int from, String text )

конструктор с параметрами

DbAttachment

Класс для описания вложения

Описание

поля

int ID

ID вложения

int MessageID

ID сообщения, к которому относится вложение

String Name

Название

byte[] Data

Содержимое (Файлы)

методы

DbAttachment()

пустой конструктор

DbAttachment( String name, byte[] data )

конструктор с параметрами

DbTaskProgress

Класс для описания хода выполнения задачи

Описание

поля

int TaskID

ID задачи

DbMessage Message

Сообщение

int Percentage

Процент выполнения

методы

DbTaskProgress()

пустой конструктор

DbTaskProgress( DbMessage message, int percentage, int taskid )

конструктор с параметрами

Вторая группа классов – Null-Object шаблоны

Название класса

Комментарии

NullConnection

Null-Object Pattern

NullResultSet

NullStatement

NullPreparedStatement

NullCallableStatement

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

Название класса

Комментарии

ListView

Класс для описания списка объектов (используется для работы с массивом сотрудников, массивом задач)

Описание

методы

ListView( ArrayList<ListViewItem> items )

конструктор – входной параметр – список объектов

getSize()

возвращает размер списка (массива)

getElementAt( int i )

возвращает i-ый элемент списка

getSelectedObjectTag( JList list )

возвращает тэг выбранного элемента списка

ListViewItem

Класс для описания элемента списка объектов (используется для работы с элементами массива сотрудников, элементами массива задач)

Описание

поля

String Text

Текст эемента

Object Tag

Тэг элемента

методы

ListViewItem()

пустой конструктор

ListViewItem( String text )

конструктор с параметрами

ListViewItem( String text, Object tag )

конструктор с параметрами

enum EnterpriseRole

Перечисление для должностей сотрудников

Описание

Chief (0)

Руководитель

Scientist( 1 )

Научный сотрудник

Tester( 2 )

Тестировщик

SecurityMan( 3 )

Сотрудник службы безопасности

TechnicalSupport( 4 )

Сотрудник техподдержки

enum TaskType

Перечисление для типа задачи

Описание

VirusCreation( 0 )

Создание вируса

TechsupportRequest( 1 )

Запрос в техподдержку

SecurityRequest( 2 )

Запрос в службу безопасности

5.1.2 Представление

Содержит классы, представляющие собой все рабочие формы приложения, опишем их назначения:

Название класса

Комментарии

AddTaskForm

Форма добавления новой задачи

AddTaskProgressForm

Форма отчётности по выполняемой задаче (ввод процента завершённости и самого отчёта с приложениями)

EditEmployeeForm

Форма редактирования сотрудника

ImagePanel

Контрол для отображения фотографий сотрудников

MainForm

Начальная форма любого сотрудника

ReportControl

Контрол для создания отчётов. Используется в формах по написанию отчётов любыми сотрудниками

SecurityFinishTaskForm

Форма для написания отчётов сотрудниками службы безопасности

SecurityRequestForm

Форма посылки запроса сотрудниками службы безопасности в отдел техподдержки

TechsupportFinishTaskForm

Форма для написания отчётов сотрудниками службы техподдержки

TechsupportRequestForm

Форма посылки запроса сотрудниками службы техподдержки в отдел безопасности

TesterAcceptsTaskForm

Форма для посылки отчётов тестировщиками в случае удачного тестирования вируса

TesterRejectsTaskForm

Форма для посылки тестировщиками отчёта и замены уровня завершённости задачи (с пересылкой задачи обратно в научный отдел) в случае неудачного тестирования

Соседние файлы в папке информационная система umbrella - документы