Can We Estimate Software Development Time? Chuck Connell Copyright 2002, Charles H. Connell Jr.

Slides:



Advertisements
Similar presentations
Mathematics in Engineering Education 1. The Meaning of Mathematics 2. Why Math Education Have to Be Reformed and How It Can Be Done 3. WebCT: Some Possibilities.
Advertisements

Mathematics in Engineering Education N. Grünwald & V. Konev Hochschule Wismar – University of Technology, Business and Design, Wismar, Germany Tomsk Polytechnic.
CSE 330: Numerical Methods
Systems Analysis, Prototyping and Iteration Systems Analysis.
Project Proposal.
Learning Objectives Explain similarities and differences among algorithms, programs, and heuristic solutions List the five essential properties of an algorithm.
Chapter 10 Algorithmic Thinking. Copyright © 2013 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Learning Objectives List the five essential.
Error Measurement and Iterative Methods
1 Introduction to Computability Theory Lecture12: Reductions Prof. Amos Israeli.
Review: What influences confidence intervals?
1 Lecture 7 Halting Problem –Fundamental program behavior problem –A specific unsolvable problem –Diagonalization technique revisited Proof more complex.
1 Lecture 7 Halting Problem –Fundamental program behavior problem –A specific unsolvable problem –Diagonalization technique revisited Proof more complex.
CIS 197 Computers in Society Professor John Peterson Philosophy Week!
Algorithmic Problems in Algebraic Structures Undecidability Paul Bell Supervisor: Dr. Igor Potapov Department of Computer Science
SE is not like other projects. l The project is intangible. l There is no standardized solution process. l New projects may have little or no relationship.
CS21 Decidability and Tractability
Introduction to Communication Research
Introduction to HCI Marti Hearst (UCB SIMS) SIMS 213, UI Design & Development January 21, 1999.
Noynay, Kelvin G. BSED-ENGLISH Educational Technology 1.
Scot Exec Course Nov/Dec 04 Ambitious title? Confidence intervals, design effects and significance tests for surveys. How to calculate sample numbers when.
Scientific Method Lab.
 A summary is a brief restatement of the essential thought of a longer composition. It reproduces the theme of the original with as few words as possible.
Estimating Software Size Part I. This chapter first discuss the size estimating problem and then describes the PROBE estimating method used in this book.
Professor Walter W. Olson Department of Mechanical, Industrial and Manufacturing Engineering University of Toledo Solving ODE.
1. Human – the end-user of a program – the others in the organization Computer – the machine the program runs on – often split between clients & servers.
Elementary & Middle School Math Methods Michelle Koenig (STRITCH in subject) es.com.
Ch 8.1 Numerical Methods: The Euler or Tangent Line Method
1 Agile is Dumb. 2 Look at Moodle List of Essays Get in groups of 4-5 Divide and read the readings in the category “agile is dumb” – About 20 minutes.
As you know generally it is assumed that the Euler equation and the Navier-Stokes equation Are the equations written as some analogues of Newton equation.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
Software System Engineering: A tutorial
Research in Computing สมชาย ประสิทธิ์จูตระกูล. Success Factors in Computing Research Research Computing Knowledge Scientific MethodAnalytical Skill Funding.
Evaluation of software engineering. Software engineering research : Research in SE aims to achieve two main goals: 1) To increase the knowledge about.
Invitation to Computer Science, Java Version, Second Edition.
R. Kass/W03P416/Lecture 7 1 Lecture 7 Some Advanced Topics using Propagation of Errors and Least Squares Fitting Error on the mean (review from Lecture.
1 Ethics of Computing MONT 113G, Spring 2012 Session 13 Limits of Computer Science.
The Nature of Modeling and Modeling Nature. “The sciences do not try to explain, they hardly even try to interpret, they mainly make models… The justification.
CSE 219 Computer Science III Program Design Principles.
ENM 503 Lesson 1 – Methods and Models The why’s, how’s, and what’s of mathematical modeling A model is a representation in mathematical terms of some real.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
How to Read Research Papers? Xiao Qin Department of Computer Science and Software Engineering Auburn University
Virtual Canada 2.0. » Knowledge is not just information » Knowledge is not philosophy (but it can be approached through philosophical inquiry) » There.
The Next Generation Science Standards: 4. Science and Engineering Practices Professor Michael Wysession Department of Earth and Planetary Sciences Washington.
NCHRP Project Development of Verification and Validation Procedures for Computer Simulation use in Roadside Safety Applications SURVEY OF PRACTITIONERS.
Lecture 11 Data Structures, Algorithms & Complexity Introduction Dr Kevin Casey BSc, MSc, PhD GRIFFITH COLLEGE DUBLIN.
Limits of Instruction-Level Parallelism Presentation by: Robert Duckles CSE 520 Paper being presented: Limits of Instruction-Level Parallelism David W.
Scientific Debugging. Errors in Software Errors are unexpected behaviors or outputs in programs As long as software is developed by humans, it will contain.
 An estimate is an approximation of a number based on reasonable assumptions.  Not the same as guessing!!!  Based on known info  Scientist must.
12.3 Efficient Diversification with Many Assets We have considered –Investments with a single risky, and a single riskless, security –Investments where.
CS4042 / CS4032 – Directed Study 28/01/2009 Digital Media Design Music and Performance Technology Jim Buckley Directed Study (CS4042.
Click to add text Systems Analysis, Prototyping and Iteration.
1 1 Slide Simulation Professor Ahmadi. 2 2 Slide Simulation Chapter Outline n Computer Simulation n Simulation Modeling n Random Variables and Pseudo-Random.
How to write the ‘Empirical Evaluation’ Section of Your Paper Christoph F. Eick Department of Computer Science, University of Houston Example Call for.
In the news: A recently security study suggests that a computer worm that ran rampant several years ago is still running on many machines, including 50%
5 September 2002AIAA STC Meeting, Santa Fe, NM1 Verification and Validation for Computational Solid Mechanics Presentation to AIAA Structures Technical.
INDUCTION Lecture 22 CS2110 – Fall 2009 A well-known scientist (some say it was Bertrand Russell) once gave a public lecture on astronomy. He described.
Algorithmic Problems in Algebraic Structures Undecidability Paul Bell Supervisor: Dr. Igor Potapov Department of Computer Science
The inference and accuracy We learned how to estimate the probability that the percentage of some subjects in the sample would be in a given interval by.
CompSci Today’s Topics Computer Science Noncomputability Upcoming Special Topic: Enabled by Computer -- Decoding the Human Genome Reading Great.
CSE 330: Numerical Methods. What is true error? True error is the difference between the true value (also called the exact value) and the approximate.
Research Methods Dr. X.
Software Life Cycle Models
Teaching with Instructional Software
Objective of This Course
Scientific Inquiry Unit 0.3.
How to Read Research Papers?
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
สมชาย ประสิทธิ์จูตระกูล
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Chapter 4 Summary.
Presentation transcript:

Can We Estimate Software Development Time? Chuck Connell Copyright 2002, Charles H. Connell Jr.

Background This talk is a response to a paper by J.P. Lewis titled Large Limits to Software Estimation in ACM Software Engineering Notes, July This talk is a response to a paper by J.P. Lewis titled Large Limits to Software Estimation in ACM Software Engineering Notes, July 2001.Large Limits to Software EstimationLarge Limits to Software Estimation Lewis’s paper generated some good discussion within the software engineering community and on Slashdot.org. Lewis’s paper generated some good discussion within the software engineering community and on Slashdot.org.Slashdot.org My article on this topic appeared on Developer.com and Slashdot in January My article on this topic appeared on Developer.com and Slashdot in January 2002.article

Outline Motivation for the topic Motivation for the topic Summary of Lewis’s paper Summary of Lewis’s paper My critique of Lewis’s paper My critique of Lewis’s paper

Why estimating matters Estimating the size of future projects is one of the most important areas of software engineering. (Size = $$, person-days, calendar days, opportunity cost.) Estimating the size of future projects is one of the most important areas of software engineering. (Size = $$, person-days, calendar days, opportunity cost.) Estimates are crucial to go/no-go decisions on every project. (Example: $1M project for this group.) Estimates are crucial to go/no-go decisions on every project. (Example: $1M project for this group.) Questions about the ability of SE to provide meaningful estimates call into question all plans for future projects. (And all current projects.) Questions about the ability of SE to provide meaningful estimates call into question all plans for future projects. (And all current projects.)

SE status within CS Software engineering’s ability to estimate is part of a broader discussion about the overall validity of SE. Software engineering’s ability to estimate is part of a broader discussion about the overall validity of SE. If SE cannot make good estimates about future projects, what is the whole field doing? If SE cannot make good estimates about future projects, what is the whole field doing? SE is frequently derided by computer scientists as unscientific, non-rigorous, or “just programmer sociology”. SE is frequently derided by computer scientists as unscientific, non-rigorous, or “just programmer sociology”. I address this broad question in Why Software Engineering Is Not B.S., inspired by a CS professor’s remark. I address this broad question in Why Software Engineering Is Not B.S., inspired by a CS professor’s remark.Why Software Engineering Is Not B.S.Why Software Engineering Is Not B.S.

Lewis: what software is The behavior of any program can be thought of as a table of inputs and outputs. The behavior of any program can be thought of as a table of inputs and outputs. There is one row for each possible set of inputs. (Example: 0-3 x 0-3) There is one row for each possible set of inputs. (Example: 0-3 x 0-3) Assumes finite number of finite inputs. Assumes finite number of finite inputs. Assumes we can represent human interaction as another finite/finite input. Assumes we can represent human interaction as another finite/finite input. Assumes finite/finite output for each set of inputs. Assumes finite/finite output for each set of inputs. Above are reasonable assumptions for practical purposes. Above are reasonable assumptions for practical purposes.

Lewis: what software is Real software would have a very large table. Real software would have a very large table. Something like: Something like:  2 32 raised to # of numeric inputs, times  2 8 raised to # of text input chars But the table is finite and mechanically constructible. But the table is finite and mechanically constructible.

Lewis: software spec as a string A software description is a finite table. A software description is a finite table. Any such table can be transformed into a string. Any such table can be transformed into a string. The string represents what we want the software to do. The string represents what we want the software to do. Example: using previous Example: using previous So a software specification is a finite string. So a software specification is a finite string.

Lewis: estimating software tasks Estimating a software task is the same as asking, “How hard is it to write a program to create the spec string?” Estimating a software task is the same as asking, “How hard is it to write a program to create the spec string?” (We assume a small driver to call program with every input.) (We assume a small driver to call program with every input.) Lewis claims that writing a smaller program is easier/faster than writing a larger program. Lewis claims that writing a smaller program is easier/faster than writing a larger program. So, Lewis asserts that estimating is equivalent to asking: “What is the smallest program (in bytes) to create spec string?” So, Lewis asserts that estimating is equivalent to asking: “What is the smallest program (in bytes) to create spec string?”

Lewis: complexity of estimating What is the smallest program to create spec string? What is the smallest program to create spec string? By definition, this is identical to asking for the algorithmic complexity of the string (related to Kolmogorov complexity). By definition, this is identical to asking for the algorithmic complexity of the string (related to Kolmogorov complexity). algorithmic complexity algorithmic complexity But, there is a well-known result from complexity theory: There is no program to compute the algorithmic complexity of arbitrary strings. But, there is a well-known result from complexity theory: There is no program to compute the algorithmic complexity of arbitrary strings.complexity theorycomplexity theory Therefore, there is no rigorous method for estimating software development! Therefore, there is no rigorous method for estimating software development! Lewis extends this result to estimates with a given percentage accuracy. Lewis extends this result to estimates with a given percentage accuracy.

Summary of Lewis’s paper Software specs are tables / strings. Software specs are tables / strings. It is faster to write small programs than large programs. It is faster to write small programs than large programs. Software estimates seek the algorithmic complexity of the specification string. (What is the smallest program to print out the spec table?) Software estimates seek the algorithmic complexity of the specification string. (What is the smallest program to print out the spec table?) But there is no method for finding the algorithmic complexity of arbitrary strings. But there is no method for finding the algorithmic complexity of arbitrary strings. Therefore, rigorous/mechanical software estimates are not possible, even allowing % error. Therefore, rigorous/mechanical software estimates are not possible, even allowing % error.

My critique Lewis is “correct”, given the definitions he uses and the technical results he obtains, but… Lewis is “correct”, given the definitions he uses and the technical results he obtains, but… He mischaracterizes the programming process. He mischaracterizes the programming process. He fails to show a relationship between algorithmic complexity and software development times. He fails to show a relationship between algorithmic complexity and software development times. He mischaracterizes promises made by well- known development frameworks, especially the Software Capability Maturity Model (CMM). He mischaracterizes promises made by well- known development frameworks, especially the Software Capability Maturity Model (CMM).CMM

Programming process Do programmers try to write the shortest possible program? Do programmers try to write the shortest possible program? Maybe, sometimes. Maybe, sometimes. But modern software engineering teaches that other aspects of software are more important: readability, modifiability, scalability, speed… But modern software engineering teaches that other aspects of software are more important: readability, modifiability, scalability, speed… The shortest program may not have these qualities. The shortest program may not have these qualities. So programmers may not be trying to do something directly related to the AC of the spec table. So programmers may not be trying to do something directly related to the AC of the spec table.

Estimation problem Assume Lewis’s description of software algorithmic complexity (AC) is well-defined… Assume Lewis’s description of software algorithmic complexity (AC) is well-defined… Does it take longer for people to write a program for a high AC task than for a lower AC task? Does it take longer for people to write a program for a high AC task than for a lower AC task? The answer to the above must be YES, or AC is unrelated to the software estimation problem. The answer to the above must be YES, or AC is unrelated to the software estimation problem. But we don’t know the answer to this question, a priori. But we don’t know the answer to this question, a priori.

Estimation problem Does it take longer for people to write a program for a high AC task than for a lower AC task? Does it take longer for people to write a program for a high AC task than for a lower AC task? This is an empirical question for psychology. This is an empirical question for psychology. Maybe there are tricky low-AC tasks that are hard (long) to program… Maybe there are tricky low-AC tasks that are hard (long) to program… Maybe there are high AC tasks that a human can grasp quickly… Maybe there are high AC tasks that a human can grasp quickly… So programming estimates may not be directly related to differences in AC. So programming estimates may not be directly related to differences in AC.

Claims about estimating Lewis attacks a straw man: objective, mechanical estimating procedures with guaranteed accuracy. Lewis attacks a straw man: objective, mechanical estimating procedures with guaranteed accuracy. It is true that some writers (or book marketers) have appeared to offer such methods, but no serious researchers are trying to achieve this. It is true that some writers (or book marketers) have appeared to offer such methods, but no serious researchers are trying to achieve this. Software engineering researchers are really looking for an estimating method that is somewhat accurate, most of the time. Software engineering researchers are really looking for an estimating method that is somewhat accurate, most of the time.

Claims about estimating Imagine an estimating technique that is 80% right 80% of the time. Imagine an estimating technique that is 80% right 80% of the time. For the other 20%, the estimate is worthless. For the other 20%, the estimate is worthless. Everyone in the software business would be leaping with joy! Everyone in the software business would be leaping with joy! Such average-case algorithms are well-studied in computer science, and have been used for prime number tests and solving simultaneous equations. Such average-case algorithms are well-studied in computer science, and have been used for prime number tests and solving simultaneous equations.average-case algorithmsaverage-case algorithms Lewis’s mathematical arguments do not disallow such a solution, because of the unbounded errors. Lewis’s mathematical arguments do not disallow such a solution, because of the unbounded errors.

Claims about estimating In particular, Lewis claims that CMM promises guaranteed accuracy of software estimates, and provides a quote from CMM to show this. In particular, Lewis claims that CMM promises guaranteed accuracy of software estimates, and provides a quote from CMM to show this. In fact, CMM promises no such thing; the quote is taken out of context. In fact, CMM promises no such thing; the quote is taken out of context. CMM does predict better estimates on average the more closely one follow CMM guidelines. (A claim which may or may not be true.) CMM does predict better estimates on average the more closely one follow CMM guidelines. (A claim which may or may not be true.) Lewis is not alone in this error; because CMM is so dominant, it is often perceived to be more rigid than it is. Lewis is not alone in this error; because CMM is so dominant, it is often perceived to be more rigid than it is.

How should we estimate software projects? 1. Expert judgment based on experience with the project particulars. (Example from Lotus NLM.) 1. Expert judgment based on experience with the project particulars. (Example from Lotus NLM.) 2. Iterative development, with iterative estimates (e.g. study, POC, prototype, R1, R2, etc.) 2. Iterative development, with iterative estimates (e.g. study, POC, prototype, R1, R2, etc.) Iterative development accepts the fact that large, complex projects cannot be estimated up front. Therefore don’t do large, complex projects all at once. Iterative development accepts the fact that large, complex projects cannot be estimated up front. Therefore don’t do large, complex projects all at once. See Rapid Development by Steve McConnell. See Rapid Development by Steve McConnell.Rapid Development Rapid Development

Questions ?