49187 (572302), страница 2
Текст из файла (страница 2)
Суммарное число S различн. информационных элементов, являющихся попарно общими для различных модулей, равно
При разработке программного обеспечения АСУ требуется минимизировать S при следующих основных технологических ограничениях: на число процедур в модулях
где Мv - мощность множества процедур в v-м модуле;
на число информационных элементов, используемых модулями,
где Lv - максимальное число информационных элементов, используемых v-м модулем;
на интерфейс между отдельным модулем и другими модулями системы
где Sv' - максимально возможное число информационных связей между модулем v' и остальными модулями системы;
на интерфейс между двумя заданными модулями системы
где Svv' - максимально возможное число информационных связей между модулями v и v';
на разделение отдельных процедур системы по различным модулям
xry + xr'v ≤ 1,
где v = 1, 2, ..., V для заданных r и r'. Поставленная задача является задачей квадратичного целочисленного программирования и может быть сведена к линейной форме путем линеаризации выражений и введением связи между вспомогательными и основными переменными. В этом случае она может быть решена с использованием имеющихся пакетов прикладных программ.
В условиях, когда задано информационное обеспечение, т.е. определено содержание каждого информационного массива и его динамические характеристики, решаются динамические задачи разбиения системы программного обеспечения на модули. В качестве критерия оптимизации используются минимум общего времени обмена с внешней памятью и минимум межмодульного интерфейса.
Исходными данными для постановки и решения динамических задач синтеза системы модулей являются множество информационных массивов системы, для которых определены: входные, выходные и промежуточные данные; множество альтернативных процедур обработки данных, входящих в состав алгоритмов, обеспечивающих решение задач системы; возможные последовательности выполнения процедур в процессе обработки; способы обмена с внешней памятью модульной системы обработки данных; взаимосвязи процедур с информационными массивами; временные характеристики обращения к массивам.
Задачи синтеза систем модулей программного обеспечения СОД сведены к задачам нелинейного целочисленного программирования. Для их решения предложены алгоритмы, использующие схему "ветвей и границ" и особенности функционирования модульных систем обработки данных.
Структурное кодирование. Третьим составным элементом структурного программирования является структурное кодирование, которое представляет собой метод написания хорошо структурированных программных модулей, удобных для тестирования, модификации и использования. Метод предусматривает написание программных модулей произвольного размера и сложности на основе ограниченного множества базисных логических структур. Метод аналогичен принципу, положенному в основу проектирования схем, где любая логическая структура может быть создана из элементарных структур И, ИЛИ и НЕ. Структурное кодирование базируется на строго доказанной теореме о структурировании, которая утверждает, что любую правильную программу (с одним входом и одним выходом, без зацикливаний и недостижимых команд) можно написать с использованием следующих логических структур: последовательности двух или более операторов; выбора одного из двух операторов (IF THEN, ELSE); повторения (или управления циклом) оператора, пока выполняется некоторое условие (DO WHILE).
На рис. 2 показаны основные логические структуры: последовательности (рис. 2, а); выбора (рис. 2, б); повторения (рис. 2, в). Каждая структура имеет один вход и один выход. Комбинации правильных программ, полученные с использованием трех основных логических структур, также являются правильными программами. При использовании только указанных структур отпадает необходимость в безусловных переходах и метках. Применение структурного кодирования в значительной степени уменьшает сложность программ. Существенным моментом является то, что при замене любого функционального блока в схеме правильной программы на любую из трех основных логических структур программа остается в классе правильных программ. При структурном кодировании структура последовательности формализует тот факт, что операторы программы выполняются в порядке их появления, структура выбора - выбор одного из двух действий исходя из выполнения некоторого условия (оператор IF THEN, ELSE), структура повторения – выполнение группы операторов до тех пор, пока выполняется некоторое условие (оператор DO WHILE или итеративный DO).
Рис. 2
Хотя теоретически возможно написать все правильные программы, используя только перечисленные структуры, можно расширить это ограничение добавлением структур, имеющих один вход и один выход и формализующих операторы DO UNTIL и CASE.
Таким образом, чтобы получить структурированную программу, следует избегать операторов GO TO. Каждый программный модуль должен состоять из последовательности операторов IF, THEN, ELSE, циклов или операторов CASE. В случае, если язык не имеет достаточного количества языковых конструкций для структурного программирования (ФОРТРАН, КОБОЛ), рекомендуется применять операторы GO TO только для переходов вперед и там, где возможно заменять их операторами CALL или PERFORM. В языках ПЛ/1 и АЛГОЛ имеется большая часть рекомендованных конструкций, что позволяет легко писать структурированные программы.
Применение принципов структурного программирования позволяет существенно уменьшить сложность проектируемых комплексов программ и облегчить процесс их отладки за счет более детального проектирования. Основным преимуществом структурного программирования является то, что программа может быть проанализирована путем проверки структуры и становится возможным обнаруживать ошибки уже на этапе программирования, что значительно снижает затраты на процесс отладки.















