Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.

Slides:



Advertisements
Similar presentations
Software Testing. Quality is Hard to Pin Down Concise, clear definition is elusive Not easily quantifiable Many things to many people You'll know it when.
Advertisements

Test process essentials Riitta Viitamäki,
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
IBM Haifa Research Lab IBM Haifa Labs An Open Source Simulation Model of Software Testing Shmuel Ur Elad Yom-Tov Paul Wernick
Fundamentals of Information Systems, Second Edition
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne. – Times: –See noticeboard outside.
Maintenance = Software Evolution Any changes after the client has accepted the product is considered maintenance. n Any Changes? n What might these be?
Introduction to Software Testing
Design, Implementation and Maintenance
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
Verification and Validation
Lecture 3.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Quality of Information systems. Quality Quality is the degree on which a product satifies the requirements Quality management requires that : that requirements.
CSE301 Harry R. Erwin, PhD University of Sunderland
Dillon: CSE470: QUALITY ASSURANCE1 Software Qualities Maintainer User Customer Good Documentation Readable Code Good Design Low Cost Portability Increased.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
 The software systems must do what they are supposed to do. “do the right things”  They must perform these specific tasks correctly or satisfactorily.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
CSE 303 – Software Design and Architecture
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
R Requirements Analysis Part I Copyright © 2001 Patrick McDermott University of California Berkeley Extension The most critical phase.
CSC 395 – Software Engineering Lecture 5: Teams -or- How to Motivate and Manage the Unwashed Masses.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Formal Methods in Software Engineering
Fundamentals of Information Systems, Second Edition 1 Systems Development.
SOFTWARE ENGINEERING1 Introduction. SOFTWARE ENGINEERING2 Software Q : If you have to write a 10,000 line program in C to solve a problem, how long will.
Chapter 3: Software Project Management Metrics
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
LESSON 3. Properties of Well-Engineered Software The attributes or properties of a software product are characteristics displayed by the product once.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Program Development Cycle
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
Advanced S/w Eng - s/w productivity issues 1 Software Productivity Issues Why do software projects fail? Advanced Software Engineering COM360 University.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Rekayasa Perangkat Lunak Kuliah 2. Outline of this presentation Attributes of Good Software Why Software Engineering ? What is Software Product ? Software.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
1 SYS366 Week 2 - Lecture Visual Modeling and Process.
MANAGEMENT INFORMATION SYSTEM
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
What is Wrong with Models?
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Fundamentals of Information Systems, Sixth Edition
The Development Process of Web Applications
CSC 480 Software Engineering
Introduction SOFTWARE ENGINEERING.
Software Engineering (CSE 314)
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Tools of Software Development
Introduction to Software Testing
Need for the subject.
CS 1120: Computer Science II Software Life Cycle
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
CS310 Software Engineering Lecturer Dr.Doaa Sami
Department of Computer Science Regression Testing.
Rekayasa Perangkat Lunak
CS 1120: Computer Science II Software Life Cycle
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Presentation transcript:

Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD

Prime Citation Robert L. Glass, 2003, Facts and Fallacies of Software Engineering, Addison-Wesley. Glass is very good, he cites his sources, and they are usually peer-reviewed. What you should get from this lecture is information to help you think critically about the software development process.

Management Facts People Tools and Methodologies Estimation Reuse Complexity

People The most important factor in software work is the quality of the programmers. The best programmers are up to 28 times better than the worst programmers. Adding people to a late project makes it later. The working environment has a profound impact on productivity and quality.

Tools and Methodologies Hype is the plague on the house of software. New tools and techniques cause an initial loss of productivity and quality. Software developers seldom really use tools.

Estimation A common cause of runaway projects is poor estimation. Software estimation is usually done at the wrong time and by the wrong people. Software estimates are rarely corrected. You will live and die by software estimates, despite their badness. There is a disconnect between management and programmers. Feasibility studies almost always answer ‘yes’.

Reuse Reuse in the small is well-solved. Reuse in the large is mostly unsolved. Reuse in the large works best for families of related systems. Reusable components cost three times as much to build and should be tested in at least three settings. Modification of reused code is particularly error- prone. Design pattern reuse is a good idea.

Complexity For each 25% increase in problem complexity, there is a 100% increase in solution complexity. 80% of software work is intellectual. Some is creative. Little is clerical.

Life Cycle Facts Requirements Design Coding Error Removal Testing Reviews and Inspections Maintenance

Requirements The second common cause of runaway projects is requirements instability. Requirements errors are most expensive to fix during production. Missing requirements are very hard to fix.

Design Explicit requirements ‘explode’ as the design evolves. Multiple design solutions usually exist. Design is complex and iterative. Initial designs are usually wrong and certainly non-optimal.

Coding Designer ‘primitives’ rarely match programmer ‘primitives’. COBOL is bad. All the other languages for business applications are much worse.

Error Removal The most time-consuming phase of the software life cycle. (Barry Boehm indicates that pair programming takes about 10-20% more total effort for a given module, but results in 60% less errors in the delivered code. This is the first time we’ve seen a real silver bullet for the problem of quality.)

Testing Aim for 55-60% branch coverage. 100% branch coverage is far from enough. Test tools are essential. Test automation rarely is. Most tests cannot be automated. Your debug code is an important supplement to testing tools.

Reviews and Inspections Rigorous inspections can catch 90% of the errors. Rigorous inspections should not replace testing. Postdelivery reviews are important and seldom performed. Reviews are both technical and sociological. Accommodate both.

Maintenance Maintenance is the most important life cycle phase with 40-80% of the cost. Enhancements make up about 60% of the maintenance cost. Maintenance is a solution, not a problem. Understanding the existing product is the most difficult maintenance task. Better methods lead to more maintenance.

Quality Facts Quality Reliability Efficiency

Quality Quality is a number of attributes. –Portability, reliability, efficiency, usability, testability, understandability, and modifiability. Quality is not user satisfaction, meeting requirements, achieving cost and schedule, or reliability.

Reliability There are common errors that most programmers make. Errors tend to cluster. There is no single best approach to software error removal. There are always residual errors. The goal is to minimize or eliminate severe errors.

Efficiency Efficiency stems from good design, not good coding. High-order language code can be about 90% as efficient at hand-coded assembly language code. Size and time optimization trade off.

Research Many researchers advocate rather than investigate.

Fallacies Management Life Cycle Education

Management Fallacies “You can’t manage what you can’t measure.” “You can manage quality into a software product.” “Programming can and should be egoless.” “Tools and techniques: one size fits all.” “Software needs more methodologies.” “To estimate cost and schedule, first estimate lines of code.”

Life Cycle Fallacies “Random test input is a good way to optimize testing.” “Given enough eyeballs, all bugs are shallow.” “To predict future costs, look at past cost data.”

Education Fallacy “You teach people how to program by showing them how to write programs.”