Модули. сцепление и связность модулей

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

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

Кроме этого структуризация программных продуктов преследует цели:

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

Структурное «разбиение» программ на отдельные составляющие служит основой и для выбора инструментальных средств их создания, хотя имеет место и обратное влияние – выбор инструментальных средств определяет типы программных модулей.

Структуризация программ выполняется в первую очередь для удобства разработки, программирования, отладки и внесения изменений в программный продукт. Как правило, программные комплексы большой алгоритмической сложности разрабатываются коллективом разработчиков (2–15 и более человек).

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

К модулям предъявляются следующие требования:

  • отдельная компиляция;
  • один вход и один выход – на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т. е. реализуется стандартный принцип IPO (Input – Process – Output) – вход-процесс-выход;
  • выполнение минимального числа функций.
  • функциональная завершенность – модуль выполняет перечень регламентированных операций для реализации каждой отдельной функции в полном составе, достаточных для завершения начатой обработки;
  • логическая независимость – результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;
  • слабые информационные связи с другими программными модулями – обмен информацией между модулями должен быть по возможности минимизирован;
  • соответствие принципу вертикального управления;
  • возможность вызова других модулей;
  • обозримый по размеру и сложности программный элемент;
  • независимость от истории вызовов;

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

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

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

1) источника входных данных;

2) местоназначения выходных данных;

3) от предистории.

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

1) функциональная сложность – обусловлено тем, что один модуль выполняет слишком много функций;

2) распределенная сложность – это сложность идентификации общей функции распределенной между несколькими модулями за счет чего утрачивается возможность уменьшения сложности всей программы при модульном программировании;

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

Практика показала, что чем выше степень независимости модулей, тем:

• легче разобраться в отдельном модуле и всей программе и, соответственно, тестировать, отлаживать и модифицировать ее;

• меньше вероятность появления новых ошибок при исправлении старых или внесении изменений в программу, т. е. вероятность появления «волнового» эффекта;

• проще организовать разработку программного обеспечения группой программистов и легче его сопровождать.

Таким образом, уменьшение зависимости модулей улучшает технологичность проекта.

Степень независимости модулей (как подпрограмм, так и библиотек) оценивают двумя критериями: сцеплением и связностью.

Изготовление вездехода часть №2 Модуль сцепления

Похожие статьи:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector