Сложность программной системы.

По Холстеду сложность программной системы оценивается мерой длины модуля.

N=n1*log Сложность программной системы. - student2.ru (n1) + n2*log Сложность программной системы. - student2.ru (n2)

N – Длина модуля

n1 – Число различных операторов

n2 – Число различных операндов

Вторая характеристика – объём модуля.

V – Количество символов для записи операторов и операндов текста модуля.

V=N*log Сложность программной системы. - student2.ru (n1+n2)

Том Мак Кейб в качестве характеристики сложности программы предложил использовать топологию внутренних связей. Для этого была разработана метрика

цикломатической сложности.

V(G)=E-N+2

E – Количество дуг

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

Таким образом при комплексной оценке сложности программной системы необходимо рассматривать:

1) Меру сложности модулей;

2) Меру сложности внешних связей;

3) Меру сложности внутренних связей.

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

Высота depth

Рис.17

ширина

S= Сложность программной системы. - student2.ru *(Fan_in(i)+Fan_out(i)) Сложность программной системы. - student2.ru (*)

length(i) – Оценка размера i-ого модуля

Fan_in(i) – Коэффициент объединения по входу(Количество управляющих

i-ым модулем модулей)

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

Характеристики йерархической структуры программной системы.(рисунок 17)

m

Высота

Depth

n

Fan_in(n)=2

Fan_out(m)=3

Рассмотрим основные характеристики йерархической структуры,представ-

ленной на рисунке.

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

q Высота – количество уровней управления;

q Ширина – максимальное из количеств модулей,размещённых на уров-нях управления.

В нашем примере высота = 3,ширина = 3.

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

объединения по входу и коэффициент разветвления по выходу (Fan_in(i) и Fan_out(i) ).

В примере для модуля n: Fan_in(n)=2 ;для модуля m: Fan_out(m)=3.

Возникает вопрос:как оценить качество структуры? Из практики проекти-рования известно,что лучшее решение обеспечивается йерархической структурой

в виде дерева.

Степень отличия реальной проектной структуры от дерева характеризуется невязкой структуры(Nev).

Значение невязки лежит в диапазоне от 0 до 1.Если Nev = 0,то проектная структура является деревом,если Nev = 1,то проектная структура – полный граф.

Ясно,что невязка даёт грубую оценку структуры.Для увеличения точности оценки следует применить характеристики связности и сцепления.

Хорошая структура должна иметь низкое сцепление и высокую связность.

Л.Констентайн и Э.Йордан (1979) предложили оценивать структуру с помо-щью коэффициентов Fan_in(i) и Fan_out(i) модулей.

Большое значение 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),которые учитывают только вызовы модулей.

В результате формируются полные значения коэффициентов:

Fan_in(i)= sfan_in(i)+ifan_in(i),

Fan_out(j)=sfan_out(j)+ifan_out(j).

На основе полных коэффициентов модулей вычисляется метрика общей сложности структуры: Формула (*).

Программная документация.

Она должна быть организована так, чтобы легко была доступна информация по отдельным модулям. Список модулей, описание программы и иерархической схемы используется как справочник. Модули должны быть пронумерованы (обычно в соответствии с их иерархической упорядоченностью).

Главный модуль
2.2.1
2.2
2.1
2.2.3
2.2.2

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

На основе внешней спецификации модулей осуществляется разработка логической структуры этих модулей. Логическая структура модуля прорабатывается на стадии технического проекта программы.

Внешняя спецификация модуля должна включать:

1. Имя модуля, используемое при обращении к нему.

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

3. Список параметров: число и порядок задания параметров.

4. Входные параметры: подробное описание и их атрибуты (структура, размер, единица измерения, допустимый диапазон назначений, типы и т.д.).

5. Выходные параметры (аналогично п.4).

6. Внешние эффекты.

Например: печать сообщений, чтение запроса с монитора, вывод сообщений об ошибке.

Внешние эффекты модуля включают все внешние эффекты подчинённых ему модулей.

Наши рекомендации