CIS 375 Bruce R. Maxim UM-Dearborn

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.
Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Software Engineering CSE470: Systems Engineering 35 Computer System Engineering Computer System Engineering is a problem-solving activity. Itemize desired.
Chapter 10 Architectural Design
CSE 303 – Software Design and Architecture
Chapter 9 Design Engineering
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
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.
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.
SIM3302 SOFTWARE DESIGN & TESTING
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.
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 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
ARCHITECTURAL DESIGN. Why is Architecture Important? Representations of software architecture are an enabler for communication between all parties (stakeholders)
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Software Design: Principles, Process, and Concepts Getting Started with Design.
Developed by Reneta Barneva, SUNY Fredonia Software Design and Software Engineering.
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.
Design Methods Instructor: Dr. Jerry Gao. Software Design Methods Design --> as a multistep process in which we design: a) data structureb) program structure.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 9: Design Engineering Software Engineering: A Practitioner’s Approach, 6/e Chapter.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
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.
Basic Characteristics of Object-Oriented Systems
DESIGN PROCESS AND CONCEPTS. Design process s/w design is an iterative process through which requirements are translated into a “blueprint” for constructing.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Design Concepts ch-8
Design (Concepts and Principles)
CompSci 280 S Introduction to Software Development
The Movement To Objects
Software Design Principles
Object-Oriented Analysis and Design
System Design and Modeling
Design engineering Prepared By:Jay A.Dave..
Design and Implementation
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 Design Mr. Manoj Kumar Kar.
Software Engineering: A Practitioner’s Approach, 6/e Chapter 11 Component-Level Design copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Software Quality Engineering
System models October 5, 2005.
Object-Oriented Design
Software Design CMSC 345, Version 1/11.
Chapter 20 Object-Oriented Analysis and Design
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
Lecture 9- Design Concepts and Principles
Chapter 9 Design Engineering
An Introduction to Software Architecture
Design Engineering.
Software Modelling and Design
Design Yaodong Bi.
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

CIS 375 Bruce R. Maxim UM-Dearborn Software Design CIS 375 Bruce R. Maxim UM-Dearborn 11/11/2018

Design Models – 1 Data Design Architectural Design Interface Design created by transforming the data dictionary and ERD into implementation data structures requires as much attention as algorithm design Architectural Design derived from the analysis model and the subsystem interactions defined in the DFD Interface Design derived from DFD and CFD describes software elements communication with other software elements other systems human users 11/11/2018

Design Models – 2 Component-level design created by transforming the structural elements defined by the software architecture into procedural descriptions of software components Derived from information in the PSPEC, CSPEC, and STD 11/11/2018

A Good Design Should - 1 exhibit good architectural structure be modular contain distinct representations data architecture interfaces components (modules) lead to data structures that are appropriate for the objects to be implemented 11/11/2018

A Good Design Should - 2 lead to interfaces that reduce complexity of module connections reduce complexity of connections to the external environment be derived using a method driven by information during software requirements analysis 11/11/2018

Design Principles - 1 Process should not suffer from tunnel vision Design should be traceable to analysis model Do not try to reinvent the wheel Try to minimize intellectual distance between the software and the real world problem Design should exhibit both uniformity and integration Should be structured to accommodate changes 11/11/2018

Design Principles - 2 Design is not coding and coding is not design Should be structured to degrade gently, when bad data, events, or operating conditions are encountered Needs to be assessed for quality as it is being created Needs to be reviewed to minimize conceptual (semantic) errors 11/11/2018

Design Concepts -1 Abstraction Software Architecture allows designers to focus on solving a problem without being concerned about irrelevant lower level details procedural abstraction data abstraction Software Architecture overall structure of the software components and the ways in which that structure provides conceptual integrity for a system 11/11/2018

Design Concepts -2 Design Patterns Modularity 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 11/11/2018

Design Concepts -3 Information Hiding Functional Independence 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 11/11/2018

Design Concepts -4 Refinement Refactoring 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 11/11/2018

Design Concepts - 4 Objects Class Inheritance 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 11/11/2018

Design Concepts - 5 Messages Polymorphism 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 11/11/2018

Design Concepts - 6 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) 11/11/2018

Modular Design Methodology Evaluation - 1 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 11/11/2018

Modular Design Methodology Evaluation - 2 Modular continuity module change side-effects minimized Modular protection processing error side-effects minimized 11/11/2018

Control Terminology - 1 Span of control Depth Fan-out or width number of control levels within a software product Depth distance between the top and bottom modules in program control structure Fan-out or width number of modules directly controlled by a particular module 11/11/2018

Control Terminology - 2 Fan-in Visibility Connectivity number of modules that control a particular module Visibility set of program components that may be called or used as by a given component (either indirectly or directly) Connectivity set of components that are called directly or are used as data by a given component 11/11/2018

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 11/11/2018

Types of Coupling No direct coupling. Data coupled (data structures). Stamp coupling (parts of data structure). Control coupling (flags, etc.). External coupling (file format, database). Common coupling. Content coupling (references cross component boundaries). 11/11/2018

Coupling Factors Type of connection between modules. Complexity of the interface. Type of information flow. Binding time of the connection. 11/11/2018

Decoupling? Start early in design process. Convert implicit references. Standardize connections. Localize your variables. Use buffers to moderate I/O to modules. Avoid race conditions, no waiting. 11/11/2018

Cohesion Coincidental cohesion. Logical cohesion. Temporal cohesion. Procedural cohesion. Communicational cohesion. Sequential cohesion. Functional cohesion. 11/11/2018

Promoting High Cohesion and Low Coupling Small modules. Control "fan out" (width of tree). Focus on "fan in" (fan in = reuse). Scope of effect should be a subset of scope of control. Don’t make a major decision in the lower modules. Control Depth. 11/11/2018

Design Heuristics Evaluate "first cut" to reduce coupling and increase cohesion. Minimize "fan out" and focus on "fan in". Scope of effect should be subset of scope of control. Reduce complexity of interfaces and improve consistency. Define modules with predictable behavior, but don’t be overly restrictive. Strive for single entry, single exit modules. Package software based on design constraints and portability requirements (e.g. how the modules fit together and work with one another). 11/11/2018

Data Design Principles - 1 Systematic analysis applied to functional behavior, can be applied to data. Data structures and operations should be identified. Establish a data dictionary and use it to guide both data and program design. Defer low level data structure decisions until late in the design. 11/11/2018

Data Design Principles - 2 Information hiding. Libraries of useful data structures and operators is developed. Environment must support creation of ADT’s (abstract data types). 11/11/2018

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 11/11/2018

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 11/11/2018

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 and activity diagrams, and pseudocode (PDL) 11/11/2018

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 11/11/2018

Design Pattern Template Name Intent Aliases Motivation Applicability Structure Participants Collaborators Consequences Related patterns 11/11/2018