- •Программная система «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 Тестирование и отладка
- •Мнение участников о работе в команде.
3.1.5 Тестирование и отладка
В процессе написания программы неоднократно производилось тестирование промежуточных версий. Использовалась стратегия черного ящика, выбор входных данных осуществлялся по принципу граничных зон. Вводились данные, которые потенциально могли привести к ошибкам в работе системы. Например, были рассмотрены следующие ситуации:
Создание проекта, не содержащего ни одного участника
Создание проекта, не содержащего ни одного артефакта
Попытка сохранения проекта без указания имени/бюджета/сроков
Открытие проекта из файла с последующим его изменением и сохранением
Найденные в процессе тестирования ошибки были успешно устранены, после чего было проведено повторное тестирование, показавшее корректную работу системы.
Итерация 2.
3.2.1 Анализ требований
Вторая итерация расширяет «ядро» программы. Формируется структура классов, которая обеспечит наличие в программе данных, необходимых для алгоритмов, которые будут добавлены на третьей итерации.
На второй итерации разработки программной системы добавлены следующие функциональные характеристики:
добавление коммуникаций участников в рамках данного проекта
задание состояния проекта: «разрабатывается», «просрочен»
удаление проекта
исключение участников из проекта с указанием причин
отображение содержания выбранного проекта (его участников, истории их коммуникаций, артефактов проекта с указанием их актуальной версии и объема, истории изменения артефактов)
отображение оставшегося времени до сдачи проекта
отображение коммуникаций в рамках данного проекта
3.2.2 Проектирование
На этапе проектирования был разработан класс Journal и 7 структур, описывающих различные записи в журнале.
Введение этого класса и структур обеспечивает учет времени при моделировании работы над проектом.
Описание классов
Введены следующие изменения классов:
В класс Project добавлены следующие поля:
MaxMemberID – Последний присвоенный Id участника проекта
comList – Коллекция( список) коммуникаций проекта
journal – Журнал изменений проекта
И следующий метод:
AddMember ( ) – Добавление нового участника или участника из другого проекта (перегруженный метод)
В классе Artifact удалены следующие поля:
artInfList – Коллекция( список) элементов типа структуры ArtifactInfo, хранит изменения всех артефактов
LastChangeDate – использовалось для формирования artInfList
а также структура ArtifactInfo, так как изменения теперь хранятся в классе Journal.
И следующий метод:
CreateInfoList – Добавление изменения в коллекцию (список) изменений
В класс Member добавлено следующее поле:
Id – идентификационный номер участника
В классе Controller изменены следующие методы:
ReadInfoListFromFile – удален, так как считывание информации об изменении всех артефактов проекта из файла теперь осуществляется в классе Journal.
AddProject – переименован на WriteProjectToFile
AddInfoArtifact ( ) – удален, так как сохранение всех изменений артефакта проекта в файл теперь осуществляется в классе Journal.
Добавлены следующие методы:
SearchMember – Поиск участника по имени среди всех участников всех проектов
ReadJournalFromFile – Считывание журнала проекта из файла
SaveJuornal – Сохранение журнала проекта в файл
WriteCommunicationToFile – Сохранение в файл всех коммуникаций проекта
ReadCommunicationFromFile – Считывание коммуникаций проекта из файла
Созданы следующие классы:
Создан класс Communication содержащий поля:
Type – Вид коммуникации проекта
Date – Дата создания коммуникации проекта
Lasting – Продолжительность коммуникации проекта
Place – Место проведения коммуникации проекта
ComMembList – Коллекция( список) участников коммуникации проекта
И следующие методы:
Communications – Конструктор класса
EndTime – Дата окончания коммуникации проекта
Создан класс Journal содержащий поля:
CountOfRecords – Число записей журнала проекта
changeProjList – Коллекция( список) элементов типа структуры ProjectChange, хранит изменения проекта
changeArtList – Коллекция( список) элементов типа структуры ArtifactChange, хранит изменения артефактов проекта
addArtList – Коллекция( список) элементов типа структуры ArtifactAdd, хранит данные о добавлении артефактов в проект
deleteArtList – Коллекция( список) элементов типа структуры ArtifactDelete, хранит данные об удалении артефактов из проекта
changeMembList – Коллекция( список) элементов типа структуры MemberChange, хранит изменения участников проекта
deleteMembList – Коллекция( список) элементов типа структуры MemberDelete, хранит данные об удалении участников из проекта
addCommList – Коллекция( список) элементов типа структуры CommunicationAdd, хранит данные о добавлении коммуникаций в проект
И следующие методы:
AddRecord – Добавление записи в журнал (перегруженный метод)
Структура ProjectChange содержит поля:
No – Номер записи
chName – Изменившаяся характеристика проекта
Description – Описание
Структура ArtifactChange содержит поля:
No – Номер записи
Name – Название артефакта
View – Вид артефакта
newSize – Размер артефакта
newVersion – Версия артефакта
Author – Автор изменения
Description – Описание
Структура ArtifactAdd содержит поля:
No – Номер записи
Name – Название артефакта
View – Вид артефакта
newSize – Размер артефакта
newVersion – Версия артефакта
Author – Автор добавления
Структура DeletedArtifact содержит поля:
No – Номер записи
Name – Название артефакта
View – Вид артефакта
Reason – Причина удаления
Структура MemberChange содержит поля:
No – Номер записи
Name – Имя участника
chName – Изменение
Reason – Причина изменения
Структура ExcludedMember содержит поля:
No – Номер записи
Name – Имя участника
Reason – Причина удаления
Структура MakeComm содержит поля:
No – Номер записи
Type – Вид коммуникации проекта
Organizer – Организатор
Purpose – Цель создания
Шаблоны проектирования
Шаблон проектирования Creator
Данный шаблон проектирования использовался при определении класса, отвечающего за создание объектов Member, Artifact, Communication, Journal. Таким классом был выбран Project, так как он агрегирует все вышеперечисленные объекты
Диаграмма классов
Взаимодействие классов представлено в виде диаграммы классов (Рис. 5).
Рис. 5
Journal актуальные сведения обо всех изменениях в рамках данного проекта и дает пользователю возможность в хронологическом порядке отслеживать эти изменения.
Communication хранит основные данные обо всех коммуникациях участников в рамках данного проекта.
Между Project и Communication — отношение композитного агрегирования «один ко многим». Конкретная коммуникация принадлежит только одному проекту, в проекте может быть много коммуникаций, при удалении проекта удаляются все коммуникации в его рамках.
Между Project и Journal — отношение композитного агрегирования «один к одному». Каждый журнал принадлежит только одному проекту, в проекте есть только один журнал, при удалении проекта удаляется журнал.
Между Controller и Project — отношение зависимости. В программной системе существует объект типа контроллер, который может получать для обработки списки из любого числа проектов
Между Communication и Member — отношение ассоциации «многие к более одного». Каждая коммуникация хранит в своих полях сведения о вовлеченных в нее участниках. В рамках проекта любой участник может участвовать в нескольких коммуникациях. Для создания коммуникации обязательно включить к нее как минимум двух участников.
