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.

Slides:



Advertisements
Similar presentations
Case Study: A Telephone Switching System [G7.2.1] zProblem: A big telecommunications company wishes to upgrade their existing telephone switching system.
Advertisements

What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
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.
“Not Fully Specified (Project) Objectives” CS524 – Software Engineering I Azusa Pacific University Professor Dr. Sheldon X. Liang Fall I 2007 Ernie Rosales.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CS 104 Introduction to Computer Science and Graphics Problems Software and Programming Language (2) Programming Languages 09/26/2008 Yang Song (Prepared.
Software Development Models: Waterfall and Spiral Sung Hee Park Department of Mathematics and Computer Science Virginia State University August 21, 2012.
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
Data Structures and Programming.  John Edgar2.
CS 235: User Interface Design August 27 Class Meeting Department of Computer Science San Jose State University Spring 2015 Instructor: Ron Mak
CS 235: User Interface Design August 27 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
T. E. Potok - University of Tennessee Software Engineering Dr. Thomas E. Potok Adjunct Professor UT Research Staff Member ORNL.
University of Toronto Department of Computer Science © 2001, Steve Easterbrook CSC444 Lec22 1 Lecture 22: Software Measurement Basics of software measurement.
Test Driven Development An approach to writing better code Jimmy Zimmerman Intel Corporation.
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.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 6/e.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 Advanced Computer Programming Project Management: Methodologies Copyright © Texas Education Agency, 2013.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Chapter 6 : Software Metrics
1 Welcome to CS 362 Applied Software Engineering What happens after (and during) design? Testing, debugging, maintaining programs Lessons for software.
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.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
What We Think We Know About Software Development - and Why We Believe it’s True Steve Crouch, SSI with thanks to Greg Wilson Software.
What is Software?  Computer programs and associated documentation such as requirements, design models and user manuals  Software products may be developed.
Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Measurement & Metrics
Lecture on Computer Science as a Discipline. 2 Computer “Science” some people argue that computer science is not a science in the same sense that biology.
Assessing the Frequency of Empirical Evaluation in Software Modeling Research Workshop on Experiences and Empirical Studies in Software Modelling (EESSMod)
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
What is Computer Science?  Three paradigms (CACM 1/89) Theory (math): definitions, theorems, proofs, interpretations Abstraction (science): hypothesize,
Software Engineering & Project Management Lecture # 01 Computer Science & Engineering Lucky Sharma Subject Code: CS 603.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki 1 Machine Learning.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Code Simplicity: Software Design In Open Source Projects Max Kanat-Alexander
CSC 222: Computer Programming II
Appendix B Agile Methodologies
Software Engineering Process
Iterative and Agile Development
Agile Software Development Brian Moseley.
Software Testing and Maintenance Introduction
Introduction to Software Engineering
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Chapter 1 Introduction(1.1)
Vocabulary Algorithm - A precise sequence of instructions for processes that can be executed by a computer Low level programming language: A programming.
PPT and video are due no later than March 1, 2019
Appendix B Agile Methodologies
What Is Good Software(Program)?
Architectural Mismatch: Why reuse is so hard?
Research Software Group
Chapter 1: Software and Software Engineering
Presentation transcript:

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

Computer “Science” (?) http://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

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 http://swc.scipy.org

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 http://swc.scipy.org

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 http://swc.scipy.org

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… http://swc.scipy.org

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” http://swc.scipy.org

Boehm’s Curve http://swc.scipy.org [BOE01] and many others

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] http://swc.scipy.org

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 http://swc.scipy.org

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 http://swc.scipy.org

“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 http://swc.scipy.org Maintenance

http://swc.scipy.org What Do People Use?

http://swc.scipy.org Where Do People Learn?

http://swc.scipy.org Where Does the Time Go?

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

http://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”

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 http://swc.scipy.org