Что такое COCOMO?
Constructive Cost Model (конструктивная модель стоимости) – это способ оценки стоимости разработки программного обеспечения, разработанная Барри Боэмом.
Базовый уровень рассчитывает трудоемкость и стоимость разработки как функцию от размера программы. Размер выражается в оценочных тысячах строк кода KLoC
- kilo lines of code.
COCOMO применим к трем классам проектов разработки ПО:
- Органический (Organic mode) – маленькие команды с хорошим опытом работы и не жесткими требованиями к разработке
- Полуразделенный вид (Intermediate / Semi-detached mode) – средние по размеру команды со смешанным опытом разработки и со смешанными требованиями (как жесткими, так и нет).
- Встроенный вид (Intered / Embedded mode) – разрабатываются с учетом множества жестких ограничений (по аппаратному, программному, операционному обеспечению и т.д.)
Базовый уровень (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 выбираются из таблицы ниже:
Тип проекта | a | b | c | d |
---|
Распространенный | 2,4 | 1,05 | 2,5 | 0,38 |
Полунезависимый | 3,0 | 1,12 | 2,5 | 0,32 |
Встроенный | 3,6 | 1,2 | 2,5 | 0,32 |
Модель этого уровня подходит для ранней быстрой приблизительной оценки затрат, но точность её весьма низка, т.к. не учитываются такие факторы, как квалификация персонала, характеристики оборудования, опыт применения современных методов разработки программного обеспечения и современных инструментальных сред разработки и др.
Промежуточный уровень (Intermediate COCOMO)
На этом уровне базовая модель уточнена за счет ввода дополнительных 15 «атрибутов стоимости» (или факторов затрат) Cost Drivers (CDk), которые сгруппированы по четырем категориям:
Характеристики продукта (Product Аttributes):
- Требуемая надежность ПО (Required Software Reliability);
- Размер БД приложения (Size of Application Database);
- Cложность продукта (Complexity of the Product);
Характеристики аппаратного обеспечения (Hardware Аttributes):
- Ограничения быстродействия при выполнении программы (Run-Time Performance Constraints);
- Ограничения памяти (Memory Constraints);
- Неустойчивость окружения виртуальной машины (Volatility of the Virtual Machine Environment);
- Требуемое время восстановления (Required Turnabout Time);
Характеристики персонала (Personnel Аttributes):
- Аналитические способности (Analyst Capability);
- Способности к разработке ПО (Software Engineer Capability);
- Опыт разработки (Applications Experience);
- Опыт использования виртуальных машин (Virtual Machine Experience);
- Опыт разработки на языках программирования (Programming Language Experience);
Характеристики проекта (Project Аttributes):
- Использование инструментария разработки ПО (Use of Software Tools);
- Применение методов разработки ПО (Application of Software Engineering Methods);
- Требования соблюдения графика разработки (Required Development Schedule).
Значения каждого атрибута выбирается из таблицы ниже в соответствии с его степенью значимости (рейтингом) в конкретном проекте
Атрибуты стоимости, CDk Рейтинг
Характеристики | Очень низкий | Низкий | Средний | Высокий | Очень высокий | Критический |
---|
1. Требуемая надежность ПО | 0,75 | 0,88 | 1,00 | 1,15 | 1,40 | n/a |
2. Размер БД приложения | n/a | 0,94 | 1,00 | 1,08 | 1,16 | n/a |
3. Сложность продукта | 0,70 | 0,85 | 1,00 | 1,15 | 1,30 | 1,65 |
4. Ограничения быстродействия при выполнении программы | n/a | n/a | 1,00 | 1,11 | 1,30 | 1,66 |
5. Ограничения памяти | n/a | n/a | 1,00 | 1,06 | 1,21 | 1,56 |
6. Неустойчивость окружения виртуальной машины | n/a | 0,87 | 1,00 | 1,15 | 1,30 | n/a |
7. Требуемое время восстановления | n/a | 0,87 | 1,00 | 1,07 | 1,15 | n/a |
8. Аналитические способности | 1,46 | 1,19 | 1,00 | 0,86 | 0,71 | n/a |
9. Опыт разработки | 1,29 | 1,13 | 1,00 | 0,91 | 0,82 | n/a |
10. Способности к разработке ПО | 1,42 | 1,17 | 1,00 | 0,86 | 0,70 | n/a |
11. Опыт использования виртуальных машин | 1,21 | 1,10 | 1,00 | 0,90 | n/a | n/a |
12. Опыт разработки на языках программирования | 1,14 | 1,07 | 1,00 | 0,95 | n/a | n/a |
13. Применение методов разработки ПО | 1,24 | 1,10 | 1,00 | 0,91 | 0,82 | n/a |
14. Использование инструментария разработки ПО | 1,24 | 1,10 | 1,00 | 0,91 | 0,83 | n/a |
15. Требования соблюдения графика разработки | 1,23 | 1,08 | 1,00 | 1,04 | 1,10 | n/a |
Формула промежуточного уровня модели имеет вид:
PM = EAF × ai × (SIZE)bi
, гдеPM – трудоемкость (чел.×мес.);
SIZE – объем программного продукта в тысячах строк исходного текста (Kilo of Source Line of Code – KSLOC);
EAF - (Effort Adjustment Factor) – произведение выбранных атрибутов стоимости.
Коэффициенты модели ai и bi выбираются из таблицы ниже:
Тип проекта, i | ai | bi |
---|
Распространенный | 3,2 | 1,05 |
Полунезависимый | 3,0 | 1,12 |
Встроенный | 2,8 | 1,2 |
Время разработки рассчитывается по той же формуле, что и для базовой модели.
COCOMO II Methodology
В 1997 методика была усовершенствована и получила название COCOMO II. Калибровка параметров производилась уже по 161 проекту разработки ПО. Различаются две стадии оценки проекта: предварительная оценка на начальной фазе (Early Design) и детальная оценка после проработки архитектуры (Post Architecture).
Формула оценки трудоемкости проекта в чел.×мес. имеет вид:
E = B + 0,01 × Σ5j=1 SFj
, где
- B = 0,91; A = 2,94 для предварительной оценки; A = 2,45 для детальной оценки;
- SFj – факторы масштаба (Scale Factors)
- SIZE – объем программного продукта в тысячах строк исходного текста (KSLOC – Kilo of Source Line of Code);
- EMj – множители трудоемкости (Effort Multiplier). n=7 – для предварительной оценки (табл. 6), n=17 – для детальной оценки;
- EAF (Effort Adjustment Factor) – произведение выбранных множителей трудоемкости:
EAF = Пnk=1 EMk
Факторы масштаба (Scale Factors)
В методике COCOMO II используются пять факторов масштаба SFj, описание которых приведено в табице ниже:
Описание уровней значимости факторов масштаба
№ | SFj | Описание | Очень низкий | Низкий | Средний | Высокий | Очень высокий | Критический |
---|
1 | PREC. Precedentedness | Прецедентность, наличие опыта аналогичных разработок | опыт в продукте и платформе отсутствует | продукт и платформа немного знакомы | некоторый опыт в продукте и платформе присутствует | продукт и платформа в основном известны | продукт и платформа в большой степени знакомы | продукт и платформа полностью знакомы |
2 | FLEX. Development Flexibility | Гибкость процесса разработки | процесс строго детерминирован | допускаются некоторые компромиссы | значительная жесткость процесса | относительная жесткость процесса | незначительная жесткость процесса | определены только общие цели |
3 | RESL. Architecture / Risk Resolution | Архитектура и разрешение рисков | риски известны / проанализированы на 20% | риски известны / проанализированы на 40% | риски известны / проанализированы на 60% | риски известны / проанализированы на 75% | риски известны / проанализированы на 90% | риски разрешены на 100% |
4 | TEAM. Team Cohesion | Сработанность команды | формальные взаимодействия | тяжелое взаимодействие до некоторой степени | чаще всего коллективная работа | в основном коллективная работа | высокая степень взаимодействия | полное доверие, взаимозаменяемость и взаимопомощь |
5 | PMAT. Process Maturity | Зрелость процессов | CMM Уровень 1 (ниже среднего) | CMM Уровень 1 (выше среднего) | CMM Уровень 2 | CMM Уровень 3 | CMM Уровень 4 | CMM Уровень 5 |
Примечание. СММ (Capability Maturity Model) — пятиуровневая модель зрелости возможностей компании-разработчика ПО, предложенная SEI (Software Engineering Institute, США).
Эти факторы применяются на обеих стадиях оценки проекта. Числовые значения фактора масштаба в зависимости от оценки его уровня, приведены в таблице ниже:
Значение фактора масштаба в зависимости от оценки его уровня
№ | Фактор | Оценка уровня фактора масштаба, SFj | Very Low | Low | Nominal | High | Very High | Extra High |
---|
1 | PREC | Прецедентность, наличие опыта аналогичных разработок | 6,20 | 4,96 | 3,72 | 2,48 | 1,24 | 0,00 |
2 | FLEX | Гибкость процесса разработки | 5,07 | 4,05 | 3,04 | 2,03 | 1,01 | 0,00 |
3 | RESL | Архитектура и разрешение рисков | 7,07 | 5,65 | 4,24 | 2,83 | 1,41 | 0,00 |
3 | TEAM | Сработанность команды | 5,48 | 4,38 | 3,29 | 2,19 | 1,10 | 0,00 |
3 | PMAT | Зрелость процессов | 7,80 | 6,24 | 4,68 | 3,12 | 1,56 | 0,00 |
Множители трудоемкости (Effort Multipliers)
Количество и значения множителей трудоёмкости отличаются для разных стадий оценки проекта.
1. Стадия предварительной оценки трудоемкости программного проекта (Early Design)
Для этой оценки необходимо оценить для проекта уровень семи множителей трудоемкости EMj:
- Параметры персонала:
- 1. PERS (Personnel Capability) – квалификация персонала (Extra Low – аналитики и программисты имеют низшую квалификацию, текучесть больше 45%; Extra High – аналитики и программисты имеют высшую квалификацию, текучесть меньше 4%);
- 2. PREX (Personnel Experience) – опыт персонала (Extra Low – новое приложение, инструменты и платформа; Extra High – приложение, инструменты и платформа хорошо известны);
- Параметры продукта:
- 3. RCPX (Product Reliability and Complexity) – сложность и надежность продукта (Extra Low – продукт простой, специальных требований по надежности нет, БД маленькая, документация не требуется; Extra High – продукт очень сложный, требования по надежности жесткие, БД сверхбольшая, документация требуется в полном объеме);
- 4. RUSE (Developed for Reusability) – разработка для повторного использования (Low – не требуется; Extra High – предполагается переиспользование в других продуктах);
- Параметры платформы:
- 5. PDIF (Platform Difficulty) – сложность платформы разработки (Extra Low – специальные ограничения по памяти и быстродействию отсутствуют, платформа стабильна; Extra High – жесткие ограничения по памяти и быстродействию, платформа нестабильна);
- Параметры проекта:
- 6. FCIL (Facilities) – оборудование (Extra Low – инструменты простейшие, коммуникации затруднены; Extra High – интегрированные средства поддержки жизненного цикла, интерактивные мультимедиа коммуникации);
- 7. SCED (Required Development Schedule) – требуемое выполнение графика работ (Very Low – 75% от номинальной длительности; Very High – 160% от номинальной длительности).
Значения множителей трудоемкости в зависимости от их уровня приведены в таблице ниже:
Множители трудоемкости (Effort Multipliers)
1. Стадия предварительной оценки трудоемкости программного проекта (Early Design)
Для этой оценки необходимо оценить для проекта уровень семи множителей трудоемкости EMj:
Значения множителей трудоемкости в зависимости от оценки их уровня (Early Design)
№ | Множитель трудоёмкости, EMi | Оценка уровня множителя трудоемкости | Extra Low | Very Low | Low | Nominal | High | Very High | Extra High |
---|
1 | PERS | Квалификация персонала | 2,12 | 1,62 | 1,26 | 1,00 | 0,83 | 0,63 | 0,50 |
2 | PREX | Опыт персонала | 1,59 | 1,33 | 1,22 | 1,00 | 0,87 | 0,74 | 0,62 |
3 | RCPX | Сложность и надежность продукта | 0,49 | 0,60 | 0,83 | 1,00 | 1,33 | 1,91 | 2,72 |
4 | RUSE | Разработка для повторного использования | n/a | n/a | 0,95 | 1,00 | 1,07 | 1,15 | 1,24 |
5 | PDIF | Сложность платформы разработки | n/a | n/a | 0,87 | 1,00 | 1,29 | 1,81 | 2,61 |
6 | FCIL | Оборудование | 1,43 | 1,30 | 1,10 | 1,00 | 0,87 | 0,73 | 0,62 |
7 | SCED | Требуемое выполнение графика работ | n/a | 1,43 | 1,14 | 1,00 | 1,00 | n/a | n/a |
Примечание: n/a (not available) – данные отсутствуют, т.е. соответствующий уровень не оценивается
2. Стадия детальной оценки после проработки архитектуры (Post Architecture)
Для этой оценки необходимо оценить для проекта уровень семнадцати множителей трудоемкости EMj:
- Параметры персонала:
- 1) Analyst Capability (ACAP) – возможности аналитика;
- 2) Applications Experience (AEXP) – опыт разработки приложений;
- 3) Programmer Capability (PCAP) – возможности программиста;
- 4) Personnel Continuity (PCON) – продолжительность работы персонала;
- 5) Platform Experience (PEXP) – опыт работы с платформой;
- 6) Language and Tool Experience (LTEX) – опыт использования языка программирования и инструментальных средств.
- Параметры продукта:
- 7) Required Software Reliability (RELY) – требуемая надежность программы;
- 8) Database Size (DATA) – размер базы данных;
- 9) Software Product Complexity (CPLX) – сложность программы;
- 10) Required Reusability (RUSE) – требуемая возможность многократного использования;
- 11) Documentation Match to Life-Cycle Needs (DOCU) – соответствие документации потребностям жизненного цикла.
- Параметры платформы:
- 12) Execution Time Constraint (TIME) – ограничения времени выполнения;
- 13) Main Storage Constraint (STOR) – ограничения памяти;
- 14) Platform Volatility (PVOL) – изменяемость платформы.
- Параметры проекта:
- 15) Use of Software Tools (TOOL) – использование инструментальных программных средств;
- 16) Multisite Development (SITE) – многоабонентская (удаленная) разработка;
- 17) Required Development Schedule (SCED) – требуемое выполнение графика работ.
Значения множителей трудоемкости в зависимости от их уровня приведены в таблице ниже.
Значения множителей трудоемкости в зависимости от оценки их уровня (Post Architecture)
№ | Decryption | Effort Multiplier, EMJ | Very Low | Low | Nominal | High | Very High | Extra High |
---|
1 | ACAP | Analyst Capability | 1,42 | 1,29 | 1,00 | 0,85 | 0,71 | n/a |
2 | AEXP | Applications Experience | 1,22 | 1,10 | 1,00 | 0,88 | 0,81 | n/a |
3 | PCAP | Programmer Capability | 1,34 | 1,15 | 1,00 | 0,88 | 0,76 | n/a |
4 | PCON | Personnel Continuity | 1,29 | 1,12 | 1,00 | 0,90 | 0,81 | n/a |
5 | PEXP | Platform Experience | 1,19 | 1,09 | 1,00 | 0,91 | 0,85 | n/a |
6 | LTEX | Language and Tool Experience | 1,20 | 1,09 | 1,00 | 0,91 | 0,84 | n/a |
7 | RELY | Required Software Reliability | 0,84 | 0,92 | 1,00 | 1,10 | 1,26 | n/a |
8 | DATA | Database Size | n/a | 0,23 | 1,00 | 1,14 | 1,28 | n/a |
9 | CPLX | Software Product Complexity | 0,73 | 0,87 | 1,00 | 1,17 | 1,34 | 1,74 |
10 | RUSE | Required Reusability | n/a | 0,95 | 1,00 | 1,07 | 1,15 | 1,24 |
11 | DOCU | Documentation Match to Life-Cycle Needs | 0,81 | 0,91 | 1,00 | 1,11 | 1,23 | n/a |
12 | TIME | Execution Time Constraint | n/a | n/a | 1,00 | 1,11 | 1,29 | 1,63 |
13 | STOR | Main Storage Constraint | n/a | n/a | 1,00 | 1,05 | 1,17 | 1,46 |
14 | PVOL | Platform Volatility | n/a | 0,87 | 1,00 | 1,15 | 1,30 | n/a |
15 | TOOL | Use of Software Tools | 1,17 | 1,09 | 1,00 | 0,90 | 0,78 | n/a |
16 | SITE | Multisite Development | 1,22 | 1,09 | 1,00 | 0,93 | 0,86 | 0,80 |
17 | SCED | Required Development Schedule | 1,43 | 1,14 | 1,00 | 1,00 | 1,00 | n/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, определяющего сжатие расписания.
Остальные параметры определены выше.