Введение

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

Преимущества

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

Техника

Стандартный способ обеспечения функционального проектирования — это проверка описания модуля. Если в описании используются союзы, такие как "и" или "или", значит, модуль выполняет более одной задачи и, следовательно, вероятно, имеет побочные эффекты. Чтобы добиться функционального проектирования, задачи необходимо разделить на несколько модулей.

Критика и ограничения

Каждая компьютерная система имеет части, которые не могут быть функционально чистыми, поскольку они предназначены для распределения циклов процессора или других ресурсов между различными модулями. Например, большинство систем имеют раздел "инициализации", который запускает модули. Другие известные примеры – таблица векторов прерываний и главный цикл. Некоторые функции изначально обладают смешанной семантикой. Например, функция "переместить машину из гаража" по своей сути имеет побочный эффект изменения "положения машины". В некоторых случаях смешанная семантика может охватывать большое топологическое дерево или граф связанных понятий. В таких необычных случаях некоторые специалисты не рекомендуют использовать функциональный подход. Вместо этого могут быть предпочтительнее полиморфизм, наследование или процедурные методы.

Применяется для 3D моделирования и моделирования

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