СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ

Оглавление

Из истории программирования


В начале компьютерной эпохи процесс разработки программы в значительной степени определялся личностью программиста и возможностями Электронных Вычислительных Машин (ЭВМ) или Электронных Цифровых Вычислительных Машин (ЭЦВМ), так в те годы называли компьютер, а именно - объемом оперативного запоминающего устройства и быстродействием. В сравнении с современными компьютерами эти параметры были ничтожно малы. Действительно, разве сопоставимы объём оперативного запоминающего устройства (ОЗУ) в десятки мегабайт и быстродействие в сотни миллионов операций в секунду современного персонального компьютера с объемом оперативного за_поминающего устройства в 4096 слов (8 Кбайт) и быстродействием в 20 тысяч операций в секунду одной из лучших ЭВМ 60-х годов М-20, созданной под руководством С. А. Лебедева в 1758 г. (отметим, что в те далекие годы ЭВМ использовалась только для проведения численных расчетов). Языков высокого уровня (Фортран, Алгол, Паскаль и др.) тогда не было и программа, например, для ЭВМ М-20 выглядела как показано в таблице  (операнд - количественная величина, над которой производится арифметическая или логическая операция):

Номер 

Команда 

Адреса ячеек ОЗУ для записи операндов
0100  01  1234  6543  3489
0101  02  4563  0567  3456
0102  05  3489  3456  2987

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

В результате такого стиля программирования (точнее сказать, отсутствия стиля) программист уже через короткое время не мог разобраться в собственной программе. Что же тогда выпадало на долю его коллеги, которому приходилось заниматься сопровождением программы, если программист - её создатель переходил работать в другую организацию?

Программы такой структуры получили название BS-программы (аббревиатура от "Bowl Spaghetti"), что значит "блюдо спагетти". На рисунке схематично представлен листинг фрагмента программы со структурой "блюдо спагетти" (строки программы, каждая из которых состоит из одной команды, заменены строками ======== ), номера команд указаны справа. Команда с номером 10 является командой завершения программы.

Рис. 1. Листинг программы со структурой "блюдо спагетти"

Различаются два состояния программы. Первое - когда исходный текст программы представлен на листе бумаги или дисплее (листинг программы), называется статическим (программа развернута в "поле текста"). После того, как программа будет введена в оперативное запоминающее устройство ЭВМ и начнет выполняться, порядок выполнения команд в программе со структурой "блюдо спагетти" не будет соответствовать их порядковым номерам. Это состояние называется динамическим. Так, в приведенном примере порядок выполнения команд 01, 02, 03, 04 и т. д. нарушен, и команды выполняются в последовательности, определяемой линиями со стрелками - линиями потока, а именно: 01, 02, 11, 12, 13, 14, 03, 04, 05, 06, 15, 16, 07, 08, 09, 10. "Виновником" нарушения порядка является команда безусловного перехода GOTO.

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

Одна из главных задач проектирования программы (программного комплекса) заключается в том, чтобы статическое и динамическое состояния совпадали, то есть команды программы выполнялись в порядке их записи (в естественном порядке).
Очевидно, что развитие вычислительной техники и расширение областей применения компьютеров в различных отраслях народного хозяйства потребовало создания эффективной технологии программирования. И она была создана.

В начале 70-х годов корпорация IBM сообщила о применении в разработке программного обеспечения "Усовершенствованных методов программирования", обеспечивающих переход к промышленным методам разработки программного обеспечения. Одним из компонентов "Усовершенствованных методов программирования" является технология нисходящего структурного программирования (фундаментальный вклад в разработку теоретических основ данной технологии внес профессор Э. Дейкстра). 

Дадим определение технологии нисходящего структурного программирования (в литературе также используется название - технология структурного программирования).

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

  • нисходящую разработку,
  • структурное кодирование (программирование),
  • сквозной контроль.

Оглавление

   

 
   

 
Hosted by uCoz