Функциональное проектирование: принципы, преимущества и применение.
Functional design
Функциональный дизайн: упрощение разработки ПО и 3D-моделей. Модульность, единственная ответственность, низкая связанность – для лёгкой модификации и экономии.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Функциональный дизайн — это парадигма, используемая для упрощения проектирования аппаратных и программных устройств, таких как компьютерное программное обеспечение и, всё чаще, 3D-модели. Функциональный дизайн обеспечивает, чтобы каждая модульная часть устройства имела только одну задачу и выполняла её с минимальным воздействием на другие части. Функционально спроектированные модули, как правило, обладают низкой связанностью.
Functional Design is a paradigm used to simplify the design of hardware and software devices such as computer software and, increasingly, 3D models. A functional design assures that each modular part of a device has only one responsibility and performs that responsibility with the minimum of side effects on other parts. Functionally designed modules tend to have low coupling.
Преимущества
Преимущество реализации заключается в том, что если программный модуль имеет единственную задачу, он будет проще, а следовательно, легче и дешевле в проектировании и реализации. Системы с функционально разработанными компонентами легче модифицировать, поскольку каждый компонент выполняет только заявленную функцию. Учитывая, что техническое обслуживание занимает более 3/4 жизненного цикла успешной системы, эта особенность является критически важным преимуществом. Она также облегчает понимание и документирование системы, что упрощает обучение. В результате практический срок службы функциональной системы увеличивается. В системе программ функциональный модуль будет проще повторно использовать, так как у него меньше вероятность возникновения побочных эффектов, влияющих на другие части системы.
The advantage for implementation is that if a software module has a single purpose, it will be simpler, and therefore easier and less expensive, to design and implement. Systems with functionally designed parts are easier to modify because each part does only what it claims to do. Since maintenance is more than 3/4 of a successful system's life, this feature is a crucial advantage. It also makes the system easier to understand and document, which simplifies training. The result is that the practical lifetime of a functional system is longer. In a system of programs, a functional module will be easier to reuse because it is less likely to have side effects that appear in other parts of the system.
Техника
Стандартный способ обеспечения функционального проектирования — это проверка описания модуля. Если в описании используются союзы, такие как "и" или "или", значит, модуль выполняет более одной задачи и, следовательно, вероятно, имеет побочные эффекты. Чтобы добиться функционального проектирования, задачи необходимо разделить на несколько модулей.
The standard way to assure functional design is to review the description of a module. If the description includes conjunctions such as "and" or "or", then the design has more than one responsibility, and is therefore likely to have side effects. The responsibilities need to be divided into several modules in order to achieve a functional design.
Критика и ограничения
Каждая компьютерная система имеет части, которые не могут быть функционально чистыми, поскольку они предназначены для распределения циклов процессора или других ресурсов между различными модулями. Например, большинство систем имеют раздел "инициализации", который запускает модули. Другие известные примеры – таблица векторов прерываний и главный цикл. Некоторые функции изначально обладают смешанной семантикой. Например, функция "переместить машину из гаража" по своей сути имеет побочный эффект изменения "положения машины". В некоторых случаях смешанная семантика может охватывать большое топологическое дерево или граф связанных понятий. В таких необычных случаях некоторые специалисты не рекомендуют использовать функциональный подход. Вместо этого могут быть предпочтительнее полиморфизм, наследование или процедурные методы.
Every computer system has parts that cannot be functionally pure because they exist to distribute CPU cycles or other resources to different modules. For example, most systems have an "initialization" section that starts up the modules. Other well known examples are the interrupt vector table and the main loop. Some functions inherently have mixed semantics. For example, a function "move the car from the garage" inherently has a side effect of changing the "car position". In some cases, the mixed semantics can extend over a large topological tree or graph of related concepts. In these unusual cases, functional design is not recommended by some authorities. Instead polymorphism, inheritance, or procedural methods may be preferred.
Применяется для 3D моделирования и моделирования
Недавно несколько программных компаний представили функциональное проектирование как концепцию для описания параметрического моделировщика, основанного на функциональных возможностях, для 3D-моделирования и симуляции. В этом контексте под этим подразумевается параметрическая модель объекта, в которой параметры привязаны к реальным критериям проектирования, например, ось, которая будет изменять свой диаметр в зависимости от прочности материала и величины приложенной к ней силы в ходе симуляции. Предполагается, что это повысит эффективность процесса проектирования механических и, возможно, даже архитектурно-строительных конструкций за счет интеграции результатов конечно-элементного анализа непосредственно в поведение отдельных объектов.
Recently several software companies have introduced functional design as a concept to describe a Parametric feature based modeler for 3D modeling and simulation. In this context, they mean a parametric model of an object where the parameters are tied to real world design criteria, such as an axle that will adjust its diameter based on the strength of the material and the amount of force being applied to it in the simulation. It is hoped that this will create efficiencies in the design process for mechanical and perhaps even architectural/structural assemblies by integrating the results of finite element analysis directly to the behavior of individual objects.