Діюче та висхідне програмування

Нисходяче програмуваннясистематичний метод проектування, кодування та тестування програм у вигляді послідовності кроків. Метод заснований на ідеї покрокової деталізації та дозволяє створити ієрархічно організовану модульну програму, модуль верхнього рівня якої відповідає загальній функції програми, а модулі наступного рівня є її підфункціями.

Традиційно програма розробляється як послідовності кроків: спочатку програма проектується, потім вона кодується і, нарешті, тестується. У разі низхідного програмування спочатку проектується, кодується і тестується один модуль, потім інший і т.д., доки всі модулі не будуть завершені. Програма зростає поступово з підключенням до неї нових модулів.

Низхідна розробка програми починається після створення загальної логічної структури програми. Насамперед проектується модуль найвищого рівня. Модулі наступного рівня розглядаються як фіктивні та замінюються так званими "заглушками" - порожніми модулями, що містять лише точки входу та виходу. Такі модулі при виклику просто повертають керування модулю, що викликає. Надалі вони замінюються реальними модулями, розробленими наступних кроках деталізації.

Методвисхідного програмуваннявикористовує протилежну стратегію. Програма утворюється шляхом поєднання простих програмних компонент створення компонентів вищого рівня.

Однак першим кроком розробки, як і в попередньому підході, є створення загальної структурної схеми програми, включаючи функціональні компоненти та структури даних. Після цього використовується покроковий процес розробки та об'єднання компонентів, починаючи зкомпонент найнижчого рівня. При об'єднанні та спільному тестуванні модулів нижнього рівня виникає необхідність у модулі, що викликає, вищого рівня, який в даний момент ще не існує. Для імітації його функцій створюється тестовий драйвер – скелетна модель модуля, який буде створено на наступному етапі. Драйвер розглядається як керуюча програма, що викликає інші модулі та передає їм керування.

Обидва методи впорядковують процес програмування. Насправді, проте, ефективнішим вважається комбінований підхід. Так, загальні модулі, які будуть викликатися більш ніж однією компонентою вищого рівня, доцільно розробляти, використовуючи висхідне програмування, а для решти програми використовувати низхідний принцип. Висхідний підхід дозволяє працювати паралельно над різними модулями програми, а низхідний спрощує інтегрування модулів у єдину програму.

Глава 4. Модульне програмування

4.1.Основні поняття та визначення

Ідеї ​​модульного програмування пов'язані з принципами "поділяй і володарюй" та ієрархічного впорядкування. Основні цілі модульного програмування формуються як:

1. Декомпозиція програми на незалежні фрагменти — модулі, які можуть бути реалізовані у вигляді окремих процедур або функцій, або у вигляді модулів (unit), які є конструкціями конкретної мови програмування.

2. Поділ складної проблеми на дрібніші та простіші підпроблеми.

3. Незалежна розробка та тестування кожного модуля.

Модульне програмуванняце організація програми в\.\\:\еневеликих незалежних блоків, званих модулями, струк-, \ ра і поведінка яких визначається деякою сукупністю,:Равив.

Таким чином, модуль - основний будівельний блок струк-рної програми. Кожен модуль повинен відповідати одному; .роблемно-орієнтованої задачі.

Переваги модульного програмування:

1. Модульна програма простіша для розуміння, оскільки є можливість у кожний момент часу розглядати один модуль.

2. Спрощено тестування програми.

3. Спрощено процес виявлення та виправлення помилок.

5. Спрощено процес підвищення ефективності програми.

6. Окремі модулі можуть повторно використовуватись в інших програмах як будівельні блоки.

7. Час розробки складної програми може бути помітно скорочено, оскільки розробка окремих модулів може бути доручена різним програмістам, робота яких може виконуватися більш менш незалежно.