Метрики сложности потока управления программ
Метрики сложности потока управления | Схемы алгоритмов | ||
Рис. 1 | Рис. 2 | Рис. 3 | |
Метрика Маккейба Z(G) | 3 | 5 | 5 |
Абсолютная сложность программы CL по метрике Джилба | 2 | 4 | 4 |
Относительная сложность программы cl по метрике Джилба | 0,29* | 0,36 | 0,36 |
Максимальный уровень вложенности условного оператора CLI по метрике Джилба | 1 | 3 | 3 |
Метрика граничных значений (абсолютная граничная сложность программы) Sa | 10 | 14 | 32 |
Метрика граничных значений (относительная граничная сложность программы) S0 | 0,4 | 0,357 | 0,625 |
Примечание.
* - относительная \сложность cl по метрике Джилба для программы, схема алгоритма которой представлена на рис. 1, рассчитана в предположении, что каждый блок схемы алгоритма содержит один оператор программы.
Метрики сложности потока данных
Метрики сложности потока данных связывают сложность программы с использованием и размещением данных в данной программе. Метрики этой группы основаны на анализе исходных текстов программ.
К наиболее известным в данной группе метрик можно отнести спен и метрику Чепина [2].
Спен идентификатора – это число повторных появлений идентификатора (число появлений после его первого появления) в тексте программы. Идентификатор, встречающийся в тексте программы п раз, имеет спен, равный п—1.
Величина спена связана со сложностью тестирования и отладки программы. Например, если спен идентификатора равен 10, то при трассировании программы по этому идентификатору следует ввести в текст программы 10 контрольных точек, что усложняет тестирование и отладку программы.
|
|
Метрика Чепина базируется на анализе характера использования в программе переменных.
Существуют различные варианты метрики Чепина. Ниже рассмотрен вариант (назовем данный вариант полной метрикой Чепина), в котором все множество переменных программы разбивается на четыре функциональные группы:
1. Р – вводимые переменные, содержащие исходную информацию, но не модифицируемые в программе и не являющиеся управляющими переменными;
2. М – модифицируемые переменные и создаваемые внутри программы константы и переменные, не являющиеся управляющими переменными;
3. С – переменные, участвующие в управлении работой программного модуля (управляющие переменные);
4. Т – не используемые в программе («паразитные») переменные, например, вычисленные переменные, значения которых не выводятся и не участвуют в дальнейших вычислениях.
Значение метрики Чепина определяется по формуле:
Q = a1 p + a2 m + a3 c + a4 t ,
где а1, a2, a3, a4 – весовые коэффициенты; p, m, c, t – количество переменных в группах Р, М, С, Т соответственно.
|
|
Весовые коэффициенты позволяют учитывать различное влияние на сложность программы каждой функциональной группы. Наиболее часто применяются следующие значения весовых коэффициентов: а1 = l, а2 = 2, а3 = 3, а4 = 0,5. С учетом данных значений формула для определения метрики Чепина принимает вид :
Q = p + 2m + 3c + 0,5t .
Помимо полной метрики Чепина распространен ее вариант, при котором анализу и разбиению на четыре группы подвергаются только переменные из списка ввода/вывода программы, то есть те переменные, которые содержатся в списке параметров операторов ввода/вывода программы. Назовем данный вариант метрикой Чепина ввода/вывода.
Табл. 8, 9 содержат метрики сложности потока данных для программы, вычисляющей значение функции
Y = sin X .
Исходный текст программы приведен в примере 1.
Таблица 8
Спен программы
Идентификатор | х | n | vs | y | eps | Суммарный спен программы |
Спен | 6 | 5 | 5 | 4 | 2 | 22 |
В тексте программы (см. пример 1) идентификаторы впервые встречаются в разделе объявлений. Поэтому значение спена идентификатора равно количеству его появлений в разделе операторов, то есть значению f2i в метриках Холстеда.
|
|
Таблица 9
Метрики Чепина программы
Полная метрика Чепина | Метрика Чепина ввода/вывода | |||||||
Группа переменных | Р | М | С | Т | Р | М | С | Т |
Переменные, относящиеся к группе | x | y, n | vs, eps | -- | x | y | eps | -- |
Количество переменных в группе | р = 1 | m = 2 | c = 2 | t = 0 | р = 1 | m = 1 | c = 1 | t = 0 |
Метрика Чепина | Q = 1*1 + 2*2 + 3*2 + 0,5*0 = 11 | Q = 1*1 + 2*1 + 3*1 + 0,5*0 = 6 |
В список переменных ввода/вывода программы (см. пример 1) входят переменные х (оператор ввода Readln ( x)) и y, z (оператор вывода Writeln ( x, y, eps)). Остальные переменные (n, vs) в расчете метрики Чепина ввода/вывода не участвуют.
Литература
1. ГОСТ 19.701-90 – Единая система программной документации – Схемы алгоритмов, программ, данных и систем – Условные обозначения и правила выполнения.
2. Изосимов А. В. Метрическая оценка качества программ / А. В. Изосимов, Рыжко А. Л. – М.: Изд-во МАИ, 1989.
3. Холстед М.Х. Начала науки о программах. – М.: Финансы и статистика, 1981.
Индивидуальная
Практическая работа № 1
Тема задания
Метрики сложности потока управления программ.
Для вычисленного варианта индивидуального задания разработать детализированную схему алгоритма, представленную в соответствии с положениями ГОСТ 19701-90. По полученному алгоритму рассчитать метрики сложности потока управления программ (метрики Маккейба, Джилба, максимальный уровень вложенности условного оператора, метрику граничных значений). В алгоритме предусмотреть вывод на экран всех входных и выходных данных.
|
|
Методические указания к выполнению
индивидуальной практической работы
Перед началом выполнения работы из теоретических сведений к индивидуальным практическим работам необходимо изучить материал, касающийся метрик сложности потока управления программ.
Затем для рассчитанного варианта индивидуального задания следует разработать схему алгоритма с максимальным уровнем детализации. Это означает, что каждому блоку схемы алгоритма должен соответствовать один оператор языка программирования (в привязке к языку Паскаль). Например, ввод или вывод двухмерного массива в алгоритме должен быть представлен не одним символом ввода (параллелограмм), а сложным циклом (во внешнем цикле вводятся строки, во внутреннем цикле вводятся элементы строк).
Для правильного расчета метрики Маккейба при представлении циклов следует использовать не парный символ «Граница цикла», а символ «Решение» с обратной связью (по аналогии с представлением цикла, состоящего из блоков 2, 3 на рис. 1).
Схема алгоритма должна быть описана. В описании должно быть приведено назначение входных, выходных и внутренних переменных, назначение блоков алгоритма.
На основании разработанного алгоритма рассчитываются значения метрик сложности потока управления будущей программы:
· рассчитывается метрика Маккейба и определяются базисные независимые пути в алгоритме (по аналогии с примером, приведенным в теоретических сведениях);
· рассчитываются абсолютная CL и относительная cl сложности программы, а также максимальный уровень вложенности условного оператора CLI, используя метрику Джилба;
· рассчитываются абсолютная Sa и относительная So граничные сложности программы по метрике граничных значений (по аналогии с примерами, приведенными в теоретических сведениях). Результаты расчетов метрики граничных значений должны быть представлены в виде таблиц, аналогичных таблицам 3 и 4;
· значения всех рассчитанных метрик сложности потока управления для разработанного алгоритма должны быть сведены в итоговую таблицу (аналогичную таблице 7, но включающую не три столбца для схем алгоритмов, а один столбец для разработанного алгоритма).
·
Содержание отчета по индивидуальной
практической работе № 1
Индивидуальная практическая работа № 1 должна содержать:
· титульный лист;
· номер и условие индивидуального задания;
· детализированную схему алгоритма по ГОСТ 19. 701-90;
· описание схемы алгоритма;
· расчет метрики Маккейба ддя разработанного алгоритма и определение базисных независимых путей;
· расчет метрики Джилба ддя разработанного алгоритма;
· расчет метрики граничных значений ддя разработанного алгоритма с результатами, представленными в виде таблиц;
· результаты расчетов метрик в виде итоговой таблицы.
Индивидуальная
Практическая работа № 2
Тема задания
Дата добавления: 2019-11-16; просмотров: 2431; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!