Структурное кодирование.
Структурное кодирование - это метод кодирования (программирования), предусматривающий создание понятных, простых и удобочитаемых программных модулей и программных комплексов на требуемых языках программирования.
Для кодирования программных модулей используются унифицированные (базовые) структуры. Доказано, что любая программа может быть составлена с применением только трёх канонических структур - следования, выбора, повторения.
Программные комплексы и программные модули, закодированные в соответствии с правилами структурного программирования, называются структурированными.
Модульное программирование - это организация программы как совокупности небольших независимых блоков, модулей, структура и поведение которых подчиняется определенным правилам. Следует заметить, что понятие «модуль» не совпадает в данном случае с понятием «модуль» (unit в смысле «библиотека») языка Паскаль. Это должна быть простая, замкнутая (независимая) программная единица (процедура или функция), обозримая, реализующая только одну функцию (действие).
«Один модуль – одна функция»
Для написания одного модуля должно быть достаточно минимальных знаний о тексте других модулей, как вызывающих, так и вызываемых.
Программа, разработанная в соответствии с принципами структурного программирования, должна удовлетворять следующим требованиям:
· программа должна разделяться на независимые части, называемые модулями;
· модуль - это независимый блок, код (текст) которого физически и логически отделен от кода других модулей;
· модуль выполняет только одну логическую функцию, иначе говоря, должен решать самостоятельную задачу своего уровня по принципу: один программный модуль - одна функция;
· работа программного модуля не должна зависеть:
Þ от входных данных;
Þ от того, какому программному модулю предназначены его выходные данные;
Þ от предыстории вызовов программного модуля;
· размер программного модуля желательно ограничивать одной - двумя страницами исходного листинга (50-100 строк исходного кода);
· взаимосвязи между модулями устанавливаются по иерархической структуре;
· каждый модуль должен начинаться с комментария, объясняющего его назначение, назначение переменных, передаваемых в модуль и из него, модулей, которые его вызывают, и модулей, которые вызываются из него;
· при создании модуля можно использовать только стандартные управляющие конструкции: выбор, цикл, блок (последовательность операторов);
· оператор безусловного перехода или вообще не используется в модуле, или применяется в исключительных случаях только для перехода на выходную точку модуля (в направлении от начала к концу модуля, «по шерсти»);
· в тексте модуля необходимо использовать комментарии, в особенности в сложных местах алгоритма;
· идентификаторы переменных и модулей должны быть смысловыми, «говорящими»;
· в одной строке стоит записывать не более одного оператора. Если для записи оператора требуется больше, чем одна строка, то все последующие операторы записываются с отступами;
· желательно не допускать вложенности операторов IF более чем трех уровней;
· следует избегать использования языковых конструкций с неочевидной семантикой, а также программистских «трюков».
Порядок разработки программы.
Варианты
1) сверху вниз;
2) снизу вверх;
3) комбинированный;
4) пооперационный, по ветвям;
5) «большого скачка».
Рекомендации по разработке программы.
1) выполняется нисходящее проектирование, как результат - построение структурной схемы программы;
2) осуществляется тщательная проработка интерфейсов в программе, то есть:
v использование только параметров для обмена информацией между подпрограммами,
v контроль правильности использования параметров от подпрограммы к подпрограмме (требования к соответствию формальных и фактических параметров: «количество, качество, порядок следования»). Здесь велика роль таблицы спецификаций, составленной для разрабатываемого пакета;
3) разработка меню, реализующего выполнение программы в удобной технологической последовательности (не рекомендуется в меню на одном уровне предусматривать выполнение большого, например, больше 6-7) количества действий;
4) программирование модулей (подпрограмм) пакета на базе сочетания методов «сверху вниз» и пооперационного. На первом этапе разработки желательно размещать подпрограммы внутри главной программы (достаточно удобный доступ к текстам подпрограмм при тестировании и отладке);
5) пошаговая сборка, индивидуальное подключение подпрограмм и, по возможности, тестирование (как минимум, пробные запуски на выполнение) полученной программы.
В заключение следует напомнить, что все эти вместе взятые меры направлены на повышение качества разрабатываемого программного обеспечения.