Основные идеи и принципы структурной методологии
Структурные методы создавались и использовались с целью борьбы с "проклятием размерности", или сложности, разрабатываемых систем или решаемых проблем. Их создание направлено на обеспечение дисциплины с помощью введения стандартов, определяющих как процесс разработки, так и форму создаваемого продукта. В программотехнике структурные методы предназначены для улучшения управления разработкой программного продукта, улучшения процесса разработки и улучшения качества самого продукта. Основные средства достижения этого — применение хорошо выверенных процедур, средств, методов разработки, а также установление строгих механизмов контроля за их использованием.
Основными принципами структурной методологии являются:
1. Принцип абстракции.
2. Принцип формальности.
3. Принцип "разделяй и властвуй" (побеждай).
4. Принцип иерархического упорядочения.
Принцип абстракции. В основу названного метода положено выделение некоторых важных свойств исследуемого объекта и игнорирование несущественных (для данного этапа). Абстракция позволяет нам представить рассматриваемую проблему, исключая из анализа второстепенные детали, окружающие существо проблемы. Используя этот принцип, разработчик может рассматривать программу на разных уровнях детализации. Первый, самый верхний уровень, показывает самый упрощенный общий взгляд на выполняемые программой функции, нижний — самый детальный. Абстракция — мощное средство разработки программ. Алгоритм является абстракцией программы, и запись алгоритма с разной степенью детальности соответствует абстракции разного уровня. Примером использования этого принципа служит метод структурного проектирования программных изделий с использованием пошаговой детализации (или функциональной декомпозиции) программы.
Каждый уровень абстракции характеризуется группой функций, логически связанных между собой, и соответствующей абстракцией структур данных (файл, запись, поля записи).
Между функциями разных уровней существуют связи, которые подчиняются, по крайней мере, двум правилам.
1. Функции более низкого уровня не имеют доступа к более высоким уровням, т.е. не имеют о них информации. Функции более высокого уровня могут вызывать функции более низкого уровня.
2. Каждый уровень имеет свои собственные данные, которые принадлежат исключительно функциям указанного уровня и не могут быть доступны функциям другого уровня. Информация явно передается с одного уровня на другой. (Одновременно могут существовать и данные, общие для всех уровней.)
Принцип абстракции лежит в основе стратегии нисходящего и восходящего программирования.
Принцип формальности.
Этот принцип требует соблюдения норм и правил, т.е. следования строгим формальным правилам и строгому методическому подходу к решению проблемы. Формальные алгоритмические языки, базируясь на принципах формальности, построены исходя из совокупности формальных правил, позволяющих передавать идеи и инструкции в форме, пригодной для обработки на ЭВМ. Формальное доказательство правильности программ также базируется на этом принципе. Формальность в создании программного изделия означает четко регламентированный пошаговый процесс разработки. Примером применения принципа формальности выступает модель жизненного цикла программного изделия, определяющая четкую последовательность и содержание этапов его разработки.
Таким образом, принцип формальности в структурной методологии регламентирует процессы разработки и управления разработкой, способствуя стандартизации этих процессов, повышению производительности труда разработчиков и качества программной продукции.
Принцип "разделяй и властвуй" лежит в основе решения большинства трудных проблем, которые целесообразно разделять на более мелкие, более простые и понятные независимые подпробле-мы. Это мощное и эффективное средство борьбы со сложностью, позволяющее разработчику работать над одной частью проблемы, не заботясь о множестве деталей всей проблемы.
В программировании названный принцип означает разделение сложной программы на небольшие модули, которые просты для понимания и допускают независимые тестирование и отладку; программа приобретает модульную структуру. Относительно процесса разработки программного изделия этот принцип означает разделение всегэ процесса на отдельные шаги, что упрощает управление каждым этапом разработки и работы в целом.
Принцип иерархического упорядочения определяет структуру организации и взаимодействия компонент (модулей) сложного программного продукта в виде многоуровневой иерархической системы. Этот принцип тесно связан с предыдущим и также базируется на функциональной декомпозиции исходной проблемы. Он находит широкое применение в разных областях жизни при создании многочисленных иерархических классификаций, а также при проектировании сложных объектов и систем.
В программировании принцип иерархического упорядочения позволяет проектировать программу уровень за уровнем, каждый раз добавляя более подробные детали. Он лежит в основе таких структурных методологий, как нисходящее и модульное программирование, а также используется при описании сложных структур данных. Построение иерархически упорядоченных структур подчиняется определенным правилам, выполнение которых повышает качество иерархической схемы.