Нисходящая и восходящая разработка программного обеспечения



В литературе встречается ещё один подход – «расширение» ядра. Он предполагает, что в первую очередь проектируют и разрабатывают ядро ПО, например структуры данных и процедуры, связанные с ними. Затем ядро наращивают, комбинируя нисходящий и восходящий методы. На практике данный подход в зависимости от уровня ядра сводится к нисходящему и восходящему подходу.

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

¾ увеличение вероятности несогласованности компонентов вследствие неполноты спецификации;

¾ наличие издержек на проектирование и реализацию тестирующих программ;

¾ позднее проектирование интерфейса, следовательно невозможность продемонстрировать его заказчику.

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

Нисходящий подход. При использовании нисходящего подхода применяют иерархический, операционный и комбинированный методы определения последовательности проектирования и реализации компонентов. Иерархический метод предполагает выполнение разработки строго по уровню. Исключения допускаются при наличии зависимости по данным, то есть если обнаруживается, что некоторый модуль использует результаты другого, то его рекомендуется программировать после этого модуля. Основная проблема этого метода – большое количество достаточно сложных заглушек. Также основное количество модулей разрабатывается и реализуется в конце работы над проектом, что затрудняет распределение человеческих ресурсов. Операционный метод связывает последовательность разработки модулей с порядком их выполнения при запуске программы. Применение метода усложняется тем, что порядок выполнения модулей может зависеть от данных. Кроме этого модули вывода результатов (хотя они вызываются последними) должны разрабатываться вначале. С точки зрения распределения человеческих ресурсов сложным является начало работы, пока не закончены все модули, находящиеся на так называемом критическом пути. Комбинированный метод учитывает факторы, влияющие на последовательность разработки:

¾ достижимость модуля (наличие всех модулей в цепочке вызова данного модуля),

¾ зависимость по данным (модули, формирующие некоторые данные, должны создаваться раньше обрабатывающих),

¾ обеспечение возможности выдачи результатов,

¾ готовность вспомогательных модулей,

¾ наличие необходимых ресурсов.

Нисходящий подход допускает нарушение нисходящей последовательности разработки компонентов в специально оговоренных случаях. Этот подход обычно используют и при ООП. Нисходящий подход обеспечивает:

1)максимально полное определение спецификации проектируемого компонента и согласованность компонентов между собой.

2)раннее определение интерфейса пользователя, демонстрация которого заказчику, позволяет уточнить требования к создаваемому ПО.

3)возможность нисходящего тестирования и комплексной отладки.


Структурное программирование.

Структурное программирование – это один из способов обеспечения высокого уровня технологичности разрабатываемого ПО.

Существует три вида вычислительного процесса:

Линейный, 2)разветвляющий, 3) цикличный.

Для реализации этих процессов в программировании используют соответствующие управляющие операторы. Для изображения схем алгоритмов таких программ был разработан ГОСТ 19.701-90.

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

 1) следования,

 2) ветвления,

 3) цикл “пока”.

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

1)выбор – case

2)цикл “до”

3)цикл for.

Любая дополнительная конструкция легко реализуется через базовые. Эти шесть конструкций были положены в основу структурного программирования.

1).

2.)                                                   3).

 

Дополнительные конструкции:

1).

2).                       3).

Слово структурное в данном случае подчеркивает тот факт, что при программировании используются только эти структуры.

Кроме схем для описания алгоритмов можно использовать псевдокоды, flow-диаграммы и диаграммы Насси - Шнейдермана. Все эти нотации базируются на тех же основных структурах, но допускают разные уровни детализации.

1)Псевдокод – это формализованное текстовое описание алгоритма. Текстовая нотация. В литературе предложено несколько вариантов псевдокодов.

 

2) Flow-диаграммы (формы) – графическая нотация описания структурных алгоритмов, которая иллюстрирует вложенность структур. Каждый символ flow-формы соответствует управляющей структуре и изображается прямоугольником.

 

<g1>
<g2>
<g3>

если <условие>

то <g1>

 

иначе <g2>
   

 

 

пока <условие>

  <g1>

 

 

 

  <g1>

до <условие>

 

3)Диаграммы Насси - Шнейдермана являются развитием flow-форм. Основное отличие в том, что область обозначений условий и вариантов ветвления изображается в виде треугольников.

Общим недостатком flow-форм и диаграмм Насси - Шнейдермана является сложность построения изображений для больших алгоритмов.


Дата добавления: 2018-05-13; просмотров: 1746; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!