Автор: Пользователь скрыл имя, 14 Декабря 2012 в 20:52, практическая работа
Дано: граф-вызовов, отражающий модульную структуру программных средств. Вершины обозначаются в виде прямоугольников, содержащих имена компонент. Ребра графа представляются в виде стрелок.
Необходимо:
построить матрицу вызовов и достижимости, сделать выводы;
построить список пути вызовов;
определить значение следующих числовых характеристик:
- иерархическая сложность;
- структурная сложность;
- тестируемость.
сделать общие выводы.
Расчетно-графическая работа
«Статистический анализ работы средств на примере граф-вызовов».
Вариант № 16
Дано:
граф-вызовов, отражающий модульную структуру программных средств. Вершины обозначаются в виде прямоугольников, содержащих имена компонент. Ребра графа представляются в виде стрелок.
Необходимо:
- иерархическая сложность;
- структурная сложность;
- тестируемость.
4) сделать общие выводы.
Решение:
1. Построить матрицу вызовов и достижимости.
Она содержит информацию о двух основных типах структур вызова между произвольными парами программных компонент.
Элементы в иерархии вызовов могут находиться в одной из следующих взаимосвязей (одна из них непосредственно вызывает другую, например связь между Enter и Funcl1): в графе вызовов существует путь, начинающийся на одном из элементов пары и заканчивающийся на другом, то есть элементы рассматриваемой пары не могут быть вызваны друг из друга непосредственно, а только через цепочку вызовов (это косвенный вызов).
Матрица вызовов и
достижимостей позволяет
1) Если изменить модуль А, то может ли это повлиять на модуль Б (волновой эффект)?
2) Каково число модулей, вызываемых модулем А, и что это за модули?
3) Каково число модулей, достижимых из модуля А, но не вызываемых из него? И что это за модули?
4) Какие модули являются недостижимыми?
5) Какие вершины графа являются конечными?
6) Какие вызовы являются рекурсивными?
Вызываемым является любой элемент структуры.
Модуль |
Enter |
Func11 |
Func12 |
Func13 |
Func21 |
Func22 |
Func23 |
Func31 |
Enter |
|
+ |
+ |
+ |
. |
. |
. |
. |
Func11 |
||||||||
Func12 |
||||||||
Func13 |
+ |
+ |
+ |
. | ||||
Func21 |
+ | |||||||
Func22 |
+ | |||||||
Func23 |
+ | |||||||
Func31 |
||||||||
|
В результате статистического анализа установлено, что модулем, не имеющим вызова, является модуль Enter. Одновременно с этим данный модуль является точкой входа в программу, следовательно, не является висящим, или избыточным, следовательно, исходный код является безызбыточным.
Все результаты в матрице заполнены выше главной диагонали, следовательно, рекурсивных (обратных) вызовов нет.
Модули Func11, Func12 и Func31 не осуществляют дальнейших вызовов и поэтому являются конечными.
2. Список путей вызовов.
Он представляет собой последовательность соприкасающихся ребер из графов-вызовов, где начальная вершина – это корень графа (точка входа в программу Enter), а конечная вершина всегда представляет собой компоненту, которая не содержит последовательных вызовов.
На основании
3. Определение количественных характеристик.
1) иерархическая сложность:
I= N/L = 9/4 = 2.25
где N – количество вершин, L – максимальная длина путей вызовов.
Иерархическая сложность характеризует среднюю ширину уровня в графе-вызовов или среднее количество проектных решений, применяемых на отдельном шаге проектной разработки. В моем случае система является сложной, так как средний шаг проектной разработки равен 2.25
2) структурная сложность:
S = D / N = 9/9 = 1
где D – количество ребер в графе-вызовов, N – количество вершин.
Структурная сложность характеризует форму графа, при значении S < 1 форма называется простой, или древовидной; если S ≥ 1 она признается сложной, или сетевой (как в моем случае).
3) Определим доступность каждого модуля А(Мj)=
Где А(Мх) – доступность модуля Мх, вызывающего модуль Мj, С(Мх) – количество модулей, которое вызывает модуль Мх, n – количество модулей, вызывающих модуль Мj.
А) А(Enter) = 1; Доступность модуля составляет 100%;
Б) A(Func11) = А(Enter) / C (Enter) = 1/3 Доступность данного модуля составляет 33%.
В) A(Func12) = А(Enter) / C (Enter) = 1/3 Доступность данного модуля составляет 33%.
Г) A(Func13) = А(Enter) / C (Enter) = 1/3 Доступность данного модуля составляет 33%.
Д) A(Func21) =A(Func13)/C (Func21) = 1/3 = 1/9
Доступность данного модуля составляет 11%
Е) A(Func22) =A(Func13)/C (Func22) = 1/3 = 1/9
3
Доступность данного модуля составляет 11%
Ж) A(Func23) =A(Func13)/C (Func23) = 1/3 = 1/9
Доступность данного модуля составляет 11%
З) A(Func31) = A(Func21) + A(Func22) + A(Func23) = 1/9 + 1/9 + 1/9
Доступность данного модуля составляет
33%.
4) Определяем тестируемость путей , где k – количество модулей в i-ом пути вызова, А(Мj) – доступность модуля Mj, принадлежащего i-ому пути.
А) P1 = (1/ А(Enter) + 1/A(Func11))-1 = (1/1 +1/1/3)-1 =1/4;
Б) Р2 = (1/ А(Enter) + 1/A(Func12))-1 = (1/1 +1/1/3)-1 =1/4;
В) Р3= (1/ А(Enter) + 1/A(Func13) + 1/A(Func21)+ 1/A(Func31)-1 = (1/1 + 1 + 1 + 1 )-1 = =1/16;
Г) Р4= (1/ А(Enter) + 1/A(Func13) + 1/A(Func22)+ 1/A(Func31)-1 = (1/1 + 1 + 1 + 1 )-1 = =1/16;
Д) Р5= (1/ А(Enter) + 1/A(Func13) + 1/A(Func23)+ 1/A(Func31)-1 = (1/1 + 1 + 1 + 1 )-1= =1/16;
Величины тестируемости каждого из путей принимают значения выше 0,05, что говорит о незначительном затруднении проходимости последнего пути Р4.
5) Тестируемость Т = =
[1/5 (1/P1+1/P2+1/P3+1/P4+1/P5)]-1 =[1/5 ( 1 + 1 +1 + 1 + 1 )]-1 =
= (1/5 (4+4+16+16+16)) -1 = (1/5(56))-1 =5/56 = 0,08928
В данном случае показатель тестируемости имеет значение, большее от 0,0000…, а именно 0,08928, это свидетельствует об отсутствии значительных затруднений возможности тестируемости модулей нижних уровней иерархии, а также при применении автоматизированных методов тестирования.
Заключение
В результате статистического анализа установлено, что модулем, не имеющим вызова, является модуль Enter. Одновременно с этим данный модуль является точкой входа в программу, следовательно, не является висящим, или избыточным, следовательно, исходный код является безызбыточным.
Все результаты в матрице заполнены выше главной диагонали, следовательно, рекурсивных (обратных) вызовов нет.
Модули Func11, Func12 и Func31 не осуществляют дальнейших вызовов и поэтому являются конечными.
В данном случае система является иерархически сложной, так как средний шаг проектной разработки равен 2.25
Данная система программных средств признается сложной, или сетевой (структурная сложность), так как S = 1.
Доступность модулей 11,12,13, равна по 33%, модуля Enter 100%, модулей 21, 22 и 23 – по 11%. Доступность последнего модуля достигается путем сложения модулей 21,22и 23 равна 33%.
Показатель тестируемости имеет значение больше чем 0,0000…, а именно 0,08928, что свидетельствует об отсутствии значительных затруднений возможности тестируемости модулей нижних уровней иерархии.
Информация о работе Статистический анализ работы средств на примере граф-вызовов