Структурный подход к проектированию программ.
Надо отметить, что компьютер выполняет только то, что заложит в него человек.
От качества разработанного алгоритма, а затем программы зависят функции компьютера, его возможности.
На начальном этапе развития вычислительной техники, когда задачи носили преимущественно расчетный характер и использовались простейшие формулы, процесс алгоритмизации и программирования носил сугубо индивидуальный характер.
Критерием качества программ служили два показателя:
1. обеспечение наиболее высокой скорости работы;
2. использование минимальных размеров памяти.
Это было обусловлено низким быстродействием ЭВМ, малыми объемами памяти, ограниченным количеством сеансов связи при работе пользователя на ЭВМ
Занимались программированием исключительно только специалисты по вычислительной технике, чаще всего математики-программисты. Квалификация программиста определялась, прежде всего, тем, насколько он мог хорошо составлять программы в соответствии с критериями того времени. В таких случаях практически всегда программы были сложными, кроме разработчика в них никто не мог разобраться.
С течением времени программное обеспечение стало настолько дорогим, что подчас превышало стоимость компьютера в несколько раз. Кроме того, при программировании на современном компьютере, обладающем высоким быстродействием и большими объемами памяти, становятся уже несущественными, какой объем занимает программа и сколько времени она решается в компьютере.
Второй важный аспект, который некоторые профессиональные программисты, работающие по традиционной схеме, стараются не замечать – отладка программ.
Необходимо было кардинально изменить подход к проектированию программ, чтобы создание программ стало технологическим процессом, как и производство любого технического устройства. Однако разработать технологический процесс создания программ, поставить его на промышленную основу оказалось делом нелегким и по сей день не решенным.
Существенным шагом на пути снижения трудоемкости создания программ при одновременном повышении их качества, надежности и возможности использования в массовом порядке является структурное проектирование.
Основные принципы структурного проектирования:
1. нисходящее проектирование;
2. модульное программирование;
3. структурное программирование (кодирование);
4. структурный контроль.
Нисходящее проектирование основано на иерархическом подходе к решению задач, целесообразно применять на первом и втором этапах, когда формируется постановка задачи и выбирается математический аппарат.
Вначале на верхнем уровне иерархии выделяем главную функцию, которую надо решить; чаще всего этой функцией служит цель поставленной задачи. Затем происходит постепенная детализация функции. На следующем уровне иерархии располагаются функции, которые позволяют выполнить главную функцию. На следующем уровне – функции, которые позволяют выполнить функции верхнего уровня иерархии и т.д.
Каждая функция заключается в прямоугольник и с помощью линий связывается с функциями предыдущего и последующих уровней. В дальнейшем эти функции, имеющие самостоятельное значение, принято называть модулями.
При построении иерархической схемы надо придерживаться следующих правил:
1. каждый модуль может быть связан только с одним модулем верхнего уровня и несколькими модулями нижнего уровня. При этом он имеет один вход. Выход на модули нижнего уровня тоже один, так как если модуль верхнего уровня вызывает модуль нижнего уровня, то после его выполнения управление может быть передано в модуль верхнего уровня, который уже может вызвать другой модуль нижнего уровня. Наличие нескольких выходов из модуля верхнего уровня означает, что модули нижнего уровня подчиняются модулям верхнего уровня.
2. связи между модулями организуются сверху вниз.
3. если следует организовать обращение к одному модулю, то его надо нарисовать столько раз и в тех местах, где он необходим. Такой модуль специально помечается двумя вертикальными чертами справа и слева и будет реализован в виде одной программы.
Надо отметить, чем более тщательно и подробно проведено нисходящее проектирование, тем проще осуществить программирование и отладку программ.
Модульное программирование - независимое программирование каждого модуля. Программирование обычно ведут начиная с верхнего уровня. Вначале составляется программа для ограниченного числа модулей верхнего уровня и производится тестирование всей задачи, при этом остальные модули не программируются, а для них делают так называемые заглушки. Например, часто используется оператор печати.
Недопустимо вводить в программу одновременно несколько модулей. После разработки очередного модуля он подключается к основной программе и производится тестирование.
Каждый новый модуль включается в основную программу только после того, как проведено его полное тестирование.
Структурное программирование (кодирование) – процесс программирования на алгоритмическом языке с использованием определенных конструкций. Основные положения структурного программирования:
1. любая программа составляется на базе основных алгоритмических структур трех видов: линейного, разветвляющего и циклического.
2. между этими структурами производится передача управления только вперед, что соответствует в блок-схеме направлению линий сверху вниз.
3. недопустимо пользоваться в программе специальной командой безусловной передачи управления из одного места программы в другое (например, GOTO).
Структурное кодирование применяется для программирования отдельных модулей. Вначале на основе положений 1, 2, 3 разрабатывается алгоритм, а затем базовые алгоритмические конструкции заменяются соответствующими конструкциями конкретного языка.
Структурный контроль необходим при разработке сложных задач, включающих десятки и сотни модулей. Это новая форма контроля процесса разработки программ, в которой участвует несколько человек. По мере продвижения в разработке задачи периодически определенной группе сотрудников раздаются рабочие материалы по данной задаче. Они знакомятся с ними, а затем на совместном обсуждении выявляются недостатки данного этапа, которые разработчик программы должен в ближайшее время устранить.
Особенно эффективен такой контроль при постановке и алгоритмизации задачи, когда закладываются основы всей системы.
Тема 19
19. Технология программирования. Объектно-ориентированное программирование.
Объектно-ориентированное программирование
Базовые элементы объектно-ориентированного программирования
Идеология объектно-ориентированного программирования
Проектирование программных объектов