Software design is the first of three technical activities—design, code generation, and test—that are required to build and verify the software
The design task produces a data design, an architectural design, an interface design, and a component design
The data design transforms the information ...
Software design is the first of three technical activities—design, code generation, and test—that are required to build and verify the software
The design task produces a data design, an architectural design, an interface design, and a component design
The data design transforms the information domain model created during analysis into the data structures that will be required to implement the software
Size: 1.98 MB
Language: en
Added: Aug 09, 2023
Slides: 31 pages
Slide Content
SOFTWARE DESIGN Prepared by Dr.T.Thendral 15.07.23 Prepared by Dr.T.Thendral Assistant Professor Department of Computer Science Sri Ramaskrishna College of Arts & Science for Women Coimbatore
Software design and Software engineering The Design process Design principles Design concepts Effective modular design Software Architecture Prepared by Dr.T.Thendral 15.07.23
SOFTWARE DESIGN AND SOFTWARE ENGINEERING S oftware design is the first of three technical activities—design, code generation, and test—that are required to build and verify the software T he design task produces a data design, an architectural design, an interface design, and a component design The data design transforms the information domain model created during analysis into the data structures that will be required to implement the software Prepared by Dr.T.Thendral 15.07.23
The architectural design defines the relationship between major structural elements of the software, the “ design patterns ” The interface design describes how the software communicates within itself, with systems that interoperate with it and with humans who use it An interface implies a flow of information (e.g., data and/or control) and a specific type of behavior The component-level design transforms structural elements of the software architecture into a procedural description of software components Prepared by Dr.T.Thendral 15.07.23
The importance of software design can be stated with a single word— quality Design is the place where quality is fostered in software engineering Prepared by Dr.T.Thendral 15.07.23
Translating the analysis model into a software design Prepared by Dr.T.Thendral 15.07.23
THE DESIGN PROCESS Software design is an iterative process through which requirements are translated into a “blueprint” for constructing the software Prepared by Dr.T.Thendral 15.07.23
Design and Software Quality Throughout the design process, the quality of the evolving design is assessed with a series of formal technical reviews or design walkthroughs Prepared by Dr.T.Thendral 15.07.23
Three characteristics of a good design: Prepared by Dr.T.Thendral 15.07.23
A design should exhibit an architectural structure that (1) has been created using recognizable design patterns (2) is composed of components that exhibit good design characteristics, and (3) can be implemented in an evolutionary fashion, thereby facilitating implementation and testing Prepared by Dr.T.Thendral 15.07.23
2. A design should be modular 3. A design should contain distinct representations of data, architecture, interfaces, and components (modules). 4. A design should lead to data structures that are appropriate for the objects 5. A design should lead to components that exhibit independent functional characteristics 6. A design should lead to interfaces that reduce the complexity of connections between modules and with the external environment 7. A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis Prepared by Dr.T.Thendral 15.07.23
The Evolution of Software Design Early design work concentrated on criteria for the development of modular programs and methods for refining software structures in a top-down manner Procedural aspects of design definition evolved into a philosophy called structured programming Later work proposed methods for the translation of data flow or data structure into a design definition Prepared by Dr.T.Thendral 15.07.23
Methods have a number of common characteristics: (1) a mechanism for the translation of analysis model into a design representation (2) a notation for representing functional components and their interfaces (3) heuristics for refinement and partitioning, and (4) guidelines for quality assessment Prepared by Dr.T.Thendral 15.07.23
Example Prepared by Dr.T.Thendral 15.07.23 DESIGN PRINCIPLES
DESIGN PRINCIPLES Software design is both a process and a model Design should be Creative skill, past 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 equivalent of an architect’s plans for a house Prepared by Dr.T.Thendral 15.07.23
e.g ., a three-dimensional rendering of the house slowly refines the thing to provide guidance for constructing each detail (e.g., the plumbing layout ) Prepared by Dr.T.Thendral 15.07.23
The design process should not suffer from “tunnel vision .”- onsider alternative approaches The design should be traceable to the analysis model- Because a single element of the design model often traces to multiple requirements Requirements have been satisfied by the design model! Prepared by Dr.T.Thendral 15.07.23
The design should not reinvent the wheel- Systems are constructed using a set of design patterns These patterns should always be chosen as an alternative to reinvention Time is short and resources are limited The design should “minimize the intellectual distance” between the software and the problem as it exists in the real world . structure of the software design should mimic the structure of the problem domain Prepared by Dr.T.Thendral 15.07.23
The design should exhibit uniformity and integration- A design is uniform if it appears that one person developed the entire thing . Rules of style and format should be defined for a design team before design work begins design is integrated if care is taken in defining interfaces between design components Prepared by Dr.T.Thendral 15.07.23
The design should be structured to accommodate change The design should be structured to degrade gently, even when a’berrant 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 (semantic) errors Prepared by Dr.T.Thendral 15.07.23
Prepared by Dr.T.Thendral 15.07.23
DESIGN CONCEPTS Each helps the software engineer to answer the following questions : What criteria can be used to partition software into individual components? How is function or data structure detail separated from a conceptual representation of the software? What uniform criteria define the technical quality of a software design? Prepared by Dr.T.Thendral 15.07.23
The beginning of wisdom for a [software engineer] is to recognize the difference between getting a program to work, and getting it right“ Fundamental software design concepts provide the necessary framework for "getting it right" Prepared by Dr.T.Thendral 15.07.23
Abstraction Abstraction: When we consider a modular solution to any problem, many levels of abstraction can be posed Procedural Abstraction An example of a procedural abstraction would be the word open for a door D ata abstraction A data abstraction is a named collection of data that describes a data object In the context of the procedural abstraction open, we can define a data abstraction called door data object, the data abstraction for door ( e.g ., door type, swing direction, opening mechanism, weight, dimensions) Prepared by Dr.T.Thendral 15.07.23
Control abstraction is the third form of abstraction used in software design control abstraction implies a program control mechanism without specifying internal details Prepared by Dr.T.Thendral 15.07.23
EFFECTIVE MODULAR DESIGN The concept of functional independence is a direct outgrowth of modularity and the concepts of abstraction and information hiding Independence is measured using two qualitative criteria: cohesion and coupling. Cohesion is a measure of the relative functional strength of a module. Coupling is a measure of the relative interdependence among modules Prepared by Dr.T.Thendral 15.07.23
Refinement Stepwise refinement is a top-down design strategy originally proposed by Niklaus Wirth In each step (of the refinement), one or several instructions of the given program are decomposed into more detailed instructions Refinement is actually a process of elaboration Abstraction enables a designer to specify procedure and data and yet suppress low-level details Refinement helps the designer to reveal low-level details as design progresses Prepared by Dr.T.Thendral 15.07.23
Modularity software is divided into separately named and addressable components, often called modules, that are integrated to satisfy problem requirements Prepared by Dr.T.Thendral 15.07.23
Prepared by Dr.T.Thendral 15.07.23
Modular decomposability - reduce the complexity of the overall problem, thereby achieving an effective modular solution Modular composability - If a design method enables existing (reusable) design components to be assembled into a new system Modular understandability - If a module can be understood it will be easier to build and easier to change Modular continuity- If small changes to the system requirements result in changes to individual modules Modular protection- If an aberrant condition occurs within a module and its effects are constrained within that module side effects will be minimized. Prepared by Dr.T.Thendral 15.07.23
Software Architecture Software architecture the overall structure of the software and the ways in which that structure provides conceptual integrity for a system One goal of software design is to derive an architectural rendering of a system A set of architectural patterns enable a software engineer to reuse designlevel concepts Prepared by Dr.T.Thendral 15.07.23