Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭ-2013-анн-130515.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

5.2. Модуль, его информационная закрытость. Интерфейс и реализация. Связность модуля, уровни связности

(из вопроса «Содержательные и технические мотивы декомпозиции программы на модули. Декомпозиция как способ борьбы со сложностью»)

Существует довольно много определений модуля, но все они сводятся практически к одному и тому же: модуль должен быть относительно независимым фрагментом какого-то текста. Если речь идёт о программе, то это фрагмент текста программы. Далее под программным модулем будем понимать отдельно программируемый, транслируемый и отлаживаемый программный фрагмент.

(конец текста из вопроса «Содержательные и технические мотивы декомпозиции программы на модули. Декомпозиция как способ борьбы со сложностью»)

Для того чтобы модуль можно было использовать как строительный материал при создании систем, он должен обладать рядом свойств, среди которых выделяют два главных:

  • снаружи он должен быть проще, чем внутри;

  • его проще использовать, чем построить.

На практике этого не достаточно. Если модуль используется многократно, да ещё и разными программистами, возникает соблазн его «поправить». Иногда это нужно, например, при модификации системы, но чаще он используется как чёрный ящик, свойства которого известны, а внутренняя структура – нет. Такой подход позволяет защитить модуль от нежелательных изменений, даёт определённую уверенность в его надёжности. Информационная закрытость модуля (принцип, предложенный Парнасом в 1972 г.) предполагает, что вся информация необходимая для использования модуля, известна и располагается в интерфейсной части модуля. В неё включается перечень функций и способы обращения к ним, необходимые переменные и типы данных. Реализация же функций (алгоритмы), а также информационные структуры, доступ к которым извне нежелателен, переносится в защищённый раздел модуля (раздел реализации).

Таким образом, информационная закрытость предполагает

  • функциональную независимость модуля, то есть управление его работой определяется лишь данными,

  • ограничение доступа к внутренним структурам и алгоритмам модуля.

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

Связность (прочность)

Сила связности

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

10

Последовательная

9

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

7

Процедурная

5

Временная

3

Логическая

1

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

0

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

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

Модуль, состоящий из независимых частей, разделяющих общую структуру данных, имеет коммуникативную связность.

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

Модуль, содержащий независимые, но необходимые в один и тот же момент времени части, имеет временную связность.

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

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

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