Тема 2.4 Существует 3
критерия проектирования модулей:
1.
Сложность взаимодействия модуля с другими модулями должна быть меньше
сложности его внутренней структуры.
2.
Хороший модуль снаружи проще, чем внутри.
3.
Хороший модуль проще использовать, чем построить.
Кроме внутренней (по виду)
связности и внешней (по виду сцепления) связности, степень независимости модуля
определяется следующими факторами:
1.
Размер модуля. Оказывает влияние на
независимость, читаемость программы, на сложность организации тестирования.
Размеры модуля должны быть невелики; как правило. Модуль должен содержать до
100 выполняемых операторов языка высокого уровня;
2.
Предсказуемые модули. Предсказуемый модуль –
модуль, работа которого не зависит от предыстории его использования. С целью
уменьшения ошибок, повышения надежности
ПИ необходимо проектировать предсказуемые модули, т.е. такие модули, которые не
сохраняют никаких данных о предыдущих вызовах (признаки, область счета, очистка
и т.д.).
3.
Структура принятия решений. Всюду, где это можно,
желательно организовывать модули и принятие решений в них таким образом, чтобы
модули, непосредственно управляемые решением, вызывались модулем, содержащим
такое решение. Это ведет к устранению передачи специальных параметров,
представляющих решения. Которые должны быть приняты, а также позволяют
принимать влияющие на управление программной решения на высоком уровне
программной иерархии.
4.
Минимизация доступа к
данным. Объем
данных, на которые модуль может ссылаться, должен быть сведен к минимуму.
Проектировщик должен пытаться изолировать информацию о какой-либо структуре
данных или записи в базе данных в отдельном модуле (или небольшом количестве
модулей). Проблему общих данных не следует решать путем передачи одного
огромного списка параметров во все модули. Следуя этим правилам, проектировщик
минимизирует доступный для каждого модуля объем данных, сокращая при этом число
ошибок и облегчая их выявление и устранение.
5.
Внутренние процедуры. Внутренняя процедура или
подпрограмма – это закрытая подпрограмма, физически содержащаяся в вызываемом
модуле. Внутренних процедур следует избегать, так как их трудно тестировать и к
ним нельзя обращаться из других модулей. Если возникает необходимость в
использовании внутренней процедуры, проектировщику предпочтительнее оформить ее
как модуль.
Таким образом, процесс
проектирования включает анализ и декомпозицию задач и данных в соответствии с
принятым методом проектирования и завершается построением иерархической схемы,
отражающей структурные взаимосвязи между всеми модулями. Описание функций
каждого модуля и передачу данных между модулями
Поставим
перед собой задачу.
Расчет заработной платы. Сделать
внешнее проектирование:
1.
Имя модуля. Указывается имя, с помощью которого можно обратиться к
модулю.
2.
Функции. Определяется, что делает модуль, когда он вызван, а также его
назначение (не нужно указывать, как функция реализуется).
3.
Список параметров. Определяется число и порядок параметров,
передаваемых модулю.
4.
Входные параметры. Подробно описываются все входные параметры
(указываются атрибуты, формат, размер, единицы измерения, а также допустимые
диапазоны возможных значений всех входных параметров).
5.
Выходные параметры. Описываются все данные, возвращаемые модулем (по
аналогии входных). Описывается взаимосвязь между
входными и выходными данными, т.е. какие выходные данные на основе входных
данных получаются. Определяются выходные данные, возвращаемые в вызывающий
модуль в случае ошибочных входных данных. Описывается поведение модуля при
любых входных условия.
6.
Внешние эффекты. Дается описание всех внешних для программы событий,
происходящих при работе модуля, таких как прием запросов, выдача сообщений об
ошибках и т.п.