WHAT DO WE KNOW? Chris Cannam, SoundSoftware Greg Wilson, Software Carpentry Steve Crouch, Software Sustainability Institute.

Slides:



Advertisements
Similar presentations
Chapter 24 Quality Management.
Advertisements

Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
Nine Steps to Delivering Defect-Free Software By: Terence M. Colligan Presented by: Isaac Bailey.
Copyright © 1994 Carnegie Mellon University Disciplined Software Engineering - Lecture 1 1 Disciplined Software Engineering Lecture #7 Software Engineering.
Empirical Results Copyright © Software Carpentry 2011 This work is licensed under the Creative Commons Attribution License See
Inspection (c) 2007 Mauro Pezzè & Michal Young Ch 18, slide 1 Photo credit jurvetson on Flickr.com; creative commons attribution license.
Realism in Assessment of Effort Estimation Uncertainty: It Matters How You Ask By Magne Jorgensen IEEE Transactions on Software Engineering Vol. 30, No.
 Peter Elbow On Writing Prof. Myrna Monllor Jiménez Prof. Helen Avilés
1 Software Maintenance and Evolution CSSE 575: Session 8, Part 3 Predicting Bugs Steve Chenoweth Office Phone: (812) Cell: (937)
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.
Software project management (intro) Quality assurance.
© 2010 John Dalbey Ch 9: Reviews Humphrey proposes that personal reviews will result in improved quality. Now that we have a defined process and some real.
introduction to MSc projects
RIT Software Engineering
SE 450 Software Processes & Product Metrics 1 Defect Removal.
CS CS 5150 Software Engineering Lecture 20 Acceptance and Delivery.
point of view that is personal rather than scientific
 QUALITY ASSURANCE:  QA is defined as a procedure or set of procedures intended to ensure that a product or service under development (before work is.
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
Software Engineering Experimentation Software Engineering Specific Issues (Mostly CS as well) Jeff Offutt
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 27 Slide 1 Quality Management 1.
Pointers to more effective software & data in audio research Mark D Plumbley, Chris Cannam, Steve Welburn Centre for Digital Music Queen Mary, University.
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.
Software Quality Chapter Software Quality  How can you tell if software has high quality?  How can we measure the quality of software?  How.
Software Inspections and Walkthroughs By. Adnan khan.
SoundSoftware.ac.uk: Software sustainability for the audio and music researcher Chris Cannam, Mark Plumbley, Luís Figueira Centre for Digital Music Queen.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
TESTING.
HU113: Technical Report Writing Prof. Dr. Abdelsamie Moet Fall 2012/13 Pharos University in Alexandria Faculty of Engineering Lecture 5: Preparation.
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.
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITHClass of 39 CS3600: Software Engineering: Standards in Process Modeling CMM and PSP.
What We Think We Know About Software Development - and Why We Believe it’s True Steve Crouch, SSI with thanks to Greg Wilson Software.
Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.
Program Development Life Cycle (PDLC)
1 Project Information and Acceptance Testing Integrating Your Code Final Code Submission Acceptance Testing Other Advice and Reminders.
UNIVERSIDAD DEL TOLIMA INSTITTUTO DE EDUCACION A DISTANCIA LECTURA EN INGLES CON BASE EN COMUNICACIÓN ORAL EULICES CORDOBA ZUÑIGA M.A Candidate in English.
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.
Disciplined Software Engineering Lecture #7 Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department.
(A radical interpretation) Tomo Lennox Bow Tie computer services Why Agile Works.
Math 105: Problem Solving in Mathematics
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Debugging Strategies from Software Carpentry. Agan's Rules Many people make debugging harder than it needs to be by: Using inadequate tools Not going.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
INFO 636 Software Engineering Process I Prof. Glenn Booker Week 8 – Reviews 1INFO636 Week 8.
Copyright © 1994 Carnegie Mellon University Disciplined Software Engineering - Lecture 7 1 Design and Code Reviews - Overview What are design and code.
Software Testing and Maintenance 1 Code Review  Introduction  How to Conduct Code Review  Practical Tips  Tool Support  Summary.
CS 3500 L Performance l Code Complete 2 – Chapters 25/26 and Chapter 7 of K&P l Compare today to 44 years ago – The Burroughs B1700 – circa 1974.
Interface and Implementation Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See
CSE 190p wrapup Michael Ernst CSE 190p University of Washington.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
1 CM107 UNIT 9 SEMINAR Instructor: Jen Leary. REVIEW OF UNITS 1-8 You are close to finishing the course. You will complete the FINAL PROJECT this unit.
1 Running Experiments for Your Term Projects Dana S. Nau CMSC 722, AI Planning University of Maryland Lecture slides for Automated Planning: Theory and.
Objects First With Java A Practical Introduction Using BlueJ Well-behaved objects 2.1.
Accreditation! The responsive curriculum game is made available through JISC under the terms of the Creative Commons BY-NC-SA Attribution-NonCommercial-ShareAlike.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
Mahindra Satyam Confidential Quality Management System Software Defect Prevention.
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.
MANAGEMENT INFORMATION SYSTEM
Steve Chenoweth Office Phone: (812) Cell: (937)
FOP: Multi-Screen Apps
Quality Management ISO 9001
Cracking the Coding Interview
Introducing the Ideas One of Six Traits:
Introducing ISTQB Agile Foundation Extending the ISTQB Program’s Support Further Presented by Rex Black, CTAL Copyright © 2014 ASTQB 1.
Quality Measurable characteristic Cyclomatic complexity Cohesion
Lecture IV The Perfect Scientific Article is Yet To Be Written
Topic 5: Communication and the Internet
Presentation transcript:

WHAT DO WE KNOW? Chris Cannam, SoundSoftware Greg Wilson, Software Carpentry Steve Crouch, Software Sustainability Institute

This material is provided under Creative Commons Attribution 3.0

WHAT DO WE KNOW? Less than you might hope

COMPUTER SCIENCE 1. Study of how computers work, the principles of logic and computation 2. A pile of unscientific ill-supported voodoo about how best to write programs

[CITATION NEEDED] Don’t trust experts, experienced developers, yourself, or me

Theory and evangelism “That is why is so useful; you can do absolutely anything that you want with it” “… designed to make programmers happy, and it shows” “… allows you to do rapid development, and scales to fit” “I don’t know why one would start a new project in a language that didn’t support ”

What passes for evidence “The best programmers are up to 28 times more productive than the worst”

What passes for evidence “The best programmers are up to 28 times more productive than the worst” … in a study comparing batch-processing against interactive systems, using twelve programmers, for one afternoon, over 40 years ago Sackman, Erikson and Grant, 1968

What does experience count for? “Programmers were asked several questions about their previous programming experience… number of years of programming experience, total amount of program code written, size of largest program ever written… None of these questions had any substantial predictive value for any aspect of programmer performance in the experiment.” Prechelt, 2003

WHAT DO WE KNOW? We know some things about working practices

Working together Physical distance doesn’t matter Nagappan et al, 2007; Bird et al, 2009

Working together Physical distance doesn’t matter Distance in the organisational structure does Nagappan et al, 2007; Bird et al, 2009

Working hours and “crunch mode” 8-hour days (a 40-hour week) produce more output than 9-hour days (a 45-hour week) Crunch mode: going from 40 to 60+ hours a week Initial increase in output Drop-off is obvious within a week By two months, you’d have been better off with 40-hour weeks all along Robinson, 2005

US Army study “After circa 24 hours [without sleep] they… no longer knew where they were, relative to friendly and enemy units. They no longer knew what they were firing at. Early in the simulation, when we called for simulated fire on a hospital, etc., the team would check the situation map, appreciate the nature of the target, and refuse the request. Later on in the simulation… they would fire without hesitation regardless of the nature of the target” Belenky, 1997

AUTOMATE EVERYTHING BUT CRAFT Mistrust yourself in repetitive tasks!

TOOLS MATTER

Higher-level languages work The length of the source code is a predictor of development time, roughly independent of language Prechelt and Unger, 1999 No current metric is better for defect prediction than lines of code Herraiz and Hassan, 2010 Variation in run time and memory use due to different programmers is larger than that due to different languages Prechelt, 2003

Short functions & working memory Working memory: more or less 7 “things” at once Weinberg, 1971; Miller, 1956 The more you have to remember while reading or writing code, the harder to follow and the less likely to be correct Write code for other humans to read – the computer can read any old crap, it’s humans who matter!

ERRORS APPEAR EARLY AND ARE COSTLY LATER

Errors appear early and cost later Most errors appear during requirements analysis and design The later an error is detected the more costly it is to address 1 hour to fix in the design 10 hours to fix in the code 100 hours to fix after it’s gone live 40% of development time is error removal Boehm et al. 1975; Glass, 1992 time number / cost

Misunderstandings and misdesigns 30% of errors that survived through to production software were caused by missing code (This was the biggest single cause of such errors. Regressions were second, at 8.5%) Glass, 1981

Differing approaches Traditional: “If we take more care at the design stage, fewer bugs will get to the expensive part of the fixing curve” Agile: “If we do lots of short iterations, the total cost of fixing bugs will go down”

Bugs are social creatures Errors tend to cluster: Half the errors are found in 15% of the modules Davis, 1995; 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 When you find errors in one place, keep looking for more!

RAPID FEEDBACK Learn about your mistakes as early as possible

READ AND SHARE

Reading and code reviews Inspections can remove 60-90% of errors before the first test is run Fagan, 1975 Training developers in “how to read code” makes a substantial difference to the number of errors found during code reviews (compared with more formal techniques) Rifkin and Deimel, 1995

Code reviews: not so demanding Dunsmore, Roper, Wood, From Best-Kept Secrets of Peer Code Review, Cohen, 2006

We often don’t like to share Survey of papers in economics journal with a data and code archive policy: 9 empirical articles McCullough, 2007

We often don’t like to share Survey of papers in economics journal with a data and code archive policy: 9 empirical articles 7 had empty entries in the journal archive! McCullough, 2007

We often don’t like to share Survey of papers in economics journal with a data and code archive policy: 9 empirical articles 7 had empty entries in the journal archive! The other two had code, but it didn't work! None of them could be replicated without authors' help McCullough, 2007

I’ll Just Leave This Here J M Wicherts, M Bakker and D Molenaar, Willingness to Share Research Data Is Related to the Strength of the Evidence and the Quality of Reporting of Statistical Results, 2011

Survey 2010– % develop code

Survey 2010–2011 of whom 39% report taking steps to reproducibility

Survey 2010–2011 of whom 35% report publishing any code

Survey 2010–2011 That's 11% of the whole

Learn to read! You don’t just go out and write War and Peace You’d read other skilled writers first You don’t just go out and write a foreign language You learn to read it first

…and prepare to share Coding with readers in mind makes it easier to write comments you'll understand later easier to write testable code, and to do unit tests for it easier to do code reviews and easier to contemplate publishing

Further reading “Best Practices for Scientific Computing” – Wilson et al. “Facts and Fallacies of Software Engineering” – Robert L Glass “Making Software” – edited by Oram and Wilson See also

AND FINALLY Get into good habits early! It’s easy to cling to bad ones