Разработка сложных программных изделий


Основные идеи и принципы структурной методологии


Структурные методы создавались и использовались с целью борьбы с "проклятием размерности", или сложности, разрабатыва­емых систем или решаемых проблем. Их создание направлено на обеспечение дисциплины с помощью введения стандартов, опреде­ляющих как процесс разработки, так и форму создаваемого продук­та. В программотехнике структурные методы предназначены для улучшения управления разработкой программного продукта, улуч­шения процесса разработки и улучшения качества самого продукта. Основные средства достижения этого — применение хорошо выве­ренных процедур, средств, методов разработки, а также установле­ние строгих механизмов контроля за их использованием.

Основными принципами структурной методологии являются:

1. Принцип абстракции.

2. Принцип формальности.

3. Принцип "разделяй и властвуй" (побеждай).

4. Принцип иерархического упорядочения.

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

Каждый уровень абстракции характеризуется группой функций, логически связанных между собой, и соответствующей абстракцией структур данных (файл, запись, поля записи).
Между функциями разных уровней существуют связи, которые подчиняются, по край­ней мере, двум правилам.

1. Функции более низкого уровня не имеют доступа к более вы­соким уровням, т.е. не имеют о них информации. Функции более высокого уровня могут вызывать функции более низкого уровня.

2. Каждый уровень имеет свои собственные данные, которые принадлежат исключительно функциям указанного уровня и не могут быть доступны функциям другого уровня. Информация явно передается с одного уровня на другой. (Одновременно могут суще­ствовать и данные, общие для всех уровней.)

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

Принцип формальности.

Этот принцип требует соблюдения норм и правил, т.е. следования строгим формальным правилам и строгому методическому подходу к решению проблемы. Формаль­ные алгоритмические языки, базируясь на принципах формальнос­ти, построены исходя из совокупности формальных правил, позво­ляющих передавать идеи и инструкции в форме, пригодной для об­работки на ЭВМ. Формальное доказательство правильности про­грамм также базируется на этом принципе. Формальность в созда­нии программного изделия означает четко регламентированный по­шаговый процесс разработки. Примером применения принципа формальности выступает модель жизненного цикла программного изделия, определяющая четкую последовательность и содержание этапов его разработки.

Таким образом, принцип формальности в структурной методо­логии регламентирует процессы разработки и управления разработ­кой, способствуя стандартизации этих процессов, повышению про­изводительности труда разработчиков и качества программной продукции.

Принцип "разделяй и властвуй" лежит в основе решения боль­шинства трудных проблем, которые целесообразно разделять на более мелкие, более простые и понятные независимые подпробле-мы. Это мощное и эффективное средство борьбы со сложностью, позволяющее разработчику работать над одной частью проблемы, не заботясь о множестве деталей всей проблемы.



В программировании названный принцип означает разделение сложной программы на небольшие модули, которые просты для по­нимания и допускают независимые тестирование и отладку; про­грамма приобретает модульную структуру. Относительно процесса разработки программного изделия этот принцип означает разделе­ние всегэ процесса на отдельные шаги, что упрощает управление каждым этапом разработки и работы в целом.

Принцип иерархического упорядочения определяет структуру ор­ганизации и взаимодействия компонент (модулей) сложного про­граммного продукта в виде многоуровневой иерархической систе­мы. Этот принцип тесно связан с предыдущим и также базируется на функциональной декомпозиции исходной проблемы. Он находит широкое применение в разных областях жизни при создании много­численных иерархических классификаций, а также при проектиро­вании сложных объектов и систем.

В программировании принцип иерархического упорядочения позволяет проектировать программу уровень за уровнем, каждый раз добавляя более подробные детали. Он лежит в основе таких структурных методологий, как нисходящее и модульное програм­мирование, а также используется при описании сложных структур данных. Построение иерархически упорядоченных структур подчи­няется определенным правилам, выполнение которых повышает ка­чество иерархической схемы.


Содержание раздела