What We Think We Know About Software Development - and Why We Believe it’s True Steve Crouch, SSI with thanks to Greg Wilson Software.

Slides:



Advertisements
Similar presentations
Test-Driven Development and Refactoring CPSC 315 – Programming Studio.
Advertisements

© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Empirical Results Copyright © Software Carpentry 2011 This work is licensed under the Creative Commons Attribution License See
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
WHAT DO WE KNOW? Chris Cannam, SoundSoftware Greg Wilson, Software Carpentry Steve Crouch, Software Sustainability Institute.
1 Software Architecture CSSE 477: Week 5, Day 1 Statistical Modeling to Achieve Maintainability Steve Chenoweth Office Phone: (812) Cell: (937)
(Quickly) Testing the Tester via Path Coverage Alex Groce Oregon State University (formerly NASA/JPL Laboratory for Reliable Software)
Python Programming Chapter 1: The way of the program Saad Bani Mohammad Department of Computer Science Al al-Bayt University 1 st 2011/2012.
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.
Swami NatarajanJune 17, 2015 RIT Software Engineering Reliability Engineering.
IBM Haifa Research Lab IBM Haifa Labs An Open Source Simulation Model of Software Testing Shmuel Ur Elad Yom-Tov Paul Wernick
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
Swami NatarajanJuly 14, 2015 RIT Software Engineering Reliability: Introduction.
Software Development Models: Waterfall and Spiral Sung Hee Park Department of Mathematics and Computer Science Virginia State University August 21, 2012.
Software Testing and QA Theory and Practice (Chapter 15: Software Reliability) © Naik & Tripathy 1 Software Testing and Quality Assurance Theory and Practice.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
© Company Confidentialwww.itcinfotech.com Business Case for Test Automation S.Janardhanan Chief Technology Officer ITC Infotech India Limited Business.
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.
Upstream Prerequisites
Test Driven Development An approach to writing better code Jimmy Zimmerman Intel Corporation.
Personal Character Chapter 33. Outline  Isn't Personal Character Off the Topic?  Intelligence and Humility  Curiosity  Intellectual Honesty  Communication.
Steve Crouch, Greg Wilson Software Carpentry Why should scientists understand how to write better software? This work is licensed under the Creative Commons.
Categories of software defects See accompanying Word file “Software defects 2”
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 15 Software Reliability
Software Project Planning CS470. What is Planning? Phases of a project can be mostly predicted Planning is the process of estimating the time and resources.
Prof. Matthew Hertz WTC 207D /
CS3300 Fall 2015 Software Development Lifecycles.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Design Quotes "The two most important tools an architect has are the eraser in the drawing room and the sledge hammer on the construction site." —Frank.
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Computer Programming I An Introduction to the art and science of programming with C++
Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Hipikat: A Project Memory for Software Development The CISC 864 Analysis By Lionel Marks.
17-Dec-03 Intro to CIT 594 ~matuszek/cit594.html.
ICT in Primary Language Learning Presentation English Didactics Course Janne Lumme 13th Oct 2004.
Testing Vs. Inspection Research Paper Diala T. Gammoh, Ph.D. Student Dr. Damla Turgut, Ph.D. University of Central Florida, Orlando Florida
Moving Around in Scratch The Basics… -You do want to have Scratch open as you will be creating a program. -Follow the instructions and if you have questions.
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
11/09/02(c) 2002 Bo Sanden, Colorado Tech.1 OO Testing.
INFO 636 Software Engineering Process I Prof. Glenn Booker Week 8 – Reviews 1INFO636 Week 8.
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
© 2015 CloudBees, Inc. All Rights Reserved From 1 RPM to 1,000 RPM – Succeeding in a Software-Defined Economy JAX London
1 Quaero Bruce Knuteson Berkeley/Chicago An automatic model-tester A new way to publish HEP data.
Chapter 1: Fundamental of Testing Systems Testing & Evaluation (MNN1063)
CS 5150 Software Engineering Lecture 2 Software Processes 1.
OOPSLA workshop on Domain-Specific Visual Languages 1 Juha-Pekka Tolvanen, Steven Kelly, Jeff Gray, Kalle Lyytinen.
CSE 403 Lecture 27 Course Wrap-up Discussion slides created by Marty Stepp
Software Quality Assurance SOFTWARE DEFECT. Defect Repair Defect Repair is a process of repairing the defective part or replacing it, as needed. For example,
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Continuous Improvement. Start Simple and Continually Improve E.g., Gmail Labels 1.
CompSci Today’s topics Industry Practice Software Engineering Upcoming The Killer Robot Reading Great Ideas, Chapters 7.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
Research Software Group To save time, do this now… Go to: In the Etherpad, follow instructions under ‘When you arrive…’
Myths and truths of software development Chris Cannam, Queen Mary University of London Greg Wilson, Software Carpentry Steve Crouch, Software Sustainability.
What is a Functional Spec?  Defines what the functionality will be NOT how it will be implemented  Describes features of the software product product's.
CSE 374 Programming Concepts & Tools
Software Testing and Maintenance Introduction
Software Engineering Empirical Results
Disciplines Of A Superior Programmer
Agile Development – a new way of software development?
Presentation transcript:

What We Think We Know About Software Development - and Why We Believe it’s True Steve Crouch, SSI with thanks to Greg Wilson Software Carpentry Workshop, Newcastle 14/05/2012

Why? Researchers are expected to just know/find out about programming on demand American car manufacturers – Compete on e.g. cost – But not quality – Enter Volkswagen, BMW, Mercedes! Building things right allows you to build things faster Condition of publication – Data archival of results – What about software that generates the data Image courtesy of M 93

Once Upon a Time… 7 Years War ( ) Britain loses 1512 sailors to enemy action …and almost 100,000 to scurvy

A Twist of Irony… True irony, not Alanis Morrisette irony James Lind ( ) 1747: (possibly) first ever controlled medical experiment CiderSea water Sulphuric acidOranges VinegarBarley water Ignored – not a proper English gentleman! Listened – repeated in 1794 by a… Courtesy of the National Library of Medicine

A Twist of Irony… True irony, not Alanis Morrisette irony James Lind ( ) 1747: (possibly) first ever controlled medical experiment CiderSea water Sulphuric acidOranges VinegarBarley water Ignored – not a proper English gentleman! Listened – repeated in 1794 by a… Courtesy of the National Library of Medicine

Towards Modern Medicine Medical profession eventually realised controlled studies were the right way to go David Sackett, 1992: ‘evidence- based medicine’ – Randomised double-blind test is gold standard Cochrane Collaboration – Archives results from hundreds of medical studies – Image courtesy of Lab Science Career

On to Software Engineering… Martin Fowler (IEEE Software, July/Aug 2009) – Wrote the book on refactoring “[Using domain specific language] leads to two primary benefits. The first, and simplest, is improved programmer productivity... The second... is... communication with domain experts.” Interesting! Image courtesy of adewale_oshineye

‘Just One More Thing…’ Perhaps seems like a good idea Look at the paper more closely… – Two substantive claims – …without a single citation! Could be correct, but where’s the data? A Scottish verdict! Even the best of us aren’t doing this correctly “Many software researchers advocate rather than investigate” – Robert L. Glass (2002) Image courtesy of whatleydude Image courtesy of futureatlas.com

Take Note… Things are Starting to Change Growing emphasis on empirical studies in s/w research since mid-1990s – Papers describing new tools or practices routinely include results from some kind of field study ICSE 2009 Almost always must include some field testing results in top- tier journal/conference papers now – Progress! Image courtesy of Hacklock

An Interesting Result… Aranda & Easterbrook (2005): “Anchoring and Adjustment in Software Estimation” “How long do you think it will take to make a change to this program?” 3 groups given two page spec, one variation per group embedded in text… Control Group: “I’d like to give an estimate for this project myself, but I admit I have no experience estimating. We’ll wait for your calculations for an estimate.” Group A: “I admit I have no experience with software projects, but I guess this will take about 2 months to finish.” Group B: “… I guess this will take about 20 months to finish.” Groups don’t know about this variation…

What Happened? This is an anchoring effect, well known in psychology The anchor mattered more than anything else: – Experience in domain, software engineering – Tools used – Formality of estimation Q: Are agile projects similarly afflicted, just on a shorter and more rapid cycle? Group A (lowball)5.1 months Control Group7.8 months Group B (highball)15.4 months

Frequently Misquoted Sackman, Erikson and Grant (1968): “Exploratory experimental studies comparing online and offline programming performance” “The best programmers are up to 28 times more productive than the worst.” Dozens of books quote this – ‘all you need is a few really, really good people’ – More productive than… others! – We put ourselves at ‘good’ end of bell curve!

Pick it Apart Done in 1968!! Study designed to compare batch vs interactive, not measure productivity How was productivity measured? No metric Best vs worst? Twelve programmers for an afternoon – Next “major” study was 54 programmers… – … for up to an hour Very bad use of statistics! Image courtesy of zolierdos

So What Do We Know? Lutz Prechelt This guy knows stuff – via studies – Productivity variations between programmers – Effects of language – Effects of web programming frameworks Productivity and reliability depend on length of program’s text, independent of language abstraction level e.g. Perl, Ruby, Java, Assembler - ~the same LOC/hour Therefore: go high-level (trade-off: performance!)

A Classic Result… Boehm et al (1975): “Some Experience with Automated Aids to the Design of Large-Scale Reliable Software” – Plus many, many more since 1.Most errors are introduced during requirements analysis and design 2.The later they are removed, the more expensive it is to take them out (1/10/100?) Operational: ,000 lines of code 122 software errors 79% because of poor understanding of requirements

…Which Explains a Lot Pessimists (traditional): “If we tackle the jump in the error injection curve, fewer bugs will get to the expensive part of the fixing curve” Optimists (agile): “If we do lots of short iterations, the total cost of fixing bugs will go down”

Greatest Hits Volume 1 For every 20% increase in problem complexity, there is a 100% increase in solution complexity (Woodfield, 1979) The two biggest causes of project failure are poor estimation and unstable requirements (van Genuchten, 1991 – and many others) Development teams do not benefit from existing experience, and they repeat mistakes over and over again (Brossler, 1999)

Greatest Hits Volume 2 Rigorous inspections can remove 60-90% of errors before first test is run (Fagan, 1975) The first review & hour matter most (Cohen, 2006) Physical distance doesn’t affect post-release fault rates. Distance in organisational chart does Nagappan et al (2007) & Bird et al (2009) Shouldn’t our development practices be built around these facts? Image courtesy of schoschie

Here’s Another Errors tend to cluster – Half the errors are found in 15% of the modules (Davis, 1995 quoting Endres 1975) – About 80% of the defects come from 20% of the modules, and about half the modules are error free (Boehm and Basili 2001) Known since 1975! When you identify more errors than expected in some program module, keep looking!

Learn to Read How did you learn to program in any language? But… – You don’t just go out and write War and Peace, you’d read other skilled writers first – You learn to read a foreign language before you learn to write it Err… what about programming languages? Teach maintenance first (Harlan Mills, 1990) The best way to prepare [to be a programmer] is to write programs and to study great programs that other people have written – Susan Lammers, 1986, quoting a younger Bill Gates Image courtesy of dwyman

And Finally… Get into good habits early It’s easy to cling to bad ones habits habits