- •Программная система «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.2.3 Программирование
На этапе программирования второй итерации были реализованы следующие задачи:
Расширение существующего интерфейса
Программная реализация функциональных требований
Описание разработанных на этапе проектирования классов и реализация их взаимодействия
В связи с появлением новых классов и возможностей увеличилось количество окон в системе и кнопок на них. Подробное описание в разделе интерфейс.
Для добавления коммуникаций к проекту в класс Project было включено поле comList – коллекция List из объектов типа Communication. Создание новой коммуникации осуществляется с помощью метода Add коллекции List, все данные о коммуникации задаются при вызове конструктора Communication.
Состояние проекта «разрабатывается», «просрочен» указывается в таблице с информацией о проектах на первой форме и форме работы с проектом(Рис 6). Состояние определяется из сегодняшней даты и сроков сдачи проекта. Если сегодняшняя дата больше чем дата сроков сдачи, проекту присваевается состояние просрочен.
Описано удаление проекта. Сведения о проекте удаляются из всей программной системы, также уничтожаются все файлы, хранящие данные о проекте.
Теперь при удалении участника из проекта в журнале фиксируется запись об исключении участника из проекта( запись типа ExcludedMember). На форме удаления участников добавлено поле Description для указания причин исключения.
Все данные о проекте пользователь может увидеть на главной форме и форме работы с проектом.
3.2.4 Интерфейс
Изменилась форма работы с проектом.
Кнопка Show Journal вызывает окно, на котором в элементе TextComboBox представлены все записи журнала в хронологическом порядке.
Добавлена кнопка Delete project, инициирующая удаление проекта.
Новый вид формы представлен на Рис. 6.
Форма работы с проектом. Рис. 6
Кнопка Communication служит для вызова окна создания коммуникации( Рис. 7).
Форма создания коммуникации. Рис. 7
В полях Type, Lasting, Place, Purpose пользователь задает тип коммуникации, ее продолжительность в часах, место проведения коммуникации и ее цели соответственно.
Дата, когда произошла коммуникация указывается также как и сроки сдачи проекта.
С помощью кнопки с изображением стрелки вправо из списка участников пользователь может добавить участников коммуникации.
3.2.5 Тестирование и отладка
В процессе разработки второго прототипа программы неоднократно тестировались промежуточные версии проекта. Серьезных ошибок выявлено не было, все обнаруженные мелкие ошибки были исправлены.
Примеры ошибок
Симптомы ошибки |
Условия возникновения |
Гипотезы |
Примечания |
Программа выдала сообщение о том, что не найден проект, в то время как проекта с таким именем не должно быть в системе |
У проекта изменялось название, производилось его сохранение в файл |
В массиве, хранящем пути к сохраненным проектам остается запись со старым названием проекта. Во время прекращения работы программы в следствие этого сохранялся лишний путь |
Единственная гипотеза оказалась верной, ошибка была устранена |
При отображении содержимого журнала неверно указывались номера записей(1, 3, 6 вместо 1, 2, 3) |
Совершение нескольких изменений в проекте и вызов окна отображения записей журнала |
Из журнала исчезают записи при изменении проекта
Ошибка в индексации при заполнении информационного поля |
Ошибка действительно была в индексации. |
и т.д.
Поиск и исправление всех ошибок, возникающих в программе, не занимало более 20 минут.
Итерация 3.
Анализ требований
Заключительная итерация разработки. На ней реализуются все, указанные в расширенной постановке задачи требования к системе.
На третьей итерации разработки программной системы добавлены следующие функциональные возможности:
отображение проектов, в которых задействован конкретный участник
отображение артефактов, созданных/измененных участником
отображение коммуникаций в рамках данного проекта
отображение стоимости одного дня разработки проекта и сравнение с другими проектами
расчет и представление соотношений количества артефактов, их суммарного объема, к времени разработки проекта, бюджету проекта
Проектирование При разработке третьего прототипа программной системы крупных изменений архитектуры не произошло. Новых классов добавлено не было.
Описание классов
Класс Project:
В результате исправления ошибок, выявленных на этапе тестирования, исключено поле MaxID и перенесено в класс Controller.
Добавлен метод OneDayPay — рассчитывает стоимость одного дня разработки проекта.
Добавлен метод ArtCountPerDay — рассчитывает среднее количество артефактов, добавляемых в каждый день разработки.
Класс Artifact:
Исключено неиспользуемое теперь поле LastChangeDate
Класс Journal:
Добавлены методы AddByID и ChByID — возвращающие списки с названиями артефактов соответственно добавленных и измененных пользователем с заданным идентификатором.
Класс Controller:
Добавлен статический метод ConvertToUnixTimestamp — переводит данные из класса DateTime в секунды, используется для расчетов в методах OneDayPay и ArtCountPerDay класса Project, а также при заполнении колонки со временем разработки на главной форме.
Добавлен метод SearchProject — ищет в списке проектов ps проекты, в которых добавлен участник с идентификатором id
Диаграмма классов
Взаимодействие классов представлено в виде диаграммы классов (Рис. 8).
Р
ис.
8
В диаграмме классов учтены изменения указанные в описании классов. Отношения между классами остались прежними.
Программирование
На этапе программирования третьей итерации были реализованы следующие задачи:
программная реализация расширенной функциональности
улучшение интерфейса
Для отображение проектов, в которых задействован конкретный участник отображения артефактов, созданных/измененных участником была создана новая форма( Рис. 11, Рис. 12). Получение этой информации реализуется методами: SearchProject — класс Controller, AddByID и CnByID — класс Journal.
Отображение коммуникаций в рамках проекта добавлено на форму работы с проектом.
Стоимости одного дня разработки проектов, соотношения количества артефактов ко времени разработки указываются на главной форме в таблице.
Некоторые
используемые в системе алгоритмы
представлены в виде диаграмм:
Рис. 9 (Диаграмма деятельности: создание коммуникации)
Рис. 10 (Диаграмма последовательностей: сохранение проекта в файл)
Интерфейс
В программной системе появилось новое окно «Поиск по проектам» (Рис. 11)
Форма поиска по проектам. Ввод имени участника. Рис. 11
Пользователю предлагается ввести имя участника. При нажатии кнопки «Отобразить проекты участника», если существуют участники с таким именем, пользователь увидит информацию об их деятельности( Рис. 12)
Форма поиска по проектам. Отображение результата поиска. Рис. 12
Результаты поиска заносятся в поле слева. При выборе участника из поля заполняются информационные поля Состоит с следующих проектах, Добавленные артефакты, Измененные артефакты.
Кроме того все поля интерфейса программы теперь подписаны на русском языке.
Тестирование и отладка
В процессе разработки третьего прототипа системы неоднократно производилось тестирование отладка. В основном, применялась стратегия «белого ящика» для модульного тестирования программы. Тестовые наборы подбирались так, чтобы инициировать:
выполнение всех операторов
покрытие всех линий передачи управления
прохождение всех путей от входа к выходу
Конечные и промежуточные результаты исполнения модулей отслеживались с помощью стандартных средств отладки интегрированной среды разработки( MS Visual Studio), проверки файлов, используемых программой.
Было проведено итоговое тестирование созданного продукта. Ввиду довольно больших размеров системы, для интеграционного тестирования была избрана стратегия «черного ящика», так как для проверки её с применением стратегии «белого ящика» потребовалось бы написание большого количества вспомогательного кода и времени. Результаты тестирования приведены в таблице:
Метод |
Тестовый набор(входные данные) |
Тестовый набор(ожидаемый результат) |
Результат |
Примечания |
Анализ граничных условий |
При создании проекта в поле «Бюджет» введен символ $. |
Вывод сообщения: «Введен недопустимый символ». |
Соответствует ожидаемому |
Тестовый набор из класса эквивалентности «Недопустимые входные данные» |
Анализ граничных условий |
Не заполнено ни одно информационное поле нового проекта. |
При нажатии «Сохранить проект» вывод сообщения: «Не все поля заполнены» |
Соответствует ожидаемому |
Тестовый набор состоит из минимальных значений входных данных |
Анализ граничных условий |
Не заполнено ни одно информационное поле нового проекта. |
При нажатии «Закрыть проект» перерисовка главной формы |
Аварийное завершение программы |
Ошибка исправлена |
Анализ граничных условий |
Попытка открыть файл, не являющимся файлом типа .pvr. |
В системе при открытии из файла отображаются только файлы типа .pvr. |
Подтвердился ожидаемый результат. |
Тестовый набор из класса эквивалентности «Недопустимые входные данные» |
Анализ граничных условий |
Открытие проекта из файла, который уже присутствует в системе |
Сообщение:”Проект с таким именем уже существует в системе!” |
Соответствует ожидаемому |
Тестовый набор из класса эквивалентности «Недопустимые входные данные» |
Анализ граничных условий |
Поле “Бюджет” заполнено максимальным количеством “девяток” |
Сообщение:”Проект сохранен в ...” |
Подтвердился ожидаемый результат. |
Тестовый набор состоит из максимальных значений входных данных |
Анализ граничных условий |
Поле “Бюджет” заполнено нулями и в конце числа поставлена цифра |
Сообщение:”Проект сохранен в ...” |
Подтвердился ожидаемый результат. В бюджет записалась цифра после нулей. |
Тестовый набор из класса эквивалентности «Недопустимые входные данные» |
Анализ граничных условий |
Указание “Срок сдачи проекта” на дату в прошлом. |
Сохранен без ошибок. Проекту присвоен статус просрочен. |
Соответствует ожидаемому |
Тестовый набор состоит из минимальных значений входных данных |
Анализ граничных условий |
Добавление артефакта участником из другого проекта затем его удаление и восстановление в проект. Просмотр журнала изменении артефактов участника |
Автором артефакта является участник другого проекта |
Аварийное завершение программы. Не найден ID. |
Исправлено |
Анализ граничных условий |
Создали новый проект в системе, но не сохранили, можно было его удалить. |
Проект удален. |
Аварийное завершение программы. Удаляемый проект, должен быть в списке проектов системы. |
Тестовый набор состоит из минимальных значений входных данных. Ошибка исправлена |
Список обнаруженных и устраненных ошибок:
Симптомы ошибки |
Условия возникновения |
Гипотезы |
Примечания |
Файлы проекта сохранялись не в ту директорию |
Открытие проекта, который находится не в нижней строчке таблицы главной формы ПС |
В список путей сохранялось неверное значение |
Переменная, хранящая путь к проекту, с которым идет работа, получала новое значение только при создании нового проекта( последнего в списке). Ее своевременное обновление устранило ошибку. |
В список участников с таким же именем попадал участник, созданный в текущем проекте |
Участник добавлен в текущий и в другой проект |
Участник заносится в список из другого проекта |
Изначально в список не включались только участники с таким же именем, найденные в данном проекте. Было добавлено сравнение id участников |
Неверно работал поиск по участникам |
При добавлении участника из другого проекта в текущий и последующем его поиске, участник выводился дважды |
Проблема с присваиванием идентификаторов участников |
Переменная, хранящая максимальный id была объявлена в каждом проекте. Теперь она хранится вне списка |
Удалялся не тот проект с соответствующей директорией |
В списке более одного проекта и пользователь пытался удалить проект не из последней строчки таблицы главной формы. |
В процедуре удаления передавался путь к проекту из последней строчки таблицы главной формы. |
|
Запускался поиск по проектам, даже если их нет. |
При отсутствии проектов в системе, пользователю был доступен поиск по проектам. |
Не было проверки на существование проектов в системе |
Устранено добавлением соответствующей проверки. |
Неправильно отрабатывала функция удаления проекта, если его не сохранили до этого. |
Если создали новый проект в системе, но не сохранили, можно было его удалить. |
Не было проверки на существование удаляемого проекта в списке проектов системы. |
Добавлена соответствующая проверка на существование удаляемого проекта. |
Разрешалась попытка создания коммуникации в проекте содержащим менее 2 участников |
Если в системе есть один участник или нет вообще, пользователю была предоставлена возможность создать коммуникацию |
Отсутствовала проверка на количество участников |
Исправлено путем добавления проверки количества участников проекта. Их должно быть больше 1 |
