1 SOFTWARE DESIGN QUALITY COHESION and COUPLING (Part I)

Slides:



Advertisements
Similar presentations
Quality of a Class Abstraction: Coupling & Cohesion Michael L. Collard, Ph.D. Department of Computer Science Kent State University.
Advertisements

MAPPING DATA FLOW DIAGRAMS INTO STRUCTURE CHARTS
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.
Communication between modules, cohesion and coupling
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.
1 SOFTWARE DESIGN QUALITY COHESION and COUPLING (Part II)
Chapter 13 Design Concepts and Principles
Slide 7A.1 © The McGraw-Hill Companies, 2005 Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach.
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.
Copyright W. Howden1 Lecture 6: Design Evaluation and Intro to OO Design Patterns.
Module: Definition ● A logical collection of related program entities ● Not necessarily a physical concept, e.g., file, function, class, package ● Often.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
1 SYSTEM and MODULE DESIGN Elements and Definitions.
Jump to first page 1 System Design (Finalizing Design Specifications) Chapter 3d.
Criteria for good design. aim to appreciate the proper and improper uses of inheritance and appreciate the concepts of coupling and cohesion.
PVK-Ht051 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.
Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance.
University of Toronto at Scarborough © Kersti Wain-Bantin CSCC40 system design 1 what is systems design? preparation of the system’s specifications with.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CSE 303 – Software Design and Architecture
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Design. Software Design Design activity begins with a set of requirements, and maybe an architecture Design done before the system is implemented Design.
Program Design Simple Program Design Third Edition A Step-by-Step Approach 9.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
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.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
Cohesion and Coupling CS 4311
Systems analysis and design, 6th edition Dennis, wixom, and roth
System Implementation
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e.
Coupling Cohesion Chandan R. Rupakheti Steve Chenoweth (Chapter 18)
Design. Software Design Design activity begins with a set of requirements, and maybe an architecture Design done before the system is implemented Design.
CCSB223/SAD/CHAPTER131 Chapter 13 Designing the System Internals.
Software Design Process
Software Engineering Lecture 2 Vladimir Safonov, Professor, head of laboratory St. Petersburg University WWW:
Dr D. Greer, Queens University Belfast )Chapter Six 1 Software Engineering Chapter Six Software Design Quality Learning Outcomes.
Jump to first page (C) 1998, Arun Lakhotia 1 Design Quality Metrics Arun Lakhotia University of Southwestern Louisiana Po Box Lafayette, LA 70504,
Design and Planning Or: What’s the next thing we should do for our project?
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
11 Software Design CSCU 411 Software Engineering.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (II) adapted from Dave Penny’s.
Design. Software Design Design activity begins with a set of requirements, and maybe an architecture Design done before the system is implemented Design.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Design (Concepts and Principles)
7. Modular and structured design
Coupling and Cohesion Rajni Bhalla.
Basic Concepts in Software Design
Coupling and Cohesion 1.
Lecture 9- Design Concepts and Principles
Software Design Mr. Manoj Kumar Kar.
CIS 375 Bruce R. Maxim UM-Dearborn
CS223: Software Engineering
Software Design CMSC 345, Version 1/11.
Lecture 9- Design Concepts and Principles
Programming Logic and Design Fourth Edition, Comprehensive
Design.
Cohesion and Coupling.
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

1 SOFTWARE DESIGN QUALITY COHESION and COUPLING (Part I)

2 Goals and Concepts of Structured Analysis and Design: structured development of software: –methodology –notation (DFD, SC) integration of analysis and design quality control (cohesion, coupling) based on the flow of information (data) provides proven heuristics

3 Quality Characteristics for Design modular design achieved by –abstraction decomposition/aggregation specialisation/generalisation –stepwise refinement [N. Wirth] –information hiding [D.L. Parnas] ===> independent modules

4 Quality Characteristics for Modules independent modules –avoid aggregation of multiple functions per module –single-minded function ===> high COHESION –minimal interaction with other modules –simple interface ===> low COUPLING [Steven, Myers, Constantine]

5 Module COHESION quality of a single module based on the module’s internal functionality cohesion should be high types of cohesion (low to high):

6 Coincidental Cohesion characteristics: –functions relate very loosely to each other –“random” selection of multiple functions example(s): –result of post-facto “modularization” –result of poor maintenance problems: –multiple functions –no logical connection between functions

7 Logical Cohesion characteristics: –combines similar functions –implements a set of functions for “all purposes” example(s): –pack/unpack records for telecommunication –central error-handling module problems: –multiple functions –wide interface (with control parameters) –bad reusability, maintainability

8 Temporal / Classical Cohesion characteristics: –combines similar functions and all of them are always executed at the same time example(s): –open-all-files module –initialise-all-variables problems: –multiple functions –bad reusability, maintainability –violation of the principle of “local scope”

9 Procedural Cohesion characteristics: –tasks must be executed in a specific sequence and are related by the flow of control example(s): –combine decision making & task execution, e.g. error-detection and error handling –local optimisation problems: –fixed combination and order of tasks –bad reusability, maintainability

10 Communicational Cohesion characteristics: –tasks that use the same data (parameters) –sharing (portions) of a data structure example(s): –monthly-employee-statistic and write-paycheque, both functions using the employee-record problems: –wide interface (with stamp data coupling) –code sharing is tempting –bad reusability, maintainability

11 Communicational Cohesion Module X task A task B D R1 R2 D’ D”

12 Sequential Cohesion characteristics: –tasks execute in a specific sequence and are related by the flow of data –tasks transform data in a multitude of steps example(s): –calculate-taxes and write-paycheque problems: –hidden interface(s) –fixed combination and order of tasks –bad reusability, maintainability

13 Sequential Cohesion Module X task Atask B DR D’

14 Functional Cohesion characteristics: –single-minded function –cannot be decomposed any further (in a meaningful way) –not based on control or data flow –algorithmic behaviour / description –simple interface = good parameters (no stamp coupling, no control) problems: –cannot always be achieved

15 End of Section 4a coming up: coupling