Design Principles
The Software design is both a procedure and a model. Design process is a group of iterative steps which enable the designer to define all aspects of the software to be established. It is important to note Moreover, which the design process is not simply a cookbook. The Creative skill previous experience, a sense of what makes good software and an overall commitment to quality are critical success factors for a competent design.
The design model is the equal of an architect's plans for a house. It starts through representing the totality of the thing to be established Example for a 3 dimensional rendering of the house and slowly refines the going to give guidance for constructing each detail example for the plumbing layout. Same, the design model which is established for software gives a variety of different views of the computer program.
The Basic design principles enable the software engineer to navigate the design procedure. Davis suggests a group of principles for software design which have been extended and adapted in the following list:
- The design process should not suffer from tunnel vision. A good designer should believe alternative approaches like judging each based on the requirements of the problem the resources available to do the job and the design concepts.
- The design process should be traceable to the analysis model because a single component of the design model often traces to multiple needs it is necessary to have a means for tracking how needs have been satisfied through the design model.
- The design should not reinvent the wheel. The Systems are constructed by using a group of design patterns several of that have likely been encountered previously. These patterns which are also called reusable design components should always be chosen as an alternative to reinvention. The Time is short and resources are limited Design time should be invested in representing truly new integrating and ideas those patterns that already exist.
- The design should minimize the intellectual distance among the software and the problem as it exists in the real world. Which is the structure of the software design should whenever possible mimic the structure of the problem domain.
- The design should exhibit integration and uniformity. The design is uniform if it appears in which one person established the entire thing. The Rules of format and style should be described for a design team previous design work starts. A design is integrated if care is taken in defining interfaces among design parts.
- The design should be structured to accommodate modification. Several of the design concepts discussed in the next section enable a design to get this principles.
- The design should be structured to degrade gently even when aberrant events, data or operating conditions are encountered. The well-designed computer program should never bomb it should be designed to accommodate unusual context and it if must terminate processing do so in a graceful manner.
- Coding is not design, Design is not coding. Even when detailed process designs are established for program components the level of abstraction of the design model is higher than source code. Only design decisions made at the coding level address the small implementation details which enable the process design to be coded.
- The design should be assessed for quality as it is being established not after the fact. A variety of design measures and design concepts are available to assist the designer in assessing quality.
- The design should be reviewed to minimize conceptual errors. There is sometimes a tendency to focus on minutiae when the design is reviewed missing the forest for the trees. The designer should ensure which major conceptual parts of the design ambiguity, omissions, and inconsistency have been addressed before worrying about the syntax of the design model.
When the designs principles define above are properly applied the software engineer established a design which exhibits both internal and external quality factors. The External quality factors are those properties of the software which can be readily observed through user's example for reliability, correctness, speed, usability. The Internal quality factors are of importance to software engineers. They lead to a high-quality design from the technical perspective. To get internal quality factors the designer must understand general design concepts.