Статистический анализ работы средств на примере граф-вызовов

Автор: Пользователь скрыл имя, 14 Декабря 2012 в 20:52, практическая работа

Краткое описание

Дано: граф-вызовов, отражающий модульную структуру программных средств. Вершины обозначаются в виде прямоугольников, содержащих имена компонент. Ребра графа представляются в виде стрелок.
Необходимо:
построить матрицу вызовов и достижимости, сделать выводы;
построить список пути вызовов;
определить значение следующих числовых характеристик:
- иерархическая сложность;
- структурная сложность;
- тестируемость.
сделать общие выводы.

Файлы: 1 файл

стандартизация.doc

— 95.50 Кб (Скачать)

Расчетно-графическая  работа

 

«Статистический анализ работы средств на примере граф-вызовов».

Вариант № 16

Дано:

граф-вызовов, отражающий модульную структуру программных средств. Вершины обозначаются в виде прямоугольников, содержащих имена компонент. Ребра графа представляются в виде стрелок.

 

 


 





 


 

 

 

 

Необходимо:

  1. построить матрицу вызовов и достижимости, сделать выводы;
  2. построить список пути вызовов;
  3. определить значение следующих числовых характеристик:

- иерархическая сложность;

- структурная сложность;

- тестируемость.

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), а конечная вершина всегда представляет собой компоненту, которая не содержит последовательных вызовов.

На основании последовательности вызовов компонент можно указать  возможные результаты модификации, узнать длину путей вызовов, а так же частоту и местонахождение компонент, что важно при определении компонент, которые могут быть модифицированы.

  1. Enter → Func11;
  2. Enter → Func12;
  3. Enter → Func13 → Func21 → Func31;
  4. Enter → Func13 → Func22→ Func31;
  5. Enter → Func13 → Func23 → Func31.

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

                                                              3

Доступность данного  модуля составляет 11%

                                                                      

Е) A(Func22) =A(Func13)/C (Func22) = 1/3  = 1/9

                                                             3

Доступность данного  модуля составляет 11%

 

Ж) A(Func23) =A(Func13)/C (Func23) = 1/3  = 1/9

                                                              3

Доступность данного  модуля составляет 11%

 

З) A(Func31) = A(Func21) + A(Func22) + A(Func23) = 1/9 + 1/9 + 1/9  

                                                                                             1       1       1 
Доступность данного модуля составляет 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, что свидетельствует об отсутствии значительных затруднений возможности тестируемости модулей нижних уровней иерархии.

 

 


Информация о работе Статистический анализ работы средств на примере граф-вызовов