Принципы нисходящего и восходящего проектирования. Open Library - открытая библиотека учебной информации

Проектируя новые изделия с использованием трехмерных САПР, на предприятиях обычно применяют восходящий метод (рис. 1), заключающийся в том, что сначала разрабатывают (моделируют) независимо друг от друга детали, а затем из них, как из кубиков, создают сборочную конструкцию, на основе которой впоследствии формируется спецификация.

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

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

В таких случаях более предпочтителен нисходящий метод проектирования (рис. 2), заключающийся в том, что разработка изделия начинается с создания его компоновки и определения структуры, на основе которых затем моделируются входящие в изделие детали и узлы. Ниже мы рассмотрим, как осуществляется проектирование по нисходящему методу — от идеи к чертежам в системе трехмерного проектирования Pro/ENGINEER WILDFIRE (рис. 3) на примере механизма, модель которого приведена на рис. 4 . Рассматриваемый механизм может находиться в двух состояниях: сложенном (а ) и разложенном (б ).

Создание компоновки

Компоновка в Pro/ENGINEER WILDFIRE происходит в два этапа: сначала создается так называемая записная книжка инженера (Layout) , а затем — каркасная модель сборки (Skeleton) .

«Записная книжка» представляет собой концептуальный двумерный эскиз (рис. 5), в котором ведущий конструктор определяет перечень основных управляющих параметров. Для рассматриваемого механизма могут быть определены следующие параметры: габариты конструкции, длина движущихся рычагов, расстояние от концов рычагов до края и, при необходимости, взаимосвязи между ними. Указанные параметры могут быть как задаваемыми, так и расчетными, причем значения первых пользователь вводит с клавиатуры, а значения вторых задаются с помощью уравнений, в которых могут быть использованы арифметические операторы, тригонометрические функции, условные операторы и т.п. Так, например, в нашем случае была задана зависимость длины рычага от высоты и длины конструкции.

Двумерный эскиз обычно определяет общую схему изделия и может быть либо создан с использованием чертежных инструментов Pro/ENGINEER WILDFIRE, либо импортирован из другого графического файла. Он никак не связан с геометрией проектируемой сборки, поэтому достаточно схематично прорисовать разрабатываемое изделие без соблюдения масштаба и детальной прорисовки. На нем указываются основные размеры, которые конструктор может изменять непосредственно на виде.

В «записной книжке» можно создать область сообщений об ошибках, которые позволят избежать ввода заведомо некорректных значений параметров. Критерии проверки корректности также определяются ведущим конструктором. Например, в нашем случае критерием проверки было выбрано расстояние между концами рычагов (см. рис. 5 , параметр «Опора») — если это расстояние задается разработчиком меньшим, чем половина длины изделия, то конструкция становится неустойчивой. При вводе некорректных значений длины или высоты будет выдано сообщение об ошибке, что позволяет ввести исправление сразу, без перестроения сборки.

Использование «записной книжки инженера» позволяет автоматизировать процессы создания сборки. Для этого в «записной книжке» создаются необходимые опорные элементы: координатные системы, плоскости, оси. В деталях и сборках эти опорные элементы задаются как реперы для выполнения последующих операций сборки. При включении в сборку нового компонента система предлагает автоматически разместить его в соответствии с компоновкой.

Возможности Pro/ENGINEER WILDFIRE позволяют применять в одном проекте несколько «записных книжек» одновременно, что удобно при работе над большими проектами. Например, при разработке автомобиля можно создать отдельные «записные книжки» для двигателя, каркаса, подвески и т.д. и установить взаимосвязи между ними.

Каркасная модель сборки — это трехмерная модель, геометрия которой определяет пространственные требования к сборке, состыковку компонентов и другие характеристики, необходимые для размещения компонентов сборки и определения их геометрии. Каркасная модель обычно состоит из опорных конструктивных элементов (плоскостей, кривых, координатных систем, точек) и поверхностей. На рис. 6 представлена каркасная модель проектируемого механизма.

При построении геометрии каркасной модели ведущий конструктор устанавливает взаимосвязи между ее размерами и параметрами «записной книжки», что позволяет в дальнейшем при изменении параметров обеспечить автоматическое изменение всех связанных параметров в каркасной модели, а через нее — во всех компонентах сборки. Ведущему конструктору достаточно поменять размер или другой параметр в компоновке, и соответствующие изменения автоматически выполнятся во всех связанных деталях, узлах и чертежах. На рис. 7 отмечены зависимости, созданные в каркасной модели.

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

Проектирование деталей и узлов

Следующий шаг — это создание сборки изделия. Конструктор формирует структуру изделия, создавая новые детали и узлы уже в контексте сборки (а не отдельно от нее, как при восходящем проектировании), привязывая их к геометрии каркасной модели. Затем разрабатывается геометрия компонентов. Конечно, их геометрию можно создавать и непосредственно в сборке, но, как правило, это менее эффективно, поскольку в таком случае будет сложно обеспечить возможность параллельного проектирования, при котором исполнители одновременно работают над вверенным каждому из них компонентом сборки. Другими словами, каждый член проектной команды вынужден будет иметь на своем компьютере всю сборку, а это, как правило, только мешает сосредоточиться на выполняемой им конкретной задаче.

Организовать параллельное проектирование в Pro/ENGINEER WILDFIRE дает возможность инструмент Copy Geometry , позволяющий копировать любую геометрию — поверхности, кривые, кромки, точки, координатные системы и т.д. между компонентами сборки. При нисходящем проектировании основным источником копируемой геометрии для разработчика является каркасная модель сборки, однако в некоторых случаях используется копирование между деталями и узлами сборки.

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

На начальном этапе работы над структурой сборки (рис. 8) были созданы три детали, а затем в каждую из них были скопированы различные наборы геометрии из каркасной модели. На рис. 9 показана одна из этих трех деталей, открытая в отдельном окне, и ее геометрия, созданная на основе геометрии каркасной модели.

Привязка компонентов к каркасной модели позволяет также моделировать перемещение компонентов в сборке. Например, при изменении высоты конструкции, смоделированной в каркасе, изменится и положение всех связанных с каркасом компонентов (см. рис. 4). Таким образом, применение каркасной модели позволило без создания кинематических связей между компонентами смоделировать два положения конструкции.

Копирование геометрии также используется для введения в проект пространственных критериев, перенесенных из сборки верхнего уровня. Приведем пример. Для насоса, показанного на рис. 10 , необходимо спроектировать обвязку, состоящую из трубопроводов на входе и выходе насоса, разработать присоединительные фланцы, подвести к специальному штуцеру магистраль для охлаждающей жидкости, спроектировать фундамент для рамы насоса и электропроводку к двигателю. Для этого создадим сборку, состоящую из насоса и «пустой подсборки» (или нескольких подсборок), в которой проектируется обвязка. В «пустой подсборке» создается каркасная модель, куда копируется геометрия, необходимая для проектирования обвязки, — присоединительные фланцы, штуцер подвода охлаждающей жидкости и т.д. Конструктор (или команда конструкторов) работает теперь только с выбранной геометрией (рис. 11). В дальнейшем геометрия из каркасной модели копируется уже непосредственно в проектируемые детали и узлы. Все входящие в сборку модели связаны ассоциативной связью, а это значит, что изменение присоединительных мест насоса повлечет за собой автоматическое изменение его обвязки.

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

Внесение изменений в конструкцию

Продемонстрируем процесс внесения изменений при нисходящем проектировании на примере — увеличим высоту конструкции (см. рис. 4 а ) в разложенном состоянии, для чего в «записной книжке» изменим соответствующий параметр. После этого Pro/ENGINEER WILDFIRE автоматически просчитает все параметры, значения которых вычисляются с использованием уравнений, и выполнит проверку на корректность введенных значений в соответствии с заданными критериями. В нашем случае такая проверка показала, что высота увеличена слишком сильно и конструкция стала неустойчивой, а значит, необходимо увеличить и ее длину. На схеме (рис. 12) красным цветом показаны изменения, которые конструктор вносит вручную. После изменения параметров «записной книжки» каркасная модель обновляется автоматически (на рисунке показан новый каркас), а для обновления сборки достаточно выполнить команду «Перестроить» (Regenerate). Таким образом, изменение, внесенное конструктором на самом верхнем уровне — в «записной книжке инженера», повлекло за собой автоматические изменения на всех остальных уровнях — в сборке, в деталях, в чертежах.

Основные выводы

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

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

3. Нисходящий метод проектирования позволяет эффективно распараллелить работу над сборками между участниками процесса разработки, а при использовании в проектировании типовых конструкций заметно сократить сроки создания серии типоразмеров и вариантов исполнения изделий.

Эффективность использования нисходящего проектирования в Pro/ENGINEER WILDFIRE оценена по достоинству — этот метод активно применяют на многих российских предприятиях, о чем мы не раз рассказывали на страницах журнала, информируя читателей о результатах проектов, выполненных компанией SOLVER на отечественных машино- и приборостроительных предприятиях.

«САПР и графика» 11"2004

Метод разработки проектов, систем, программ, при котором разработка производится сверху вниз.

Один из основных методов структурного проектирования . Нисходящее программирование - частный случай нисходящей разработки.

Метод предполагает последовательное разложение функции обработки данных на простые функциональные элементы ("сверху вниз").

В результате строится иерархическая схема, которая отражает состав и взаимоподчиненность отдельных функций. Она носит название функциональная структура алгоритма (ФСА) приложения, в которой отражаются:

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

Рассмотрим функциональную структуру приложения.

Пример функциональной структуры приложения

Подобная структура отражает состав и взаимосвязь функций обработки информации для реализации приложений, не раскрывая логику выполнения каждой отдельной функции.

Разложение должно носить строго функциональный характер, т.е. отдельный элемент ФСА описывает законченную содержательную функцию обработки информации, которая предполагает определенный способ реализации на программном уровне.

Функции ввода/вывода информации отделяют от функций вычислительной или логической обработки данных.

Некоторые функции, например, Ф2, ФM далее неразложимы на составляющие, они предполагают непосредственную программную реализацию. Другие функции (Ф1) могут быть представлены в виде структурного объединения более простых функций, например Ф11, Ф1k. Для всех функций-компонентов осуществляется самостоятельная программная реализация, составные функции типа Ф1 реализуются как программные модули, управляющие функциями - компонентами, например, в виде программ-меню.

По частоте использования функции делятся на однократно выполняемые и повторяющиеся.

Литература

  1. Истомин Е.П., Новиков В.В., Новикова М.В. Высокоуровневые методы информатики и программирования: Учебник. - СПб. ООО "Адреевский издательский дом", 2006 г. - 228 с.

Подпрограммы

Структурное программирование

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

При создании средних по размеру приложений (несколько тысяч строк исходного кода) используется структурное программирование, идея которого состоит по сути в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста. Для этого нужно иметь средства для создания программы не только с помощью трех простых операторов, но и с помощью средств, более точно отражающих конкретную структуру алгоритма. С этой целью в программирование введено понятие подпрограммы - набора операторов, выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество мелких подпрограмм (занимающих до 50 операторов - критический порог для быстрого понимания цели подпрограммы), каждая из которых выполняет одно из действий, предусмотренных исходным заданием. Комбинируя эти подпрограммы, удается формировать итоговый алгоритм уже не из простых операторов, а из законченных блоков кода, имеющих определœенную смысловую нагрузку, причем обращаться к таким блокам можно по названиям. Получается, что подпрограммы - это новые операторы или операции языка, определяемые программистом.

Возможность применения подпрограмм относит язык программирования к классу процедурных языков.

Наличие подпрограмм позволяет вести проектирование и разработку приложения сверху вниз - такой подход принято называть нисходящим проектированием. Сначала выделяется несколько подпрограмм, решающих самые глобальные задачи (к примеру, инициализация данных, главная часть и завершение), потом каждый из этих модулей детализируется на более низком уровне, разбиваясь в свою очередь на небольшое число других подпрограмм, и так происходит до тех пор, пока вся задача не окажется реализованной.

Такой подход удобен тем, что позволяет человеку постоянно мыслить на предметном уровне, не опускаясь до конкретных операторов и переменных. Вместе с тем, появляется возможность некоторые подпрограммы не реализовывать сразу, а временно откладывать, пока не будут закончены другие части. К примеру, если имеется крайне важность вычисления сложной математической функции, то выделяется отдельная подпрограмма такого вычисления, но реализуется она временно одним оператором, который просто присваивает заранее выбранное значение (к примеру, 5). Когда всœе приложение будет написано и отлажено, тогда можно приступить к реализации этой функции.

Немаловажно, что небольшие подпрограммы значительно проще отлаживать, что существенно повышает общую надежность всœей программы.

Очень важная характеристика подпрограмм - это возможность их повторного использования. С интегрированными системами программирования поставляются большие библиотеки стандартных подпрограмм, которые позволяют значительно повысить производительность труда за счет использования чужой работы по созданию часто применяемых подпрограмм.

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

1. Процесс решения наиболее просто описывается подпрограммами:

Ввести_оценки_в_массив;

Удалить_самую_большую_оценку;

Удалить_самую_маленькую_оценку;

Вывести_результаты;

Теперь можно приступить к детализации каждой их этих подпрограмм.

2. Удалить_самую_большую_оценку;

Как удалить самую большую оценку из статического массива? Вместо нее можно просто записать значение 0, а при подсчете среднего арифметического нулевые значения не учитывать.

I = Номер_самого_большого_элеменша_в_массиве;

3. Удалить_самую_маленькую_оценку;

I = Номер_самого_маленького_элемента_в_массиве;

При реализации подпрограммы Номер_самого_маленького_элемента_в_массиве нужно учесть, что искать придется самое маленькое из положительных значений (больших нуля).

Здесь потребуется оператор цикла, вычисляющий сумму всœех элементов массива Ocenki.

FOR I = 1 ТО N

SUM = SUM + Ocenki(I)

SUM = SUM / (N - 2)

В последнем операторе происходит вычисление среднего арифметического всœех оценок. Сумма элементов массива делится на число элементов, уменьшенное на 2, потому что две оценки, самую большую и самую маленькую, учитывать не нужно.

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

Реализацию подпрограмм Номер_самого_большого_элемента_в_массиве и Номер_ самого_маленького_элемента_в_массиве выполните самостоятельно.


  • - Тема 3.2 Нисходящее проектирование

    Метод нисходящего проектирования предполагает последовательное разло- жение общей функции обработки данных на простые функциональные элементы ("сверху- / вниз"). В результате строится иерархическая схема, отражающая состав и взаимопод-чиненность отдельных... [читать подробенее]


  • - Нисходящее проектирование

    Занятие 12-2 часа Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы ("сверху- / вниз"). В результате строится иерархическая схема, отражающая состав и взаимоподчиненность... [читать подробенее]


  • - Маршруты проектирования могут начинаться с нижних иерархических уровней описаний (восходящее проектирование) либо с верхних (нисходящее проектирование).

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

  • Методы проектирования программных продуктов

    К концу 20 века не только существенно возросла сложность проектируемых объектов, но и их воздействие на общество и окружающую среду, тяжкость последствий аварий из-за ошибок разработки и эксплуатации, высокие требования к качеству и цене, сокращению сроков выпуска новой продукции. Необходимость учета этих обстоятельств заставляла вносить изменения в традиционный характер и методологию проектной деятельности.

    При создании объектов их уже необходимо было рассматривать в виде систем , то есть комплекса взаимосвязанных внутренних элементов с определенной структурой, широким набором свойств и разнообразными внутренними и внешними связями. Сформировалась новая проектная идеология, получившая название системного проектирования.

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

    Принципы системного проектирования

    Системное проектирование должно базироваться на системном подходе. В настоящее время ещё нельзя утверждать, что известны их полные состав и содержание применительно к проектной деятельности, однако можно сформулировать наиболее важные из них:

    · Практическая полезность:

    o деятельность должна быть целенаправленной , устремленной на удовлетворение действительных потребностей реального потребителя или определенной социальной, возрастной или иной групп людей;

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

    o деятельность должна быть обоснованной и эффективной . Разумным будет использование не любого решения задачи, а поиск оптимального варианта ;

    · Единство составных частей:

    o целесообразно любой объект, сложный ли он или простой, рассматривать как систему , внутри которой можно выделить логически связанные более простые части - подсистемы , единство частных свойств которых и образует качественно новые свойства объекта-системы;

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

    o внешняя, или как её ещё называют - жизненная среда , также должна рассматриваться в качестве системы, взаимосвязанной с проектируемым объектом;

    · Изменяемость во времени:

    o учёт этапов жизненного цикла объекта;

    o учёт истории и перспектив развития и применения разрабатываемого объекта, а также областей науки и техники, на достижениях которых базируются соответствующие разработки.

    Нисходящее и восходящее проектирование

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

    Нисходящее и восходящее проектирование обладают своими достоинствами и недостатками. Так, при нисходящем проектировании возможно появление требований, впоследствии оказывающихся нереализуемыми по технологическим, экологическим или иным соображениям. При восходящем проектировании возможно получение объекта, не соответствующего заданным требованиям. В реальной жизни, вследствие итерационного характера проектирования, оба его вида взаимосвязаны.

    Например, разрабатывая при нисходящем проектировании автомобиль (от общей схемы к его частям, например, - к мотору), необходимо увязать общую компоновку с размерами и мощностью уже выпускаемых двигателей. В противном случае придётся разрабатывать применительно к данной компоновке новый двигатель, либо изменять первоначальные варианты его расположения или схему компоновки всего автомобиля.

    СТРУКТУРНОЕ ПРОЕКТИРОВАНИЕ И ПРОГРАММИРОВАНИЕ

    Нисходящее проектирование

    Модульное программирование

    Структурное программирование

    Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы ("сверху-вниз").

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

    Последовательность действий по разработке функциональной структуры алгоритма приложения:

    определяются цели автоматизации предметной области и их иерархия (цель-подцель);

    устанавливается состав приложений (задач обработки), обеспечивающих реализацию поставленных целей;

    уточняется характер взаимосвязи приложений и их основные характеристики (информация для решения задач, время и периодичность решения, условия выполнения и др.);

    определяются необходимые для решения задач функции обработки данных;

    выполняется декомпозиция функций обработки до необходимой структурной сложности, реализуемой предполагаемым инструментарием.

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

    Разложение должно носить строго функциональный характер, т.е. отдельный элемент ФСА описывает законченную содержательную функцию обработки информации, которая предполагает определенный способ реализации на программном уровне.

    По частоте использования функции делятся на:

    однократно выполняемые;

    повторяющиеся.

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

    Пример 18.4. Некоторые функции, например Ф2, далее неразложимы на составляющие: они предполагают непосредственную программную реализацию. Другие функции, например Ф1, Фm, могут быть представлены в виде структурного объединения более простых функций, например Ф11, Ф12 и т.д. Для всех функций-компонентов осуществляется самостоятельная программная реализация; составные функции (типа Ф1, Фm) реализуются как программные модули, управляющие функциями-компонентами, например, в виде программ-меню.