- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Ивановский государственный энергетический университет имени в.И. Ленина».
- •Иваново 2014
- •Оглавление
- •Предисловие
- •Введение
- •1.Предмет программной инженерии
- •1.1.Определение и свойства программного обеспечения
- •1.2.Проблемы разработки программного обеспечения
- •1.3.Процессы производства программного обеспечения
- •1.4.Понятие программного проекта
- •1.5. Стандартизация в области производства по
- •1.6.Определение программной инженерии и ее место в системе информационных технологий
- •2.Жизненный цикл программных продуктов
- •2.1.Понятие жизненного цикла
- •2.2.Процессы жизненного цикла программного обеспечения
- •2.3.Модели жизненного цикла
- •3.Виды деятельности в программной инженерии
- •3.1.Управление требованиями
- •3.1.1.Проблема
- •3.1.2.Цикл работы с требованиями
- •3.1.3.Виды и свойства требований
- •3.1.4.Варианты формализации требований
- •3.2.Проектирование программного обеспечения
- •3.2.1.Понятие
- •3.2.2.Принципы
- •3.2.3.Шаблоны
- •3.2.4.Моделирование по
- •3.2.5.Методологии
- •3.2.6.Оценка качества
- •3.3.Конструирование программного обеспечения
- •3.3.1.Определение
- •3.3.2.Связь с другими процессами
- •3.3.3.Принципы
- •3.3.4.Модели и методы
- •3.3.5.Языки конструирования
- •3.4.Конфигурационное управление
- •3.4.1.Проблемы управления активами программного проекта
- •3.4.2.Единицы конфигурационного управления
- •3.4.3.Управление версиями
- •3.4.4.Управление сборками
- •3.4.5.Понятие baseline
- •3.5.Тестирование программного обеспечения
- •3.5.1.Основные определения
- •3.5.2.Уровни тестирования (Test Levels)
- •3.5.3.Виды тестирования
- •3.5.4.Метрики
- •3.6.Сопровождение программного обеспечения
- •Эволюция программного обеспечения (Evolution of Software)
- •4.Методология объектно-ориентированного анализа и проектирования
- •4.1.Основные понятия
- •4.1.1.Объекты и классы
- •4.1.2.Принципы ооп
- •4.1.3.Разработка объектно-ориентированных программ
- •4.2.Язык uml
- •4.2.1.Что дает uml
- •4.2.2.Структура языка uml
- •4.2.3.Uml диаграммы
- •4.2.4.Программы поддержки языка uml
- •4.3.Вопросы для самоконтроля
- •5.Технологии разработки программного обеспечения
- •5.1.Тяжеловесные и облегченные технологии
- •5.2.Технология rup
- •5.3.Гибкие технологии
- •5.4.Технология msf
- •5.4.1. Управление рисками в msf for Agile Software Development1
- •5.4.2.Основные сведения о рисках
- •5.4.3.Планирование управления рисками
- •5.4.4.Процесс управления рисками
- •5.4.5.Управление рисками как составная часть жизненного цикла проекта
- •5.4.6.Учебный пример. Выделение рисков
- •5.5.Модель процессов msf for Agile Software Development2
- •5.5.1.Принципы модели процессов
- •5.5.2.Управление компромиссами
- •5.5.3.Схема процесса разработки
- •5.6.1. Подготовка проекта
- •5.6.2. Планирование проекта
- •5.6.3. Планирование спринта
- •5.6.4. Выполнение спринта
- •5.6.5. Отслеживание проекта
- •5.7.1. Каково назначение модели cmmi?
- •5.7.2. Как лучше использовать модель cmmi?
- •5.7.3. Элементы модели cmmi
- •Заключение Литература
- •153003, Г. Иваново, ул. Рабфаковская, 34.
5.6.1. Подготовка проекта
Перед запуском проекта необходимо выполнить следующие задачи:
установить экономическое обоснование;
собрать команду;
настроить инфраструктуру команды.
Чтобы установить экономическое обоснование, необходимо выявить бизнес-потребности и обосновать их, определить концепцию проекта и получить финансирование.В книге Джеффри Мура (Geoffrey Moore) "Crossing the Chasm" представлено неплохое руководство по созданию концепций.Дополнительные сведения см. на следующем веб-ресурсе: Crossing the Chasm.
После установления экономического обоснования необходимо собрать команду и определить координатора Scrum и владельца продукта.Дополнительные сведения см. в разделе Роли.
И наконец, созданная команда должна настроить свою инфраструктуру.Например, необходимо установить сервер Visual Studio Team Foundation Server и систему Visual Studio Application Lifecycle Management (ALM), создать и, возможно, настроить командный проект и определить рекомендации по проектированию.Дополнительные сведения см. в разделах Начало работы с Visual Studio Application Lifecycle Management, Настройка командного проекта и Рекомендации по проектированию.
5.6.2. Планирование проекта
В проекте Scrum команда затрачивает наибольшее время на разработку продукта в серии коротких итераций, называемых спринтами.Однако сначала команда должна создать план проекта высокого уровня.Этот план является стратегическим руководством для более детальных решений, принимаемых командой в ходе проекта.План меняется по мере его реализации.По завершении планирования проекта команда должна создать список невыполненных работ по продукту и, если необходимо, план выпуска.
Построение списка невыполненных работ по продукту
Список невыполненных работ по продукту включает описания функциональности, определяющие потребности и цели пользователей.Приоритеты описаний функциональности пользователей определяются их ценностью и рисками для бизнеса. Команда оценивает эти описания в абстрактных единицах, называемых баллами описаний.
|
Создание описаний функциональности пользователей. В своей книге "User Stories Applied" Майк Кон (Mike Cohn) определяет описания функциональности пользователей следующим образом: "Описание функциональности пользователя определяет функции, которые будут полезны для пользователя или покупателя системы или программного обеспечения". Иными словами, описания функциональности пользователей создаются с точки зрения конечного пользователя.Примеры. "Мне, как постоянному клиенту, требуются блюда, которые я заказывал раньше". Дополнительные сведения см. в разделе Создание удобного описания требований пользователей к продукту. |
|
Определение приоритетов описаний функциональности пользователей. Приоритеты описаний функциональности пользователей определяются владельцем продукта в списке невыполненных работ по продукту. При этом владелец согласует с заказчиками цели и задачи проекта и вместе с командой выполняет анализ рисков и зависимостей.Владелец продукта указывает приоритеты путем назначения описаниям функциональности определенных рангов, определяющих порядок, в котором команда должна реализовывать описания. Для анализа и сравнения ценности описаний функциональности пользователей владелец продукта может использовать целый ряд методов.Если команда уже использует хорошо зарекомендовавший себя метод определения приоритетов, менять его не следует. Некоторые методы определения приоритетов тесно связаны с концепцией гибкого сообщества, например с моделью Кано удовлетворенности клиентов и принципом относительных весов Карла Вигерса (Karl Wiegers).(Дополнительные сведения об относительных весах см. в статье по адресу: First Things First: Prioritizing Requirements.) Другие методы определения приоритетов, такие как определение приоритетов затрат, чистая приведенная стоимость, расчетный период окупаемости и коэффициент окупаемости, широко применяются за пределами гибкого сообщества.Эти методы также вполне эффективны, и их можно использовать для определения приоритетов в списке невыполненных работ по продукту проекта Scrum.Дополнительные сведения см. в разделе "Part II: Estimating Size" книги на следующем веб-ресурсе: Agile Estimation and Planning. |
|
Оценка описаний функциональности пользователей. Каждое описание функциональности пользователя совместно оценивается участниками команды в баллах описаний функциональности.В своей книге "Agile Estimation and Planning" Майк Кон (Mike Cohn) определяет баллы описания функциональности следующим образом: "Баллы описания функциональности — это единицы измерения для выражения общего размера описания функциональности, компонента или другого элемента работы". Баллы описания функциональности представляют собой относительные значения, которые невозможно сразу перевести в определенное количество часов.Баллы описаний лишь помогают команде определить общий размер описания функциональности пользователя.Эти относительные оценки являются менее точными, поэтому для их определения требуется меньше усилий. Со временем оценки будут уточняться.Благодаря определению баллов описаний функциональности команда получает общий размер описаний функциональности пользователей на начальном этапе и в дальнейшем, когда участники команды приступают к реализации описаний, разрабатывает более детальную оценку трудозатрат. |
Определение производительности команды
Перед созданием плана выпуска и планов для каждого спринта команда должна определить свою производительность.Производительность команды выражается количеством баллов описаний функциональности, которые она может выполнить в течение одного спринта.
Если команда уже измерила свою скорость работы, собрав данные о числе описаний функциональности пользователей, реализованных командой за определенный период времени, можно использовать эти данные.Он предоставляет наиболее точную оценку производительности команды.Если такие данные отсутствуют, но команда начала выполнение проекта с помощью системы Visual Studio ALM и платформы MSF для гибкой разработки программного обеспечения версии 5.0, эти показатели будут собраны в ходе проекта.Дополнительные сведения см. в разделе Отчет "Состояние всех итераций" (гибкая разработка).
Если исторические данные недоступны, команда может сделать грубую оценку количества баллов описаний функциональности, которые она может выполнить за первый спринт.Следует рассмотреть полученные описания функциональности с наивысшим приоритетом и сделать быструю оценку числа описаний, которые могут быть реализованы в ходе одного спринта.Для получения начальной оценки суммируют баллы по каждому из рассмотренных описаний функциональности.После завершения первого спринта для определения производительности команды можно использовать исторические данные.Результаты первых нескольких спринтов, скорее всего, будут значительно отличаться от запланированных показателей, поскольку команда пока лишь учится выполнять согласованную оценку.Однако с течением времени плановая производительность команды должна стать более стабильной.По достижении стабильной измеренной скорости план выпуска пересматривают.
Оценки производительности команды обеспечивает отправную точку для определения числа описаний функциональности пользователей, реализуемых в ходе одного спринта. Однако подобная оценка не может служить основанием для определения целевых показателей команды.Целевые показатели команды должны определяться на основе более детальных оценок задач, которые необходимо выполнить для реализации описаний функциональности.Дополнительные сведения см. в разделе Книга "Планирование продукта".
Создание плана выпуска
На каждом спринте команда увеличивает объем выполненных работ по продукту, предназначенному для поставки.Описания функциональности пользователей, реализованные командой, готовы к поставке в конце спринта, однако их ценности может быть недостаточно для обоснования реального выпуска продукта.Планирование выпусков путем назначения их итерациям.
Определение групп пользовательских описаний функциональности, которые вместе создают достаточную бизнес-ценность, обосновывающую необходимость выпуска продукта заказчикам.
Определение спринтов, на которых ожидается завершение реализации этих групп пользовательских описаний функциональности.
В ходе реализации проекта в список невыполненных работ по продукту будут добавляться новые описания функциональности пользователей; другие описания могут удаляться.Кроме того, приоритет некоторых описаний будет изменяться, а некоторые описания могут реализовываться раньше или позже, чем изначально ожидалось.Владелец продукта отслеживает план выпуска и ведет учет невыполненной работы по продукту на протяжении всего проекта.
Дополнительные сведения см. в разделе Книга "Планирование продукта".
Подготовка к первому спринту
Спринт представляет собой ограниченную по времени итерацию разработки, продолжительность которой, как правило, составляет от одной до четырех недель. В ходе этой итерации повышается готовность продукта, предназначенного для поставки.Прежде чем команда приступит к выполнению первого спринта, владелец продукта подготавливает список невыполненных работ по продукту.Кроме того, необходимо подготовить описания функциональности пользователей, приоритет которых достаточно высок для того, чтобы команда начала их реализацию на первом спринте.При подготовке списка невыполненных работ по продукту владелец продукта выполняет следующие действия.
Разбиение пользовательского описания функциональности на более мелкие описания функциональности.
Предоставление подробных сведений о пользовательских описаниях функциональности, которые потребуются команде для разбиения описаний функциональности на задачи.
Владелец продукта определяет описание функциональности пользователя как слишком большое, если для его реализации требуется значительный объем производительности команды.Например, если производительность команды составляет 30 баллов описаний, описание функциональности пользователя размером 15 баллов является слишком большим.На реализацию одного этого описания функциональности пользователя команде придется потратить половину спринта.
Команде также потребуются сведения об описаниях функциональности пользователей для их разбиения на задачи и оценки полученных задач.Например, при рассмотрении пользовательского описания функциональности "Клиенту требуется возможность поиска типа блюд" команда может задать следующие вопросы.
"Могут ли критерии поиска задаваться в свободной форме или необходимо выбирать из списка доступных типов?"
"Если блюда, соответствующие критерию поиска, можно получить у нескольких поставщиков, как должны сортироваться результаты?"
Дополнительные сведения см. в подразделе Подготовка к следующему спринту.
