Характеристики иерархической структуры программной системы Иерархическая структура программной системы – основной результат предварительного проектирования. Она определяет состав модулей ПС и управляющие отношения между модулями. В этой структуре модуль более высокого уровня (начальник) управляет модулем нижнего уровня (подчиненным). Иерархическая структура не отражает процедурные особенности программной системы, то есть последовательность операций, их повторение, ветвление и т. д. Рассмотрим основные характеристики иерархической структуры, представленной на рис. 21.
Первичными характеристиками являются количество вершин (модулей) и количество ребер (связей между модулей). К ним добавляют две глобальные характеристики – высота и ширина:
• высота–количество уровней управления;
• ширина–максимальное из количеств модулей, размещенных на уровнях управления.
В нашем примере высота = 4, а ширина = 6.
Локальными характеристиками модулей структуры являются
• коэффициент объединения по входу
• коэффициент разветвления по выходу.
Рис. 21.Иерархическая структура программной системы
Коэффициент объединения по входу Fan_in(i) – это количество модулей, которые прямо управляют i–м модулем. В примере для модуля n: Fan_in (n) =4.
Коэффициент разветвления по выходу Fan_out(i) – это количество модулей, которыми прямо управляет i-й модуль. В примере дл модуля m: Fan_out (m) =3.
Возникает вопрос: как оценить качество структуры? Из практики проектирования известно, что лучшее решение обеспечивается иерархической структурой в виде дерева.
Степень отличия реальной проектной структуры от дерева характеризуется невязкой структурой. Как определить «невязку»?
Вспомним, что полный граф (complete graph) с n вершинами имеет количество ребер
а дерево (tree) с таким же количеством вершин – существенно меньшее количество ребер
тогда формулу невязки можно построить, сравнивая количество ребер полного графа, реального графа и дерева.
Для проектной структуры с n вершинами и е ребрами невязка определяется по выражению
значение невязки лежит в диапазоне от 0 до 1. Если Nev = 0, то проектная структура является деревом, если Nev = 1, то проектная структура – полный граф.
Ясно, что невязка дает грубую оценку структуры. Для увеличения точности оценки следует применить характеристики связности и сцепления.
Хорошая структура должна иметь низкое сцепление и высокую связность.
Контрольные вопросы
- Какие задачи решаются на этапе анализа?
- Что такое диаграмма потоков данных?
- Как формируется иерархия диаграмм потоков данных?
- Как организован словарь требований?
- Что показывает спецификация процессов?
- Какие методы, ориентированные на структуры данных вы знаете?
- Из каких базовых элементов состоят диаграммы Варнье?
- Какие особенности имеет этап проектирования?
- Решение каких задач обеспечивает предварительное проектирование?
- Какие модели системного структурирования вы знаете?
- Чем отличается клиент-серверная модель от 3-уровневой модели?
- Какие типы моделей управления вы знаете?
- Какие существуют разновидности централизованного управления?
- Поясните разновидности моделей событийного управления.
- Поясните понятия модуля и модульности. Приведите обоснование модульности.
- Перечислите основные характеристики модуля.
- В чем заключается принцип информационной закрытости модуля?
- Что такое связность модуля?
- Перечислите и проранжируйте типы связности модуля.
- Какая связность является наилучшей? Наихудшей? Почему?
- Почему логическая связность является нежелательной для модуля?
- Приведите алгоритм определения связности модуля.
- Что такое сцепление модуля?
- Какие существуют типы сцепления?
- Охарактеризуйте наилучшее и наихудшее сцепление.
- Какие подходы к оценки сложности модуля вы знаете?
- Что такое цикломатическая сложность модуля, как она вычисляется?
- Укажите характеристики иерархической структуры программной системы.
- Что определяет невязка структуры?
- Как с помощью невязки можно оценить качество проектирования модуля?
- Какая структура модуля представляется наиболее удачной?
|