Информационная система «Обитель зла. Корпорация «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 |
Форма для посылки тестировщиками отчёта и замены уровня завершённости задачи (с пересылкой задачи обратно в научный отдел) в случае неудачного тестирования |