Слайд 1Лекция 5
Моделирование архитектуры и управления
Модули и модульная декомпозиция
Оценка сложности программной
системы
Слайд 2Особенности процесса синтеза программных систем (ПС)
Слайд 3Особенности этапа проектирования
Слайд 4Предварительное проектирование
Предварительное проектирование обеспечивает:
идентификацию подсистем;
определение основных принципов управления подсистемами, взаимодействия
подсистем.
Предварительное проектирование включает:
Структурирование системы.
Моделирование управления.
Декомпозиция подсистем на модули.
Слайд 5Структурирование системы
Три модели системного структурирования:
модель хранилища данных;
модель клиент-сервер;
трехуровневая модель.
Слайд 9Моделирование управления
1 Модель централизованного управления:
Модель вызов-возврат,
Модель менеджера;
2 Модель событийного управления:
Широковещательная
модель,
Модель, управляемая прерываниями.
Слайд 13Модель, управляемая прерываниями
Слайд 14Декомпозиция подсистем на модули
Два типа моделей декомпозиции:
Модель потока данных.
Модель объектов.
Слайд 15Модульность
Модуль – фрагмент программного текста, являющийся строительным блоком для физической
структуры системы.
Модульность – свойство системы, которая может подвергаться декомпозиции
на ряд внутренне связанных и слабо зависящих друг от друга модулей.
Слайд 16Модульность
Пусть
C(x) – функция сложности решения проблемы,
T(x) – функция затрат времени
на решение проблемы.
Для двух проблем p1 и p2 из соотношения
C(p1)
> C(p2)
следует, что
T(p1) > T(p2).
Слайд 17Модульность
Из практики решения проблем человеком следует:
C(p1+p2) > C(p1) + C(p2).
Учитывая
ранее сказанное:
T(p1+p2) > T(p1) + T(p2).
Это и есть принцип «разделяй
и властвуй».
Слайд 19Модульность
Оптимальный модуль должен удовлетворять двум критериям:
снаружи он проще чем
внутри,
его проще использовать, чем построить.
Слайд 21Информационная закрытость
Информационная закрытость означает следующее:
все модули независимы, обмениваются только информацией,
необходимой для работы;
доступ к операциям и структурам данных модуля ограничен.
Достоинства
информационной закрытости:
обеспечивает возможность разработки модулей различными, независимыми коллективами;
обеспечивается легкая модификация системы.
Слайд 22Связность модуля
Связность модуля (внутренняя характеристика) – это мера зависимости его
частей.
Семь типов связности:
Связность по совпадению.
Логическая связность.
Временная связность.
Процедурная связность.
Коммуникативная связность.
Информационная (последовательная)
связность.
Функциональная связность.
Слайд 24Функциональная связность
Функционально связанный модуль содержит элементы, участвующие в
выполнении одной и только одной проблемной задачи.
Вычислить синус угла.
Вычислить
координаты цели.
Читать запись файла.
Проверять орфографию.
Слайд 25Информационная связность
Элементы-обработчики модуля образуют конвейер для обработки данных –
результаты одного обработчика используются как исходные данные для
следующего обработчика.
Модуль: Прием и проверка записи
прочитать запись из файла
проверить контрольные данные в записи
удалить контрольные данные в записи
вернуть обработанную запись
Конец модуля
Слайд 26Коммуникативная связность
Элементы-обработчики модуля используют одни и те же данные, например
внешние данные.
Модуль: Отчет и средняя зарплата
используется таблица зарплата служащих
сгенерировать отчет
по зарплате
вычислить параметр средняя зарплата
вернуть отчет по зарплате, средняя зарплата
Конец модуля
Слайд 27Процедурная связность
Модуль состоит из элементов,
реализующих независимые действия, для которых задан порядок работы, то
есть порядок передачи управления.
Модуль: Вычисление средних значений
используется таблица-А, таблица-Б
вычислить среднее по таблице-А
вычислить среднее по таблице-Б
вернуть среднее табл-А, среднее табл-Б
Конец модуля
Слайд 28Временная связность
Элементы-обработчики модуля привязаны к конкретному периоду времени
(из жизни программной системы).
Модуль: Инициализировать систему
перемотать магнитную ленту 1
счетчик магнитной
ленты 1 = 0
перемотать магнитную ленту 2
счетчик магнитной ленты 2 = 0
переключатель 1 = вкл.
переключатель 2 = выкл.
Конец модуля
Слайд 29Логическая связность
Элементы модуля принадлежат одной категории, и из этой категории
клиент выбирает выполняемое действие.
Модуль: Пересылка сообщения
переслать по e-mail
переслать по факсу
послать
в телеконференцию
переслать по ftp-протоколу
Конец модуля
Слайд 30Связность по совпадению
Элементы модуля вообще не имеют никаких отношений друг
с другом.
Модуль: Разные функции
поздравить с Новым годом
вывести собаку на прогулку
измерить
температуру
запастись продуктами
Конец модуля
Слайд 32Дополнительные правила определения типа связности
правило параллельной цепи. Если все действия
модуля имеют несколько уровней связности, то модулю присваивают самый сильный
уровень связности;
правило последовательной цепи. Если действия в модуле имеют разные уровни связности, то модулю присваивают самый слабый уровень связности.
Слайд 33Сцепление модулей
Сцепление модулей (внешняя характеристика) – это мера взаимозависимости модулей
по данным.
Шесть типов сцепления:
Сцепление по данным
Сцепление по образцу
Сцепление по управлению
Сцепление
по внешним ссылкам
Сцепление по общей области
Сцепление по содержанию
Слайд 34Сцепление по данным
Модуль А вызывает модуль Б. Все входные и
выходные параметры вызываемого модуля – простые элементы данных.
Слайд 35Сцепление по образцу
В качестве параметров используются структуры данных.
Слайд 36Сцепление по управлению
Модуль А явно управляет функционированием модуля Б, посылая
ему управляющие данные.
Слайд 37Сцепление по внешним ссылкам
Модули А и Б ссылаются на один
и тот же глобальный элемент данных.
Слайд 38Сцепление по общей области
Модули разделяют одну и ту же глобальную
структуру данных
Слайд 39Сцепление по содержанию
Один модуль прямо ссылается на содержание другого модуля.
Слайд 40Сложность программной системы
Автор: М. Холстед (1977)
Длина модуля:
N=n1·log2(n1)+n2·log2(n2)
n1 – число различных
операторов,
n2 – число различных операндов.
Объем модуля:
V = N×log2(n1+n2)
Слайд 41Сложность программной системы
Автор: Том МакКейб (1976)
Метрика цикломатической сложности:
V(G) = E
– N + 2
Е – количество дуг,
N – количество вершин
в управляющем
графе программной системы.
Слайд 42Иерархическая структура программной системы
Слайд 43Характеристики ИС
Первичные:
Количество вершин (модули)
Количество ребер (связи между модулями)
Глобальные:
Высота – количество
уровней управления
Ширина – максимальное из количеств модулей, размещенных на уровнях
управления
Локальные:
Коэффициент объединения по входу: Fan_in(i)
Коэффициент разветвления по выходу: Fan_out(i)
Слайд 44Невязка проектной структуры
n – количество вершин, e – количество ребер
проектной структуры.
Nev = 1 – полный граф.
Nev = 0 –
дерево.
Слайд 45Использование коэффициентов объединения и разветвления
Полные значения коэффициентов:
Fan_in(i) = sfan_in(i)
+ ifan_in(i)
Fan_out(j) = sfan_out(j) + ifan_out(j)
Метрика общей сложности структуры:
length(i)
– оценка размера i-го модуля (в виде LOC- или FP-оценки)