Расчет сложности программной системы
При расчете сложности программной системы оцениваются следующие показатели.
1) Временная и емкостная сложность алгоритмов отдельных модулей и, по-возможности, системы в целом;
2) Трудозатраты на разработку системы.
Первая характеристика изучалась в рамках дисциплины «Алгоритмы и структуры данных». Она должна дать общую оценку порядка сложности: n, n2 т.д.
Определение трудозатрат на разработку программной системы на разных стадиях ее проектирования и разработки может выполняться по-разному. При этом наиболее простой метрикой является LOC-оценка (Lines Of Code).
LOC-оценка равна количеству строк в программном продукте.
После окончания разработки системы определение этой оценки выполняется довольно просто – по исходному коду программы. Именно так предлагается вычислить ее в курсовом проекте.
На начальных этапах проектирования реальных систем учитываются следующие показатели.
1) предшествующий опыт оценки аналогичных систем;
2) доля новых разработок, а также применение и переработка имеющихся компонентов, в том числе и библиотечных;
3) квалификация сотрудников;
4) расходы на весь цикл создания программной системы, включая руководство процессом и этап тестирования.
Наиболее распространенная методика оценки трудозатрат - COCOMO (Constructive Cost Model). Базовая формула оценки трудозатрат COCOMO имеет вид:
(1)
где E – трудозатраты, выраженные в человеко-месяцах; a и b – константы, определенные на основе регрессионного анализа, в зависимости от проекта;
KSLOC – количество тысяч строк кода (под строчками кода SLOC понимаются логические строки кода, а именно строки в понимании используемого языка программирования, без учета комментариев);
EAF (Effort Adjustment Factor) – фактор корректировки трудозатрат. Он увеличивает или уменьшает трудозатраты в зависимости от факторов среды:
(2)
где Ci – один из факторов среды.
В курсовом проекте выполним приближенный расчет. При этом будем считать, что коэффициенты aи b, а также фактор корректировки трудозатрат EAF равны 1.
Количество тысяч строк кода будем определять по формуле:
(3)
где SLOCR - код, описывающий интерфейс системы. Обычно это код, описывающий сам интерфейс, для компонентов, работающих в среде Интернет - это HTML код;
SLOCI - код, обрабатывающий элементы интерфейса и связывающий его с другими частями системы. Обычно это классы обработки ошибок ввода данных, записи данных в базу и т.п.;
SLOCP - код, обеспечивающий определенную логику работы системы. Обычно, это классы, описывающие свойства объектов системы, взаимосвязь между функциями;
Kp – фактор изменения логики работы системы;
Ki – фактор изменения обработки интерфейсных элементов системы;
Kr – фактор изменения интерфейса системы.
Факторы K обычно подбираются опытным путем. Будем считать, что для изменений менее 20% фактор К может быть равен 0,2; для 50% изменений - 0,7; для вновь создаваемых компонент - 1,0.