Материал: DO178 Учебное пособие_в183

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
      1. Планирование проекта

План разработки (Software Project Management Plan – SPMP) – это проигрывание будущих работ и инструмент для определения роли каждого участника. Он увязывает отдельные части разработки вместе, служит точкой отсчета для изменений и помогает понять, когда цель проекта достигнута, и проект может быть закончен. Этот план строится на основании структуры разбиения и оценок трудозатрат на исполнения выявленных блоков работы.

Общая схема предварительного планирования программного проекта представлена на Рис. 15. Она детализирует переход от исходных начальных требований к будущему программному продукту, полученных от заказчика, к начальной версии плана управления проектом в виде дорожной карты из ряда последовательных шагов.

Рис. 15. Дорожная карта для планирования проекта

Получив начальные требования, например, в форме запроса на разработку предложений (Request For Proposal – RFP), исполнитель проводит переговоры с заказчиком, результатом чего являются уже обговоренные начальные требования, подлежащие реализации в проекте и достаточные для разработки структуры разбиения работ. На следующем шаге эти требования уточняются и разносятся по подсистемам будущего продукта. Таким образом, на выходе этого шага появляется структура разбиения работ, которая служит основой для дальнейшего планирования. По структуре разбиения работ и количеству требований, подлежащих реализации в каждом компоненте будущего продукта оценивается объем кода, подлежащий разработке в тысячах строк программного текста KLOC или в их ассемблерном эквиваленте KAELOC. Затем, исходя из полученных оценок и трудоемкости разработки тысячи строк кода (с поправками на сложность, опыт исполнителей и другие факторы), полученной из исторической базы данных исполнителя, оцениваются необходимые трудозатраты в человеко-месяцах и для некоторых проектов – необходимые дополнительные ресурсы по машинному времени. На основании этих данных строится ожидаемый график исполнения работ, учитывающих полученные оценки трудозатрат и взаимосвязи между компонентами в структуре разбиения работ. Заключительным шагом является принятие решения о том, устраивает ли полученный график работ как заказчика, так и исполнителя, и если это не так, то происходит возват к одному из предыдущих шагов для внесения необходимых поправок.

Все получаемые исходные данные и промежуточные оценки вместе с их обоснованием накапливаются в базе данных проекта для последующего хранения и анализа при принятии последующих решений.

      1. Модель 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

Phase

Effort (Person-Months)

Sched-ule (Months)

Ave-rage Staff

Cost (Dollars)

Inception

28.1

3.5

8.2

$72165

Elaboration

115.5

10.6

10.9

$288660

Construction

365.6

17.6

20.8

$914090

Transition

57.7

3.5

16.4

$144330

Acquisition – получение продукта с нуля

Inception – начальная фаза, запуск проекта

Elaboration – уточнение и проработка ТЗ

Construction – собственно создание продукта

Transition – переход продукта к заказчику

Software Effort Distribution for RUP/MBASE (Person-Months)

Phase/Activity

Incep-tion

Elabora-tion

Construc-tion

Transi-tion

Management

4.0

13.9

36.6

8.1

Environment/CM

2.1

9.2

18.3

2.9

Requirements

11.0

20.8

29.3

2.3

Design

5.5

41.6

58.5

2.3

Implementation

2.3

15.0

124.3

11.0

Assessment

2.3

11.5

87.8

13.8

Deployment

0.9

3.5

11.0

17.3

Рис. 16. Пример расчета трудоемкости по модели COCOMO II

Модель также строит график потребности проекта в разработчиках, пример такого графика для того же проекта приведен на Рис. 17.

Рис. 17. Пример потребности проекта в разработчиках в модели COCOMO II

В продвинутой модели COCOMO II, кроме того, наряду с показателями стоимости, учитываются еще и показатели масштаба ПО (Software Scale Drivers), значения которых также задаются по 6-ти бальной шкале, и к которым относятся:

  • Наличие опыта аналогичных разработок – Precedentness;

  • Гибкость самой разработки – Development flexibility;

  • Возможность принимать решения по архитектуре и рискам – Architectural/risk resolution;

  • Сплоченность команды разработчиков – Team cohesion;

  • Уровень зрелости процесса разработки – Process maturity.

Разумеется, все оценки являются приблизительными и должны анализироваться и корректироваться в ходе проекта по мере того, как появляются фактические данные по трудозатратам на отдельных этапах или подэтапах разработки.

      1. Модель slim для оценки трудозатрат в проекте

Модель SLIM (Software LIfe Management – управление жизненным циклом программного продукта) для получения оценок предложил Путнэм (Lawrence H. Putnam) еще в конце 1970-х годов [20]. Эта модель строится на основании исторической БД по выполненным в данной организации проектам и поэтому полнее учитывает ее специфику. Впоследствии модель SLIM несколько раз уточнялась на основании данных от практических разработок и в современном виде определяется следующим образом.

Вводится главное уравнение для программного продукта, связывающее трудоемкость и срок разработки с производительностью, размером продукта и некоторым масштабирующим множителем B, зависящим от этого размера:

Очевидным преобразованием из этого уравнения можно получить выражение для производительности через размер кода, трудоемкость, срок и множитель B:

Теперь задача сводится к выяснению значения этой производительности. Если предположить, что в стабильном коллективе разработчиков, работающих по налаженному технологическому процессу, производительность практически не меняется от проекта к проекту, то можно выписать n-1 уравнений для уже выполненных проектов с номерами от 1 до n:

Подставляя в эти уравнения значения Размер_кодаi, Срокi и Трудоемкостьi из исторической базы данных уже выполненных n проектов, получаем значения множителя B в n точках Размер_кодаi (1≤i≤n), по которым его можно аппроксимировать для нового n+1 проекта. Одновременно получаем и значение производительности, после чего по уже известным значениям B и Производительность получаем уравнение, связывающее оценки значений Срок и Трудоемкость для нового проекта.

Рис. 18. Экспоненциальная зависимость между сроком и трудоемкостью

По данным от наблюдений за более чем 7000 проектов, выполненных Путнэмом к 2006 г., эта зависимость обратно экспоненциальная: трудоемкость экспоненциально убывает при увеличении срока разработки и, наоборот, возрастает при уменьшении этого срока (Рис. 18), что хорошо согласуется с предложенной им моделью SLIM.

      1. Разработка спецификации требований

Спецификация требований (Requirements Specification – RS) обычно является первой плановой поставкой вместе с уточненным планом разработки; в ней исходные требования, в том или ином виде содержащиеся уже в SOW или ТЗ, выражены в достаточно объективной и точной форме, допускающей их реализуемость и тестируемость. Поскольку на основании этой спецификации уточняются трудозатраты на разработку и соответственно, уточняется (изменяется) план, то оба эти документа подлежат обязательному утверждению заказчиком.

Сбором и анализом требований разработчикам приходится заниматься в течение практически всего жизненного цикла проекта, хотя основная нагрузка приходится на его начало. Данные по требованиям собираются из разных источников путем опросов, интервью, работы целевых групп, и других методик. Чтобы удовлетворить заказчика продукт или процесс должен ответить его ожиданиям или превзойти их. Таким образом, во время общения с заказчиком важно выявить все его ожидания.

Источник: https://studfile.net/preview/16431019/