120 likes | 311 Views
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements Design focuses on four major areas of concern: Data design Architectural design Interface design Component – level design.
E N D
SOFTWARE DESIGN • Design Concepts • Design is a meaningful engineering representation of something that is to be built • It can be traced to a customer’s requirements • Design focuses on four major areas of concern: • Data design • Architectural design • Interface design • Component – level design
Design Principles • Basic design principles that navigate the design process are, • The design process should not suffer from “tunnel vision” • The design should be traceable to the analysis model • The design should not reinvent the wheel • The design should “minimize the intellectual distance” between the software and the problem as it exists in the real world • The design should exhibit uniformity and integration
Design Principles • The design should be structured to accommodate change • The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered • Design is not coding, coding is not design • The design should be assessed for quality as it is being created, not after the fact • The design should be reviewed to minimize conceptual
Design Concepts • Abstraction • Many levels of abstraction can be posed in the solution of any problem. • A procedural abstraction is a named sequence of instructions that has a specific and limited function • A data abstraction is a named collection of data that describes a data object • Control abstraction implies a program control mechanism without specifying internal details
Design Concepts • Refinement • Refinement is the process of elaboration • We begin with the statement of function that is defined at a high level of abstraction. • Refinement causes the designer to elaborate on the original statement, providing more and more detail as each successive refinement occurs • Modularity • Software is divided into separately named and addressable components, called modules, that are integrated to satisfy problem requirements
Design Concepts • Software Architecture • Software architecture alludes to “the overall structure of the software and the ways in which that structure provides conceptual integrity for a system” • Control hierarchy • Control hierarchy, also called program structure, represents the organization of program components and implies a hierarchy of control • Structural partitioning • Program structure can be partitioned both horizontally and vertically.
Design Concepts • Data structure • Data structure is a representation of the logical relationship among individual elements of data • Software procedure • Software procedure focuses on the processing details of each module individually. • Information hiding • The principle of information hiding suggests that modules should be specified and designed so that information contained within a module is inaccessible to other modules.
Effective modular design • Functional independence • Modules have high cohesion and low coupling • Functional independence is achieved by developing modules with “single-minded” function and an “aversion” to excessive interaction with other modules. • Software with effective modularity is easier to develop because function may be compartmentalized and interfaces are simplified. • Independence is measured using two qualitative criteria: cohesion and coupling.
Effective modular design • Cohesion • Qualitative indication of the degree to which a module focuses on just one thing. • A module that performs a set of tasks that relate to each other loosely, is termed coincidentally cohesive. • When a module contains tasks that are related by the fact that all must be executed within the same span of time, the module exhibits temporal cohesion. • When a processing elements of a module are related and must be executed in a specific order, procedural cohesion exists. • When all processing elements concentrate on one area of a data structure, communicational cohesion is present.
Effective modular design • Coupling • Qualitative indication of the degree to which a module is connected to other modules and to the outside world • In software design, we strive for lowest possible coupling. Simple connectivity among modules results in software that is easier to understand.
Effective modular design • Types of Coupling • Data coupling is found when a single data is passed via a module interface. • Stamp coupling is found when a data structure is passed via a module interface. • Control coupling is found when a control flag is passed between modules. • Common coupling occurs when a number of modules reference a global data area. • Content coupling occurs when one module makes use of data or control information maintained within the boundary of another module.