Базовыми строительными блоками программной системы являются модули. Все виды модулей в любом языке программирования имеют ряд общих свойств, нижеперечисленные из которых существенны при структурном проектировании:
- модуль состоит из множества операторов языка программирования, записанных последовательно;
- модуль имеет имя, по которому к нему можно ссылаться как к единому фрагменту;
- модуль может принимать и/или передавать данные как параметры в вызывающей последовательности или связывать данные через фиксированные ячейки или общие области.
Структурные карты Константайна являются моделью отношений иерархии между программными модулями. Узлы структурных карт соответствуют модулям и областям данных, потоки изображают межмодульные вызовы. При этом циклические и условные вызовы модулей моделируются специальными узлами, поэтому потоки должны быть изображены проходящими через эти специальные узлы. Межмодульные связи по данным и управлению также моделируются специальными узлами, привязанными к потокам (т.е. к вызовам модулей), стрелками указываются направления потоков и связей. Фундаментальные элементы структурных карт в соответствии со стандартами IBM, ISO и ANSI приведены на рис. 1.1.
|
|
Базовым элементом структурной карты является модуль. Возможно использовать различные типы модулей (см. рис. 1.2):
Различают четыре типа вершин:
1. модуль – подпрограмма;
2. подсистема – программа;
3. библиотека – совокупность подпрограмм, размещенных в отдельном модуле;
4. область данных – специальным образом оформленная совокупность данных, к которой возможно обращение извне.
При построении структурных карт добавление модулей и увязывание их вместе осуществляется с использований потоков, демонстрирующих иерархию вызовов. Типы используемых при этом потоков приведены на рис. 1.3. При последовательном вызове модули вызываются в порядке их следования. При параллельном вызове модули могут вызываться в любом порядке или одновременно (параллельно).
Для моделирования условных и циклических вызовов применяются следующие узлы (рис. 1.4):
Рис. 1.1. Элементы структурных карт
Условный узел используется для условного вызова модуля-потомка. Он изображается с помощью ромба, потоки - альтернативные вызовы изображаются выходящими из него. Таким образом, если из ромба выходят два потока, это соответствует конструкции IF-THEN-ELSE, если один поток - конструкции IF-THEN.
Итерационный узел используется для того, чтобы показать, что модуль-наследник вызывается в цикле. Он изображается полуокружностью со стрелкой с выходящими из него потоками.
Если необходимо показать, что подчиненный модуль не вызывается повторно при активации главного, это осуществляется указанием цифры "1" в главном модуле напротив потока - вызова наследника.
|
|
Рис. 1.2. Типы модулей
Рис.1.3. Типы вызовов модулей
Рис. 1.4. Условные и циклические вызовы модулей
Связи по данным и управлению между модулями (передаваемые как параметры) раскрываются аннотированием потоков-вызовов (рис. 1.5). Стрелками отмечаются направления связей.
Рис. 1.5. Связи по данным и управлению
Пример структурной карты, описывающей межмодульные отношения в рассмотренном ранее фрагменте банковской системы, приведен на рис. 1.6.
Рис. 1.6. Пример структурной карты Константайна