Определение затрат на разработку ПО
В отличие от большинства отраслей материального производства, в вопросах проектов создания ПО недопустимы простые подходы, основанные на умножении трудоемкости на среднюю производительность труда. Это вызвано, прежде всего, тем, что экономические показатели проекта нелинейно зависят от объема работ, а при вычислении трудоемкости допускается большая погрешность. Поэтому для решения этой задачи используются комплексные и достаточно сложные методики, которые требуют высокой ответственности в применении и определенного времени на адаптацию (настройку коэффициентов).
Современные комплексные системы оценки характеристик проектов создания ПО могут быть использованы для решения следующих задач:
- предварительная, постоянная и итоговая оценка экономических параметров проекта: трудоемкость, длительность, стоимость;
- оценка рисков по проекту: риск нарушения сроков и невыполнения проекта, риск увеличения трудоемкости на этапах отладки и сопровождения проекта и пр.;
- принятие оперативных управленческих решений – на основе отслеживания определенных метрик проекта можно своевременно предупредить возникновение нежелательных ситуаций и устранить последствия непродуманных проектных решений.
Существуют различные метрики для оценки сложности и объема программ, ниже рассматриваются размерно - ориентированные метрики (показатели оценки объема), которые получили наибольшее распространение в практике создания программного обеспечения.
Размерно-ориентированные метрики (показатели оценки объема)
LOC-оценка (Lines Of Code).
Количество строк исходного кода (Lines of Code - LOC, Source Lines of Code - SLOC) — это метрика программного обеспечения, используемая для измерения его объёма с помощью подсчёта количества строк в тексте исходного кода. Как правило, этот показатель используется для прогноза трудозатрат на разработку конкретной программы на конкретном языке программирования, либо для оценки производительности труда уже после того, как программа написана. LOC является наиболее простым и распространенным способом оценки объема работ по проекту.
Промышленной мерой оценки размера ПО является количество тысяч строк исходного кода – KLOC (kilo lines of code).
Оценку размера ПО можно представить в виде 3-х шагов:
- разделение и группировка программных функциональных требований и требований к ИС в категории программного наследования, которая определяет коэффициент сложности по реализации ПО. Категории программного наследования включают:
- новый проект и новый код;
- аналогичный проект и новый код;
- аналогичный проект и многократно используемый код;
- аналогичный проект и расширенный код, используемый многократно.
- оценка размера каждой программной функции.
Для определения количества тысяч строк исходного кода KLOC можно использовать следующую формулу:
,
где: - код, обеспечивающий определенную логику работы системы. Обычно, это классы, описывающие свойства объектов системы, взаимосвязь между бизнес–функциями;
- код, обрабатывающий элементы интерфейса и связывающий его с другими частями системы. Обычно это классы обработки ошибок ввода данных, записи данных в базу данных и т.п.;
- код, реализующий интерфейс взаимодействия пользователя с системой;
- фактор изменения логики работы системы;
- фактор изменения обработки интерфейсных элементов системы;
- фактор изменения интерфейса пользователя.
Значения факторов K подбираются опытным путем и измеряются обычно от 0,01 до 0,6, но для новой и сложной ИС часто принимается значение и свыше 0,6. Для определения значений K применяется статистический подход, который позволяет изменять априорные оценки с учетом данных новых исследований;
- расчет общего размера программной части ИС в KLOC – сумма данных, полученных в пункте 2 по каждой программной функции.
В организациях, занятых разработкой программной продукции для каждого проекта принято регистрировать следующие показатели:
- общие трудозатраты (в человеко-месяцах, человеко-часах);
- объем программы (в тысячах строках исходного кода -KLOC);
- стоимость разработки;
- объем документации;
- количество людей, работавших над изделием;
- срок разработки.
На основе этих данных обычно подсчитываются простые метрики для оценки производительности труда (KLOC/человеко-месяц) и качества изделия.
Изначально показатель LOC возник как способ оценки объема работы по проекту, в котором применялись языки программирования, обладающие достаточно простой структурой: "одна строка кода = одна команда языка". Как известно, что одну и ту же функциональность можно написать разным количеством строк, например, если возьмем язык высокого уровня (С++, Java), то возможно и в одной строке написать функционал 5-6 строк. Кроме того, современные средства программирования сами генерируют тысячи строк кода на простую операцию. Поэтому метод LOC является только примерным оценочным методом, который надо принимать к сведению, но не опираться в окончательных оценках.