Характеристики различных типов сцепления по экспертным оценкам



Тип сцепления Балл Устойчивость к ошибкам других модулей Наглядность (понятность) Возможность изменения Вероятность повторного использования
1) по данным 1 хорошая* хорошая хорошая большая
2) по образцу 3 средняя хорошая* средняя средняя
3) по управлению 4 средняя плохая плохая малая
4) по общей области 6 плохая плохая средняя малая
5) по содержанию 10 плохая плохая плохая малая

*-зависит от количества параметров интерфейса.

Допустимыми считаются первые три типа сцепления. Обычно модули сцепляются между собой несколькими способами, учитывая это, качество ПО принято определять по типу сцепления с худшими характеристиками. В некоторых случаях сцепление модуля можно уменьшить, удалив необязательные связи и структурировав необходимые связи. Пример – ООП, в котором вместо большого количества параметров метод неявно получает адрес области (структуры), в которой расположены поля объекта и явно-дополнительные параметры. В результате модули оказываются сцепленными по образцу.


Модули и их свойства (связность модулей)

Результатом процедурной декомпозиции является иерархия процедур, в которой функции, связанные с принятием решения, реализуются с подпрограммами верхних уровней, а непосредственная обработка с подпрограммами нижних уровней. Это согласуется с принципом вертикального управления. Результатом объектной декомпозиции является совокупность объектов, которые затем реализуют, как переменные некоторых классов. Таким образом, при любой декомпозиции получают набор связанных соответствующими данными подпрограмм, которые в процессе реализации организуют модули. Модулем называют автономно компилируемую программную единицу. Термин модуль используется в двух смыслах:

3)когда размер программы был невелик, и все подпрограммы компилировались отдельно, под модулем понималась подпрограмма.

4)когда размер программы вырос, появилась возможность создавать библиотеки, термин модуль стал использоваться и в смысле автономно компилируемого набора программных ресурсов. Данный модуль можно получать и/или возвращать через общие области памяти или параметры.

Первоначально к модулям (подпрограммы) предъявлялись требования: одна точка входа, одна точка выхода, отдельно компиляция, возможность вызова других модулей, соответствие принципу вертикального управления, выполнение одной функции, небольшой размер, независимость от истории вызовов. Со временем, когда основные требования структурного подхода стали поддерживаться языком программирования и под модулем стали понимать 2), то требование независимости модулей стало основными. Практика показала, чем выше степени независимости модулей, тем меньше вероятность появления новых ошибок при исправлении старых или внесении изменений в программу (волновой эффект). Проще организовать разработку ПО группой и легче его сопровождать.

Связность модулей

Связность – это мера прочности соединения функциональных и информационных объектов внутри одного модуля. Если сцепление характеризует качество отделения модулей, то связность характеризует степень взаимосвязи элементов, реализуемых одним модулем.

Размещение сильно связанных элементов в одном модуле уменьшает межмодульные связи, то есть взаимное влияние модулей. Помещение сильно связанных элементов в разные модули усиливает межмодульные связи и усложняет понимание их взаимодействия. Объединение слабо связанных элементов также уменьшает технологичность модуля. Виды связности (в порядке убывания уровня):

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

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

3) Информационная (коммуникативная)

4) Процедурная

5) Временная

6) Логическая

7) Случайная

1). Все объекты модуля предназначены для выполнения одной функции: операции, объединяемые для выполнения одной функции, или данные, связанные с одной функцией.

Рис.2.1. Связность одной функции.

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

2). Выход одной функции служит исходными данными для другой функции.

 

Рис.2.2.

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

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

Рис.2.3.

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

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

Рис.2.4.

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

5). Временная связность функций подразумевает, что эти функции выполняются параллельно или в течение некоторого времени.

Рис.2.5.

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

6). Логическая связность базируется на объединении данных или функций в одну логическую группу.

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

 

7). Если связь между элементами мала или отсутствует, то они имеют случайную связность. Такие модули имеют самый низкий показатель технологичности.

 

Вид связности Сцепление (балл) Наглядность (понятность) Возможность изменения Сопровождаемость
1). Функциональная 10 Хорошая Хорошая Хорошая
2). Последовательная 9 Хорошая Хорошая Хорошая
3). Информационная 8 Средняя Средняя Средняя
4). Процедурная 5 Средняя Средняя Плохая
5). Временная 3 Средняя Средняя Плохая
6). Логическая 1 Плохая Плохая Плохая
7). Случайная 0 Плохая Плохая Плохая

 

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


Дата добавления: 2018-05-13; просмотров: 525; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!