A design is basically a blueprint or specifications for the design of an object, system or activity, or simply the end result of that blueprint or specifications in the shape of a model, invention or process. In the context of software engineering, the term design is used to denote the output of any programming activity, whether it be a software product, a web application or a hardware device. The verb to design normally refers to the act of building up a design or blueprint. A design may be visual or a textual format.
Designing as a discipline dates back to the ancient Greek philosophies of geometry and the first real computerized designs. The discipline of engineering design evolved from there into its present day manifestation in various fields, including software design. This is because the design process involves the application of several design principles, which are objective, rational, aesthetic and communicative. Rational models are those that meet certain requirements that are needed to specify a new construction or implementation. Rational models also allow for changes after they are initially implemented without requiring a large change in all the components of the system.
An action-centric design process generally involves a designer that is looking to satisfy a user need. The designers use a set of criteria to choose what that need is, where it is to be found and how best to get it there. Action-centred designs are those that define sequences of actions that have a strong probability of success if carried out. They are also good examples of rational models because they can be easily evaluated by users. These action-oriented design processes are often used in complex systems.