Лабораторная работа № 5 ПЛАНИРОВАНИЕ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ПОМОЩЬЮ SERENA OPENPROJ Цель работы: изучение принципов календарного планирования процесса разработки программного обеспечения. Задачи: получение навыков использования программного продукта Serena OpenProj для календарного планирования процесса разработки программного обеспечения. Теоретическая часть Опции. Каждая функциональная особенность ПО или требование пользователя – это одна опция, которую заказчик хочет видеть реализованной в ПО. Каждая опция отражает ТОЛЬКО точку зрения пользователя. Итерации. С итерацией разработчик проходит те же этапы, что и при работе над целым проектом, и так должно происходить при каждой итерации. Каждая итерация – это мини-проект с отдельными требованиями, дизайном, написанием кода, тестированием и т.д. Так что в итоге разработчик показывает заказчику хорошо продуманные и качественно написанные части финального проекта. Итерации следует воспринимать как небольшие циклы, на которых собираются требования, разрабатывается дизайн, пишется код и проводится тестирование. Таким образом, итерация содержит все стадии отдельного проекта. Готовое работающее ПО в конце каждой итерации подразумевает возможность спросить заказчика, все ли в порядке. С каждой следующей итерацией ПО разрастается и работа приближается к концу. И на каждом шаге учитывается то, что не понравилось заказчику на предыдущем. Итерации должны быть короткими: чем короче итерации, тем больше шансов на то, что ошибки и необходимости изменения будут сразу обнаружены. С короткой итерацией разработчик раньше узнает мнение заказчика и внесет изменения дополнительные детали. Когда реализация одной опции зависит от другой, следует сгруппировать их и разместить в рамках одной итерации. Даже если это предполагает разработку опции с низким приоритетом до разработки высокоприоритетной. В этом случае стоит учитывать приоритет тот, у которой он выше. Конечное решение по приоритетам всегда принимает заказчик. Оценка проекта. Требование – это то, ЧТО должно быть получено в результате. Оценка – это то, КОГДА результат должен быть получен. Продолжительность проекта складывается из времени, необходимого на разработку каждой из опций. При этом нужно учитывать и то время, которое уйдет на доработку, включая все материалы, которые могут потребоваться. Это может быть документация, тестирование, компоновка, в общем-то, все, что должно быть сделано до окончания проекта. Оценки, превышающие 15 дней, оставляют слишком большой шанс на ошибку. Когда оценка слишком большая, следует применить правило «И» и разбить ее на более мелкие части. Скорость работы – это отношение общего числа дней к рабочим дням. По умолчанию скорость работы команды разработчиков принимается равной 0,7. Это означает, что на каждые 10 дней работы будет выпадать около 3 дней праздников, работы с документами, телефонных звонков и других занятий, не связанных с разработкой. Это консервативная оценка, в действительности скорость команды разработчиков может быть выше. Если произойдет именно так, в конце итерации следует пересчитать скорость и, с учетом этого, рассчитать время на следующую итерацию. Если взять дни работы, необходимые на разработку опции или итерации, и разделить это число на скорость, то результатом будет количество дней, необходимых для завершения работы. Это число всегда должно превышать оценку, чтобы учесть праздники и выполнение побочных задач. Это реалистичная оценка того, сколько времени на самом деле займет работа. Задачи. Каждая опция или требование – это набор задач. Задача точно определяет, какую работу нужно проделать одному из разработчиков, чтобы реализовать часть требования заказчика. У каждой задачи есть название, описание и оценка. Оценки задач делают оценки требований более точными. Когда есть две тесно связанных задачи, работать с ними в одно и то же время не проблема. Это как раз тот случай, когда завершение работы в одной задаче может помочь принять решение по поводу другой. Работать над обеими задачами оказывается более эффективно, чем завершить одну, потом начать другую и выяснить, что нужно опять вернуться к первой. Методика выполнения работы 1. Составить перечень функциональных особенностей программного продукта и требований пользователей – опций (из предыдущих лабораторных работ): 1. Бронирование билетов 2. Покупка билетов через Интернет 3. Выбор места в салоне. 4. Заказ меню. 5. Заказ DVD. и т.д. 2. Добавить приоритет к каждой опции (от 10 до 50, 10 – наивысший приоритет). 1. Бронирование билетов – 10 2. Покупка билетов через Интернет – 15 3. Выбор места в салоне – 15 4. Заказ меню – 20 5. Заказ DVD – 30 и т.д. 3. Добавить оценку к каждой опции: 1. Бронирование билетов – 10 – 15 дней 2. Покупка билетов через Интернет – 15 – 12 дней 3. Выбор места в салоне – 15 – 5 дней 4. Заказ меню – 20 – 4 дня 5. Заказ DVD – 30 – 1 день и т.д. Сложить все оценки для полной оценки проекта. 4. Сгруппировать опции в итерации: Итерация «Заказ билетов». 1. Бронирование билетов – 10 – 15 дней. 2. Выбор места в салоне – 15 – 5 дней. 3. Покупка билетов через Интернет – 15 – 12 дней и т.д. Итерация «Работа с пользователями». 1. Регистрация нового пользователя – 15 – 5 дней. 2. Изменение данных пользователя – 30 – 2 дня. 3. Идентификация пользователя – 10 – 6 дней. 4. Аутентификация пользователя – 10 – 6 дней. и т.д. 5. Определить количество участников каждой итерации. 5.1. Составить перечень участников группы разработчиков: – руководитель (1 человек) – разработчик баз данных (3 человека) – верстальщик (4 человека) – дизайнер (2 человека) – программист (5 человек) и т.д. (добавить еще не менее двух участников) 5.2. Распределить участников по итерациям проекта: Итерация «Заказ билетов»: – руководитель (1 человек) – разработчик баз данных (1 человек) – верстальщик (1 человек) – дизайнер (1 человек) – программист (2 человека) и т.д. 6. Оценить каждую итерацию с учетом скорости работы и количества разработчиков. Примем скорость работы группы разработчиков равной 0,7. Тогда: Итерация «Заказ билетов»: Дни, необходимые на разработку итерации, – 120 Количество участников – 8 человек Оценка итерации – 120 / 0,7 = 171 день. Оценка итерации с учетом числа разработчиков – 171 / 8 = 21 день. Аналогичным образом для остальных итераций. 7. Определить порядок реализации итераций в ходе проекта (некоторые итерации можно выполнять параллельно). 1. Работа с пользователем. 2. Заказ билетов. и т.д. 8. Разбить опции на задачи. 8.1. Выделить задачи: Итерация 2 «Заказ билетов» Опция 1. Бронирование билетов. Задача 1. Разработка структуры базы данных Задача 2. Дизайн пользовательского интерфейса и т.д. 8.2. Оценить каждую задачу (с учетом скорости работы и числа разработчиков): Итерация 2 «Заказ билетов» Опция 1. Бронирование билетов – 2 дня Задача 1. Разработка структуры базы данных – 2 дня. Задача 2. Дизайн пользовательского интерфейса и т.д. 8.3. Переоценить опции и итерации с учетом полученных значений, а также скорости работы и числа разработчиков. 9. Распределить задачи между разработчиками. Итерация 2 «Заказ билетов» Опция 1. Бронирование билетов. Задача 1. Разработка структуры базы данных – разработчик баз данных (1 человек) Задача 2. Дизайн пользовательского интерфейса – дизайнер (1 человек) и т.д. 10. Запустить OpenProj и создать новый проект Пуск → Программы → OpenProj → ф. Добро пожаловать в OpenProj | кн. Создать проект | Название проекта ← SpaceTravel, Менеджер ← Student, Дата начала ← 03.09.2012, кн. Ok 11. Определить ресурсы проекта (на основании перечня участников группы разработчиков) ф. OpenProj | вертикальная панель инструментов | кн. Ресурсы → форма на экране Название ← Руководитель, Тип ← Работа, E-mail адрес ← boss@somemail, Инициалы ← Р (оставить по умолчанию). Аналогичным образом ввести остальных участников проекта. 12. Ввести итерации: ф. OpenProj → вертикальная панель инструментов → кн. Диаграмма Ганта | Название ← Работа с пользователями, Продолжительность ← 6 дней, перевести курсор на следующую строку. Аналогичным образом последовательно ввести все остальные итерации в порядке, определенном ранее. 13. Ввести опции итераций: 13.1. Создать новую задачу: Выбрать итерацию «Работа с пользователями» → перейти на следующую строку → меню → Вставка → Новая задача/ресурс | Название ← Регистрация нового пользователя, Продолжительность ← 5 дней. 13.2. Задать принадлежность опции задаче: Установить курсор в первом столбце текущей строки → контекстное меню → Отступ → задача сместится вправо 13.3. Аналогичным образом задать оставшиеся опции итерации «Работа с пользователями», а также опции других итераций. 14. Ввести задачи опций 14.1. Создать задачу: Выбрать опцию «Регистрация нового пользователя» → перейти на следующую строку → меню → Вставка → Новая задача/ресурс | Название ← Создание структуры базы данных, Продолжительность ← 2 дня. 14.2. Задать принадлежность задачи опции: Установить курсор в первом столбце текущей строки → контекстное меню → Отступ → задача сместится вправо 14.3. Аналогичным образом задать оставшиеся задачи опции «Регистрация нового пользователя», а также задачи опций других и текущей итераций. 15. Установить последовательность итераций на основе составленного ранее перечня итераций: На диаграмме Ганта (справа) выделить курсором итерацию «Работа с пользователями» и перетащить на следующую по порядку итерацию «Заказ билетов». Аналогичным образом установить последовательность всех итераций, задач и опций. 16. Привязать ресурсы к задачам (для каждой задачи выбрать одного исполнителя): Выбрать задачу в перечне задач → горизонтальная панель инструментов → кн. Назначить ресурсы → ф. Назначить ресурс | выбрать исполнителя, кн. Назначить → закрыть форму