В основе операции декомпозиции задачи на подзадачи лежит принцип раскрытия абстракции.
Абстрактной инструкцией, или просто абстракцией, назовем инструкцию, описывающую действие, выполнить которое процессор не может на данном уровне проектирования. Другими словами, абстракция есть инструкция обращения к алгоритму, которого еще не существует. Этим абстрактная инструкция отличается от элементарной инструкции вызова процедуры, которая обращается к реальной процедуре.
Абстрактная инструкция не может быть выполнена, так как ссылается на абстрактный алгоритм, который еще не разработан и который, в свою очередь, может тоже содержать абстракции.
Сегмент - это алгоритм, содержащий абстракции. Именно наличием абстракции объясняется свойство сегмента порождать другой сегмент.
Раскрытие абстракции состоит в разделении действия на композицию других, более простых действий с использованием введенных выше правил декомпозиции. Таким образом, нисходящее проектирование - это процесс раскрытия абстракций. Этот процесс можно свести к последовательности элементарных шагов, если связать каждый шаг с одной управляющей структурой : следование, выбор или повторение.
На каждом следующем уровне детализации логика работы модуля будет описываться все точнее и ближе к реальному алгоритму. Когда получим алгоритм, у которого все абстракции раскрыты в элементарные инструкции языка проектирования, можно считать, что процесс разработки алгоритма завершен.
Общие принципы, которых следует придерживаться на каждом шаге декомпозиции в процессе разработки.
1. Концентрируйте внимание прежде всего на самом существенном, отвлекаясь от мелочей.
2. Прежде чем раскрыть абстракцию, оцените принятое решение, сравните с другими возможными вариантами декомпозиции.
3. Проведите тщательную спецификацию данных, требуемых на очередном уровне детализации алгоритма, это поможет принять вам правильное решение.
4. Если на каком-либо шаге встретились непредвиденные проблемы, постарайтесь еще раз пересмотреть решения, принятые на предыдущих шагах, и, если требуется, заменить их на другие варианты.
Элементами декомпозиции задачи на подзадачи являются сегменты. Каждый сегмент является результатом раскрытия некоторой абстракции, заключенной в сегменте более высокого уровня.
На языке Паскаль будем описывать абстрактное действие в виде комментария, обрамленного рамкой.
При раскрытии абстракции используются две формы сегмента: форму блока (сегмент - блок) и форму процедуры (сегмент - процедура).
Сегмент описывается в виде блока, если он не реализует типовой алгоритм, а выделен с целью облегчения анализа и разработки алгоритма. На языке Паскаль он может быть закодирован либо в виде фрагмента программы, который в дальнейшем будет подставлен после порождающей его абстракции, либо в виде процедуры без параметров.
Сегмент описывается в виде процедуры, если он реализует типовой алгоритм, который может носить универсальный характер. На языке Паскаль он реализуется в виде процедуры с параметрами.
28. Рабочий проект программы. Top-down граф.
29. Правила получения окончательной программы. Документация проекта.
30. Начальные шаги проектирования программы. Связь с внешней спецификацией. Основные варианты абстракций верхних уровней.
Дата: 2019-02-19, просмотров: 221.