Info

Что такое COCOMO?

Constructive Cost Model (конструктивная модель стоимости) – это способ оценки стоимости разработки программного обеспечения, разработанная Барри Боэмом.

Базовый уровень рассчитывает трудоемкость и стоимость разработки как функцию от размера программы. Размер выражается в оценочных тысячах строк кода KLoC - kilo lines of code.

COCOMO применим к трем классам проектов разработки ПО:

Базовый уровень (Basic COCOMO)

Модель этого уровня – двухпараметрическая. В качестве параметров выступают тип проекта и объем программы (число строк кода).

Уравнения базового уровня модели имеют вид:

PM = ai × (SIZE)bi,
TM = ci × (PM)di, где

PM (People×Month) – трудоемкость (чел.×мес.);

TM (Time at Month) – время разработки в календарных месяцах;

SIZE – объем программного продукта в тысячах строк исходного текста (Kilo of Source Line of Code – KSLOC).

Kоэффициенты ai, bi, ci и di выбираются из таблицы ниже:

Тип проектаabcd
Распространенный2,41,052,50,38
Полунезависимый3,01,122,50,32
Встроенный3,61,22,50,32

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

Промежуточный уровень (Intermediate COCOMO)

На этом уровне базовая модель уточнена за счет ввода дополнительных 15 «атрибутов стоимости» (или факторов затрат) Cost Drivers (CDk), которые сгруппированы по четырем категориям:

Характеристики продукта (Product Аttributes):

Характеристики аппаратного обеспечения (Hardware Аttributes):

Характеристики персонала (Personnel Аttributes):

Характеристики проекта (Project Аttributes):

Значения каждого атрибута выбирается из таблицы ниже в соответствии с его степенью значимости (рейтингом) в конкретном проекте

Атрибуты стоимости, CDk Рейтинг

ХарактеристикиОчень низкийНизкийСреднийВысокийОчень высокийКритический
1. Требуемая надежность ПО0,750,881,001,151,40n/a
2. Размер БД приложенияn/a0,941,001,081,16n/a
3. Сложность продукта0,700,851,001,151,301,65
4. Ограничения быстродействия при выполнении программыn/an/a1,001,111,301,66
5. Ограничения памятиn/an/a1,001,061,211,56
6. Неустойчивость окружения виртуальной машиныn/a0,871,001,151,30n/a
7. Требуемое время восстановленияn/a0,871,001,071,15n/a
8. Аналитические способности1,461,191,000,860,71n/a
9. Опыт разработки1,291,131,000,910,82n/a
10. Способности к разработке ПО1,421,171,000,860,70n/a
11. Опыт использования виртуальных машин1,211,101,000,90n/an/a
12. Опыт разработки на языках программирования1,141,071,000,95n/an/a
13. Применение методов разработки ПО1,241,101,000,910,82n/a
14. Использование инструментария разработки ПО1,241,101,000,910,83n/a
15. Требования соблюдения графика разработки1,231,081,001,041,10n/a

Формула промежуточного уровня модели имеет вид:

PM = EAF × ai × (SIZE)bi, где

PM – трудоемкость (чел.×мес.);

SIZE – объем программного продукта в тысячах строк исходного текста (Kilo of Source Line of Code – KSLOC);

EAF - (Effort Adjustment Factor) – произведение выбранных атрибутов стоимости.

Коэффициенты модели ai и bi выбираются из таблицы ниже:

Тип проекта, iaibi
Распространенный3,21,05
Полунезависимый3,01,12
Встроенный2,81,2

Время разработки рассчитывается по той же формуле, что и для базовой модели.

COCOMO II Methodology

В 1997 методика была усовершенствована и получила название COCOMO II. Калибровка параметров производилась уже по 161 проекту разработки ПО. Различаются две стадии оценки проекта: предварительная оценка на начальной фазе (Early Design) и детальная оценка после проработки архитектуры (Post Architecture).

Формула оценки трудоемкости проекта в чел.×мес. имеет вид:

E = B + 0,01 × Σ5j=1 SFj, где

Факторы масштаба (Scale Factors)

В методике COCOMO II используются пять факторов масштаба SFj, описание которых приведено в табице ниже:

Описание уровней значимости факторов масштаба

SFjОписаниеОчень низкийНизкийСреднийВысокийОчень высокийКритический
1PREC. PrecedentednessПрецедентность, наличие опыта аналогичных разработокопыт в продукте и платформе отсутствуетпродукт и платформа немного знакомынекоторый опыт в продукте и платформе присутствуетпродукт и платформа в основном известныпродукт и платформа в большой степени знакомыпродукт и платформа полностью знакомы
2FLEX. Development FlexibilityГибкость процесса разработкипроцесс строго детерминировандопускаются некоторые компромиссызначительная жесткость процессаотносительная жесткость процессанезначительная жесткость процессаопределены только общие цели
3RESL. Architecture / Risk ResolutionАрхитектура и разрешение рисковриски известны / проанализированы на 20%риски известны / проанализированы на 40%риски известны / проанализированы на 60%риски известны / проанализированы на 75%риски известны / проанализированы на 90%риски разрешены на 100%
4TEAM. Team CohesionСработанность командыформальные взаимодействиятяжелое взаимодействие до некоторой степеничаще всего коллективная работав основном коллективная работавысокая степень взаимодействияполное доверие, взаимозаменяемость и взаимопомощь
5PMAT. Process MaturityЗрелость процессовCMM Уровень 1 (ниже среднего)CMM Уровень 1 (выше среднего)CMM Уровень 2CMM Уровень 3CMM Уровень 4CMM Уровень 5

Примечание. СММ (Capability Maturity Model) — пятиуровневая модель зрелости возможностей компании-разработчика ПО, предложенная SEI (Software Engineering Institute, США).

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

Значение фактора масштаба в зависимости от оценки его уровня

ФакторОценка уровня фактора масштаба, SFjVery LowLowNominalHighVery HighExtra High
1PRECПрецедентность, наличие опыта аналогичных разработок6,204,963,722,481,240,00
2FLEXГибкость процесса разработки5,074,053,042,031,010,00
3RESLАрхитектура и разрешение рисков7,075,654,242,831,410,00
3TEAMСработанность команды5,484,383,292,191,100,00
3PMATЗрелость процессов7,806,244,683,121,560,00

Множители трудоемкости (Effort Multipliers)

Количество и значения множителей трудоёмкости отличаются для разных стадий оценки проекта.

1. Стадия предварительной оценки трудоемкости программного проекта (Early Design)

Для этой оценки необходимо оценить для проекта уровень семи множителей трудоемкости EMj:

Значения множителей трудоемкости в зависимости от их уровня приведены в таблице ниже:

Множители трудоемкости (Effort Multipliers)

1. Стадия предварительной оценки трудоемкости программного проекта (Early Design)

Для этой оценки необходимо оценить для проекта уровень семи множителей трудоемкости EMj:

Значения множителей трудоемкости в зависимости от оценки их уровня (Early Design)

Множитель трудоёмкости, EMiОценка уровня множителя трудоемкостиExtra LowVery LowLowNominalHighVery HighExtra High
1PERSКвалификация персонала2,121,621,261,000,830,630,50
2PREXОпыт персонала1,591,331,221,000,870,740,62
3RCPXСложность и надежность продукта0,490,600,831,001,331,912,72
4RUSEРазработка для повторного использованияn/an/a0,951,001,071,151,24
5PDIFСложность платформы разработкиn/an/a0,871,001,291,812,61
6FCILОборудование1,431,301,101,000,870,730,62
7SCEDТребуемое выполнение графика работn/a1,431,141,001,00n/an/a

Примечание: n/a (not available) – данные отсутствуют, т.е. соответствующий уровень не оценивается

2. Стадия детальной оценки после проработки архитектуры (Post Architecture)

Для этой оценки необходимо оценить для проекта уровень семнадцати множителей трудоемкости EMj:

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

Значения множителей трудоемкости в зависимости от оценки их уровня (Post Architecture)

DecryptionEffort Multiplier, EMJVery LowLowNominalHighVery HighExtra High
1ACAPAnalyst Capability1,421,291,000,850,71n/a
2AEXPApplications Experience1,221,101,000,880,81n/a
3PCAPProgrammer Capability1,341,151,000,880,76n/a
4PCONPersonnel Continuity1,291,121,000,900,81n/a
5PEXPPlatform Experience1,191,091,000,910,85n/a
6LTEXLanguage and Tool Experience1,201,091,000,910,84n/a
7RELYRequired Software Reliability0,840,921,001,101,26n/a
8DATADatabase Sizen/a0,231,001,141,28n/a
9CPLXSoftware Product Complexity0,730,871,001,171,341,74
10RUSERequired Reusabilityn/a0,951,001,071,151,24
11DOCUDocumentation Match to Life-Cycle Needs0,810,911,001,111,23n/a
12TIMEExecution Time Constraintn/an/a1,001,111,291,63
13STORMain Storage Constraintn/an/a1,001,051,171,46
14PVOLPlatform Volatilityn/a0,871,001,151,30n/a
15TOOLUse of Software Tools1,171,091,000,900,78n/a
16SITEMultisite Development1,221,091,000,930,860,80
17SCEDRequired Development Schedule1,431,141,001,001,00n/a

Примечание: n/a (not available) – данные отсутствуют, т.е. соответствующий уровень не оценивается

Оценка длительности проекта

Время разработки проекта TM в методике COCOMO II для обоих уровней рассчитывается по формуле:

TM = SCED × C × (OMNS)D+0,2×(E-B), где C = 3,67; D = 0,28;

PMNS – рассчитанная трудоемкость проекта без учета множителя SCED, определяющего сжатие расписания.

Остальные параметры определены выше.