- •Содержание
- •1.13. Задания для самопроверки 59
- •1.17. Задания для самопроверки 88
- •1.19. Задания для самопроверки 108
- •1.23. Задания для самопроверки 116
- •1.27. Задания для самопроверки 125
- •1.37. Задания для самопроверки 144
- •1.48. Задания для самопроверки 159
- •Перечень рисунков
- •Перечень таблиц
- •Введение
- •Принятые сокращения
- •1.Жизненный цикл разработки по
- •Программные проект и его атрибуты
- •Ролевые модели в программном проекте
- •Размер и сложность программного проекта
- •Характеристики программного проекта
- •Качество программного продукта
- •Экран проекта и сводка о подходе
- •Критерий smart для формулирования целей
- •Критерии успешности программного проекта
- •Модели жизненного цикла
- •Водопадная модель
- •Модель быстрой разработки приложения
- •Пошаговая модель
- •Спиральная модель Боэма
- •Прототипная модель
- •Выбор модели жизненного цикла
- •Задания для самопроверки
- •2.Типовой каркас для разработки по
- •Программная разработка
- •Планирование проекта
- •Модель cocomo для оценки трудозатрат в проекте
- •Модель slim для оценки трудозатрат в проекте
- •Разработка спецификации требований
- •Отслеживание и контроль
- •Верификация и валидация
- •Обеспечение качества
- •Конфигурационное управление
- •Метрики
- •Повышение квалификации
- •Задания для самопроверки
- •3. Модели зрелости способностей cmm/cmmi
- •Ключевые области процесса в модели cmm
- •Характеристика уровней зрелости в модели cmm
- •Интегрированная модель зрелости способностей cmmi
- •История возникновения
- •Уровни зрелости и области процесса
- •Уровни способностей процесса в модели cmmi
- •Специальные и общие цели и практики процессных областей
- •Характеристики уровней зрелости в модели cmmi
- •Задания для самопроверки
- •4.Управление рисками в программном проекте
- •Модели esi и pmi управления рисками
- •Выявление рисков
- •Анализ рисков
- •Расстановка приоритетов для рисков
- •Планирование рисков
- •Исполнение ответных стратегий
- •Оценивание результатов исполнение ответных стратегий
- •Документирование действий по рискам
- •Заключительное оценивание рисков
- •Задания для самопроверки
- •5.Стандарты качества iso в применении к по
- •Структура и принципы семейства стандартов iso 9000
- •Модели iso 9000 на базе процессов
- •Самооценивание по ключевым элементам iso 9000
- •Задания для самопроверки
- •6.Формальные методы в разработке по
- •Инструменты формализации и верификации
- •Взаимодействие функциональностей
- •Интегрированная технология анализа и верификации
- •Задания для самопроверки
- •7.Некоторые общие технологические приемы
- •Инспекции по Фейгану
- •Диаграммы Исикавы («рыбий скелет»)
- •Инструменты
- •Swot-анализ
- •Сбалансированный экран результативности
- •Технологическая дорожная карта
- •Метод Дельфи
- •Деревья решений
- •Сравнительное ранжирование
- •Методология подвижного программирования
- •Принципы подвижного программирования
- •Рабочий цикл и роли участников
- •Рабочие документы и обстановка
- •Задания для самопроверки
- •8.Сертификация программного обеспечения в авиации
- •История создания серии документов do-178 и ed-12
- •Уровни программного обеспечения
- •Процессы жизненного цикла по авиационных систем
- •Цели процессных деятельностей
- •Рабочие документы и категории их контроля
- •Процесс планирования по
- •Процессы разработки по
- •Определение требований
- •Проектирование
- •Кодирование
- •Верификация
- •Конфигурационное управление
- •Обеспечение качества
- •Контакт с органом сертификации
- •Выводы и рекомендации
- •Задания для самопроверки
- •9.Задания для самостоятельной работы
- •Темы, связанные с единым каркасом для разработки по
- •Перечень тем
- •Краткое описание каждой темы
- •Тема 2. Программная архитектура базового инструмента для распределенного управления программными проектами
- •Тема 3. Профили типовых рабочих компонентов для разработки приложений
- •Тема 1. Прототип метрической базы данных для управления разработкой приложений
- •Тема 5. Репозиторий повторно используемых компонентов
- •Тема 6. Сквозной пример для единого каркаса разработки приложений
- •Темы, связанные применением формальных методов перечень тем
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи краткое описание каждой темы
- •Тема 1. Сравнительный анализ систем верификации
- •Тема 2. Формализация протоколов связи
- •10.Литература
- •11.Приложения
- •Шаблон для одностраничного экрана проекта
- •Примерная структура положения о работе и тз
- •Примерная форма еженедельного отчета
- •Примерная форма презентации на ежемесячном операционном обзоре
- •12.Указатель
Планирование проекта
План разработки (Software Project Management Plan – SPMP) – это проигрывание будущих работ и инструмент для определения роли каждого участника. Он увязывает отдельные части разработки вместе, служит точкой отсчета для изменений и помогает понять, когда цель проекта достигнута, и проект может быть закончен. Этот план строится на основании структуры разбиения и оценок трудозатрат на исполнения выявленных блоков работы.
Общая схема предварительного планирования программного проекта представлена на Рис. 15. Она детализирует переход от исходных начальных требований к будущему программному продукту, полученных от заказчика, к начальной версии плана управления проектом в виде дорожной карты из ряда последовательных шагов.
Рис. 15. Дорожная карта для планирования проекта
Получив начальные требования, например, в форме запроса на разработку предложений (Request For Proposal – RFP), исполнитель проводит переговоры с заказчиком, результатом чего являются уже обговоренные начальные требования, подлежащие реализации в проекте и достаточные для разработки структуры разбиения работ. На следующем шаге эти требования уточняются и разносятся по подсистемам будущего продукта. Таким образом, на выходе этого шага появляется структура разбиения работ, которая служит основой для дальнейшего планирования. По структуре разбиения работ и количеству требований, подлежащих реализации в каждом компоненте будущего продукта оценивается объем кода, подлежащий разработке в тысячах строк программного текста KLOC или в их ассемблерном эквиваленте KAELOC. Затем, исходя из полученных оценок и трудоемкости разработки тысячи строк кода (с поправками на сложность, опыт исполнителей и другие факторы), полученной из исторической базы данных исполнителя, оцениваются необходимые трудозатраты в человеко-месяцах и для некоторых проектов – необходимые дополнительные ресурсы по машинному времени. На основании этих данных строится ожидаемый график исполнения работ, учитывающих полученные оценки трудозатрат и взаимосвязи между компонентами в структуре разбиения работ. Заключительным шагом является принятие решения о том, устраивает ли полученный график работ как заказчика, так и исполнителя, и если это не так, то происходит возват к одному из предыдущих шагов для внесения необходимых поправок.
Все получаемые исходные данные и промежуточные оценки вместе с их обоснованием накапливаются в базе данных проекта для последующего хранения и анализа при принятии последующих решений.
Модель cocomo для оценки трудозатрат в проекте
Для оценки трудозатрат в программном проекте предложен ряд моделей, наиболее известной из которых является модель издержки затрат COCOMO – COnstructive COst MOdel, предложенная Боэмом. В своем базовом варианте эта модель различает всего три типа программных проектов:
Органический (organic): маленькая команда с опытом и нежесткими требованиями
Полуразделенный (semi-detached): средний размер команды, смешанные опыт и требования
Встроенный (embedded): много жестких требований, что особенно характерно для встроенных применений
Модель COCOMO предлагает следующие три формулы для расчета важнейших плановых показателей:
Где коэффициенты ab, bb, cb и db разные для разных типов проектов и определены усреднением по очень большой выборке конкретных программных проектов, выполненных в разное время разными разработчиками:
Табл. 6. Коэффициенты базовой модели COCOMO
Тип проекта |
ab |
bb |
cb |
db |
Органический |
2,4 |
1,05 |
2,5 |
0,38 |
Полуразделенный |
3,0 |
1,12 |
2,5 |
0,35 |
Встроенный |
4,6 |
1,20 |
2,5 |
0,32 |
Таким образом, единственными входными параметрами для получения оценок трудоемкости, срока разработки и числа разработчиков в этой модели являются тип проекта и объем кода, который надо создать. Накапливая данные по фактическим трудозатратам в данной организации, можно совершенствовать эту модель, уточняя значения ее коэффициентов.
В начале 2000-х готов была предложена более развитая модель COCOMO II, учитывающая значительно большее число характеристик программного проекта и в силу этого дающая более точные оценки. На базе этой модели в университете Южной Калифорнии (США) разработан инструмент COCOMO II для свободного использования, доступный по ссылке http://csse.usc.edu/tools/COCOMOII.php .
Эта модель наряду с общим размером разрабатываемого кода, учитывает объем повторно используемого и модифицированного кода в этом общем объеме, а также показатели повторно используемого кода, необходимые для его интеграции и «усвоения», выраженные в условных процентах. Для модифицируемого кода, кроме этих двух показателей, учитываются еще процент изменений в проекте кода, в самом коде и показатель затрат на его понимание для внесения этих изменений.
Новой группой входных данных для оценки трудоемкости, по сравнению с базовой моделью COCOMO, являются так называемые масштабируемые показатели программного обеспечения, подлежащего разработке. В так называемой промежуточной модели (intermediate model) COCOMO II их значения выбираются по 6-ти бальной шкале: очень низкий, низкий, номинальный, высокий, очень высокий и сверхвысокий. В виде числовых множителей эти значения входят в общую формулу для трудоемкости как сомножители поправочного коэффициента EAF (effort adjustment factor), который изменяется в диапазоне от 0,9 до 1,4:
где коэффициенты ai и bi те же, что и ab и bb, в базовой модели, за исключением органического: ai = 3,2 и встроенного: ai = 2,8 проектов. Формулы для оценки срока разработки и числа разработчиков и соответствующие коэффициенты ci и di в промежуточной модели те же, что и cb и db в базовой модели. Значения новых 15 показателей, влияющих на стоимость разработки, приведены в Табл. 7.
Табл. 7. Стоимостные атрибуты разработки в модели COCOMO II
Название атрибута |
очень низкий |
низкий |
номи-нальный |
высокий |
очень высокий |
сверх-высокий |
Атрибуты продукта – Product attributes |
||||||
Требуемая надежность ПО – Required software reliability |
0,75 |
0,88 |
1,00 |
1,15 |
1,40 |
|
Размер базы данных приложения – Size of application database |
|
0,94 |
1,00 |
1,08 |
1,16 |
|
Сложность продукта – Complexity of the product |
0,70 |
0,85 |
1,00 |
1,15 |
1,30 |
1,65 |
Атрибуты команды разработчиков – Personnel attributes |
||||||
Способности аналитика – Analyst capability |
1,46 |
1,19 |
1,00 |
0,86 |
0,71 |
|
Способности программиста – Software engineer capability |
1,42 |
1,17 |
1,00 |
0,86 |
0,70 |
|
Опыт разработки приложений – Applications experience |
1,29 |
1,13 |
1,00 |
0,91 |
0,82 |
|
Опыт работы на данном языке программирования – Programming language experience |
1,14 |
1,07 |
1,00 |
0,95 |
|
|
Опыт работы с витруальной машиной – Virtual machine experience |
1,21 |
1,10 |
1,00 |
0,90 |
|
|
Атрибуты платформы – Hardware attributes |
||||||
Ограничения времени исполнения – Run-time performance constraints |
|
|
1,00 |
1,11 |
1,30 |
1,66 |
Ограничения по размеру памяти – Memory constraints |
|
|
1,00 |
1,06 |
1,21 |
1,56 |
Изменчивость среды виртуальной машины – Volatility of the virtual machine environment |
|
0,87 |
1,00 |
1,15 |
1,30 |
|
Требуемое время оборачива-емости – Required turnabout time |
|
0,87 |
1,00 |
1,07 |
1,15 |
|
Атрибуты проекта – Project attributes |
||||||
Использование программных инструментальных средств – Use of software tools |
1,24 |
1,10 |
1,00 |
0,91 |
0,83 |
|
Применение методов технологии программирования – Application of software engineering methods |
1,24 |
1,10 |
1,00 |
0,91 |
0,82 |
|
Выдерживание требуемого графика разработки – Required development schedule |
1,23 |
1,08 |
1,00 |
1,04 |
1,10 |
|
В значении «Номинальный» все эти коэффициенты равны 1 и отклоняются в ту или иную сторону для понижающих или повышающих оценок.
В так называемой продвинутой модели (advanced model), используемой в инструменте COCOMO II, дополнительно учитываются следующие показатели:
Атрибуты продукта – Product attributes
Разработка повторно используемого кода – Developed for reusability;
Документация отвечает потребностям жизненного цикла – Documentation match to life cycle needs;
Атрибуты команды разработчиков – Personnel attributes
Опыт совместной работы данного коллектива – Personnel continuity;
Опыт работы с данной платформой – Platform experience;
Атрибуты проекта – Project attributes
Ведение разработки на нескольких площадках – Multi-site development.
Эта модель также оценивает распределение трудозатрат по фазам проекта. На Рис. 16 приведен расчет для проекта на 100 KLOC, из которых 30 KLOC использованы повторно, причем 5 KLOC подверглись модификации.
Software Development (Elaboration and Construction) – Разработка ПО ( фазы уточнения ТЗ и создания продукта)
Effort = 481.1 Person-months Schedule = 28.2 Months Cost = $1202750 Total Equivalent Size = 103080 SLOC
Acquisition Phase Distribution
|
Acquisition – получение продукта с нуля Inception – начальная фаза, запуск проекта Elaboration – уточнение и проработка ТЗ Construction – собственно создание продукта Transition – переход продукта к заказчику Software Effort Distribution for RUP/MBASE (Person-Months)
|
Рис. 16. Пример расчета трудоемкости по модели COCOMO II
Модель также строит график потребности проекта в разработчиках, пример такого графика для того же проекта приведен на Рис. 17.
Рис. 17. Пример потребности проекта в разработчиках в модели COCOMO II
В продвинутой модели COCOMO II, кроме того, наряду с показателями стоимости, учитываются еще и показатели масштаба ПО (Software Scale Drivers), значения которых также задаются по 6-ти бальной шкале, и к которым относятся:
Наличие опыта аналогичных разработок – Precedentness;
Гибкость самой разработки – Development flexibility;
Возможность принимать решения по архитектуре и рискам – Architectural/risk resolution;
Сплоченность команды разработчиков – Team cohesion;
Уровень зрелости процесса разработки – Process maturity.
Разумеется, все оценки являются приблизительными и должны анализироваться и корректироваться в ходе проекта по мере того, как появляются фактические данные по трудозатратам на отдельных этапах или подэтапах разработки.