1 / 11

SOFTWARE DESIGN Design Concepts

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.

paulabauer
Download Presentation

SOFTWARE DESIGN Design Concepts

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

More Related