Основные этапы развития программирования.
Виртуальные деструкторы
Если и базовый, и производный классы используют динамическую память, нужно определять виртуальный деструктор. Деструктор для каждого класса имеет уникальное имя. Для задания
Рис. 1.1. Архитектура программы, использующей глобальную область данных
Слабым местом такой архитектуры было то, что при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой. Например, обычно подпрограмма поиска корней уравнения на заданном интервале по методу деления отрезка пополам меняет величину интервала. Если при выходе из подпрограммы не предусмотреть восстановления первоначального интервала, то в глобальной области окажется неверное значение интервала, полученное при последнем делении отрезка в ходе работы подпрограммы.
Необходимость исключения таких ошибок привела к идее использования в подпрограммах локальных данных (рис. 1.2).
Рис. 1.2. Архитектура программы, использующей подпрограммы с локальными данными.
И вновь сложность разрабатываемого программного обеспечения стала ограничиваться возможностью программиста отслеживать процессы обработки данных уже на новом уровне. К этому добавились проблемы согласования интерфейса при ведении разработки несколькими программистами. В результате встал вопрос создания технологии разработки сложных программных продуктов, снижающей вероятность появления ошибок.
Усилиями многих авторов такая технология была создана и получила название «структурное программирование»[3, 4].
Структурное программирование представляет собой совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки программного обеспечения.
Были сформулированы основные принципы выполнения разработки:
1) принцип нисходящей разработки, рекомендующий на всех этапах вначале определять наиболее общие моменты, а затем поэтапно выполнять детализацию (что позволяет последовательно концентрировать внимание на небольших фрагментах разработки);
2) собственно структурное программирование, рекомендующее определенные структуры алгоритмов и стиль программирования (чем нагляднее текст программы, тем меньше вероятность ошибки);
3) принцип сквозного структурного контроля, предполагающий проведение содержательного контроля всех этапов разработки (чем раньше обнаружена ошибка, тем проще ее исправить).