Skip to content

Технология структурного программирования. Преимущества и недостатки структурного программирования.

Pandas edited this page Jun 15, 2017 · 2 revisions

Структурное программирование(IBM, 1961) - разбивка по действиям от сложного к простому. В основе структурного программирования лежит алгоритмическая декомпозиция – разбиение задачи на подзадачи по ДЕЙСТВИЮ, отвечая на вопросы «что нужно делать».

💠Три основные части технологии:(Дейкстра, Милдс)

  • Нисходящая разработка
  • Сквозной структурный контроль
  • Использование базовых логических структур

💠Этапы (нисходящая разработка 2-4):

  1. Анализ (ТЗ, возможность формализации)
  2. Проектирование (разработка алгоритмов)
  3. Кодирование
  4. Тестирование
  5. Сопровождение
  6. Модификация

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

От проектирования до модификации – нисходящий подход в структурном программировании.При разбиении на подзадачи выделять нужно не более 7 подзадач. Однако каждую из них в свою очередь можно разбивать дальше, пока не придем к решению простейших задач. Глубина вложности конструкции не должна превышать 3. Оптимальный размер подзадачи - <200 строк. Количество передаваемых на модуль данных также не должно превышать 3 элементов. Все данные передаются явно через список параметров, не важно что за данные – переменные или константы. Для этого данные структурируются – структура данных должна соответствовать уровням абстракции (при разбиении задач).В структурном программировании существует жёсткое требование: тесты подготавливаются ДО реализации. В современных условиях это достаточно тяжело.

💠Преимущества:

  • Легко распределять работу между программистами
  • Естественные контрольные точки
  • Легко выявлять ошибки
  • Легко поддается тестированию (комплексное тестирование)
  • Раннее начало процесса кодирования
  • Снижается вероятность допустить логическую ошибку
  • Возможен контакт с заказчиком на ранних стадиях, управление сроками
  • Упрощенное чтение кода

💠Недостатки:

  • Отсутствие гибкости системы. После некоторого количества модификаций происходит смещение уровней абстракции, нарушается структура, что приводит к потере надежности (сопровождение затруднено и много стоит)
  • Сложно изменить формы данных и структур
  • Сложно сопровождать программный продукт
Clone this wiki locally