Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


—цепление модулей




 

¬торой важнейший способ увеличить независимость модулей Ц ос≠лабить св€зи между ними. —цепление модулей, т.е. мера взаимозависимо≠сти модулей по данным, характеризуетс€ как способом передачи данных, так и свойствами самих этих данных. ѕроанализировав любую пару моду≠лей, можно определить, к какому из шести видов относитс€ сцепление ме≠жду ними, либо установить, что между ними пр€мого сцеплени€ нет.

÷ель проектировани€ состоит в определении таких сопр€жений ме≠жду модул€ми, чтобы все данные передавались между ними в форме €в≠ных и простых параметров.  ак и раньше, чтобы пон€ть важность этой цели, мы рассмотрим ниже шесть видов сцеплени€, начина€ с самого же≠сткого (наихудший случай).

ƒва модул€ сцеплены по содержимому, если один модуль пр€мо ссылаетс€ на содержимое другого. Ќапример, если модуль ј каким-либо образом ссылаетс€ на данные модул€ ¬, использу€ абсолютное смещение, то эти модули сцеплены по содержимому. ѕочти вс€кое изменение ¬ или, возможно, просто перекомпил€ци€ ¬ с помощью другой версии компил€≠тора внесет ошибку в программу.   счастью, большинство €зыков про≠граммировани€ высокого уровн€ делают сцепление по содержимому труд≠ноосуществимым.

√руппа модулей сцеплена по общей области, если они ссылаютс€ на одну и ту же глобальную структуру данных. ѕримером сцеплени€ по об≠щей области служат группы модулей, ссылающиес€ на абсолютные адреса пам€ти (включа€ регистры).

—о сцеплением по общей области св€зан целый р€д проблем. ¬се та≠кие модули завис€т от физического упор€дочени€ элементов общей струк≠туры данных, вследствие чего изменение размеров одного элемента дан≠ных вли€ет на все модули. »спользование глобальных данных сводит на нет все попытки управл€ть доступом каждого модул€ к данным. »мена глобальных переменных св€зывают модули еще тогда, когда те только создаютс€. Ёто значит, что использование сцепленных по общей области модулей в новых программах затруднено, если возможно вообще.

√лобальные данные усложн€ют и воспри€тие программы. –ассмот≠рим следующий фрагмент:

 

WHILE A DO

BEGIN

L (X,Y,Z);

M (X,Y);

N (W,Z);

P (Z,X,Y);

END;

END;

 

≈сли ј не €вл€етс€ глобальной переменной и если другие неудачные приемы кодировани€ (такие как совмещение ј с W, X, Y или Z) не исполь≠зу≠ютс€, то можно утверждать, что этот цикл никогда не закончитс€. ≈сли ј Ц глобальна€ переменна€, то сразу нельз€ определить, закончитс€ ли вы≠полне≠ние цикла. ѕридетс€ исследовать внутреннее устройство модулей L, ћ, N и , а также всех модулей, которые им подчинены, чтобы пон€ть только этот цикл DO!

√руппа модулей сцеплена по внешним данным, если они ссылаютс€ на один и тот же глобальный элемент данных (переменную, имеющую единственное поле). Ќапример, модули Delphi сцеплены друг с другом по внешним данным с помощью глобальных переменных.

—цепление по внешним данным порождает почти все проблемы, свойственные сцеплению по общей области. ќднако проблемы зависимо≠сти от физического упор€дочени€ элементов в структуре не возникает.

ƒва модул€ сцеплены по управлению, если один €вно управл€ет функционированием другого, например, использу€ код конкретной функ≠ции. —цепление по управлению и прочность по логике обычно сопутст≠вуют друг другу, поэтому основна€ проблема здесь та же, что и с прочно≠стью по логике: использование одного и того же (сложного) сопр€жени€ дл€ выполнени€ многих функций. —цепление по управлению часто пред≠полагает также, что вызывающий модуль имеет некоторое представление о логике вызываемого модул€, что уменьшает их независимость.

√руппа модулей сцеплена по формату, если они ссылаютс€ на одну и ту же неглобальную структуру данных. ≈сли модуль ј вызывает модуль ¬ и передает ему запись анкетных данных студента и при этом как ј, так и ¬ чувствительны к изменению структуры или формата этой записи, то ј и ¬ сцеплены по формату.

—цеплени€ по формату следует избегать, где это возможно, по≠скольку оно создает ненужные св€зи между модул€ми. ѕредположим, что модулю ¬ нужны только некоторые пол€ в анкете. ѕередача ему всей ан≠кеты вынуждает его заниматьс€ анкетой целиком, и таким образом увели≠чиваетс€ веро€тность того, что модуль неумышленно ее изменит (по-ви≠димому, можно утверждать, что чем больше посторонних данных дос≠тупно модулю, тем больше возможность ошибки).

—цепление по формату часто можно исключить, изолиру€ все функ≠ции, работающие с конкретной структурой данных, в информационно прочном модуле. ƒругим модул€м может понадобитьс€ им€ этой струк≠туры, но они и знают только это им€ (адрес), а не формат.

ƒва модул€ сцеплены по данным, если один вызывает другой и все входные и выходные параметры вызываемого модул€ Ц простые (не струк≠турные) элементы данных. ѕредположим, что функци€ модул€ ¬ из пре≠дыдущего примера Ц надпечатать конверт дл€ студента. ¬место того чтобы передавать ¬ всю анкету, мы могли бы передать ему в качестве аргументов фамилию студента, улицу, дом, город и почтовый индекс. ћодуль ¬ те≠перь не зависит от записи анкетных данных. ј и ¬ стали более независимы, и веро€тность ошибки в ¬ меньше, поскольку автор модул€ ¬ имеет дело с меньшим количеством данных.

 ак и в случае с прочностью модул€, сцепление вли€ет и на другие, не рассматриваемые здесь специально свойства программы (на адаптируе≠мость, сложность тестировани€, возможность повторного использовани€ модулей, простоту или сложность мультипрограммировани€ [11]).

—цепление пары модулей может удовлетвор€ть определени€м не≠скольких типов. Ќапример, два модул€ могут быть сцеплены и по образцу, и по общей области. ¬ этом случае мы относим модули к самому жесткому (худшему) из этих типов сцеплени€ (в данном случае Ц сцепление по об≠щей области).

—тепень прочности и сцеплени€ можно использовать дл€ оценки су≠ществующего проекта и как руковод€щий принцип при проектировании новой программы. Ёто, однако, не означает, что проект, в котором в от≠дельных случа€х прочность и сцепление далеки от идеала, об€зательно плох. »сход€ из некоторого компромиссного решени€, проектировщик может пойти на включение модул€, прочного всего лишь по логике. ќд≠нако поступа€ так, он должен уметь убедительно объ€снить причины и хо≠рошо понимать следстви€ своего компромиссного решени€. Ёто, во вс€ком случае, лучше, чем проектировать, основыва€сь только на интуиции, и по≠лагатьс€ на счастливый случай.

¬ысока€ прочность и слабое сцепление способствуют независимости модулей, поскольку они свод€т к минимуму их взаимодействие и их пред≠положени€ друг о друге. —ледующие три критери€ проектировани€, сфор≠мулированные в [5], хорошо подытоживают сказанное.

1. —ложность взаимодействи€ модул€ с другими модул€ми должна быть меньше сложности его внутренней структуры.

2. ’ороший модуль снаружи проще, чем внутри.

3. ’ороший модуль проще использовать, чем построить.

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-05-08; ћы поможем в написании ваших работ!; просмотров: 1796 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ћибо вы управл€ете вашим днем, либо день управл€ет вами. © ƒжим –он
==> читать все изречени€...

537 - | 446 -


© 2015-2023 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.011 с.