Принципы модульности и иерархичности - основные принципы блочно-иерархического проектирования сложных систем - позволяют организовывать коллективную параллельную разработку различных частей ПО, создавать
открытые программные системы, облегчают их комплексную отладку и
информационное согласование.
Модуль – структурная составляющая ПО, рассматриваемая как единое
целое на определенных стадиях разработки или в процессе эксплуатации.
Модули могут задаваться в текстовом виде, на некотором промежуточном языке
загрузки, в машинных командах. Различают модули исходные, объектные и
абсолютные.
Исходные - это модули на исходном языке текста.
Объектные (модули загрузки) - это модули, полученные в результате
трансляции, однако не обработанные еще редактором внешних связей и
загрузчиком.
Абсолютные - модули в истинных адресах оперативной памяти,
записанные в машинных командах.
Ценность каждого модуля определяется тем, насколько часто он
встречается в задачах данного класса.
|
|
Совокупность всех модулей пакета входит в тело пакета, который может
также включать статистическую информацию об использовании различных
компонентов пакета, каталоги, справочные данные и др. Различные компоненты
пакета могут храниться на исходном языке, языке загрузки, в машинных кодах и
на языке управления заданиями.
Сборка модулей в рабочую программу осуществляется с помощью
системных средств пакета. Сборка может производиться в автоматическом
режиме или по указанию пользователя. При сборке осуществляется стыковка
модулей по управлению и информации.
При стыковке по управлению надо задать управляющей программе
порядок включения в работу модулей собираемой программы. Кроме того,
каждый модуль должен иметь возможность получать данные от другого модуля,
считывая их с определенных областей оперативной памяти и помещая в
соответствующие области свои результаты для другого блока. В этом и состоит
установление информационных связей.
Требования, предъявляемые к модулям и средствам связи:
1. Независимость разработки, т.е. возможность вести разработку модулей
без взаимного общения разработчиков.
2. Комбинируемость - возможность получения нового модуля при
комбинировании имеющихся модулей средствами сборки. Это значительно
сокращает сборку и упрощает получение готовых модулей.
3. Контекстная независимость - возможность проводить сборку
программы, не зная, как работает каждый модуль. В большой системе всегда
происходят изменения, и если при каждой сборке надо выяснять их, то ясно, что
такая система неэффективна.
|
|
4. Информационная независимость. Если происходят изменения в
некоторой группе данных, которые в модуле не используются, то, естественно,
это не должно приводить к изменению такого модуля.
Существуют следующие способы сборки модулей текста в рабочую
программу:
- библиотечный способ;
- сборка с изначальным заданием связей;
- сборка с изначальным заданием только информационных связей;
- сборка путем установления связей с помощью языка.
Простейший способ сборки основан на использовании библиотек и систем
программирования. В библиотеке хранятся модули загрузки. Они транслируются
независимо друг от друга и никак не связаны (ни по управлению, ни по
информации). Пользователь сам в тексте своей программы организует эти связи
указанием обращений к подпрограммам (связи по управлению) и за счет
указаний фактических параметров в обращениях и переменных в общих
(common-) блоках (связи по информации). В этом случае пользователь целиком
берет на себя рутинную работу по сборке: он должен везде указать фактические
параметры, внимательно распределить память в общих (common-) блоках.
Сборка с изначальным заданием связей основана на жестком задании
связей как по памяти, так и по управлению, причем должны быть предприняты
специальные меры для облегчения замены модулей. Такие системы эффективны
в случае, когда схема задач остается практически неизменной. Заменяемые
модули могут быть одинаковыми по входным и выходным данным, но могут
отличаться по физической постановке, реализуемой ими задачи (взята другая
модель). Все информационные связи модулей при сборке концентрируются в
одном месте - модуле памяти. Неудобство таких методов сборки состоит в том,
что заранее должны быть запрограммированы все связи, предусмотрены все
возможные варианты программ.