Presentation is loading. Please wait.

Presentation is loading. Please wait.

We Know Less Than You Think (But We Do Know Something) Copyright © 2009 Gregory V. Wilson. This presentation may be freely used and distributed with attribution.

Similar presentations


Presentation on theme: "We Know Less Than You Think (But We Do Know Something) Copyright © 2009 Gregory V. Wilson. This presentation may be freely used and distributed with attribution."— Presentation transcript:

1 We Know Less Than You Think (But We Do Know Something) Copyright © 2009 Gregory V. Wilson. This presentation may be freely used and distributed with attribution. Greg Wilson gvwilson@third-bit.com

2 Computer “Science” (?) 2009-01-2700001http://swc.scipy.org Some of computer science is applied mathematics But what kind of “science” is software engineering? – Most of it isn’t (yet?) as rigorous as bridge design – Practitioners would object to being called alchemists, organizational psychologists, or cheerleaders

3 Show Me Shaw 1990: “Prospects for a Discipline of Software Engineering” – Called for evidence-based software engineering – Built on empirical work since the 1970s by Boehm, Basili, Glass, and others Empirical studies now expected by top journals and conferences 2009-01-2700010http://swc.scipy.org

4 There’s a Lot of Folklore… “The best programmers are up to 28 times more productive than the worst.” (or 40, or 100, or…) – Trace it back: [SAC68] had 12 (self- taught) subjects [BOE75]: best to worst is a factor of 5 – Borne out by other studies – Consistent with other fields 2009-01-2700011http://swc.scipy.org

5 Non-Linearity [WOO79]: 25% increase in problem complexity  100% increase in solution complexity – Interactions grow as N 2 This can work in your favor – Cut 1/4 of your features, problem because 1/2 as hard to solve 2009-01-2700100http://swc.scipy.org

6 Glass’s Law Any new tool or technique initially makes you less productive – Which is why so many senior students program with Notepad [GLA99]: 5-35% improvement is the best you can expect from changing tools – Ah, but techniques… 2009-01-2700101http://swc.scipy.org

7 Project Failure See [VGE91], [COL95], [HOF01] #1 cause: poor estimation – Short iterations cure this in the small, but don’t help in the large #2 cause: unstable requirements – But research code often doesn’t have “requirements” 2009-01-2700110http://swc.scipy.org

8 Boehm’s Curve 2009-01-2700111http://swc.scipy.org [BOE01] and many others

9 Re-Use “It takes three times longer to build a reusable component than it does to build something used only once.” “If more than 25% of a component has to be revised, it’s better to rewrite it from scratch.” See e.g. [THO97] 2009-01-2701000http://swc.scipy.org

10 Conway’s Law “The structure of the software reflects the structure of the organization that built it.” – If you have four teams, you get a four- pass compiler Meant humorously, but [HER99] and others confirm it 2009-01-2701001http://swc.scipy.org

11 Lines of Code “Productivity and reliability depend on the length of a program’s text, independent of language level.” See [PRE00] for a recent experiment However, machine-independent code has machine-independent performance 2009-01-2701010http://swc.scipy.org

12 “Maintenance makes up 40-80% of the total cost of a software project.” – [BOE75] and many more since But roughly 60% of “maintenance” is enhancement And 30% of maintenance time is spent figuring out things work 2009-01-2701011http://swc.scipy.org Maintenance

13 2009-01-2701100http://swc.scipy.org What Do People Use?

14 2009-01-2701101http://swc.scipy.org Where Do People Learn?

15 2009-01-2701110http://swc.scipy.org Where Does the Time Go?

16 Lack of documentation was the #1 complaint for over 40% of respondents, and in the top three for almost 80% 2009-01-2701111http://swc.scipy.org What Hurts?

17 2009-01-2710000http://swc.scipy.org References [BOE75] Boehm: “The High Cost of Software” [COL95] Cole: “Runaway Projects—Causes and Effects” [GLA99] Glass: “The Realities of Software Technology Payoffs” [HOF01] Hofmann and Lehner: “Requirements Engineering as a Success Factor in Software Projects” [PRE00] Prechelt: “An Empirical Comparison of Seven Programming Languages” [SAC68] Sackman et al: “Exploratory Experimental Studies Comparing Online and Offline Programming Performances” [THO97] Thomas et al: “An Analysis of Errors in a Reuse-Oriented Development Environment” [VGE91] Van Genuchten: “Why Is Software Late?” [WOO79] Woodfield: “An Experiment on Unit Increase in Problem Complexity”

18 An Even Dozen Doar: Practical Development Environments Feathers: Working Effectively with Legacy Code Fogel: Producing Open Source Software Ford: The Productive Programmer Glass: Facts and Fallacies of Software Engineering Johnson: GUI Bloopers Kernighan: almost anything Kniberg: Scrum and XP From the Trenches Mak: The Martian Principles Nygard: Release It! Spinellis: Code Reading and Code Quality Weiner: Time, Love, Memory 100012009-01-27http://swc.scipy.org


Download ppt "We Know Less Than You Think (But We Do Know Something) Copyright © 2009 Gregory V. Wilson. This presentation may be freely used and distributed with attribution."

Similar presentations


Ads by Google