SIM3302 SOFTWARE DESIGN & TESTING

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,
Structured Design. 2 Design Quality – Simplicity “There are two ways of constructing a software design: One is to make it so simple that there are obviously.
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.
Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.
TCS2411 Software Engineering1 Software Design Principles “Producing the software blueprint”
Traditional Approach to Design
Chapter 10 The Traditional Approach to Design
What is Software Design?  Introduction  Software design consists of two components, modular design and packaging.  Modular design is the decomposition.
Copyright Irwin/McGraw-Hill Software Design Prepared by Kevin C. Dittman for Systems Analysis & Design Methods 4ed by J. L. Whitten & L. D. Bentley.
Software Design Deriving a solution which satisfies software requirements.
© Copyright 2011 John Wiley & Sons, Inc.
Chapter 14: Design Method --- data and architectural design Design -- A multistep process in which representations of data structure, program structure,
Software Architecture Design Instructor: Dr. Jerry Gao.
Jump to first page 1 System Design (Finalizing Design Specifications) Chapter 3d.
Software Engineering CSE470: Systems Engineering 35 Computer System Engineering Computer System Engineering is a problem-solving activity. Itemize desired.
Chapter 10: Architectural Design
CS-499G 8/17/ Design Concepts and Principles.
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 10 Architectural Design
1 Chapter 14 Architectural Design. 2 Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009). Slides copyright 2009 by Roger Pressman.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 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
CSE 303 – Software Design and Architecture
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.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Chapter : Design Engineering. Design Engineering It covers the set of principles, concepts, and practices that lead to the development of a high quality.
Cohesion and Coupling CS 4311
Systems analysis and design, 6th edition Dennis, wixom, and roth
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 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.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
CCSB223/SAD/CHAPTER131 Chapter 13 Designing the System Internals.
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.
Architectural Design Introduction Design has been described as a multistep process in which representations of data and program structure,
Systems Design.  Application Design  User Interface Design  Database 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.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
Architectural Complexity  A useful technique for assessing the overall complexity of a proposed architecture is to consider dependencies between components.
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.
Chapter 9 Architectural Design. Why Architecture? The architecture is not the operational software. Rather, it is a representation that enables a software.
Systems Analysis and Design in a Changing World, Fourth Edition
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
7. Modular and structured design
Software Design Principles
Lecture 9- Design Concepts and Principles
Software Design Mr. Manoj Kumar Kar.
Software Quality Engineering
CIS 375 Bruce R. Maxim UM-Dearborn
Chapter 9 Architectural Design
Lecture 9- Design Concepts and Principles
Chapter 9 Architectural Design.
Design Module view What module should the system and which have to be developed . It determines the module structure of components.
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

SIM3302 SOFTWARE DESIGN & TESTING CHAPTER 1 Design Concepts & Principles SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC OBJECTIVE At the end of this chapter, students should be able to: Define what is design Explain the important of design Explain the design process & design quality Explain the design principles Understand the fundamental software design concepts Explain and give examples for each of the design concepts SIM3302 Software Design & Testing by Zaihisma CC

TRANSITION FROM ANALYSIS TO DESIGN SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Data dictionary PSPEC DFD CSPEC STD ERD DOD ANALYSIS MODEL DESIGN MODEL Data design Architectural design Interface design Component-level design SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Model Data design Transforms information domain model into data structures  Architectural design - Defines relationship between structural elements of the SW,  - represent the framework of comp. based sys. Interface design - How SW communicates within itself, with systems that interoperate with it, with humans   - a flow of information & type of behavior Component-level design Transforms structural elements of the SW architecture into a procedural description of SW components SIM3302 Software Design & Testing by Zaihisma CC

Importance of SW Design Quality Translate customer requirements Representations of SW SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Process SW design is an iterative process Requirements are translated  “blueprint” for constructing the SW SIM3302 Software Design & Testing by Zaihisma CC

A model of the design process [Budgen,94] External requirements 1. Identify nature of requirement 2. Analyse & build model of problem 3.postulate a design solution 4.validate solution 5.refine design solution 6.implement solution Requirements specification Functional specification Seek new solution Designer’s model Design ‘blueprints’ Mismatches between model & requirement SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Guidelines A design should exhibit an architectural structure  A design should be modular A design should contain distinct representations of data, architecture, interfaces, & components A design should lead to data structures that are appropriate for the objects to be implemented SIM3302 Software Design & Testing by Zaihisma CC

Design 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 modules & external environment A design should be derived using a repeatable method , driven by information obtained during SW requirement analysis SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC 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” between the SW and the problem as it exists in the real world The design should exhibit uniformity & integration SIM3302 Software Design & Testing by Zaihisma CC

Design Principles …cont. The design should be structured to accommodate change The design should 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 SIM3302 Software Design & Testing by Zaihisma CC

Fundamental SW Design Concepts Abstraction – data, procedure, control Refinement – elaboration of detail for all abstractions Modularity – compartmentalization of data & function Architecture – overall structure of the SW Procedure – algorithms that achieve function Information hiding– controlled interfaces SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts Abstraction concentrate on the essential features and ignore details that are not relevant Procedural abstraction = a named sequence of instructions that has a specific & limited function Data abstraction = a named collection of data that describes a data object Control abstraction = implies a program control mechanisms without specify internal details SIM3302 Software Design & Testing by Zaihisma CC

Suppress low-level details Design Concepts…cont Refinement stepwise refinement = top down strategy refine levels of procedural detail develop hierarchy by decompose a procedural abstraction in a stepwise fashion until programming languages are reached similar to the process of refinement & partitioning in requirement analysis abstraction & refinement are complementary concepts Suppress low-level details Reveal low-level details SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont Modularity system is decomposed into a number of modules software architecture and design patterns embody modularity 5 criteria to evaluate a design method with respect to its ability to define effective modular system [meyer,88] modular decomposability - provides a systematic approach for decomposing the problem into subproblems modular composability - enables existing(reusable) design components to be assembled into a new system o      SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont 5 criteria to evaluate a design method with respect to its ability to define effective modular system [meyer,88] modular understandability module can be understood as a standalone unit ( no need to refer to other modules) modular continuity small changes to the system requirements result in changes to individual modules modular protection - unexpected condition occurs within a module & its effects are constrained within that module SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont Architecture is the structure and organization of program components (modules) 5 different types of models are used to represent the architectural design :      structural models : represent architecture as an organized collection of program components framework models : identify repeatable architectural design framework that similar to the types of applications dynamic models : behavioral aspects of the program architecture process models : design of the business or technical process of a system functional models : functional hierarchy of a system SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont SW architecture Control hierarchy Data structure Structural partitioning SIM3302 Software Design & Testing by Zaihisma CC

SW Architecture- Control Hierarchy o     also called program structure o     represent the organization of program components o     depth & width = no. of levels of control & overall span of control o     fan-out = no. of. Modules that are directly controlled by another module o     fan-in = how many modules directly control a given module o     super ordinate = module that control another module o     subordinate = module controlled by another SIM3302 Software Design & Testing by Zaihisma CC

SW Architecture- Structural Partitioning o     horizontal partitioning §       defines separate branches of the modular hierarchy for each major program function §       defines 3 partition = Input, Process, Output §       benefits : ·       easy to test SW ·       easy to maintain SW ·       propagation of fewer side effects ·       easy to extend SW §       drawback: causes more data to be passed across module interfaces, complicate overall control of program flow SIM3302 Software Design & Testing by Zaihisma CC

SW Architecture- Structural Partitioning o     vertical partitioning (factoring) §       control (decision making) & work should be distributed Top-Down in program structure §       top level modules – do control function, low level modules – do the works( input, computation, output tasks ) §       a change in control module will effect the subordinates. §       a change in worker module will less likely effect others. SIM3302 Software Design & Testing by Zaihisma CC

SW Architecture- Data Structure representation of the logical relationship among individual elements of data the organization, methods of access, degree of associatively & processing alternatives for information SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont Procedure (refer to diagram given) focuses on the processing details of each module a precise specification of processing SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont Information Hiding modules should be specified & designed so that information (procedure & data) contained within a module in inaccessible to other modules that have no need for such information SIM3302 Software Design & Testing by Zaihisma CC

Effective Modular Design Concept of functional independence is a direct outgrowth of : Functional independence measured by 2 criteria : Information hiding modularity cohesion coupling Terminology to describe interactions between modules SIM3302 Software Design & Testing by Zaihisma CC

Effective Modular Design…cont A piece of SW divided into modules : There is a minimum interactions between modules [low coupling] AND High degree of interaction within a module [ high cohesion ] achieved Individual module can be : DESIGNED, CODED, TESTED OR CHANGED SIM3302 Software Design & Testing by Zaihisma CC

Effective Modular Design…cont analogy : 2 SW system module many interactions between modules few within modules strong coupling , weak cohesion Few interactions between modules many within modules weak coupling , strong cohesion SIM3302 Software Design & Testing by Zaihisma CC

Effective Modular Design…cont COHESION a cohesive module perform a single task. Describes the nature of interactions within a SW module Various types of cohesion : LOW cohesion(undesirable)  HIGH cohesion (desirable) Types of cohesion functional coincidental communicational logical temporal SIM3302 Software Design & Testing by Zaihisma CC

Effective Modular Design…cont Coincidental : grouped into modules in a haphazard way no relationship between component Logical : Perform a set of logically similar functions Example : function => output anything Perform output operations : Output text to screen Output line to printer Output record to file SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont Temporal : Performs a set of functions whose only relationship is that they have to be carried out at the same time Example : set of initialization operations Clear screen Open file Initialize total SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Design Concepts…cont Communicational : Acting on common data are grouped together Example : i) displays and logs temperature ii) formats and prints total price Functional : Optimal type of cohesion Performs single, well-defined action i) calculate average ii) print result SIM3302 Software Design & Testing by Zaihisma CC

Effective Modular Design…cont COUPLING Important aspect of interaction between modules  SIZE One module making a procedure call on another SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Coupling If modules share common data,  it should be minimize Few parameters should be passed between modules in procedure calls [recommended 2 – 4 parameters ] Types of coupling, from strongly coupled (least desirable ) weakly coupled (most desirable) : Content coupling Common coupling External coupling Control coupling Stamp coupling Data coupling SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Types of coupling Content coupling (should be avoided) module directly affects the working of another module occurs when a module changes another module’s data or when control is passed from 1 module to the middle of another (as in a jump) SIM3302 Software Design & Testing by Zaihisma CC

Types of coupling…cont. Common coupling 2 modules have shared data occurs when a number of modules reference a global data area SIM3302 Software Design & Testing by Zaihisma CC

Types of coupling…cont. External coupling Modules communicate through an external medium (such as file)§     SIM3302 Software Design & Testing by Zaihisma CC

Types of coupling…cont. Control coupling 1 module directs the execution of another module by passing the necessary control information accomplished by means of flags that set by one module and reacted upon by the dependent module       SIM3302 Software Design & Testing by Zaihisma CC

Types of coupling…cont. Stamp coupling Occurs when complete data structures are passed from 1 module to another The precise format of the data structures is a common property of those modules       SIM3302 Software Design & Testing by Zaihisma CC

Types of coupling…cont. Data coupling (low coupling) Only simple data is passed between modules 1 to 1 correspondence of items exists  SIM3302 Software Design & Testing by Zaihisma CC

Types of coupling [pressman] No direct coupling a d i Control flag Data structure Data (Var) e b c j k f g h Global data area SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC Structure Chart (SC) also called a hierarchy chart or program structure chart a design technique that employs functional decomposition to specify the functions of an application program A method for designing the detailed structure of individual programs or modules Is a ‘top-down’ method - it starts with the overall task of the program Also called ‘stepwise refinement ‘ SIM3302 Software Design & Testing by Zaihisma CC

Structure Chart (SC)…cont A structure chart differs from a physical DFD Transform a physical DFD into a structure chart by performing 2 forms of analysis : Transform analysis : used to segment sequential DFD processes into input, processing & output functions Transaction analysis : used to segment DFD processes into alternate flows of control depending on a condition or user selection Each DFD process will appear as a structure chart module SIM3302 Software Design & Testing by Zaihisma CC

A few guidelines to use structure charts effectively : Level 1 of a SC may have only 1 module ( the boss module, executive module or main module )  Each module should perform only 1 function Modules at each level should be arranged in sequential order (Left – Right). [ exception to : modules that represent alternative functions selected by higher-level module ] Selection symbol used to indicate that not all modules at the next lower level will be performed SIM3302 Software Design & Testing by Zaihisma CC

A few guidelines to use structure charts effectively : Loop symbol used to indicate that some or all of the modules at the next lower level will be performed repeatedly until a specified condition is met Data elements passed between modules should be specified by labeling each data flow symbol with the name assigned to each element in the physical DB design   SIM3302 Software Design & Testing by Zaihisma CC

A few guidelines to use structure charts effectively : Control flows used to indicate a control flag or other value that is direct the flow of control or to report the status of a condition  Each program structure chart should be reviewed & evaluated  to ensure the design works before coding begins SIM3302 Software Design & Testing by Zaihisma CC

SIM3302 Software Design & Testing by Zaihisma CC ~The End~ Source of Materials : Pressman, R. (2003). Software Engineering: A Practitioner's Approach. 6th & 5th edition. New York: McGraw-Hill.  Somerville I. (2001). Software Engineering. 6th edition. Addison Wesley SIM3302 Software Design & Testing by Zaihisma CC