CHAPTER 9 DESIGN ENGINEERING. Overview

Similar documents
Design Concepts. Slide Set to accompany. Software Engineering: A Practitioner s Approach, 7/e by Roger S. Pressman

UNIT III DESIGN CONCEPTS AND PRINCIPLES

Lecture 8: Chapter 8!

Chapter 9 Design Engineering

Design. Introduction

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Introduction to Software Engineering

Chapter : Analysis Modeling

Design Concepts and Principles

CSEB233: Fundamentals of Software Engineering. Software Design

Object-Oriented Design

Presenter: Dong hyun Park

Component-Level Design

06. Analysis Modeling

Chapter 10. Object-Oriented Analysis and Modeling Using the UML. McGraw-Hill/Irwin

In this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

09. Component-Level Design

Architectural Blueprint

Topics in Object-Oriented Design Patterns

(Team Name) (Project Title) Software Design Document. Student Name (s):

SDC Design patterns GoF

Chapter 8: Class and Method Design

Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

CS487 Midterm Exam Summer 2005

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

Object-Oriented Design

Topic : Object Oriented Design Principles

Design Engineering. Overview

Basic Structural Modeling. Copyright Joey Paquet,

SOFTWARE ENGINEERING SOFTWARE DESIGN. Saulius Ragaišis.

Chapter 12 (revised by JAS)

System Analysis and Design/ Object-Oriented System Modeling

Complexity. Object Orientated Analysis and Design. Benjamin Kenwright

Chapter 1: Principles of Programming and Software Engineering

UNIT III. Software Design

Architectural Blueprint The 4+1 View Model of Software Architecture. Philippe Kruchten

Unit 1 Introduction to Software Engineering

Classes and Objects. Object Orientated Analysis and Design. Benjamin Kenwright

Chapter 5 Object-Oriented Programming

CHAPTER 5 GENERAL OOP CONCEPTS

Chapter 1: Programming Principles

OO Frameworks. Introduction. Using Frameworks

Software Design Document (SDD) Template (summarized from IEEE STD 1016)

3.Analysis, design concepts and principles

SRM ARTS AND SCIENCE COLLEGE SRM NAGAR, KATTANKULATHUR

University of Calgary Department of Electrical and Computer Engineering. SENG : Object Oriented Analysis and Design Behrouz Homayoun Far

Final Exam. Final Exam Review. Ch 1: Introduction: Object-oriented analysis, design, implementation. Exam Format

CS485/540 Software Engineering Design Concepts (Ch. 8)

Darshan Institute of Engineering & Technology Unit : 3

SHRI ANGALAMMAN COLLEGE OF ENGINEERING & TECHNOLOGY (An ISO 9001:2008 Certified Institution) SIRUGANOOR,TRICHY

10조 이호진 이지 호

Foundations of object orientation

VETRI VINAYAHA COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

New Programming Paradigms

Patterns and Testing

CASE TOOLS LAB VIVA QUESTION

Unit Wise Questions. Unit-1 Concepts

DESIGN WITHIN THE CONTEXT OF SOFTWARE ENGINEERING

Object-Oriented Systems Analysis and Design Using UML

Objects First with Java

The Analysis and Design of the Object-oriented System Li Xin 1, a

Design Pattern: Composite

Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

Lecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction

Software Design. Software design is a blueprint or a plan for a computerbased solution for system

A Comparison of the Booch Method and Shlaer-Mellor OOA/RD

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

ACRONYMS AND GLOSSARY

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS

GRASP Design Patterns A.A. 2018/2019

Architectural Design

Chapter 5 Practice: A Generic View

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman

Software Engineering

Software Design Report

SOFTWARE ENGINEERING UML FUNDAMENTALS. Saulius Ragaišis.

Designing Procedural 4GL Applications through UML Modeling

Objectives. Architectural Design. Software architecture. Topics covered. Architectural design. Advantages of explicit architecture

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS SOFTWARE ENGINEERING

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator.

Chapter 8: Enhanced ER Model

COMP 6471 Software Design Methodologies

Darshan Institute of Engineering & Technology for Diploma Studies

Chapter 2 Basic Principles of the Object-Oriented Paradigm 2.1 Abstraction

SE 2730 Final Review

Topic # 05. Software Systems Design Concepts. (Ch. 8) Analysis Model as a Bridge

Chapter 9 Design Engineering

What is a Programming Paradigm

Agile Model-Driven Development with UML 2.0 SCOTT W. AM BLER. Foreword by Randy Miller UNIFIED 1420 MODELING LANGUAGE. gile 1.

KINGS COLLEGE OF ENGINEERING

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN

Programming II. Modularity 2017/18

Objectives. Explain the purpose and objectives of objectoriented. Develop design class diagrams

Architectural Design

Review Software Engineering October, 7, Adrian Iftene

Software Development Methodologies

UNIT I. 3. Write a short notes on process view of 4+1 architecture. 4. Why is object-oriented approach superior to procedural approach?

Transcription:

CHAPTER 9 DESIGN ENGINEERING Overview A software design is a meaningful engineering representation of some software product that is to be built. Designers must strive to acquire a repertoire of alternative design information and learn to choose the elements that best match the analysis model. A design can be traced to the customer's requirements and can be assessed for quality against predefined criteria. During the design process the software requirements model is transformed into design models that describe the details of the data structures, system architecture, interfaces, and components. Each design product is reviewed for quality (i.e., identify and correct errors, inconsistencies, or omissions) before moving to the next software engineering action. 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 and 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) Design Specification Models Data/Class design - created by transforming the analysis model class-based elements (class diagrams, analysis packages, CRC models, collaboration diagrams) 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 floworiented elements (data flow diagrams, control flow diagrams, processing narratives) 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 (use-case text, use-case diagrams, activity diagrams, swim lane diagrams), flow-oriented elements, and behavioral elements (state diagrams, sequence diagrams) 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

Software Quality Attributes A good design must implement all explicit requirements from the analysis model and accommodate all implicit requirements desired by the user be readable and understandable guide for those who generate code, test components, or support the system provide a complete picture (data, function, behavior) if the software from an implementation perspective Design Quality Guidelines A design should exhibit good architectural structure be modular contain distinct representations of data, architecture, interfaces, and components (modules) lead to data structures that are appropriate for the objects to be implemented and be drawn from recognizable design patterns lead to components that exhibit independent functional characteristics lead to interfaces that reduce the complexity of connections between modules and with the external environment be derived using a reputable method that is driven by information obtained during software requirements analysis FURPS Quality Factors Functionality Usability Reliability Performance Supportability Generic Design Task Set 1. Select an architectural pattern appropriate to the software based on the analysis model 2. Partition the analysis model into design subsystems, design interfaces, and allocate analysis functions (classes) to each subsystem 3. Examine information domain model and design appropriate data structures for data objects and their attributes 4. Create a set of design classes o Translate analysis class into design class o Check each class against design criteria and consider inheritance issues

o Define methods and messages for each design class o Select design patterns for each design class or subsystem after considering alternatives o Revise design classes and revise as needed 5. Design user interface o Review task analyses o Specify action sequences based on user scenarios o Define interface objects and control mechanisms o Review interface design and revise as needed 6. Conduct component level design o Specify algorithms at low level of detail o Refine interface of each component o Define component level data structures o Review components and correct all errors uncovered 7. Develop deployment model Design Concepts Abstraction - allows designers to focus on solving a problem without being concerned about irrelevant lower level details (procedural abstraction - named sequence of events, data abstraction - named collection of data objects) Software Architecture - overall structure of the software components and the ways in which that structure provides conceptual integrity for a system Design Patterns - description of a design structure that solves a particular design problem within a specific context and its impact when applied Modularity - the degree to which software can be understood by examining its components independently of one another Information Hiding - information (data and procedure) contained within a module is inaccessible to modules that have no need for such information Functional Independence - achieved by developing modules with single-minded purpose and an aversion to excessive interaction with other models Refinement - process of elaboration where the designer provides successively more detail for each design component Refactoring - process of changing a software system in such a way internal structure is improved without altering the external behavior or code design Objects - encapsulate both data and data manipulation procedures needed to describe the content and behavior of a real world entity Class - generalized description (template or pattern) that describes a collection of similar objects Inheritance - provides a means for allowing subclasses to reuse existing superclass data and procedures; also provides mechanism for propagating changes Messages - the means by which objects exchange information with one another Polymorphism - a mechanism that allows several objects in an class hierarchy to have different methods with the same name (instances of each subclass will be free to respond to messages by calling their own version of the method)

Design Classes - refine analysis classes by providing detail needed to implement the classes and implement a software infrastructure the support the business solution (i.e., user interface classes, business domain classes, process classes, persistent classes, system classes) Modular Design Method Evaluation Criteria Modular decomposability - provides systematic means for breaking problem into subproblems Modular composability - supports reuse of existing modules in new systems Modular understandability - module can be understood as a stand-alone unit Modular continuity - side-effects due to module changes minimized Modular protection - side-effects due to processing errors minimized Effective Modular Design 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 Design Class Characteristics Complete and sufficient Primitiveness - each class method focuses on providing one service High cohesion Low coupling Design Model Process dimension - indicates design model evolution as design tasks are executed during software process o Architecture elements o Interface elements o Component-level elements o Deployment-level elements Abstraction dimension - represents level of detail as each analysis model element is transformed into a design equivalent and refined o High level (analysis model elements) o Low level (design model elements) Many UML diagrams used in the design model are refinements of diagrams created in the analysis model 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 Architectural Design Derived from o Information about the application domain relevant to software o Relationships and collaborations among specific analysis model elements o Availability of architectural patterns and styles Usually depicted as a set of interconnected systems that are often derived from the analysis packages 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 o User interface (UI) o External interfaces to other systems o Internal interfaces between various design components Modeled using UML collaboration diagrams Component-Level Design Describes the internal detail of each software component Defines o Data structures for all local data objects o Algorithmic detail for all component processing functions o Interface that allows access to all component operations Modeled using UML component diagrams, UML activity diagrams, and pseudocode (PDL) Deployment-Level Design Indicates how software functionality and subsystems will be allocated within the physical computing environment Modeled using UML deployment diagrams Design Pattern Template Name

Intent Aliases Motivation Applicability Structure Participants Collaborators Consequences Related patterns Using Patterns in Design Architectural patterns - define overall structure and relationships of software components (classes, packages, subsystems) Design patterns - address specific design elements (component aggregations, component relationships, or communication) Idioms (coding patterns) - language specific implementations for algorithms or communications mechanisms Frameworks Collection of "plug points" hooks or 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