Шаг 45.
Основные понятия структурного программирования. Модульность программ

    На этом шаге мы рассмотрим понятие модульности.

    Высокое качество программ может достигаться "безошибочным" программированием (пассивными методами) и выявлением и устранением ошибок (активными методами). Активные методы мы уже кратко описали.

    Пассивные методы основываются на применении методологических и организационных правил проектирования программ, а также языков программирования высокого уровня.

Модульность программ [1]

    Модульной называют программу, составляемую из таких частей - модулей, что их можно независимо друг от друга программировать, транслировать, отлаживать (проверять, исправлять). Предполагается, что модули имеют небольшие размеры, четко определенные функции и, кроме того, их связи между собой максимально упрощены, в частности, предполагается, что модули имеют лишь одну точку входа (в начале модуля). Разбиение программы на модули при ее написании, хотя и является весьма непростым делом, позволяет существенно облегчить в дальнейшем работу над программой на других этапах.

    После того как в алгоритме выявлены малозависимые друг от друга части, составление программы упрощается, так как при программировании каждой из этих частей почти не приходится заботиться об их взаимодействии с другими частями, что, в свою очередь, способствует уменьшению количества вносимых ошибок. Кроме того, малая зависимость модулей позволяет при необходимости существенно распараллелить составление программы, поручив программирование программистам разного класса, причем всегда можно найти подходящую работу и для начинающих, и для опытных программистов.

    На этапе отладки независимость модулей позволяет отлаживать их в любом порядке, в частности и одновременно. Считается, что усилия, затрачиваемые на отладку модуля, обычно пропорциональны квадрату его длины [2, 3], и поэтому при тестировании небольшие размеры модулей дают возможность поставить задачу о проверке всех ветвей таких модулей, что ведет к увеличению достоверности тестирования. Решение такой задачи является обычно недостижимым по отношению ко всей программе или крупным ее блокам, когда приходится ограничиваться лишь проверкой работы всех линейных участков блока и условий. Разумеется, и наиболее трудная часть отладки - локализация ошибок, проводимая для модулей, при этом значительно упрощается и ускоряется.

    В силу минимальности логических связей между модулями облегчается, конечно, и внесение исправлений в алгоритм программы, поскольку меньше приходится заботиться о том, чтобы при изменении одной части программы не испортить работу другой ее части.

    Учтите, что чем более мелкими требуется получать модули, тем больше трудностей возникает при проектировании и алгоритмизации программы, но тем легче будет каждый из модулей проверять и тестировать в дальнейшем. Не следует, однако, забывать и о том, что слишком большое количество мелких модулей может значительно увеличить трудоемкость предстоящей комплексной (стыковочной) отладки.


    Замечание. Серьезной помощью в разработке программ могут стать библиотеки стандартных, или типовых, модулей, заранее составленные автором или другими программистами. Применение при разработке ранее многократно опробованных модулей, трудность использования которых сводится только к заданию правильных аргументов, значительно ускоряет составление программы и облегчает ее отладку.

   


(1) Безбородов Ю.М. Индивидуальная отладка программ. - М.: Наука, 1982.
(2) Майерс Г. Надежность программного обеспечения. - М.: Мир, 1980.
(3) Майерс Г. Искусство тестирования программ. - М.: Финансы и статистика, 1982.

    На следующем шаге мы рассмотрим cтроение программ.




Предыдущий шаг Содержание Следующий шаг