- •Связность модулей
- •Виды сцепления модулей
- •Жизненный цикл и этапы разработки
- •8. Критерии качества программы. Диалоговые программы, дружественность.
- •9. Модели жизненного цикла. Каскадная модель жизненного цикла (классический жизненный цикл)
- •10. Модели жизненного цикла. Модель с промежуточным контролем
- •11. Модели жизненного цикла. Спиральная модель
- •12. Модели по используемые на этапе определения спецификаций
- •12. Модули и их свойства
- •13. Нисходящая и восходящая разработка программного обеспечения
- •14. Подходы к организации процесса создания и использования пс
- •15 Понятие технологии программирования
- •16. Постановка задачи. Анализ требований и определение спецификаций
- •17. Приемы обеспечения технологичности программных продуктов
- •18. Процессы жизненного цикла разработки программных средств
- •19. Спецификации программного обеспечения при структурном подходе
- •21. Структурное программирование
- •22. Тестирование пс
- •23. Функциональные диаграммы
- •24. Этапы развития программирования
Виды сцепления модулей
Сцепление модулей - мера взаимозависимости модулей, определяет, насколько хорошо модули отделены друг от друга. Модули независимы, если каждый из них не содержит о другом никакой информации. Чем больше информации о других модулях хранит модуль, тем больше он с ними сцеплен. Пять типов сцепления модулей: по данным; по образцу; по управлению; по общей области данных; по содержимому.
Сцепление по данным - модули обмениваются данными, представленными скалярными значениями. При небольшом количестве передаваемых параметров этот тип обеспечивает наилучшие технологические характеристики ПО.
Сцепление по образцу - модули обмениваются данными, объединенными в структуры. Этот тип также обеспечивает неплохие характеристики, но они хуже, чем у предыдущего типа, так как конкретные передаваемые данные «спрятаны» в структуры, и потому уменьшается «прозрачность» связи между модулями.
Сцеплении по управлению - один модуль посылает другому информационный объект (флаг) для управления внутренней логикой модуля. Таким способом выполняют настройку режимов работы ПО. Это снижает наглядность взаимодействия модулей и потому обеспечивают еще худшие характеристики технологичности разрабатываемого ПО.
Сцепление по общей области данных - модули работают с общей областью данных. Этот тип сцепления считается недопустимым, поскольку:
программы, использующие данный тип сцепления, очень сложны для понимания ;
ошибка одного модуля, приводящая к изменению общих данных, может проявиться при выполнении другого модуля, что существенно усложняет локализацию ошибок;
при ссылке к данным в общей области модули используют конкретные имена, что уменьшает гибкость разрабатываемого ПО.
«Подпрограммы с памятью», действия которых зависят от истории вызовов, используют сцепление по общей области, что делает их работу в общем случае непредсказуемой. Именно этот вариант используют статические переменные C++.
Сцепления по содержимому - один модуль содержит обращения к внутренним компонентам другого, что противоречит блочно-иерархическому подходу. Отдельный модуль в этом случае уже не является блоком («черным ящиком»): его содержимое должно учитываться в процессе разработки другого модуля. Современные универсальные языки процедурного программирования данного типа сцепления в явном виде не поддерживают, но для языков низкого уровня (Ассемблера) такой вид сцепления возможен.
В табл. 2.1 приведены характеристики различных типов сцепления по экспертным оценкам. Допустимыми считают первые три типа сцепления.
Таблица 2.1
Тип сцепления |
Сцепление, балл |
Устойчивость к ошибкам других модулей |
Наглядность (понятность) |
Возможность изменения |
Вероятность использования |
По данным |
1 |
Хорошая* |
Хорошая |
Хорошая |
Большая |
По образцу |
3 |
Средняя |
Хорошая* |
Средняя |
Средняя |
По управлению |
4 |
Средняя |
Плохая |
Плохая |
Малая |
По общей области |
6 |
Плохая |
Плохая |
Средняя |
Малая |
По содержимому |
10 |
Плохая |
Плохая |
Плохая |
Малая |
* Зависит от количества параметров интерфейса.
Обычно модули сцепляются между собой несколькими способами. Качество ПО определяют по типу сцепления с худшими характеристиками.
В некоторых случаях сцепление модулей можно уменьшить, удалив необязательные связи и структурировав необходимые связи. Примером может служить объектно-ориентированное программирование, в котором вместо большого количества параметров метод неявно получает адрес области (структуры), в которой расположены поля объекта, и явно – дополнительные параметры. В результате модули оказываются сцепленными по образцу.
Диаграмма переходов состояний