Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.

Slides:



Advertisements
Similar presentations
Lecture 6: Software Design (Part I)
Advertisements

Software Design Fundamentals
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Design Concepts and Principles
1 Software Design Introduction  The chapter will address the following questions:  How do you factor a program into manageable program modules that can.
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.
Component-Level Design
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Engineering CSE470: Systems Engineering 35 Computer System Engineering Computer System Engineering is a problem-solving activity. Itemize desired.
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.
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
CSE 303 – Software Design and Architecture
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
 2004 by SEC Chapter 4 Software Design. 2  2004 by SEC Chapter 4 Software Design 4.1 Design Fundamentals 4.2 Design Method 4.3 Architecture Design
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.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software 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.
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 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.
Design Concepts By Deepika Chaudhary.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Developed by Reneta Barneva, SUNY Fredonia Software Design and Software Engineering.
Chapter 1: Design Concepts Prepared by Mohd Kamir Yusof 1.
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.
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 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.
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
Design (Concepts and Principles)
7. Modular and structured design
CompSci 280 S Introduction to Software Development
Software Design Principles
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
Object-Oriented Design
Lecture 9- Design Concepts and Principles
Chapter 9 Design Engineering
Design Engineering.
Chapter 9 Architectural Design.
Chapter 8 Design Concepts.
DESIGN CONCEPTS AND PRINCIPLES
COSC 4406 Software Engineering
Presentation transcript:

Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.

December Topics The Design Process Design Principles Design Concepts-Abstraction & Refinement modularity—compartmentalization of data and function Software Architecture hiding—controlled interfaces Program Partitioning Coupling and Cohesion Refactoring—a reorganization technique that simplifies the design

December Relation of Analysis to Design

December The Design Model Data Design –Transforms information domain model into data structures required to implement software Architectural Design –Defines relationship among the major structural elements of a program Procedural Design Interface Design Architectural Design Data Design The Design Model Which is mapped from the Analysis model

December The Design Model Interface Design –Describes how the software communicates with itself, to systems that interact with it and with humans. Procedural Design –Transforms structural elements of the architecture into a procedural description of software construction Procedural Design Interface Design Architectural Design Data Design The Design Model Which is mapped from the Analysis model

December The Design Process Mc Glaughlin’s suggestions for good design: –Design must enable all requirements of the analysis model and implicit needs of the customer to be met –Design must be readable and an understandable guide for coders, testers and maintainers –The design should address the data, functional and behavioral domains of implementation

December Design Guidelines A design should exhibit a hierarchical organization A design should be modular A design should contain both data and procedural abstractions Modules should exhibit independent functional characteristics Interfaces should reduce complexity A design should be obtained from a repeatable method, driven by analysis

December Design Principles Design Process: –Iterative steps that enable description of all aspects of the software Design principles: –The design process should consider various approaches based on requirements –The design should be traceable to the requirements analysis model –The design should not reinvent the wheel -- Reuse! –Design should mimic the structure in the problem domain

December Design Principles –Design should be uniform and exhibit integrity –Design should accommodate change –Design should minimize coupling between modules –Design should be structured to degrade gently It should terminate gracefully and not bomb suddenly –Design and coding are not interchangeable –Design should have quality assessment during creation, not afterwards This is to reduce development time –Design should be reviewed to minimize on conceptual errors -- Formal design reviews! –There is a tendency to focus on the wrong things All conceptual elements have to be addressed

December Design Concepts-Abstraction Wasserman: “Abstraction permits one to concentrate on a problem at some level of abstraction without regard to low level details” Data Abstraction –This is a named collection of data that describes a data object Procedural Abstraction –Instructions are given in a named sequence –Each instruction has a limited function Control Abstraction –A program control mechanism without specifying internal details, e.g., semaphore, rendezvous

December Data Abstraction door implemented as a data structure manufacturer model number type swing direction inserts lights type type number number weight opening mechanism

December Procedural Abstraction open implemented with a "knowledge" of the object that is associated with enter details of enter algorithm

December Refinement Refinement is a process where one or several instructions of the program are decomposed into more detailed instructions. Stepwise refinement is a top down strategy –Basic architecture is developed iteratively –Step wise hierarchy is developed Forces a designer to develop low level details as the design progresses –Design decisions at each stage

December Stepwise Refinement open walk to door; reach for knob; open door; walk through; close door. repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat

December Modularity In this concept, software is divided into separately named and addressable components called modules Follows “divide and conquer” concept, a complex problem is broken down into several manageable pieces Let p 1 and p 2 be two program parts, and E the effort to solve the problem. Then, E(p 1 +p 2 ) > E(p 1 )+E(p 2 ), often >> A need to divide software into optimal sized modules

December Modularity & Software Cost

December Modularity Objectives of modularity in a design method Modular Decomposability –Provide a systematic mechanism to decompose a problem into sub problems Modular Composability –Enable reuse of existing components to be assembled into a new system Modular Understandability –Can the module be understood as a stand alone unit? Then it is easier to understand and change.

December Modularity Modular Continuity –If small changes to the system requirements result in changes to individual modules, rather than system-wide changes, the impact of the side effects is reduced (note implications in previous example) Modular Protection –If there is an error in the module, then those errors are localized and not spread to other modules

December Software Architecture Desired properties of an architectural design Structural Properties –This defines the components of a system and the manner in which these interact with one another. Extra Functional Properties –This addresses how the design architecture achieves requirements for performance, reliability and security Families of Related Systems –The ability to reuse architectural building blocks

December Structural Diagrams

December Kinds of Models Terminology –Structural models Organized collection of components –Framework models Abstract to repeatable architectural patterns –Dynamic models Behavioral (dynamic) aspects of structure –Process models Business or technical process to be built –Functional models Functional hierarchy of the system

December Program Structure Partitioning Horizontal Partitioning –Easier to test –Easier to maintain (questionable) –Propagation of fewer side effects (questionable) –Easier to add new features F1 (Ex: Input) F2 (Process) F3(Output)

December Program Structure Partitioning Vertical Partitioning –Control and work modules are distributed top down –Top level modules perform control functions –Lower modules perform computations Less susceptible to side effects Also very maintainable

December Information Hiding Modules are characterized by design decisions that are hidden from others Modules communicate only through well defined interfaces Enforce access constraints to local entities and those visible through interfaces Very important for accommodating change and reducing coupling

December Information Hiding module controlled interface "secret" algorithm algorithm data structure data structure details of external interface details of external interface resource allocation policy resource allocation policy clients a specific design decision

December 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

December Functional Independence Critical in dividing system into independently implementable parts Measured by two qualitative criteria –Cohesion Relative functional strength of a module –Coupling Relative interdependence among modules

December Modular Design -- Cohesion A cohesive module performs a single task Different levels of cohesion –Coincidental, logical, temporal, procedural, communications, sequential, functional

December Modular Design -- Cohesion Coincidental Cohesion –Occurs when modules are grouped together for no reason at all Logical Cohesion –Modules have a logical cohesion, but no actual connection in data and control Temporal Cohesion –Modules are bound together because they must be used at approximately the same time

December Modular Design -- Cohesion Communication Cohesion –Modules grouped together because they access the same Input/Output devices Sequential Cohesion –Elements in a module are linked together by the necessity to be activated in a particular order Functional Cohesion –All elements of a module relate to the performance of a single function

December Modular Design -- Coupling Coupling describes the interconnection among modules Data coupling –Occurs when one module passes local data values to another as parameters Stamp coupling –Occurs when part of a data structure is passed to another module as a parameter

December Modular Design -- Coupling Control Coupling –Occurs when control parameters are passed between modules Common Coupling –Occurs when multiple modules access common data areas such as Fortran Common or C extern Content Coupling –Occurs when a module data in another module Subclass Coupling –The coupling that a class has with its parent class

December Examples of Coupling

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

December Design Heuristics Evaluate 1st iteration to reduce coupling & improve cohesion Minimize structures with high fan-out; strive for depth Keep scope of effect of a module within scope of control of that module Evaluate interfaces to reduce complexity and improve consistency

December Design Heuristics Define modules with predictable function & avoid being overly restrictive –Avoid static memory between calls where possible Strive for controlled entry -- no jumps into the middle of things Package software based on design constraints and portability requirements

December Program Structure

December Documentation

December Summary Design is the core of software engineering Design concepts provide the basic criteria for design quality Modularity, abstraction and refinement enable design simplification A design document is an essential part of the process