Пояснения на занятии по диаграмме модулей

> -- Цитата:
> Мы понимаем, что главной единицей системы на модульном языке является модуль.	Соответственно, общую структуру системы будет отражать диаграмма модулей - набор модулей и их связей импорта.	Мы помним, что циклический импорт запрещён, поэтому модули можно разнести по слоям: в нижем - модули, которые ни в ком другом не нуждаются (или, может быть, нуждаются только во внешних, стандартных модулях), во втором - модули, которые нуждаются только в модулях нижнего слоя, в третьем - модули, которые нуждаются только в модулях двух нижних....	Есть такой строгий подход, когда запрещается обращаться вниз "через слой", а только к соседнему нижележащему слою. Полностью работать по такому подходу излишне, но иногда, для отдельных зон системы, полезно. Пример: модель OSI.		Сам модуль - это набор деклараций (константы, типы), свойств (переменные) и операций (процедуры). Т.е. это почти то же, что сущность (класс), только плюс декларации, и кроме того, он существует в системе в единственном числе.	Логично, что модуль можно изобразить таким же прямоугольником, как и сущность (класс).		Внутри прямоугольника можно перечислить экспортированные из модуля декларации, свойства и операции. Если модулей немного, то можно нарисовать одной диаграммой и связи, и содержимое модулей. Если же много, то вспоминая правила ERILа, мы рисуем заполненные модули отдельно, а потом на диаграмме импорта оставляем только прямоугольники с названиями.		Ищем среди модулей Kurs13SearchXXXX те, которые не импортируют никого из этой же подсистемы.	1 уровень: Kurs13SearchIndex	Ищем те модули, которые импортируют только SearchIndex.	2 уровень: Kurs13SearchAnalyzer, Kurs13SearchCmds	3 уровень: Kurs13SearchScanner	4 уровень: Kurs13SearchUIIndex		В ББ есть не очень удобный, но иногда полезный инструмент - схема зависимостей модулей. Выделите список модулей и нажмите Info-Dependencies.	Kurs13SearchIndex	Kurs13SearchAnalyzer Kurs13SearchCmds	Kurs13SearchScanner	Kurs13SearchUIIndex	А мы нарисуем диаграмму импорта модулей в редакторе.	Для модуля создаём прямоугольник "Сущность с полями". В заголовке пишем MODULE SearchIndex.	А внизу - то, что он экспортируем. Процедуры пишем без слова PROCEDURE. Для параметров в большинстве случаев не имеет смысл указывать базовые типы (ARRAY OF CHAR, INTEGER). Будем указывать тип параметра, либо когда он неочевиден, либо когда это уже наш тип, а не базовый языковый.		Модуль SearchUIIndex содержит много экспортированных элементов - для подключения формы, а интересность архитектурная у них маленькая.	Поэтому в диаграмме связей мы отобразим только прямоугольник с названием, а раскроем его рядом.		Поскольку направление связей импорта очевидно (сверху вниз), то стрелка избыточна, достаточно линии. Кроме того, модули все в единственном экземпляре, т.е. связь импорта всегда один-к-одному, а это в ERIL именно прямая линия.		На связях импорта значком атрибутов изобразим то, что именно используется конкретным модулем-импортёром из импортируемого модуля. Конечно, если какой-то модуль использует почти всё из импортируемого, то нет никакого смысла это перечислять на связи.