- •Программная система «ProjectView 1.0», позволяющая анализировать данные об организации работ и ходе работ над программными проектами
- •Москва 2014
- •1. Техническое задание
- •2. Расширенная постановка задачи
- •2.1 Название и назначение разрабатываемой программы
- •2.2 Требования к функциональным характеристикам
- •3.1.2 Проектирование
- •2.8 Другие нефункциональные требования
- •3. Разработка и описание программы Итерация 1.
- •3.1.1 Анализ требований
- •3.1.3 Программирование
- •3.1.4 Интерфейс
- •3.1.5 Тестирование и отладка
- •3.2.1 Анализ требований
- •3.2.2 Проектирование
- •3.2.3 Программирование
- •3.2.4 Интерфейс
- •3.2.5 Тестирование и отладка
- •Мнение участников о работе в команде.
2.8 Другие нефункциональные требования
эффективность
практичность
сопровождаемость
понятность
простота использования
Требований мобильности и портируемости не предъявляется.
3. Разработка и описание программы Итерация 1.
3.1.1 Анализ требований
Первая итерация включает в себя создание прототипа программы, который впоследствии послужит «ядром» программной системы.
На первой итерации разработки программной системы реализованы следующие функциональные характеристики:
Создание нового проекта:
определение значений стандартных атрибутов: «название», «сроки», «бюджет»;
добавление участников в проект;
добавление артефактов, созданных с целью реализации данного проекта;
добавление ранее созданного проекта из файла;
хранение данных о добавленных проектах;
изменение вышеописанных свойств проекта;
создание участников:
определение значений стандартных атрибутов: «ФИО», «Роль», «Полномочия», «Контактная информация»;
изменение информации об участнике;
удаление участников из проекта;
создание артефакта с указанием его вида, начального объема и версии;
изменение объема и версии артефакта;
сохранение истории изменений артефакта;
удаление артефакта c историей его изменений;
отображение всех созданных (добавленных) проектов
отображение и анализ данных о проектах:
отображение количества участников проекта;
отображение количества артефактов;
отображение истории изменений артефакта;
Требования,
реализованные на первой итерации,
представлены на диаграмме прецедентов
(Рис 1).
Рис. 1
3.1.2 Проектирование
В процессе проектирования программной системы на первой итерации было выделено 4 класса:
Project — соответствует проекту
Artifact — соответствует артефакту
Member — соответствует участнику
Controller — отвечает за обработку запросов пользователя, сохранение данных о проекте
Шаблоны проектирования
На первой итерации был применен следующий шаблон проектирования
Шаблон проектирования Controller
Создан класс Controller, отвечающий за поступление и координацию операций, поступающих на уровне интерфейса пользователя. Формы делегируют получаемые сообщения о сохранении изменений объекта классу Controller
Описание классов
Класс Project содержит поля:
Name – Название проекта
Deadline – Срок сдачи проекта
Budget – Бюджет проекта
artifactList – Коллекция( список) артефактов проекта
memberList – Коллекция( список) участников проекта
И следующий метод:
ChangeProject – Изменение данных проекта
Класс Artifact содержит поля:
Name – Название артефакта
View – Вид артефакта
Size – Размер артефакта
Version – Версия артефакта
artInfList – Коллекция( список) элементов типа структуры ArtifactInfo, хранит изменения всех артефактов
И следующие методы:
Artifact – Конструктор класса
ChangeArtifact – Изменение размера и версии артефакта
CreateInfoList – Добавление изменения в коллекцию(список) изменений
Структура ArtifactInfo содержит 2 поля:
newSize – Строка, содержащая размер артефакта
newVersion - Строка, содержащая версию артефакта
Класс Member содержит поля:
Surname – ФИО участника
Role – Роль участника
Priviligies – Привилегии участника
ContactInformation – Контактная информация участника
И следующие методы:
Member – Конструктор класса
ChangeMember – Изменение данных участника
Также, в соответствии с шаблоном проектирования Controller, используется вспомогательный класс Controller, содержащий поля:
PathList – Коллекция( список) путей к ранее созданным проектам
ProjectDirAbsPath – Путь к текущему проекту
ArtifactFileName – Имя файла, содержащего информацию об артефактах проекта
ArtifactChangeFileName – Имя файла, содержащего информацию об изменениях артефактов проекта
MemberFileName – Имя файла, содержащего информацию об участниках проекта
project – Текущий проект
И следующие методы:
ReadInfo – Чтение из файла путей к ранее созданным проектам
ReadProjectFromFile – Считывание проекта из файла
ReadArtifactFromFile – Считывание списка артефактов проекта из файла
ReadMemberFromFile – Считывание списка участников проекта из файла
ReadInfoListFromFile – Запись информации об изменении всех артефактов проекта в файл
AddProject – Запись данных по текущему проекту в файл
WriteArtifactToFile – Запись списка артефактов проекта в файл
WriteMemberToFile – Запись списка участников проекта в файл
AddInfoArtifact – Сохранение всех изменений артефакта проекта в файл
SaveInfo – Сохранение путей к уже созданным проектам в файл
Диаграмма классов
Взаимодействие
классов представлено в виде диаграммы
классов (Рис. 2).
Рис.2
В структуру класса Project включены поля описывающие проект, а так же поля обеспечивающие взаимосвязь проекта и вовлеченных участников, информационного окружения (артефактов). Пользователю предоставлена возможность изменять основные поля проекта, поэтому в класс добавлен метод обновления этих данных.
Класс Member хранит основные данные об участниках и дает пользователю возможность изменять их с помощью метода ChangeMember.
Artifact хранит актуальные сведения об артефакте и историю его изменений. История представляет собой коллекцию (список) пар: размер - версия; заполненную в порядке изменения артефакта. Эти два поля объединены в структуру для удобства записи/чтения из файла. В дальнейшем будет создан класс, соответствующий журналу.
Управляющий класс Controller обеспечивает мобильный доступ ко всем полям всех классов. Передается на все формы программной системы. Методы класса контроллер обеспечивают изменения текущего проекта в соответствии с запросами пользователя. Кроме того, они обеспечивают сохранение данных о проекте в файлы, а так же их чтение из файлов.
Диаграмма содержит все вышеописанные классы.
Между классами Project и Member — отношение композитного агрегирования «один ко многим». Решение установить такое отношение между классами было принято, так как в предметной области понятие участник подразумевает, что он вовлечен хотя бы в один проект, если человек является участником проекта, то он не может существовать самостоятельно. Проект в свою очередь может включать в себя много участников или ни одного( например, когда проект только разрабатывается, уточняются его бюджет, сроки и т.д)
Между классами Project и Artifact — отношение композитного агрегирования «один ко многим». Информационное окружение каждого проекта уникально — каждый артефакт принадлежит только одному проекту, при этом на некоторых этапах разработки артефактов может вообще не быть, а может быть и множество.
На первой итерации Project включен в состав Controller и выполняет функцию контейнера для временного хранения данных о проекте, в процессе изменения их пользователем. После окончания работы с проектом Controller сохраняет все данные о проекте в файл и очищает поля объекта класса Project. В системе объявлен только 1 объект типа Controller. Данная концепция была пересмотренна в последующих итерациях.
