- •Анализ предметной области и формирование требований к разработке Описание задач системы Описание предметной области
- •Описание проблемы, которую нужно решить
- •Состояние и стратегия развития схожих решений
- •Постановка задачи Цели и задачи проекта
- •Спецификация и обоснование нефункциональных требований
- •Календарно-ресурсное планирование проекта, анализ бюджетных ограничений и рисков
- •Проект автоматизации бизнес-процессов Функциональная структура
- •Информационное обеспечение
Календарно-ресурсное планирование проекта, анализ бюджетных ограничений и рисков
При разработке системы использовались гибкие методологии разработки. Модель жизненного цикла разработки системы – инкрементная. Процесс разработки разбивается на несколько спринтов, которые длятся 2 недели. Перед началом каждого спринта руководитель проекта формирует требования и распределяет разработчикам задачи, которые они должны выполнить в течении данного спринта. После выполнения задачи разработчик отправляет изменения в основную ветку репозитория проекта. Изменения применяются только при успешном прохождении проверки качества кода, после чего задача отправляется тестерам. При нахождении ошибок задача возвращается разработчику на доработку. По окончании спринта все изменения применяется на боевом сервере.
Список спринтов и время их выполнения отображён в таблице 1.
№ |
Задачи |
Дата начала |
Дата окончания |
1 |
|
8.12.2014 |
19.12.2014 |
2 |
|
22.12.2014 |
14.01.2015 |
3 |
|
15.12.2014 |
28.01.2015 |
4 |
|
29.01.2015 |
11.02.2015 |
5 |
|
12.02.2015 |
26.02.2015 |
6 |
|
27.02.2015 |
9.03.2015 |
Таблица 1. Календарный план проекта.
Рисунок 1. Страница создания потока курсов.
Рисунок 2. Страница редактирования лекии и домашнего задания.
Рисунок 3. Страница создания и редактирования стажировки.
Проект автоматизации бизнес-процессов Функциональная структура
Функциональная схема и роли пользователей в системе отображены с помощью диаграммы вариантов использования (рис. 1).
Рисунок 4. Диаграмма вариантов использования системы.
Информационное обеспечение
Проектирование базы данных осуществлялось в соответствии с принципом «CodeFirst». Этот принцип подразумевает написание классов на объектно-ориентированном языке программирования, соответствующих сущностям в базе данных, из которых в дальнейшем генерируются таблицы с помощью специальногоORM-фреймфорка.
В процессе проектирования было выделено 7 основных сущностей:
курс (Course) – содержит название курса и список потоков;
поток (Stream) – содержит название потока, статус, даты начала и окончания, списки кандидатов, студентов, лекций и лекторов.
лекция (Lection) – содержит название лекии, дату проведения, информацию о посещаемости, текст домашнего задания;
тестовое задание (TaskAction) – представляет собой тестовое задание, которое выполняет студент перед принятием на курсы и содержит название, даты начала и окончания, описание, результаты в виде текстового ответа или файлов, статус выполнения, комментарии и отзыв руководителя;
домашнее задание (HomeWorkResult) – представляет собой домашнее задание, выполняемое студентом во время прохождения курсов и содержит название, результаты выполнения в виде текстового ответа и файлов, ссылку наGitLab-репозиторий домашнего задания, статус выполнения, комментарии и отзыв руководителя;
стажировка (InternshipAction) – представляет собой событие стажировки и содержит название, даты начала и окончания, список задач, статус прохождения и отзывы кураторов;
задача стажировки (InternshipTask) – представляет собой задачу выполняемую стажёром во время прохождения стажировки и содержит описание, даты начала и окончания, статус;
Инфологическая модель представлена на ER-диаграмме (рис. 2).
Рисунок 5. ER-диаграмма.
stream | ||
Наименование поля |
Тип данных |
Связь с таблицей |
enddate |
date |
- |
name |
character varying(255) |
- |
startdate |
date |
- |
status |
character varying(255) |
- |
version |
integer |
- |
started |
boolean |
- |
gitenabled |
boolean |
- |
course | ||
Наименование поля |
Тип данных |
Связь с таблицей |
name |
character varying(255) |
- |
version |
integer |
- |
lection | ||
Наименование поля |
Тип данных |
Связь с таблицей |
date |
timestamp with time zone |
- |
description |
text |
- |
homework |
text |
- |
name |
character varying(255) |
- |
version |
integer |
- |
stream_id |
bigint |
stream |
internshiptask | ||
Наименование поля |
Тип данных |
Связь с таблицей |
description |
text |
- |
enddate |
date |
- |
startdate |
date |
- |
status |
character varying(255) |
- |
version |
integer |
- |
internship_action_id |
bigint |
action |
homeworkresult | ||
Наименование поля |
Тип данных |
Связь с таблицей |
attendance |
boolean |
- |
status |
character varying(255) |
- |
version |
integer |
- |
employee_id |
bigint |
- |
notified |
boolean |
- |
homeworkmark |
integer |
action |
Описание суррогатных таблиц, используемых для связи сущностей:
stream_candidates | ||
Наименование поля |
Тип данных |
Связь с таблицей |
stream_id |
bigint |
stream |
candidates_id |
bigint |
employee |
stream_students | ||
Наименование поля |
Тип данных |
Связь с таблицей |
stream_id |
bigint |
stream |
students_id |
bigint |
employee |
stream_lectors | ||
Наименование поля |
Тип данных |
Связь с таблицей |
stream_id |
bigint |
stream |
lectors_id |
bigint |
employee |
lection_employee | ||
Наименование поля |
Тип данных |
Связь с таблицей |
lection_id |
bigint |
lection |
lectors_id |
bigint |
employee |
lection_homeworkresult | ||
Наименование поля |
Тип данных |
Связь с таблицей |
lection_id |
bigint |
lection |
results_id |
bigint |
homeworkresult |
homeworkresult_attachment | ||
Наименование поля |
Тип данных |
Связь с таблицей |
homeworkresult_id |
bigint |
homeworkresult |
attachments_id |
bigint |
attachment |