3.Модульные программы. Классические методы проектирования
модульных программ
Программирование вообще можно определить как проектирование, кодирование и
тестирование программы.
Структурное программирование это проектирование, написание и тестирование
программы в соответствии с заранее определенной дисциплиной.
Раньше хорошими программистами считали тех, кто писал весьма хитроумные
программы, которые занимали минимум основной памяти и выполнялись за кратчайшее
время. Это было естественно, потому что в старое доброе время основная память была
более дорогой, машины были намного медленнее, чем сегодня. Результатом хитроумного
кодирования оказывались программы, которые трудно было (если не совершенно
невозможно) понять другим лицам. Программисты зачастую сами признавали, что свою
собственную программу они с трудом понимают уже через полгода, а то и через месяц.
Фактически каждая написанная программа впоследствии модифицируется при изменении
внешних требований или для ликвидации ошибок. Изменения, вносимые в запутанную
программу, еще больше усложняют ее понимание впоследствии. Подобные программы
получили название BS-программ (Bowl of Spaghetti блюдо спагетти), так как при попытке
разобраться в них необходимо нарисовать нечто напоминающее блюдо спагетти.
На некотором этапе развития программного обеспечения выяснилось, что разработка
сложных алгоритмов и соответствующих им программ становится практически
неуправляемой. Резко ухудшилась читаемость программ, снизилась эффективность
программ и их надежность, усложнилось тестирование программ, и в итоге, увеличилось
время разработки и стоимость программного продукта.
Исходя из этих проблем, лучшие программисты 70-х годов Э.Дейкстра и Н.Вирт
разработали строгие правила разработки программ, которые получили название
“Методология структурного программирования”. Они рассматривают программу
(алгоритм) как совокупность иерархических модулей, которые позволяют четко
структурировать программу, что улучшает ее понимание программистами, позволяет
выполнять математическое доказательство ее корректности и тем самым повысить
надежность функционирования программ и сократить срок их разработки.
Основные стандарты структурного программирования:
1. Алгоритм (программ) должна разделяться на независимые части,
называемые модулями.
2. Модуль имеет одну входящую и одну выходящую точку.
3. Модуль – это независимый блок, который физически и логически отделен от
других модулей.
4. Каждый модуль начинается с комментария, объясняющего его назначение,
назначение переменных, передаваемых в модуль и из него, модулей, которые
его вызывают, и модулей, которые вызываются из него.
5. В модуле используются только базовые управляющие конструкции
(ветвление, повторение, следование, вход, выход).
6. Вложенность операторов IF не должна быть более трех.
В 1966 году Бом и Якопини доказали следующую теорему: любую блок-схему с
одним входом и одним выходом можно построить, используя базисное множество
базовых структур (следование, ветвление, цикл-пока).
Блок-схема называется структурированной, если она построена на основе
базисного множества базовых структур.
Для построения структурированных блок-схем была разработана специальная
технология, которая называется пошаговой детализацией. Пошаговая детализация
представляет собой процесс дробления задачи на модули, т.е. исходя из общей задачи,
вычленяются подзадачи, устанавливаются логические связи между ними. После этого
переходят к уточнению выделенных подзадач. Этот процесс детализации продолжается до