А.Н. Павлов. Высокоуровневые методы информатики и программирования
1.1.
Структурное
программирование
Разработка любого программного обеспечения начинается с анализа требований к будущему программному продукту. В результате анализа получают спецификации разрабатываемого программного обеспечения. При этом выполняют декомпозицию и содержательную постановку решаемых задач, уточняют их взаимодействие и эксплуатационные ограничения. В целом в процессе определения спецификаций строят общую модель предметной области, в которой будет существовать программное обеспечение и реализовать его основные функции. В рамках структурного подхода на этапе анализа и определения спецификаций используют три типа моделей: ориентированные на функции, ориентированные на данные и ориентированные на потоки данных. Непосредственно методология структурного программирования базируется на системном подходе к анализу, проектированию и реализации программного обеспечения.
Отображением взаимосвязи функций модели будущего программного обеспечения осуществляется посредством построения функциональных диаграмм. В соответствии с методологией структурного подхода, проект будущего приложения разделяется на отдельные независимые задачи. Каждая задача имеет свои конечные функции. Таким образом, добиваются выделения в задачах входа и выхода, которые однозначно определяют выполняемую функцию. Практическое применение структурного подхода при разработке проектов программного обеспечения началось в конце 70-х годов ХХ-го века, когда был предложен Д.Россом функциональный подход к проектированию [4]. Графическое представление функций программных модулей формируется поэтапно. На первом этапе создается блок, который отображает общую функцию, выполняемую программным продуктом. На вход (Input) функции подаются сигналы, которые преобразуются, при этом ограничениями являются контрольные значения или их называют управляющие параметры (Control). В результате выполняемой функции появляется выходной (Output) сигнал (данные). Соответственно, выполнение функции осуществляется при использовании некоторых ресурсов и средств, в нотации функционального проектирования такие средства называют механизмами (Mechanize). Так как внутри описываемой функции существует множество связей между элементами, то осуществляется операция декомпозиции (разделения) функции на несколько составляющих. Переходя от верхнего уровня, рассматриваемой функции, к низшим уровням, добиваются того, что каждый элемент на вход получает только один поток данных, и на выходе у него остается тоже один поток данных. Т.е. программные модули, которые выполняют определенные функции, становятся программно независимыми. На рис. 4 представлен функциональный блок задачи и интерфейсные дуги в нотации структурного подхода проектирования ПО.
Рис. 4. Функциональный блок и
интерфейсные дуги
При использовании методологии структурного подхода, разработка программы должна вестись поэтапно. На каждом этапе должно решаться ограниченное число четко поставленных задач с ясным пониманием их назначения и роли в контексте всей задачи. Конечным этапом декомпозиции функциональных блоков по задачам, является этап построения блок-схемы алгоритма. На рис. 5 представлены фрагменты блок-схем алгоритмов (следование, ветвление, цикл). Алгоритмом называют формально описанную последовательность действий, которые необходимо выполнить для получения требуемого результата. На схемах (рис. 5) характерным является то, что они имеют один вход и один выход.
Рис. 5. Фрагменты блок-схем
алгоритма