COCOMO
COnstructive COst MOdel (COCOMO – модель издержек разработки) – это алгоритмическая модель оценки стоимости разработки программного обеспечения, разработанная Барри Боэмом (Barry Boehm). Модель использует простую формулу регрессии с параметрами, определенными из данных, собранных по ряду проектов.
История
правитьCOCOMO была впервые опубликована в 1981 году в книге Барри Боэма «Экономика разработки программного обеспечения» в качестве модели для оценки трудоемкости, себестоимости и плана-графика для проектов по разработке программного обеспечения. Она использовала исследование 63 проектов в аэрокосмической компании TRW, в которой Барри Боэм был директором отдела исследований программного обеспечения и технологий. В исследовании проекты классифицировались по размеру в зависимости от количества строк кода (от 2 до 100 тысяч), а также по языку программирования (от ассемблеров до высокоуровневого языка PL/I. Эти проекты были основаны на водопадной (классической) модели жизненного цикла разработки ПО, доминировавшей в отрасли в 1981 году.
В 1997 году была разработана модель COCOMO II, окончательно доработанная и опубликованная в 2000 году в книге “Оценка стоимости разработки ПО с COCOMO II”. COCOMO II является наследником первоначальной модели и более подходящей для оценивания современных проектов разработки ПО. Она предоставляет более полную поддержку современных процессов разработки ПО и построена на обновленной базе проектов.
COCOMO состоит из иерархии трех последовательно детализируемых и уточняемых форм. Первый уровень, Базовый, подходит для быстрых ранних оценок стоимости разработки ПО и обладает неточностью вследствие некоторых факторов, которые невозможно учесть на ранних стадиях разработки. Средний уровень COCOMO учитывает эти факторы, тогда как Детальный уровень дополнительно учитывает влияние отдельных фаз проекта на его общую стоимость.
Базовый уровень (COCOMO Model 1: Basic)
правитьБазовый уровень рассчитывает трудоемкость и стоимость разработки как функцию от размера программы. Размер выражается в оценочных тысячах строк кода (KLOC - kilo lines of code).
COCOMO применим к трем классам проектов разработки ПО:
- Органический (Organic mode) – маленькие команды с хорошим опытом работы и не жесткими требованиями к разработке
- Полуразделенный вид (Intermediate/Semi-detached mode) – средние по размеру команды со смешанным опытом разработки и со смешанными требованиями (как жесткими, так и нет).
- Встроенный вид (Intered/Embedded mode) – разрабатываются с учетом множества жестких ограничений (по аппаратному, программному, операционному обеспечению и т.д.)
Вот базовые уравнения COCOMO:
- Трудоемкость = ab(KLOC)bb [человеко-месяцев]
- Срок разработки или длительность = cb(Трудоемкость)db [месяцев]
- Число разработчиков = Трудоемкость/ Срок разработки [человек]
Коэффициенты ab, bb, cb и db приведены в следующей таблице.
Таблица 1. Коэффициенты модели COCOMO Базового уровня
Тип проекта | ab | bb | cb | db |
Органический | 2.4 | 1.05 | 2.5 | 0.38 |
Полуразделенный | 3.0 | 1.12 | 2.5 | 0.35 |
Встроенный | 3.6 | 1.20 | 2.5 | 0.32 |
Базовый уровень COCOMO хорош для быстрой оценки стоимости разработки. Однако он не принимает во внимание различия в аппаратных ограничениях, качестве и опыте персонала, а также использованию современных техник и средств разработки и других факторов.
Средний уровень (COCOMO Model 2: Intermediate)
правитьСредний уровень рассчитывает трудоемкость разработки как функцию от размера программы и множества «факторов стоимости», включающих субъективные оценки характеристик продукта, проекта, персонала и аппаратного обеспечения. Это расширение включает в себя множество из четырёх факторов, каждый из которых имеет несколько дочерних характеристик.
- Характеристики продукта
- Требуемая надежность ПО
- Размер БД приложения
- Сложность продукта
- Характеристики аппаратного обеспечения
- Ограничения быстродействия при выполнении программы
- Ограничения памяти
- Неустойчивость окружения виртуальной машины
- Требуемое время восстановления
- Характеристики персонала
- Аналитические способности
- Способности к разработке ПО
- Опыт разработки
- Опыт использования виртуальных машин
- Опыт разработки на языках программирования
- Характеристики проекта
- Использование инструментария разработки ПО
- Применение методов разработки ПО
- Требования соблюдения графика разработки
Каждому из этих 15 факторов ставится в соответствие рейтинг по шести бальной шкале, начиная от «очень низкий» и до «экстра высокого» (по значению или важности фактора). Далее значения рейтинга заменяются множителями трудоемкости из нижеприведенной таблицы. Произведение всех множителей трудоемкости составляет Регулирующий фактор трудоемкости (РФТ). Обычно он принимает значения в диапазоне от 0.9 до 1.4. Коэффициенты представлены в таблице ниже.
Таблица 2. Коэффициенты рейтинга
Факторы стоимости | Рейтинг | |||||
Очень низкий | Низкий | Средний | Высокий | Очень высокий | Критический | |
Характеристики продукта | ||||||
1. Требуемая надежность ПО | 0.75 | 0.88 | 1.00 | 1.15 | 1.40 | |
2. Размер БД приложения | 0.94 | 1.00 | 1.08 | 1.16 | ||
3. Сложность продукта | 0.70 | 0.85 | 1.00 | 1.15 | 1.30 | 1.65 |
Характеристики аппаратного обеспечения'''' | ||||||
4. Ограничения быстродействия при выполнении программы | 1.00 | 1.11 | 1.30 | 1.66 | ||
5. Ограничения памяти | 1.00 | 1.06 | 1.21 | 1.56 | ||
6. Неустойчивость окружения виртуальной машины | 0.87 | 1.00 | 1.15 | 1.30 | ||
7. Требуемое время восстановления | 0.87 | 1.00 | 1.07 | 1.15 | ||
Характеристики персонала'''' | ||||||
8. Аналитические способности | 1.46 | 1.19 | 1.00 | 0.86 | 0.71 | |
9. Опыт разработки | 1.29 | 1.13 | 1.00 | 0.91 | 0.82 | |
10. Способности к разработке ПО | 1.42 | 1.17 | 1.00 | 0.86 | 0.70 | |
11. Опыт использования виртуальных машин | 1.21 | 1.10 | 1.00 | 0.90 | ||
12. Опыт разработки на языках программирования | 1.14 | 1.07 | 1.00 | 0.95 | ||
Характеристики проекта'''' | ||||||
13. Применение методов разработки ПО | 1.24 | 1.10 | 1.00 | 0.91 | 0.82 | |
14. Использование инструментария разработки ПО | 1.24 | 1.10 | 1.00 | 0.91 | 0.83 | |
15. Требования соблюдения графика разработки | 1.23 | 1.08 | 1.00 | 1.04 | 1.10 |
Формула модели COCOMO для среднего уровня принимает вид
- E=ai(KLoC)(bi)*РФТ
где E – трудоемкость разработки ПО в человеко-месяцах, KLoC – оценочный размер программы в тысячах строках исходного кода, и РФТ – регулирующий фактор, рассчитанный ранее. Коэффициенты ai и показатель степени bi представлены в следующей таблице.
Таблица 3. Коэффициенты Среднего уровня модели COCOMO
Тип проекта | ai | bi |
Органический | 3.2 | 1.05 |
Полуразделенный | 3.0 | 1.12 |
Встроенный | 2.8 | 1.20 |
Расчет времени разработки для среднего уровня COCOMO совпадает с расчетом для Базового уровня.
Детальный уровень (COCOMO Model 3: Advanced/Detailed)
правитьДетальный уровень включает в себя все характеристики среднего уровня с оценкой влияния данных характеристик на каждый этап процесса разработки ПО.
Оценка метода COCOMO
правитьКритерии для применения метода COCOMO
править- Средние и крупные проекты
Для небольших проектов, затраты на проведение оценки в соответствии со средним и детальным уровнями метода COCOMO слишком высоки. Однако результаты оценки, полученные от применения одного лишь базового уровня метода COCOMO, недостаточно точны.
For small projects, the effort for an estimation according to intermediate and detailed CoCoMo is too high; but the results from basic CoCoMo alone are not sufficiently exact.
- Техническое применение
Для программных проектов, занятых разработкой коммерческих приложений, метод COCOMO обычно приводит к завышенным значениям оценки затрат (ср. также / Noth, 1986 / стр. 87). Поэтому метод COCOMO применяется только к разработке технического программного обеспечения.
For software projects developing commercial applications, CoCoMo usually comes up with exaggerated effort estimation values (also compare /Noth, 1986/ p. 87), therefore CoCoMo is only applied for the development of technical software.
Это обстоятельство связано с тем, что отношение DSI к человеко-месяцам, реализованное в оценочном уравнении метода COCOMO, соответствует производительности при разработке технического программного обеспечения. В отношении коммерческой разработки программного обеспечения полагаются более высокие значения показателя DSI/человеко-месяц.
This circumstance is due to the fact that the ratio DSI and man months implemented in the CoCoMo estimation equation fits the productivity rate in a technical development; with regard to commercial software development a higher productivity rate DSI/man-month can be assumed.
Сильные и слабые стороны метода и возможные меры ликвидации
править- Оценка базы "Поставка Источник Инструкции"
С помощью инструкции оценки базы (DSI) была сделана попытка уменьшить большой неопределенностью и проблемами в связи с традиционной оценкой базы LOC. Однако некоторые проблемы остаются: неопределенность оценки DSI (-) и для усилий в области развития являются DSI-на основе современных методов разработки программного обеспечения, не большое значение, так как усилия все более происходит в начале деятельности и DSI будет только эффективной в конце процесса развития (-); DSI, а также LOC зависит от выбранного языка программирования (принятия Ада COCOMO уже доступна, однако).
By means of estimation base instructions (DSI) it was attempted to lessen the great uncertainties and problems in connection with the traditional estimation base LOC. However, some problems remain: the uncertainty of a DSI estimation (-) and for the development effort the DSI are-based on modern software engineering methods-no longer of great importance since the effort increasingly occurs during the early activities and DSI will only be effective towards the end of the development process (-); DSI as well as LOC depends on the selected programming language (an Ada adoption to CoCoMo is already available, however).
Средство может быть достигнуто путем взвешивания инструкции в соответствии с их различных типов (см. / Снид, 1987 / С. 73-74: компилятор, описание данных, преобразования, управления и ввода / вывода инструкции, или см. / Снид, 1987 / С. 183-185: описание данных инструкций (дифференцированы в зависимости от степени интеграции, сообщений и данных объекта, изменения степени) и инструкции по обработке (дифференцированы в зависимости от партии / онлайн, изменения степени сложности, языка)).
A remedy can be achieved by the weighting of instructions according to their various types (see /Sneed, 1987/ pp. 73–74: compiler, data description, transformation, control, and I/O instruction, or see /Sneed, 1987/ pp. 183–185: data description instructions (differentiated according to integration degree, message/data object, modification degree) and processing instructions (differentiated according to batch/on-line, modification degree, complexity, language)).
- Макро-и микро Оценка
С помощью различных уровнях модели COCOMO позволяет реализовать как макрос оценки с помощью Основные COCOMO и микро оценки с помощью промежуточных COCOMO и подробная COCOMO (+). Микро оценка позволяет усилий распределения деятельности и функциональных подразделений. Однако, метод COCOMO не только на основе жизненного цикла программных средств отклоняется от V-модель, но и на другой системе структуры (-). Поэтому, для того, чтобы список индивидуальных усилий для подмодели, (суб-) деятельности, и (суб-) продукции, необходимо, чтобы настроить эти элементы метода COCOMO к концепции V-модель.
By means of the various levels of the model, CoCoMo makes it possible to realize both a macro estimation by means of Basic CoCoMo and a micro estimation by means of Intermediate CoCoMo and Detailed CoCoMo (+). The micro estimation allows the effort allocation to activities and functional units. However, method CoCoMo is not only based on a software life cycle deviating from the V-Model but also on another system structure (-). Therefore, in order to list individual efforts for submodels, (sub-) activities, and (sub-) products, it is necessary to adjust these items of method CoCoMo to the V-Model concept.
- Влияние факторов / Объективность
В оценке усилий, COCOMO учитывает характеристики проекта, продукта, и персонала, а также технологии (+). В целях обеспечения объективной оценки этих факторов влияния, COCOMO предлагает точные определения (+). Количественная оценка влияния факторов представляет определенную проблему, хотя и (-), которая имеет сильное влияние на качество метода оценки и необходимой информации
DSI.
In the effort estimation, CoCoMo takes into consideration the characteristics of the project, the product, and the personnel as well as of the technology (+). In order to achieve an objective evaluation of these influence factors, CoCoMo offers exact definitions (+). The quantification of influence factors represents a certain problem, though (-) which has a strong impact on the quality of the estimation method and on the required DSI information.
- Область применения
Дифференцируя уравнения оценки в соответствии с проектом размеров и типов систем, область применения метода для COCOMO является широкий один (+). Он также является одним из немногих методов оценки предлагая-кроме поддержки проектов развития, поддержки усилий оценке задач SWMM, а (также параметрические уравнения оценки), а для оценки продолжительности проекта (+).
By differentiating the estimation equations according to project sizes and system types, the range of application for method CoCoMo is a wide one (+). It is also one of the few estimation methods offering-apart from the support for development projects-support for the effort estimation of SWMM tasks as well (also by parametric estimation equations) as for the estimation of the project duration (+).
- Инструмент поддержки
Компьютерная поддержка необходима для промежуточных и подробная COCOMO, основанных на количестве проблема (дифференциация влияния факторов на этапы и субпродукты (-).
Computer-based support is required for Intermediate and Detailed CoCoMo, based on the quantity problem (differentiation of influence factors on phases and subproducts (-).
Ссылки
править- COCOMO II with Heuristic Risk Assessment calc. (англ.)
- COCOMO Suite of Constructive Cost Models calculator (англ.)
- Expert COSYSMO - Systems Engineering Cost Model Risk Advisor calc (англ.)
- COCOMO II - Constructive Cost Model calculator (англ.)
- COCOMO 81 Intermediate Model Implementation calc (англ.)
- Basic COCOMO calc. Архивная копия от 26 ноября 2011 на Wayback Machine (англ.)
- COCOMO by Nancy Merlo – Schett (Seminar on Software Cost Estimation WS 2002 / 2003) (англ.)