Ћекции.ќрг


ѕоиск:




 атегории:

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

 

 

 

 


ѕрочность модулей




 

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

¬ первую очередь необходимо определить, что понима≠етс€ под функцией модул€. ћодуль имеет три основных атрибута: он вы≠полн€ет одну или несколько функций, обладает некоторой логикой и ис≠пользуетс€ в одном или нескольких контекстах. ‘ункци€ Ц это внешнее описание мо≠дул€; описываетс€, что делает модуль, когда он вызван, но не как это дела≠етс€. Ћогика описывает внутренний алгоритм модул€, другими словами, как он выполн€ет свою функцию.  онтекст описывает конкрет≠ное приме≠нение модул€. Ќапример, модуль с функцией Ђудалить пробелы из литер≠ной строкиї может использоватьс€ в контексте Ђсжать сообщение дл€ те≠леобработкиї. „тобы увидеть разницу между функцией и логикой, рас≠смотрим модуль, функци€ которого Ц зашифровать введенную инфор≠ма≠цию по заданному ключу. ќн может быть головным модулем 15-мо≠дуль≠ной программы либо единственным модулем программы. ¬ обоих случа€х функци€ этих двух модулей одинакова, но логика Ц совершенно разна€. ћы видим, что функци€ модул€ может рассматриватьс€ как компо≠зици€ его логики и функций всех подчиненных (вызываемых им) модулей. Ёто определение рекурсивно и применимо к любому модулю в иерархии.

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

ћодуль, прочный по совпадению, Ц модуль, между элементами кото≠рого нет осмысленных св€зей. “рудно привести пример такого модул€, по≠скольку он не выполн€ет никаких разумных функций. ќписание логики Ц единственный возможный способ описани€ модулей этого типа. ќдна из причин, по которым такие модули могут возникнуть, Ц это Ђмодул€риза≠ци€ї программы post factum, когда мы обнаруживаем одинаковые после≠довательности команд в нескольких модул€х и решаем сгруппировать их в отдельный модуль. ≈сли эти последовательности (хот€ они и кажутс€ идентичными) имеют разный смысл в тех модул€х, в которые они перво≠начально входили, то наш новый модуль €вл€етс€ прочным по совпаде≠нию. ћодуль этого типа тесно св€зан с вызывающими его модул€ми, по≠этому почти люба€ его модификаци€ в интересах одного из этих модулей приводит к тому, что дл€ всех остальных он станет работать неправильно.

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

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

ѕроцедурно прочный модуль последовательно выполн€ет набор тех св€занных с ним функций, которые непосредственно относ€тс€ к проце≠дуре решени€ задачи. ¬от пример задачи дл€ подсистемы Ђинтеллектуаль≠ный домї: написать программу регулировани€ температуры простого па≠рового котла. ¬ определенной степени подобна€ задача может определ€ть действи€ программы. Ќапример, в постановке задачи может быть сказано, что при получении сигнала х следует закрыть клапан у и прочитать и заре≠гистрировать значение температуры. ћодуль с функцией Ђзакрыть клапан у, прочитать значение температуры парового котла и занести его в жур≠налї обладает процедурной прочностью. ¬ этом случае единственна€ про≠блема, св€занна€ с надежностью, состоит в том, что фрагменты про≠граммы, относ€щиес€ к различным функци€м, могут быть переплетены. ќтметим, что дл€ модулей этого типа, так же как и дл€ большинства дру≠гих типов, имеютс€ и другие, не св€занные с надежностью проблемы, как показано в [11].

 оммуникационно прочный модуль Ц это процедурно прочный мо≠дуль с одним дополнительным ограничением: все его функции св€заны по данным. Ќапример, модуль Ђпрочитать следующую запись и обновить главный файлї коммуникационно прочен, поскольку обе его функции св€≠заны между собой тем, что обе они работают с одной и той же записью. «десь обычно возможно переплетение функций, но риск внесени€ ошибки при модификации несколько меньше, поскольку функции св€заны более тесно.

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

ќтметим, что функционально прочный модуль может быть описан набором более детальных функций. Ќапример, модуль Ђподвести итог по расходу гор€чей воды за мес€цї можно описать так: Ђподготовить началь≠ное состо€ние итоговой таблицы, открыть файл расхода гор€чей воды, чи≠тать расход и обновл€ть итоговую таблицуї. √л€д€ на это, читатель может подумать, что простой перефразировкой описани€ модул€ понижена его прочность. ќднако если эти Ђфункции более низкого уровн€ї могут быть рационально описаны как одна хорошо определенна€ функци€ Ђболее вы≠сокого уровн€ї, то следует считать, что модуль обладает функциональной прочностью.

ќставшийс€ тип прочности Ц информационна€ прочность. »нфор≠мационно прочный модуль выполн€ет несколько функций, причем все они работают с одной и той же структурой данных и кажда€ представл€етс€ собственным входом. ћодуль с двум€ входами, один из которых соответ≠ствует функции Ђвключить элемент в базу данныхї, а другой Ц функции Ђискать в базе данныхї, обладает информационной прочностью. ћодуль этого типа может также рассматриватьс€ как физическое объединение не≠скольких функционально прочных модулей с целью Ђупр€тывани€ инфор≠мацииї [12], например, дл€ того, чтобы укрыть внутри одного модул€ все сведени€ о конкретной структуре данных, ресурсах или устройстве. ¬ упо≠м€нутом выше примере вс€ информаци€ о структуре и расположении таб≠лицы символов скрыта внутри одного модул€. Ёто имеет то преимущество, что вс€кий раз, когда удаетс€ скрыть некоторый аспект программы внутри одного модул€, независимость ее модулей увеличиваетс€. ”поминавшуюс€ ранее цель проектировани€ нужно теперь подправить, чтобы нар€ду с функционально прочными модул€ми стремитьс€ к информационно проч≠ным.

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

ќтметим, что модуль может соответствовать описанию нескольких типов прочности. Ќапример, коммуникационно прочный модуль удовле≠твор€ет также определению процедурной прочности и прочности по классу. Ѕудем всегда относить модуль к высшему типу прочности, опреде≠лению которого он удовлетвор€ет.

 





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


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


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

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

—воим успехом € об€зана тому, что никогда не оправдывалась и не принимала оправданий от других. © ‘лоренс Ќайтингейл
==> читать все изречени€...

576 - | 523 -


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

√ен: 0.014 с.