Функциональный дизайн — это парадигма, используемая для упрощения проектирования аппаратных и программных устройств, таких как компьютерное программное обеспечение и, все чаще, 3D-модели . Функциональный дизайн гарантирует, что каждая модульная часть устройства имеет только одну ответственность и выполняет эту ответственность с минимальными побочными эффектами для других частей. Функционально спроектированные модули, как правило, имеют низкую связанность .
Преимущество внедрения заключается в том, что если программный модуль имеет единственную цель, его будет проще, а значит, легче и дешевле проектировать и внедрять.
Системы с функционально спроектированными деталями легче модифицировать, поскольку каждая деталь выполняет только то, для чего она предназначена.
Поскольку обслуживание составляет более 3/4 срока службы успешной системы, [1] эта функция является решающим преимуществом. Она также упрощает понимание и документирование системы, что упрощает обучение. Результатом является то, что практический срок службы функциональной системы увеличивается.
В системе программ функциональный модуль будет проще использовать повторно, поскольку он менее склонен к появлению побочных эффектов, которые проявятся в других частях системы.
Стандартный способ обеспечения функционального дизайна — это просмотр описания модуля. Если описание включает союзы типа «и» или «или», то дизайн имеет более одной ответственности, и поэтому, скорее всего, будет иметь побочные эффекты. Обязанности должны быть разделены на несколько модулей, чтобы достичь функционального дизайна.
Каждая компьютерная система имеет части, которые не могут быть функционально чистыми, поскольку они существуют для распределения циклов ЦП или других ресурсов по разным модулям. Например, большинство систем имеют раздел «инициализации», который запускает модули. Другие известные примеры — таблица векторов прерываний и основной цикл .
Некоторые функции изначально имеют смешанную семантику. Например, функция «переместить машину из гаража» изначально имеет побочный эффект изменения «положения машины». В некоторых случаях смешанная семантика может распространяться на большое топологическое дерево или граф связанных понятий. В этих необычных случаях некоторые авторитеты не рекомендуют функциональное проектирование. [ требуется ссылка ] Вместо этого могут быть предпочтительны полиморфизм , наследование или процедурные методы.
Недавно несколько компаний-разработчиков программного обеспечения представили функциональный дизайн как концепцию для описания моделлера на основе параметрических признаков для 3D-моделирования и симуляции. В этом контексте они имеют в виду параметрическую модель объекта, где параметры привязаны к реальным критериям проектирования, таким как ось, которая будет регулировать свой диаметр на основе прочности материала и величины силы, прилагаемой к ней в симуляции. Есть надежда, что это создаст эффективность в процессе проектирования механических и, возможно, даже архитектурных/структурных сборок путем интеграции результатов конечно-элементного анализа непосредственно в поведение отдельных объектов.