close
Jump to content

Functional design

From Wikipedia, the free encyclopedia

Functional design is a design paradigm that assures that each modular part of a device has exactly one responsibility and performs that responsibility with minimum effects on other parts. It is used to simplify the design of hardware and software devices such as computer software and, increasingly, 3D models. Functionally designed modules tend to have low coupling.

Advantages

[edit]

The advantage for implementation is that limiting a software module to a single purpose, allows it to be simpler, and therefore easier and less expensive to design, test, implement, and maintain.

Since maintenance is more than 3/4 of a successful system's life,[1] this approach offers a crucial advantage. It makes the system easier to understand and document, which simplifies training.

In a system of programs, a functional module is easier to reuse because of its avoidance of side effects.

Technique

[edit]

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 likely has more than one responsibility, and is therefore likely to exhibit side effects. Instead the responsibilities are divided into several modules in order to achieve a functional design.

Critiques and limits

[edit]

Some parts 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 graph of related concepts. In such cases, functional design is not recommended by some authorities.[citation needed] Instead polymorphism, inheritance, or procedural methods may be preferred.

3D modeling and simulation

[edit]

Several software companies introduced functional design as a concept to describe a parametric feature based modeler for 3D modeling and simulation. In this context, a parametric model of an object ties parameters 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 applied to it.

References

[edit]
  1. ^ Koskinen, Jussi. Software Maintenance Costs
[edit]