Lecture 2 Quality as the motivation for Software Design References:Braude, Chapters 0 and 1 My 2001 lecture notes on Quality Budgen Software Design Meyer.

Slides:



Advertisements
Similar presentations
SWE 316: Software Design and Architecture Objectives Lecture # 01 Prologue: The Software Process SWE 316: Software Design & Architecture  To review software.
Advertisements

Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Design Concepts and Principles
Copyright © 1994 Carnegie Mellon University Disciplined Software Engineering - Lecture 1 1 Disciplined Software Engineering Lecture #7 Software Engineering.
Chapter 22 Object-Oriented Systems Analysis and Design and UML Systems Analysis and Design Kendall and Kendall Fifth Edition.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Copyright W. Howden1 Lecture 6: Design Evaluation and Intro to OO Design Patterns.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Ch2: Software: Its Nature and Qualities. 1 Introduction  Difference between a software and other engineering products.  Difference between software.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
SE-565 Software System Requirements More UML Diagrams.
CSC230 Software Design (Engineering)
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 17 Software Quality
University of Toronto Department of Computer Science © 2001, Steve Easterbrook CSC444 Lec12 1 Lecture 12: Software Design Quality What is software quality?
Software Architecture for DSD The “Uses” Relation.
1 CS101 Introduction to Computing Lecture 24 Design Heuristics.
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 17 Software Quality
Quality of Information systems. Quality Quality is the degree on which a product satifies the requirements Quality management requires that : that requirements.
Software Quality Chapter Software Quality  How can you tell if software has high quality?  How can we measure the quality of software?  How.
1 Shawlands Academy Higher Computing Software Development Unit.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Prologue: The Software Process. Main Phases of Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2.
Design-Making Projects Work (Chapter7) n Large Projects u Design often distinct from analysis or coding u Project takes weeks, months or years to create.
STAT 472 Survey Design. Measurement and Research Design There are five suggestion for coming up with a measure There are five suggestion for coming up.
CSE 303 – Software Design and Architecture
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
June 05 David A. Gaitros Jean Muhammad Introduction to OOD and UML Dr. Jean Muhammad.
Lecture 7: Requirements Engineering
CSE 303 – Software Design and Architecture LECTURE 4.
GRASP: Designing Objects with Responsibilities
This material is approved for public release. Distribution is limited by the Software Engineering Institute to attendees. Sponsored by the U.S. Department.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
First Steps in Modularization. Simple Program Design, Fourth Edition Chapter 8 2 Objectives In this chapter you will be able to: Introduce modularization.
1 Introduction to Software Testing. Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 1 2.
Introduction to Design. What is Design? 2 minutes Pairs.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
The Software Development Process
First Steps in Modularization. Simple Program Design, Fourth Edition Chapter 8 2 Objectives In this chapter you will be able to: Introduce modularization.
(SRS) SOFTWARE REQUIREMENT SPECIFICATION(SRS) 1. Topics to be discussed.. What is an SRS? Purpose of an SRS Who reads the SRS? Who writes the SRS? Characteristics.
Thanks for Coming l WEB. Principles of Good Design SEI, SJTU WEB APPS and SERVICES.
INFO 637Lecture #71 Software Engineering Process II Product Implementation INFO 637 Glenn Booker.
ANU COMP2110 Software Design in 2003 Lecture 10Slide 1 COMP2110 Software Design in 2004 Lecture 12 Documenting Detailed Design How to write down detailed.
Chapter 13 Finalizing Design Specifications
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Object-Oriented Design Concepts University of Sunderland.
Software Quality Prepared By: Rooshabh Kothari Assistant Professor T & P Co-ordinator CSE/IT Department 1.
Software Design Derived from Dr. Fawcett’s slides CSE784 – Software Studio Fall 2009.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Requirements. Outline Definition Requirements Process Requirements Documentation Next Steps 1.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Software Design and Development Development Methodoligies Computing Science.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
 System Requirement Specification and System Planning.
Software Development.
TOTAL QUALITY MANAGEMENT
Rekayasa Perangkat Lunak Part-10
Rekayasa Perangkat Lunak
Rekayasa Perangkat Lunak
The Object-Oriented Thought Process Chapter 05
Improving the Design “Can the design be better?”
Component-Level Design
Programming Logic and Design Fourth Edition, Comprehensive
Software Design Quality
Principles of Good Design
Presentation transcript:

Lecture 2 Quality as the motivation for Software Design References:Braude, Chapters 0 and 1 My 2001 lecture notes on Quality Budgen Software Design Meyer Object-Oriented Software Construction, (2 nd edition), Chapter 3 Robert Pirsig, Zen and the Art of Motorcycle Maintenance.

Why design?  PSP experience – time spent in design affects o Time spend in later phases o Number of defects found in later phases  There's more to software quality than counting defects  There's more to design than just putting in the time. Design can be done well or badly.

Good design? No design = bad design? What is good design? What is bad design? Is good design the same as good code? Can we tell, by looking at a design, whether it is good or bad? If so, how?

Quality Examples: o Car o Chair o Motorcycle Implication: Quality is undefined without requirements Quality = Fitness for purpose?

Quality requirements Quality of the requirements limits the quality of the design and of the finished software. Good requirements must be: o Unambiguous o Complete o Verifiable o Consistent o Modifiable o Traceable o Usable

How to identify quality design  Look at the finished software and relate to the requirements (fitness for purpose) But surely this is a bit extreme: we all have a strong intuitive sense of what quality is. (Elegance? Careful...) Experience over many years has led to a body of knowledge: factors that tend to contribute to good design.

Quality factors  Correctness  Robustness  Modularity  Efficiency  Ease of use  Portability  Verifiability  Reusability  Extendability  Maintainability  Reliability  Compatibility  Functionality  Timeliness See Meyer OOSC2, Chapter 3. These are not the definition of quality, but factors that tend to indicate quality. Their importance varies depending on requirements.

Examples  Scientific supercomputing applications o Efficiency over-rides everything else o (Except correctness?)  Small business tax accounting package o Maintainability o Ease of use o Modularity (leads to maintainability?)

Metrics  Measure finished code (or detailed design?) o Lines of code per class, per routine o Number of suppliers, number of decision points o Bandwidth (amount of data sent as parameters, return values) o Fanout (number of external routine calls)  Relationship between these numbers and quality is unclear  Better use of metrics is to look for hot spots

More on Metrics  Relationship between these numbers and quality is unclear  Better use of metrics is to look for hot spots  Often can't measure until after coding (too late)  Can lead to the false belief that if it can't be measured then it isn't important. Design is a creative activity that largely defies measurement.

Design Guidelines  Simplicity “As simple as possible, but no simpler” - Albert Einstein o Watch out for the second half of that.  Modularity o Clear and logical separation into subsystems (and sub-subsystems etc if necessary)

Meyer's five criteria for modular designs  Decomposability – clear logical separation...  Composability – can reassemble in different ways  Understandability – each module can be understood in isolation (ideal...)  Continuity – small changes to requirements affect few modules  Protection – exceptions don't propagate across modules but are handled where they occur.

What is the role of design?  Describe the system well enough that coders can build it and deploy it without serious problems. o e.g. ACT electronic voting system o e.g. COMP2110 designs from 2001  Describe all the parts of the system and how they fit together (architecture, high-level design)  Describe each part in detail so that it can be coded.

Why bother with formal design?  Why do we need design notation?  Why do we need to struggle with formal legalistic English  Why not just think about it and then start coding? Answer:  Communication  Clarity  Different conceptual level