Анализ структурной сложности (547595), страница 2
Текст из файла (страница 2)
Для работы с каждым отдельным ребром графа, представляющим связь между функциями, можно воспользоваться контекстным меню, открывающимся при наведении указателя мыши на соответствующее ребро и нажатии правой кнопкой мыши. При этом пользователю доступны следующие действия:
-
Задать вес связи – задание степени непосредственной зависимости; соответствующее число выводится рядом с ребром.
-
Удалить связь – удаление ребра из графа.
Для работы со всем графом используется основное контекстное меню, которое можно вызвать нажатием правой кнопкой мыши в любом свободном (от вершин и ребер) месте. При этом пользователю доступны следующие действия:
-
Указатель – включает режим, при котором можно выделять вершины и ребра, а также перетаскивать вершины указателем мыши. Этот режим используется по умолчанию.
-
Масштаб – позволяет увеличить/уменьшить масштаб представления графа.
-
Выделить – режим, при котором с помощью указателя мыши можно выделить некоторую область на изображении графа и вывести ее в отдельном окне.
-
Режим добавления вершин – режим, при котором происходит добавление вершины в точке, в которой нажата левая кнопка мыши; при этом открывается диалог с предложением ввода имени добавляемой вершины.
-
Режим удаления вершин – режим, при котором происходит удаление выделенной вершины при нажатии левой кнопки мыши.
-
Режим добавления связей – режим, при котором происходит добавление ребра между двумя вершинами. Для этого необходимо нажать левую кнопку мыши на вершине, которая предполагается стать началом ребра и, не отпуская левой кнопки провести ребро к вершине, которая должна стать конечной вершиной и отпустить кнопку. При этом если ребро между этими вершинами уже существовало, то такое добавление приведет к увеличению веса этого ребра на единицу.
-
Режим удаления связей – режим, при котором происходит удаление выделенного ребра.
-
Генерация кода схемы – построение кода функциональной схемы на основе текущего графического представления с точностью до операций композиции и базисных функций.
-
Откат – возвращение графического представления к начальному виду.
-
Применить – обновление результатов (табличных) структурного анализа с учетом изменений, внесенных в графическое представление.
-
Табличное представление – вызов окна с табличными результатами.
-
Свернуть граф – переход к графическому представлению графа вложенности, при котором рекурсивные определения представляются круглыми вершинами, не рекурсивные определения – квадратными вершинами, а классы взаимной рекурсивности представляются овальными вершинами (см. рис. 1.2.5).
-
Развернуть граф – переход к графу непосредственной зависимости (см. рис. 1.2.6).
-
Свернуть подсхемы Fun – переход к графическому представлению, при котором все вершины, представляющие функции из подсхем Fun, стягиваются в одну вершину.
-
Развернуть подсхемы Fun – разворачивание вершин, представляющих подсхемы Fun.
-
Выход – завершение работы с подсистемой структурного анализа.
Рисунок 1.2.5 – Граф вложенности для функциональной схемы программы BubbleSort
Рисунок 1.2.6 – Граф непосредственной зависимости функциональной схемы программы BubbleSort
Окно табличных результатов содержит характеристики функциональной схемы, которые можно разделить на две категории – относящиеся ко всей схеме целиком и к выбранным функциям в отдельности. На рис. 1.2.7 показано окно табличного представления результатов структурного анализа функциональной схемы.
Рисунок 1.2.7 – Окно с табличными результатами
На рис. 1.2.7 в нижнем прямоугольнике представлены структурные характеристики всей функциональной схемы целиком, а именно:
-
Текст функциональной схемы с точностью до операций композиции и базисных функций.
-
Рекурсивные определения.
-
Простые определения.
-
Простые рекурсивные определения.
-
Циклические определения.
В верхнем прямоугольнике представлены структурные характеристики каждой отдельной функции, выбранной из списка, а именно:
-
Список функций, от которых непосредственно зависит рассматриваемая функция.
-
Список функций, от которых рассматриваемая функция не зависит.
-
Список функций, принадлежащих транзитивному замыканию рассматриваемой функции.
-
Список функций, взаимно-рекурсивных с рассматриваемой функцией.
-
Степень рекурсивности рассматриваемой функции.
-
Глубина рекурсивности рассматриваемой функции.
15