Термин «сложность» означает состояние событий или вещей, которые имеют несколько взаимосвязанных связей и очень сложных структур. В программном программировании, по мере того как проектируется программное обеспечение, число элементов и их взаимосвязей постепенно становится огромным, что становится слишком сложным для понимания сразу.
Сложность проектирования программного обеспечения трудно оценить без использования метрик и показателей сложности. Давайте рассмотрим три важных показателя сложности программного обеспечения.
Меры сложности Холстеда
В 1977 году г-н Морис Говард Холстед представил метрики для измерения сложности программного обеспечения. Метрики Холстеда зависят от фактической реализации программы и ее мер, которые вычисляются непосредственно из операторов и операндов из исходного кода статическим образом. Это позволяет оценить время тестирования, словарный запас, размер, сложность, ошибки и усилия для исходного кода C / C ++ / Java.
По словам Холстеда, «компьютерная программа — это реализация алгоритма, который считается набором токенов, которые можно классифицировать как операторы или операнды». Метрики Холстеда рассматривают программу как последовательность операторов и связанных с ними операндов.
Он определяет различные показатели для проверки сложности модуля.
параметр | Имея в виду |
---|---|
n1 | Количество уникальных операторов |
n2 | Количество уникальных операндов |
N1 | Количество общего появления операторов |
N2 | Количество общего появления операндов |
Когда мы выбираем исходный файл для просмотра деталей его сложности в Metric Viewer, в Metric Report появляется следующий результат:
метрический | Имея в виду | Математическое представление |
---|---|---|
N | Запас слов | n1 + n2 |
N | Размер | N1 + N2 |
В | объем | Длина * Log2 Словарь |
D | трудность | (n1 / 2) * (N1 / n2) |
Е | усилия | Сложность * Объем |
В | ошибки | Объем / 3000 |
T | Время тестирования | Время = усилия / S, где S = 18 секунд. |
Цикломатические меры сложности
Каждая программа включает в себя операторы, которые нужно выполнить для выполнения какой-либо задачи, и другие операторы принятия решений, которые решают, какие операторы должны быть выполнены. Эти конструкции принятия решений изменяют ход программы.
Если мы сравним две программы одинакового размера, та, которая содержит больше операторов принятия решений, будет более сложной, так как управление программами часто переходит.
Маккейб в 1976 году предложил Cyclomatic Complexity Measure, чтобы количественно оценить сложность данного программного обеспечения. Это модель, основанная на графике, которая основана на принимающих решения конструкциях программы, таких как if-else, do-while, repeat-till, switch-case и goto.
Процесс создания графика управления потоком:
- Разбить программу на более мелкие блоки, разграниченные конструкциями принятия решений.
- Создайте узлы, представляющие каждый из этих узлов.
- Подключите узлы следующим образом:
-
Если управление может перейти от блока i к блоку j
Нарисуй дугу
-
От узла выхода к узлу входа
Нарисуй дугу.
Если управление может перейти от блока i к блоку j
Нарисуй дугу
От узла выхода к узлу входа
Нарисуй дугу.
Для расчета цикломатической сложности программного модуля мы используем формулу —
V(G) = e – n + 2 Where e is total number of edges n is total number of nodes
Цикломатическая сложность вышеуказанного модуля
e = 10 n = 8 Cyclomatic Complexity = 10 - 8 + 2 = 4
По мнению П. Йоргенсена, цикломатическая сложность модуля не должна превышать 10.
Функциональная точка
Он широко используется для измерения размера программного обеспечения. Функция Point концентрируется на функциональности, предоставляемой системой. Функции и функциональные возможности системы используются для измерения сложности программного обеспечения.
Функциональная точка рассчитана на пять параметров, названных как Внешний вход, Внешний выход, Логические внутренние файлы, Файлы внешнего интерфейса и Внешний запрос. Чтобы учитывать сложность программного обеспечения, каждый параметр далее классифицируется как простой, средний или сложный.
Давайте посмотрим параметры функции точки:
Внешний вход
Каждый уникальный вход в систему извне рассматривается как внешний вход. Уникальность ввода измеряется, так как никакие два входа не должны иметь одинаковые форматы. Эти входные данные могут быть либо данными, либо параметрами управления.
-
Просто — если количество входных данных мало и влияет на меньшее количество внутренних файлов
-
Сложный — если количество входных данных велико и влияет на большее количество внутренних файлов
-
Средний — между простым и сложным.
Просто — если количество входных данных мало и влияет на меньшее количество внутренних файлов
Сложный — если количество входных данных велико и влияет на большее количество внутренних файлов
Средний — между простым и сложным.
Внешний выход
Все типы вывода, предоставляемые системой, учитываются в этой категории. Вывод считается уникальным, если их формат вывода и / или обработка являются уникальными.
-
Простой — если количество выводов мало
-
Сложный — если количество выводов велико
-
Средний — между простым и сложным.
Простой — если количество выводов мало
Сложный — если количество выводов велико
Средний — между простым и сложным.
Внутренние логические файлы
Каждая система программного обеспечения поддерживает внутренние файлы, чтобы поддерживать свою функциональную информацию и функционировать должным образом. Эти файлы содержат логические данные системы. Эти логические данные могут содержать как функциональные данные, так и данные управления.
-
Просто — если количество типов записей мало
-
Сложный — если количество типов записей велико
-
Средний — между простым и сложным.
Просто — если количество типов записей мало
Сложный — если количество типов записей велико
Средний — между простым и сложным.
Файлы внешнего интерфейса
Системе программного обеспечения может потребоваться поделиться своими файлами с каким-либо внешним программным обеспечением или может потребоваться передать файл для обработки или в качестве параметра какой-либо функции. Все эти файлы считаются файлами внешнего интерфейса.
-
Просто — если количество типов записей в общем файле мало
-
Сложный — если количество типов записей в общем файле велико
-
Средний — между простым и сложным.
Просто — если количество типов записей в общем файле мало
Сложный — если количество типов записей в общем файле велико
Средний — между простым и сложным.
Внешний запрос
Запрос представляет собой комбинацию ввода и вывода, когда пользователь отправляет некоторые данные для запроса в качестве ввода, и система отвечает пользователю с обработанным выводом запроса. Сложность запроса больше, чем внешний ввод и внешний вывод. Запрос считается уникальным, если его ввод и вывод уникальны с точки зрения формата и данных.
-
Просто — если запрос требует низкой обработки и выдает небольшое количество выходных данных
-
Сложный — если запрос требует высокой обработки и выдает большое количество выходных данных
-
Средний — между простым и сложным.
Просто — если запрос требует низкой обработки и выдает небольшое количество выходных данных
Сложный — если запрос требует высокой обработки и выдает большое количество выходных данных
Средний — между простым и сложным.
Каждому из этих параметров в системе присваивается вес в зависимости от их класса и сложности. В приведенной ниже таблице указан вес, заданный для каждого параметра:
параметр | просто | Средний | Сложный |
---|---|---|---|
входные | 3 | 4 | 6 |
Выходы | 4 | 5 | 7 |
запрос | 3 | 4 | 6 |
файлы | 7 | 10 | 15 |
Интерфейсы | 5 | 7 | 10 |
Таблица выше дает необработанные функциональные очки. Эти функциональные точки настраиваются в зависимости от сложности среды. Система описана с использованием четырнадцати различных характеристик:
- Передача данных
- Распределенная обработка
- Цели производительности
- Загрузка рабочей конфигурации
- Коэффициент транзакций
- Ввод данных онлайн,
- Эффективность конечного пользователя
- Онлайн обновление
- Сложная логика обработки
- Повторное удобство
- Простота установки
- Операционная простота
- Несколько сайтов
- Желание облегчить изменения
Эти характеристики факторов затем оцениваются от 0 до 5, как указано ниже:
- Нет влияния
- случайный
- умеренный
- Средний
- Значительное
- существенный
Все рейтинги затем суммируются как N. Значение N варьируется от 0 до 70 (14 типов характеристик x 5 типов оценок). Он используется для расчета коэффициентов корректировки сложности (CAF), используя следующие формулы:
CAF = 0,65 + 0,01N
Затем,
Поставленные функциональные точки (FP) = CAF x Raw FP
Эта FP может затем использоваться в различных метриках, таких как:
Стоимость = $ / FP
Качество = Ошибки / FP
Производительность = FP / человеко-месяц