Software Design and Software Engineering
The Software design sits at the technical kernel of the software engineering procedure and is applied regardless of the software procedure model which is used. Starting once software requirements have been analyzed and specified, software design is the 1st of three technical activities - design, code generation, and testing - that are need to established and verify the software. Every activity transforms information in a manner which ultimately results in validated computer software.
Every elements of the analysis model gives information which is needed to establish a design model. The flow of information in the duration of software design is described in following figure. Software needs, manifested through the data, functional, and behavioral models, feed the design step. By using one of a number of design techniques discussed in later chapters the design step produces a data design an architectural design, an interface design, and a procedural design.
Data design transforms the information domain development during analysis into the data structures which will be needed to implement the software. The data objects and relationships described in the entity relationship diagram and the detailed data content depicted in the data dictionary gives the basis for the data design activity.
Architectural design describes the relationship between major structural parts of the program. This design symbol the modular framework of a computer program can be derived from the analysis models and the interaction of subsystems described within the analysis model.
The interface design defines how the software communicates within itself to systems which interoperate with it and with humans who use it. The interface implies a flow of information example for data and/or control. Thus, the control and data flow diagrams give the information need for interface design.
The procedural design transforms structural parts of the program architecture into a procedural description of software components. The Information obtained from the CSPEC, PSPEC, CSPEC and STD serve as the basis for procedural design.
In the duration of design we make decisions which will ultimately affect the success of software construction and as important the ease with that software can be maintained. But why is design so important?
The importance of software design can be beginning with a single word-quality. The Design is the place where quality is fostered in software development. Design gives us with representations of software which can be assessed for quality. Design is the only way which we can accurately translate a customer's needs into a finished software system or product. The Software design serves as the foundation for all software maintenance and software engineering steps which follow. Without design we risk building an unstable system-one that will fail when little changes are made 1 which may be hard to test one whose quality cannot be assessed until late in the software engineering process when time is little and various dollars have already been spent.