Chapter 9 Design Engineering

Slides:



Advertisements
Similar presentations
Software Design Fundamentals
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Design Concepts and Principles
Chapter 13 Design Concepts and Principles
Design Phase What’s design?
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman.1.
Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Lecture 8: Chapter 8 Design Concepts
CS-499G 8/17/ Design Concepts and Principles.
Design Concepts "You can use an eraser on the drafting table or a sledge hammer on the construction site." Frank Lloyd Wright.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 COSC 4406 Software Engineering COSC 4406 Software Engineering Haibin Zhu, Ph.D. Dept. of Computer Science and mathematics, Nipissing University, 100.
Chapter 9 Design Engineering
Chapter 12 Design Concepts
SOFTWARE DESIGN.
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 engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
CSEB233: Fundamentals of Software Engineering Software Design.
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
Chapter : Design Engineering. Design Engineering It covers the set of principles, concepts, and practices that lead to the development of a high quality.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e.
1 Chapter 9 Design Engineering. 2 Analysis Model -> Design Model.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Computing and SE II Chapter 6: Software Design
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Chapter 12 설계 개념 Design Concepts
Chapter 1: Design Concepts Prepared by Mohd Kamir Yusof 1.
CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 9 Design Engineering Highlights of Software Design Concepts and Principles.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 9: Design Engineering Software Engineering: A Practitioner’s Approach, 6/e Chapter.
CS 8532: Adv. Software Eng. – Spring 2007 Dr. Hisham Haddad Chapter 9 Class will start momentarily. Please Stand By … CS 8532: Advanced Software Engineering.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 9: Design Engineering Software Engineering: A Practitioner’s Approach, 6/e Chapter.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Chapter : 8 Design Concepts
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 9 Design Engineering Highlights of Software Design Concepts and Principles.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Design Concepts ch-8
CompSci 280 S Introduction to Software Development
Chapter 12 Design Concepts
Chapter 12 Design Concepts
Design engineering Prepared By:Jay A.Dave..
Software Engineering: A Practitioner’s Approach, 6/e Chapter 9 Design Engineering copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For.
Lecture 9- Design Concepts and Principles
Software Quality Engineering
Design Concepts.
CIS 375 Bruce R. Maxim UM-Dearborn
SOFTWARE ENGINEERING Design Concepts Dr. S. Prem Kumar
Chapter 8 Design Concepts
Chapter 8 Design Concepts
Chapter 12 Design Concepts
Lecture 9- Design Concepts and Principles
Chapter 9 Design Engineering
CS 8532: Advanced Software Engineering
Design Engineering.
Chapter 8 Design Concepts
Chapter 8 Design Concepts.
Chapter 8 Design Concepts
Chapter 8 Design Concepts
COSC 4406 Software Engineering
Presentation transcript:

Chapter 9 Design Engineering SWE311_Ch09 (071) Software & Software Engineering

Design Engineering Encompasses the set of principles, concepts, and practices that lead to the development of a high quality system or product Design principles establish an overriding philosophy that guides the designer as the work is performed Design concepts must be understood before the mechanics of design practice are applied Goal of design engineering is to produce a model or representation that is bug free (firmness), suitable for its intended uses (commodity), and pleasurable to use (delight) SWE311_Ch09 (071) Software & Software Engineering

Software Design Design follows analysis and must conform to requirements specifications Design Model • Data/Class Design • Architectural Design • Interface Design • Component Level Design SWE311_Ch09 (071) Software & Software Engineering

Design Specification Models Data/Class design - created by transforming the analysis model class-based elements into classes and data structures required to implement the software Architectural design - defines the relationships among the major structural elements of the software, it is derived from the class-based elements and flow-oriented elements of the analysis model Interface design - describes how the software elements, hardware elements, and end-users communicate with one another, it is derived from the analysis model scenario-based elements, flow-oriented elements, and behavioral elements Component-level design - created by transforming the structural elements defined by the software architecture into a procedural description of the software components using information obtained form the analysis model class-based elements, flow-oriented elements, and behavioral elements SWE311_Ch09 (071) Software & Software Engineering

Traceability Everything in the design should be there for a reason! All design work products must be traceable to requirements All design work products must be reviewed for quality. SWE311_Ch09 (071) Software & Software Engineering

Analysis Model -> Design Model SWE311_Ch09 (071) Software & Software Engineering

Design and Quality the design must implement all of the explicit requirements contained in the analysis model, and it must accommodate all of the implicit requirements desired by the customer. the design must be a readable, understandable guide for those who generate code and for those who test and subsequently support the software. the design should provide a complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective. SWE311_Ch09 (071) Software & Software Engineering

Quality Guidelines A design should exhibit an architecture that (1) has been created using recognizable architectural styles or patterns, (2) is composed of components that exhibit good design characteristics and (3) can be implemented in an evolutionary fashion For smaller systems, design can sometimes be developed linearly. A design should be modular; that is, the software should be logically partitioned into elements or subsystems A design should contain distinct representations of data, architecture, interfaces, and components. A design should lead to data structures that are appropriate for the classes to be implemented and are drawn from recognizable data patterns. SWE311_Ch09 (071) Software & Software Engineering

Quality Guidelines (cont.) A design should lead to components that exhibit independent functional characteristics. A design should lead to interfaces that reduce the complexity of connections between components and with the external environment. A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis. A design should be represented using a notation that effectively communicates its meaning. SWE311_Ch09 (071) Software & Software Engineering

FURPS Quality Factors Functionality Usability Reliability Performance Supportability SWE311_Ch09 (071) Software & Software Engineering

Design Principles 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” [DAV95] between the software and the problem as it exists in the real world. The design should exhibit uniformity and integration. 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 (semantic) errors. From Davis [DAV95] SWE311_Ch09 (071) Software & Software Engineering

Design Process Software design is an iterative process traceable to requirements analysis process Many software projects iterate through the analysis and design phases several times Pure separation of analysis and design may not always be possible or desirable “There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are obviously no deficiencies. The first method is far more difficult.” - C.A.R Hoare SWE311_Ch09 (071) Software & Software Engineering

Generic Design Task Set Select an architectural pattern appropriate to the software based on the analysis model Partition the analysis model into design subsystems, design interfaces, and allocate analysis functions (classes) to each subsystem Examine information domain model and design appropriate data structures for data objects and their attributes Create a set of design classes Translate analysis class into design class Check each class against design criteria and consider inheritance issues Define methods and messages for each design class Select design patterns for each design class or subsystem after considering alternatives Revise design classes and revise as needed SWE311_Ch09 (071) Software & Software Engineering

Generic Design Task Set Design user interface Review task analyses Specify action sequences based on user scenarios Define interface objects and control mechanisms Review interface design and revise as needed Conduct component level design Specify algorithms at low level of detail Refine interface of each component Define component level data structures Review components and correct all errors uncovered Develop deployment model SWE311_Ch09 (071) Software & Software Engineering

Design Concepts abstraction—data, procedure, control architecture—the overall structure of the software patterns—”conveys the essence” of a proven design solution modularity—compartmentalization of data and function Information Hiding - data and procedure Functional independence —single-minded function and low coupling refinement—elaboration of detail for all abstractions Refactoring—a reorganization technique that simplifies the design SWE311_Ch09 (071) Software & Software Engineering

Abstraction Concentrate on problem at some level of generalization without considering irrelevant details Allows working with concepts/terms familiar in the problem environment SWE311_Ch09 (071) Software & Software Engineering

Data Abstraction door implemented as a data structure manufacturer model number type swing direction inserts lights type number weight opening mechanism implemented as a data structure SWE311_Ch09 (071) Software & Software Engineering

Procedural Abstraction open details of enter algorithm implemented with a "knowledge" of the object that is associated with enter SWE311_Ch09 (071) Software & Software Engineering

Architecture “The overall structure of the software and the ways in which that structure provides conceptual integrity for a system.” [SHA95a] Structural properties. This aspect of the architectural design representation defines the components of a system (e.g., modules, objects, filters) and the manner in which those components are packaged and interact with one another. For example, objects are packaged to encapsulate both data and the processing that manipulates the data and interact via the invocation of methods Extra-functional properties. The architectural design description should address how the design architecture achieves requirements for performance, capacity, reliability, security, adaptability, and other system characteristics. Families of related systems. The architectural design should draw upon repeatable patterns that are commonly encountered in the design of families of similar systems. In essence, the design should have the ability to reuse architectural building blocks. SWE311_Ch09 (071) Software & Software Engineering

Patterns Design Pattern Template Pattern name—describes the essence of the pattern in a short but expressive name Intent—describes the pattern and what it does Also-known-as—lists any synonyms for the pattern Motivation—provides an example of the problem Applicability—notes specific design situations in which the pattern is applicable Structure—describes the classes that are required to implement the pattern Participants—describes the responsibilities of the classes that are required to implement the pattern Collaborations—describes how the participants collaborate to carry out their responsibilities Consequences—describes the “design forces” that affect the pattern and the potential trade-offs that must be considered when the pattern is implemented Related patterns—cross-references related design patterns SWE311_Ch09 (071) Software & Software Engineering

Modular Design SWE311_Ch09 (071) Software & Software Engineering

Effective Modular Design Modularity Division into separately named and addressable components (modules) Allows complexity to be managed (“divide and conquer”) Functional independence - modules have high cohesion and low coupling Cohesion - qualitative indication of the degree to which a module focuses on just one thing Coupling - qualitative indication of the degree to which a module is connected to other modules and to the outside world SWE311_Ch09 (071) Software & Software Engineering

Modularity: Trade-offs What is the "right" number of modules for a specific software design? module development cost cost of software module integration cost optimal number number of modules of modules SWE311_Ch09 (071) Software & Software Engineering

Information Hiding module clients • algorithm controlled interface • data structure • details of external interface • resource allocation policy clients "secret" a specific design decision SWE311_Ch09 (071) Software & Software Engineering

Why Information Hiding? reduces the likelihood of “side effects” limits the global impact of local design decisions emphasizes communication through controlled interfaces discourages the use of global data leads to encapsulation—an attribute of high quality design results in higher quality software SWE311_Ch09 (071) Software & Software Engineering

Stepwise Refinement open walk to door; reach for knob; open door; repeat until door opens turn knob clockwise; walk through; if knob doesn't turn, then close door. take key out; find correct key; insert in lock; endif Successively decomposing or refining specifications in stepwise fashion pull/push door move out of way; end repeat SWE311_Ch09 (071) Software & Software Engineering

Functional Independence SWE311_Ch09 (071) Software & Software Engineering

Sizing Modules: Two Views SWE311_Ch09 (071) Software & Software Engineering

Structural partitioning Horizontal partitioning (division of functionality): separate branches of control hierarchy Vertical partitioning (factoring): distributing work to “worker” modules SWE311_Ch09 (071) Software & Software Engineering

Refactoring Fowler [FOW99] defines refactoring in the following manner: "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code [design] yet improves its internal structure.” When software is refactored, the existing design is examined for redundancy unused design elements inefficient or unnecessary algorithms poorly constructed or inappropriate data structures or any other design failure that can be corrected to yield a better design. SWE311_Ch09 (071) Software & Software Engineering

OO Design Concepts Design classes Entity classes Boundary classes Controller classes Inheritance—all responsibilities of a superclass is immediately inherited by all subclasses Messages—stimulate some behavior to occur in the receiving object Polymorphism—a characteristic that greatly reduces the effort required to extend the design SWE311_Ch09 (071) Software & Software Engineering

Design Classes Analysis classes are refined during design to become entity classes Boundary classes are developed during design to create the interface (e.g., interactive screen or printed reports) that the user sees and interacts with as the software is used. Boundary classes are designed with the responsibility of managing the way entity objects are represented to users. Controller classes are designed to manage the creation or update of entity objects; the instantiation of boundary objects as they obtain information from entity objects; complex communication between sets of objects; validation of data communicated between objects or between the user and the application. SWE311_Ch09 (071) Software & Software Engineering

Inheritance Design options: The class can be designed and built from scratch. That is, inheritance is not used. The class hierarchy can be searched to determine if a class higher in the hierarchy (a super class) contains most of the required attributes and operations. The new class inherits from the superclass and additions may then be added, as required. The class hierarchy can be restructured so that the required attributes and operations can be inherited by the new class. Characteristics of an existing class can be overridden and different versions of attributes or operations are implemented for the new class. SWE311_Ch09 (071) Software & Software Engineering

Messages SWE311_Ch09 (071) Software & Software Engineering

Polymorphism Conventional approach … case of graphtype: if graphtype = linegraph then DrawLineGraph (data); if graphtype = piechart then DrawPieChart (data); if graphtype = histogram then DrawHisto (data); if graphtype = kiviat then DrawKiviat (data); end case; All of the graphs become subclasses of a general class called graph. Using a concept called overloading [TAY90], each subclass defines an operation called draw. An object can send a draw message to any one of the objects instantiated from any one of the subclasses. The object receiving the message will invoke its own draw operation to create the appropriate graph. graphtype draw SWE311_Ch09 (071) Software & Software Engineering

The Design Model SWE311_Ch09 (071) Software & Software Engineering

Design Model Elements Data elements Data model --> data structures Data model --> database architecture Architectural elements Application domain Analysis classes, their relationships, collaborations and behaviors are transformed into design realizations Patterns and “styles” (Chapter 10) Interface elements the user interface (UI) external interfaces to other systems, devices, networks or other producers or consumers of information internal interfaces between various design components. Component elements Deployment elements SWE311_Ch09 (071) Software & Software Engineering

Interface Elements SWE311_Ch09 (071) Software & Software Engineering

Component Elements SWE311_Ch09 (071) Software & Software Engineering

Deployment Elements SWE311_Ch09 (071) Software & Software Engineering

Design Patterns The best designers in any field have an uncanny ability to see patterns that characterize a problem and corresponding patterns that can be combined to create a solution A description of a design pattern may also consider a set of design forces. Design forces describe non-functional requirements (e.g., ease of maintainability, portability) associated the software for which the pattern is to be applied. The pattern characteristics (classes, responsibilities, and collaborations) indicate the attributes of the design that may be adjusted to enable the pattern to accommodate a variety of problems. SWE311_Ch09 (071) Software & Software Engineering

Frameworks A framework is not an architectural pattern, but rather a skeleton with a collection of “plug points” (also called hooks and slots) that enable it to be adapted to a specific problem domain. Plug points enable designers to integrate problem specific functionality within the skeleton In an object-oriented context a skeleton is a collection of cooperating classes Gamma et al note that: Design patterns are more abstract than frameworks. Design patterns are smaller architectural elements than frameworks Design patterns are less specialized than frameworks SWE311_Ch09 (071) Software & Software Engineering

Data Design High level model depicting user's view of the data or information Design of data structures and operators is essential to creation of high-quality applications Translation of data model into database is critical to achieving system business objectives Reorganizing databases into data warehouse enables data mining or knowledge discovery that can impact success of business itself SWE311_Ch09 (071) Software & Software Engineering

Architectural Design Derived from Information about the application domain relevant to software Relationships and collaborations among specific analysis model elements Availability of architectural patterns and styles Usually depicted as a set of interconnected systems that are often derived from the analysis packages SWE311_Ch09 (071) Software & Software Engineering

Interface Design Interface is a set of operations that describes the externally observable behavior of a class and provides access to its operations Important elements User interface (UI) External interfaces to other systems Internal interfaces between various design components Modeled using UML collaboration diagrams SWE311_Ch09 (071) Software & Software Engineering

Component-Level Design Describes the internal detail of each software component Defines Data structures for all local data objects Algorithmic detail for all component processing functions Interface that allows access to all component operations Modeled using UML component diagrams, UML activity diagrams, and pseudo code (PDL) SWE311_Ch09 (071) Software & Software Engineering

Deployment-Level Design Indicates how software functionality and subsystems will be allocated within the physical computing environment Modeled using UML deployment diagrams SWE311_Ch09 (071) Software & Software Engineering