Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kratkaya_versia_2.docx
Скачиваний:
40
Добавлен:
19.09.2019
Размер:
1.12 Mб
Скачать

Характеристика связностей модуля

Тип связности

Сопровождаемость

Роль модуля

Функциональная

Лучшая

«Черный ящик»

Информационная (последовательная)

Не совсем «черный ящик»

Коммуникативная

«Серый ящик»

Процедурная

Худшая

«Белый» или «просвечивающий ящик»

Временная

«Белый ящик»

Логическая

По совпадению

27 Сцепление модулей: понятие, виды сцепления и их описание

Сцепление – это мера взаимозависимости модулей по данным. Сцепление – внешняя характеристика модуля, которую желательно уменьшать. Количественно сцепление измеряется степенью сцепления.

Выделяют 6 видов сцепления:

  • Сцепление по данным (СЦ=1) – модуль А вызывает модуль Б. Все входные и выходные параметры вызываемого модуля – простые элементы данных (рисунок 5.18).

  • Сцепление по образцу (СЦ=3) – в качестве параметров используются структуры данных (рисунок 19).

  • Сцепление по управлению (СЦ=4) – модуль А явно управляет функционированием модуля Б (с помощью флагов или переключателей), посылая управляющие данные (рисунок 20).

  • Сцепление по внешним ссылкам (СЦ=5) – модули А и Б ссылаются на один и тот же глобальный элемент данных.

  • Сцепление по внешней области (СЦ=7) – модули А и Б ссылаются на одну и ту же глобальную структуру данных (рисунок 21).

  • Сцепление по содержанию (СЦ=9) – один модуль прямо ссылается на содержание другого модуля (не через его точку входа). Например, коды их команд перемежаются друг с другом (рисунок 21).

28 Сложность программной системы, основные подходы к ее оценке

В простейшем случае сложность программной системы определяется как сумма мер сложности ее модулей. Сложность модуля может вычисляться различными способами. Например, М. Холстед (1977) предложил меру длины N модуля:

,

где n1 – число различных операторов, а n2 – число различных операндов.

В качестве второй метрики М. Холстед рассматривал объем V модуля (количество символов для записи всех операторов и операндов текста программы):

.

Недостатком рассмотренной системы измерений является то, что она не учитывает внутрисистемные связи. Том МакКейб (1976) при оценке сложности программной системы предложил исходить из топологии внутренних связей. Для этого он разработал метрику цикломатической сложности:

,

где E – количество дуг, N – количество вершин в управляющем графе программной системы.

Таким образом, при комплексной оценке сложности программной системы необходимо рассматривать меру сложности модулей, меру сложности внешних связей (между модулями) и меру сложности внутренних связей (внутри модуля). Для осуществления этой оценки используют иерархическую структуру программной системы.

Иерархическая структура программной системы – основной результат предварительного проектирования. Она определяет состав модулей программной системы и управляющие отношения меду модулями. В этой структуре модуль более высокого уровня управляет модулем нижнего уровня.

Первичными характеристиками являются количество вершин (модулей) и количество ребер (связей межу модулями). К ним добавляются две глобальные характеристики:

  • высота – количество уровней управления (в примере – 4);

  • ширина – максимальное из количеств модулей, размещенных на уровнях управления (в примере – 3).

Локальными характеристиками модулей структуры являются:

  • коэффициент объединения по входу (Fan_in(i)) – это количество модулей, которые прямо управляют i-м модулем (в примере для модуля n – Fan_in(n)=3);

  • коэффициент разветвления по выходу (Fan_out(i)) – это количество модулей, которыми прямо управляет i-ый модуль (в примере для модуля m - Fan_in(m)=3).

Для оценки качества иерархической структуры используется невязка этой структуры. Эта характеристика определяет: насколько близко граф иерархической структуры соответствует в лучшем случае дереву, а в худшем – полному графу.

Значение невязки лежит в диапазоне [0,1], где значение 0 – соответствует тому, что иерархическая структура является деревом (лучший вариант), а значение 1 – полным графом (худший вариант).

Л. Констентайн и Э. Йордан предложили оценивать структуру с помощью коэффициентов Fan_in(i) и Fan_out(i). Большое значение Fan_in(i) — свидетельство высокого сцепления, так как является мерой зависимости модуля. Большое значение Fan_out(i) говорит о высокой сложности вызывающего модуля.

С. Генри и Д. Кафура (1981) велим информационные коэффициенты ifan_in(i) и ifan_out(j). Эти коэффициенты учитывают количество элементов и структур данных, из которых i-ый модуль берет информацию, и которые обновляются j-ым модулем соответственно. Информационные коэффициенты суммируются со структурными коэффициентами sfan_in(i) и sfan_out(j), которые учитывают только вызовы модулей. На основе полных коэффициентов модулей вычисляется метрика общей сложности структуры:

где length(i) – оценка размера i-го модуля в виде LOC- или FP-оценки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]