PVK-Ht051 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance.

Slides:



Advertisements
Similar presentations
Software Design Fundamentals
Advertisements

Quality of a Class Abstraction: Coupling & Cohesion Michael L. Collard, Ph.D. Department of Computer Science Kent State University.
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.
Chapter 13 Design Concepts and Principles
Design Concepts And Principles Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.
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.
Module: Definition ● A logical collection of related program entities ● Not necessarily a physical concept, e.g., file, function, class, package ● Often.
1 SOFTWARE DESIGN QUALITY COHESION and COUPLING (Part I)
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.
PowerPoint Presentation for Dennis & Haley Wixom, Systems Analysis and Design Copyright 2000 © John Wiley & Sons, Inc. All rights reserved. Slide 1 Key.
Criteria for good design. aim to appreciate the proper and improper uses of inheritance and appreciate the concepts of coupling and cohesion.
PVK-Ht061 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.
Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance.
Software Engineering CSE470: Systems Engineering 35 Computer System Engineering Computer System Engineering is a problem-solving activity. Itemize desired.
Systems Analysis and Design
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Design Fundamentals Design Principles
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
 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 Designing the overall structure (architecture) of a software system Designing small pieces of computation Designing non-automated processes.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
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.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software requirements.
Software Design Deriving a solution which satisfies software requirements.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
Concepts of Software Quality Yonglei Tao 1. Software Quality Attributes  Reliability  correctness, completeness, consistency, robustness  Testability.
Cohesion and Coupling CS 4311
Systems analysis and design, 6th edition Dennis, wixom, and roth
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
CCSB223/SAD/CHAPTER131 Chapter 13 Designing the System Internals.
Structured design - 1 © Minder Chen, Produce Paycheck Retrieve Employee Record Global Data Store Offpage Calling Module Called Module System.
Software Design Process
Dr D. Greer, Queens University Belfast )Chapter Six 1 Software Engineering Chapter Six Software Design Quality Learning Outcomes.
11 Software Design CSCU 411 Software Engineering.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
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.
Basic Characteristics of Object-Oriented Systems
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
1 Week 7 Software Engineering Spring Term 2016 Marymount University School of Business Administration Professor Suydam.
School of Business Administration
7. Modular and structured design
CompSci 280 S Introduction to Software Development
UNIT-3 SOFTWARE DESIGN.
Coupling and Cohesion Rajni Bhalla.
Coupling and Cohesion 1.
which satisfies software requirements
Software Engineering Design
Lecture 9- Design Concepts and Principles
Software Design Mr. Manoj Kumar Kar.
CIS 375 Bruce R. Maxim UM-Dearborn
Software Design Designing the overall structure (architecture) of a software system Designing small pieces of computation Designing non-automated processes.
Improving the Design “Can the design be better?”
CS223: Software Engineering
Lecture 9- Design Concepts and Principles
Programming Logic and Design Fourth Edition, Comprehensive
Software Design Lecture : 9.
DESIGN CONCEPTS AND PRINCIPLES
Presentation transcript:

PVK-Ht051 Contents Introduction Requirements Engineering Project Management Software Design Detailed Design and Coding Quality Assurance Maintenance

PVK-Ht052 Software Design Design activities Architecture examples Modularisation and Metrics Classical Design Approaches

PVK-Ht053 Design Activities Architectural design oIdentify the systems components oStructure the system components oAssign functionality to components oAssign data to components oPlan for future changes Define the structure of the implementation Detailed design oRefine the (architectural) components oChoose specific data structures oChoose specific algorithms Define the logic of the implementation Transform the logical model (  RE) into a physical model, in sufficient detail to permit its physical realization.

PVK-Ht054 Architecture Example: Pipes and filters

PVK-Ht055 Architecture Example: Layering

PVK-Ht056 Architecture Example: Repository

PVK-Ht057 Client-server architecture Film and picture library

PVK-Ht058 Design Principles Abstraction Encapsulation Information Hiding Structuring Modularisation

PVK-Ht059 Characterisation of Modules Logic entities which fulfil certain tasks Simple entities, i.e. their tasks can be described clearly and briefly Units containing data and/or operations Provide resources usable by other modules Their realisation is encapsulated May use resources from other modules

PVK-Ht0510 Advantages of Modular Systems Easier to understand oOnly few modules must be studied Easier to develop and to test oIndependence More portable oSystem dependencies reside in a few dedicated modules Easier to maintain oChanges can be traced to few modules Easier to reuse oClear dependencies

PVK-Ht0511 Measuring Module Quality Classical metrics: oLOC oCyclomatic number (McCabe) oControl variable complexity (McClure) oSoftware science (Halstead) “Wrong” understanding of module Late applicability Reliable and early data with significant impact on quality. More useful: oCoupling oCohesion oFan-in/fan-out oGraph-oriented metrics oWeighted methods per class oDepth/width of inheritance trees o...

PVK-Ht0512 Coupling Measures the degree of independence between different modules Content coupling Common coupling (External coupling) Control coupling Stamp coupling Data coupling Each module should communicate with as few as possible other module Communicating modules should exchange as few as possible data All communication must be explicit bad good

PVK-Ht0513 How to Uncouple Modules Data coupling oExchange only necessary information oDo not pass data through several modules Stamp coupling oDo not encapsulate unrelated data Control coupling oLimit control information in interfaces Common/External coupling oPass data explicitly as parameters oDivide complex data into independent parts that can be exclusively used of different modules oHide data Content coupling USCH

PVK-Ht0514 Cohesion Measures “relatedness” of the resources encapsulated in one module Coincidental cohesion Logical cohesion Temporal cohesion Procedural cohesion Communicational cohesion Sequential cohesion Functional/informational cohesion Each element in a module should be a necessary and essential part of one and only task bad good

PVK-Ht0515 Coupling / Cohesion Summary The modules of a system should be highly cohesive and loosely coupled Good modularisation

PVK-Ht0516 Fan-in vs Fan-out M1M1 M3M3 M 16 M 15 M 14 M 13 M 12 M 11 M 10 M 18 M 17 M 19 M4M4 M2M2 M9M9 M8M8 M7M7 M6M6 M5M5 M 9 : Fan-in = 2, fan-out = 4 Depth Width

PVK-Ht0517 Fan-in vs Fan-out Rules Minimise structures with high fan-out Strive for fan-in as depth increases

PVK-Ht0518 Structured Design Systematic development of a design (structure chart) from a DFD Systematic approach to derive a design from the analysis results DFDs as input Transform- and transaction analysis Factoring and refinement (rules exist) Good support for functional decomposition Systematic approach Incorporates metrics Uses design heuristics Tool support No support for data abstraction Data spread over the whole system Only sequential systems Metrics and heuristics are mainly of syntactic nature No design “decisions”

PVK-Ht0519 Structure Chart Update Transaction Verify Card Verify Bank Verify Password Get Card Info Get Password Make Transaction & Send Transaction Dispense Cashe Display Result Output Cashe transaction result bankCard #, Password Authorization Info Bank Info Verify Transaction Get Transaction Info Transaction kind Amount Account Info Transaction result Cache amount transaction

PVK-Ht0520 Object Oriented Analysis and Design Each entity in the system is an object. A method or operation is an action that can be performed directly by the object or can happen to the object. Encapsulation: the methods form a protective boundary around an object. Class hierarchies of objects encourage inheritance. Polymorphism: same method for different objects, each with different behaviour. Rectangle {author = Joe} height: int width: int getArea(): int resize (int,int) Rectangle height width getArea resize Analysis Design

PVK-Ht0521 Traceability Matrix Relates requirements to design artefacts o Shows dependencies o Supports change management o Useful for other traceability purposes Module 1 Module 2 Module 3 Module 4 Module… Req 1 X X X Req 2 X X X Req 3 X X Req.. X X X