4.5 Традиционные модульные структуры
Наряду с требованиями к модульности, изложенными в предыдущей лекции, пять требований из-
менчивости типов, группирования подпрограмм, изменчивости реализаций, независимости представ-
лений и факторизации общего поведения определяют, чего следует ожидать от наших повторно
используемых компонентов - абстрактных модулей.
Подпрограммы
Классический подход к повторному использованию состоит в том, чтобы создавать библиотеки под-
программ. Здесь термин подпрограмма (routine) означает программный элемент, который может быть
вызван другими элементами для выполнения некоторого алгоритма, используя некоторые входные
данные, создавая некоторые выходные данные, и, возможно, модифицируя другие данные. Вызы-
вающий элемент передает свои входные данные (а иногда - выходные данные и модифицируемые
данные) в виде фактических аргументов (actual arguments) . Подпрограмма может также возвращать
выходные данные в виде результата; в этом случае она называется функцией.
Библиотеки подпрограмм успешно использовались в различных прикладных областях, в частно-
сти, для численных расчетов, где применение отличных библиотек привело к первым сообщениям
об успехах повторного использования. Декомпозицию систем на подпрограммы, функциональную
декомпозицию, обеспечивает также метод нисходящего (сверху вниз) программирования. Подход,
основанный на использовании библиотек подпрограмм, хорошо работает в случаях, когда можно
определить множество (возможно - большое) отдельных задач, при наличии следующих ограниче-
ний:
• Каждая задача допускает простую спецификацию. Точнее, возможно охарактеризовать каждую
отдельную задачу небольшим набором входных и выходных параметров.