Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Сложность программной системы.
По Холстеду сложность программной системы оценивается мерой длины модуля. N=n1*log (n1) + n2*log (n2) N – Длина модуля n1 – Число различных операторов n2 – Число различных операндов Вторая характеристика – объём модуля. V – Количество символов для записи операторов и операндов текста модуля. V=N*log (n1+n2) Том Мак Кейб в качестве характеристики сложности программы предложил использовать топологию внутренних связей. Для этого была разработана метрика цикломатической сложности. V(G)=E-N+2 E – Количество дуг N – Количество вершин в управляющем графе программной системы Таким образом при комплексной оценке сложности программной системы необходимо рассматривать: 1) Меру сложности модулей; 2) Меру сложности внешних связей; 3) Меру сложности внутренних связей. На основе полных коэффициентов функциональных модулей вычисляется метрика общей сложности структуры.
Высота depth
Рис.17 ширина
S= *(Fan_in(i)+Fan_out(i)) (*) length(i) – Оценка размера i-ого модуля Fan_in(i) – Коэффициент объединения по входу(Количество управляющих i-ым модулем модулей) Fan_out(i) – Коэффициент разветвления по выходу(Количество модулей,ко-торыми прямо управляет i-ый модуль) Характеристики йерархической структуры программной системы.(рисунок 17)
Высота Depth
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). На основе полных коэффициентов модулей вычисляется метрика общей сложности структуры: Формула (*).
Программная документация. Она должна быть организована так, чтобы легко была доступна информация по отдельным модулям. Список модулей, описание программы и иерархической схемы используется как справочник. Модули должны быть пронумерованы (обычно в соответствии с их иерархической упорядоченностью).
Схема модульной структуры программы должна быть дополнена описанием внешних характеристик модулей. Оно называется внешней спецификацией и содержит все сведения, необходимые для обращения к модулю.
На основе внешней спецификации модулей осуществляется разработка логической структуры этих модулей. Логическая структура модуля прорабатывается на стадии технического проекта программы. Внешняя спецификация модуля должна включать: 1. Имя модуля, используемое при обращении к нему. 2. Описание функции, здесь приводится назначение модуля, но оно не должно содержать сведений о логической структуре и о контекстах, в которых используется модуль. 3. Список параметров: число и порядок задания параметров. 4. Входные параметры: подробное описание и их атрибуты (структура, размер, единица измерения, допустимый диапазон назначений, типы и т.д.). 5. Выходные параметры (аналогично п.4). 6. Внешние эффекты. Например: печать сообщений, чтение запроса с монитора, вывод сообщений об ошибке. Внешние эффекты модуля включают все внешние эффекты подчинённых ему модулей.
Средства проектирования прикладных программ.
|
Последнее изменение этой страницы: 2019-04-10; Просмотров: 267; Нарушение авторского права страницы