The 10 Most Important Ideas in Software Development



Similar documents
10 Keys to Successful Software Projects: An Executive Guide

Three Things I Wish I Learned in School

10x Engineering Principles

Finally, Article 4, Creating the Project Plan describes how to use your insight into project cost and schedule to create a complete project plan.

Software Development Process

Software Process for QA

An Assessment between Software Development Life Cycle Models of Software Engineering

Introduction to Agile Software Development

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

Lifecycle Models: Waterfall / Spiral / EVO

SOFTWARE PROCESS MODELS

Software Development s Low Hanging Fruit.

MTAT Software Economics. Lecture 5: Software Cost Estimation

ASSESSMENT OF SOFTWARE PROCESS MODELS

Agile development of safety-critical software while meetings standards' requirements

Software Life Cycle Processes

A Comparison between Five Models of Software Engineering

Software Engineering. An Introduction. Fakhar Lodhi

10 Deadly Sins of Software Estimation

Alternative Development Methodologies

the state of the practice Variations in Software Development Practices

How to write a great job ad

Software Development Process Selection Approaches

JOURNAL OF OBJECT TECHNOLOGY

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Software Engineering. Dilbert on Project Planning. Overview CS / COE Reading: chapter 3 in textbook Requirements documents due 9/20

How To Understand The Software Process

Chapter 8 Approaches to System Development

Quality Assurance Software Development Processes

The Agile Drupalist. Methodologies & Techniques for Running Effective Drupal Projects. By Adrian AJ Jones (Canuckaholic)

Agile Models. Software Engineering Marco Scotto Software Engineering

Building Software in an Agile Manner

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Software Process and Models

A Comparison Between Five Models Of Software Engineering

Agile Metrics. It s Not All That Complicated

Business white paper. Best practices for implementing automated functional testing solutions

Agile Inspired Risk Mitigation Techniques for Software Development Projects

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

THE BUSINESS VALUE OF AGILE DEVELOPMENT

6. Software Lifecycle Models. A software lifecycle model is a standardised format for planning organising, and running a new development project.

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Identifying Factors Affecting Software Development Cost

Understanding Agile Project Management

Agile and lean methods for managing application development process

Selecting a Software Development Methodology based on. Organizational Characteristics. Adrienne Farrell

IV. Software Lifecycles

Agile Governance. Charlie Rudd SollutionsIQ. Copyright 2011 SolutionsIQ. All rights reserved.

Software Development Life Cycle (SDLC)

How to write a great job ad

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

Outline. The Spiral Model of Software Development and Enhancement. A Risk-Driven Approach. Software Process Model. Code & Fix

COURSE CODE : 4072 COURSE CATEGORY : A PERIODS / WEEK : 4 PERIODS / SEMESTER : 72 CREDITS : 4

Génie Logiciel et Gestion de Projets. Software Processes Focus on Extreme Programming

Fundamentals of Measurements

Establishing your Automation Development Lifecycle

The Importance of Failing Well

Software Project Management

(Refer Slide Time: 01:52)

SWEBOK Certification Program. Software Engineering Management

An introduction to the benefits of Application Lifecycle Management

Supporting Workflow Overview. CSC532 Fall06

The Basics of Scrum An introduction to the framework

CHAPTER 02 SOFTWARE LIFE-CYCLE MODELS

Nova Software Quality Assurance Process

Application of software product quality international standards through software development life cycle

Object-Oriented and Classical Software Engineering

Software Testing Trends in Australia and Beyond

Essentials of the Quality Assurance Practice Principles of Testing Test Documentation Techniques. Target Audience: Prerequisites:

Software Quality Assurance in Agile, XP, Waterfall and Spiral A Comparative Study

CS 1632 SOFTWARE QUALITY ASSURANCE. 2 Marks. Sample Questions and Answers

The most suitable system methodology for the proposed system is drawn out.

Agility, Uncertainty, and Software Project Estimation Todd Little, Landmark Graphics

Software cost estimation. Predicting the resources required for a software development process

INTERNATIONAL JOURNAL OF ADVANCES IN COMPUTING AND INFORMATION TECHNOLOGY An International online open access peer reviewed journal

Iterative Project Management 1

CONTENTS Preface xv 1 Introduction

Development Methodologies

revenue growth MANUFACTURING KNOW HOW 4 STEPS TO IMPROVE your business CRITICAL QUESTIONS to ask yourself LEARN FROM best in class manufacturers

Advanced Software Engineering. Software Development Processes

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

Lessons Learned in Software Project Outsourcing

Issue in Focus: Consolidating Design Software. Extending Value Beyond 3D CAD Consolidation

COCOMO II and Big Data

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

"Performance and Security Testing in Agile Development"

Transcription:

Construx Software Development Best Practices The 10 Most Important Ideas in Software Development 2006 Construx Software Builders, Inc. All Rights Reserved. www.construx.com Most Key Ideas Are Not New Q: What are the most exciting/promising software engineering ideas or techniques on the horizon? A: I don t think that the most promising ideas are on the horizon. They are already here and have been here for years but are not being used properly. David L. Parnas Software Development Best Practices 2

Construx Software Development Best Practices #1 Software Development Work is Performed by Human Beings Cocomo II s View of Software Project Influences Product Complexity 2.38 Analyst Capability (general) 2.00 Programmer Capability (general) 1.76 Time Constraint 1.63 Personnel Continuity 1.59 Multi-site Development 1.56 Required Software Reliability 1.54 Documentation Match to Lifecycle Needs 1.52 Applications Experience 1.51 Use of Software Tools 1.50 Platform Volatility 1.49 Storage Constraint 1.46 Process Maturity 1.43 Language and Tools Experience 1.43 Database Size 1.42 Platform Experience 1.40 Architecture and Risk Resolution 1.38 Precedentedness 1.33 Developed for Reuse 1.31 Team Cohesion 1.29 Development Flexibility 1.26 Software Development Best Practices 4

Importance of Human Influences Human Influences make a 14x difference in total project effort & cost, according to Cocomo II Capability factors alone make a 3.5x difference Experience factors alone make a 3.0x difference Software Development Best Practices 5 Why Do These Variations Exist? Experience? Technology knowledge? Business knowledge? Personal processes? Software Development Best Practices 6

This Just In Human Beings Exhibit the Same Variations in Performance That Programmers Do! Software Development Best Practices 7 Conclusions You Can Take to the Bank With 20x differences in individuals and 10x differences in teams commonly reported Technical successes of Google, Amazon, Microsoft and similar companies are not accidents Recruiting top staff is easily cost justified Even elaborate staff retention programs are also easily cost justified Software Development Best Practices 8

Construx Software Development Best Practices #2 Incrementalism is Essential Incrementalism Definition: The use of a series of regular additions or contributions An incremental approach is one that is done a little bit at a time. The final result may be completely mapped out in advance Software Development Best Practices 10

Conclusions You Can Take to the Bank What do you get from incrementalism? Feedback! (on the software itself) Feedback! (on the dev process) Feedback! (on the people/dev capability) Ability to adapt Software Development Best Practices 11 Or, Another Perspective on Feedback If the map and the terrain disagree, trust the terrain! Software Development Best Practices 12

Construx Software Development Best Practices #3 Iteration is Essential Iteration Definition: Recital or performance a second time; repetition An iterative approach is one that converges to a solution a little bit at a time The result is not known in advance Software Development Best Practices 14

News Flash! ITERATION! People Are Not Computers Software Development Best Practices 15 News Flash! ITERATION! Practice Helps! And making small mistakes that prevent large mistakes helps too Software Development Best Practices 16

This Just In INSANITY! One Definition: Doing the same thing over and over and expecting different results. One More Definition: Not doing the same thing over because you think the results won t t change. Software Development Best Practices 17 In the Midst of These Important Ideas, Some Are Just Plain Silly Neutral Incredibly Serious Mildly Serious Somewhat Silly Incredibly Silly Software Silly Meter Software Development Best Practices 18

Silly Idea: The only two development options in existence are Iterate Nothing and Iterate Everything Software Concept Requirements Analysis Architectural Design Detailed Design Coding and Debugging Software Silly Meter System Testing Software Development Best Practices 19 Conclusions You Can Take to the Bank Some practices derive their power from incrementalism (doing a little bit at a time) Some practices derive their power from iteration (repeating the same task) You can iterate within an activity or phase (e.g., within requirements) You can iterate across any pair of activities or phases (e.g., requirements & architecture) You can iterate across entire development cycles The degree of iteration can vary from practically 0-100% 0 either within or across activities Software Development Best Practices 20

Construx Software Development Best Practices #4 The Cost To Fix A Defect Increases Over Time Defect Cost Increase (DCI) Activity in which a Defect Is Introduced Requirements Average Cost to Correct Architecture Construction Requirements Architecture Construction System test Post-Release Activity in Which a Defect Is Detected Software Development Best Practices 22

Notable Historical Mistakes Greatest Mistakes in History 480 BC: This is a nice gift! Software Development Best Practices 23 Notable Historical Mistakes Greatest Mistakes in History 1999: In the New Economy, companies won't need to make a profit to be successful. Software Development Best Practices 24

Notable Historical Mistakes Greatest Mistakes in History 2006: Agile projects aren t t affected by Defect Cost Increase. Activity in which a Defect Is Introduced Requirements Architecture Average Cost to Correct Construction Requirements ArchitectureConstructionSystem testpost-release Activity in Which a Defect Is Detected Software Silly Meter Software Development Best Practices 25 Conclusions You Can Take to the Bank Defect creation is a function of effort Defect detection and removal is a function of QA activities Fix more defects earlier! Use practices that reduce the magnitude of DCI Software Development Best Practices 26

Construx Software Development Best Practices #5 There s an Important Kernel of Truth in the Waterfall Model Remember This? Software Concept Requirements Analysis I m Not Bad. I m Just Drawn That Way. --Jessica Rabbit Architectural Design Detailed Design Coding and Debugging System Testing Software Development Best Practices 28

Intellectual Phases Discovery Invention Construction Focus Schedule Software Development Best Practices 29 Cost of Overlapping Intellectual Phases Discovery Invention Construction Focus Overlap = Dependencies Uncertainty Risk Rework Higher costs Longer schedules Lower quality Schedule Software Development Best Practices 30

Conclusions You Can Take to the Bank Some degree of wickedness is inevitable. Plan for it. Much wickedness is avoidable. Plan for that, too. Attack wickedness actively, especially via incremental and iterative approaches. Software Development Best Practices 31 Construx Software Development Best Practices #6 Ability to Create Useful Software Estimates Can be Improved Over Time (The Cone Of Uncertainty)

Cone of Uncertainty Project Scope (effort, cost, or features) 4x 2x 1.5x 1.25x 1.0x 0.8x 0.67x 0.5x 0.25x Time Software Development Best Practices 33 Conclusions You Can Take to the Bank Estimation must be iterative Project planning must be incremental An estimate isn t t meaningful unless it contains a description of its inaccuracy Software Development Best Practices 34

Construx Software Development Best Practices #7 The Most Powerful Form of Reuse is Full Reuse History of Reuse First idea was to reuse code Later idea was to reuse code + design Current idea is to reuse as much as possible, including processes and plans Software Development Best Practices 36

Effect of Adding Process the First Time (What I Wrote in SPSG in 1997) 100% Thrashing Percent of Effort Productive Work 0% Process Overhead Time Software Development Best Practices 37 Effect of Adding Process the First Time (What I Think Now) 100% Thrashing Percent of Effort Productive Work 0% Process Overhead Time Software Development Best Practices 38

Effect of Adding Reused Processes 100% Thrashing Percent of Effort Productive Work 0% Process Overhead Time Software Development Best Practices 39 Conclusions You Can Take to the Bank Consider reusing any or all of these: Coding standards Change control policies Estimation procedures Formats & outlines of project plans, requirements doc, design docs, QA plan, test plan, etc. Checklists for plans, estimates, change control, inspections, QA, etc. Roles & responsibilities Training Software Development Best Practices 40

Construx Software Development Best Practices #8 Risk Management Provides Critical Insights into Many Core Software Development Issues Risk Management Type 1: Extrinsic Added on to the project primarily for purposes of risk management Examples of Extrinsic Risk Management Top 10 Risks list Risk management plans Risk officer Etc. Software Development Best Practices 42

Risk Management Type 2: Intrinsic Built into the project for other reasons; risk reduction is an additional benefit Examples of intrinsic risk management Active project tracking UI Prototyping End-user involvement Incremental delivery Upstream technical reviews Etc. Software Development Best Practices 43 A View of Software Risk Reduction Typical Relationship between Planned Work and Variable Work: Planned Work Unplanned, Variable Work (typically >50% of total) Better Relationship: Planned Work Planned Overhead Unplanned, Variable Work Software Development Best Practices 44

A View of Software Risk Reduction Planned Work Planned Overhead Unplanned, Variable Work Software Development Best Practices 45 Conclusions You Can Take to the Bank Risk is the key to many tough decisions in project management: What is the best lifecycle model? How much requirements work is enough? How much design work is enough? Can you use junior staff instead of senior staff? Should you do design reviews? Code reviews? How much schedule buffer do you need? Software Development Best Practices 46

A Silly View of Risk We re an entrepreneurial company. We can t be afraid of risk Not separating business risk from project risk from product risk Software Silly Meter Software Development Best Practices 47 Construx Software Development Best Practices #9 Different Kinds of Software Call For Different Kinds of Software Development (The Toolbox )

Examples of Overreaching Claims The pace of information technology (IT) change is accelerating and agile methods adapt to change better than disciplined methods therefore agile methods will take over the IT world. Software development is uncertain and the SW-CMM improves predictability therefore all software developers should use the SW- CMM. Examples from Balancing Agility and Discipline: A Guide for the Perplexed, Barry Boehm, Richard Turner, 2004 Software Development Best Practices 49 Time for More Silliness There is one single development approach that works best for all projects. Software Silly Meter Software Development Best Practices 50

This is a saw Software Development Best Practices 51 this is also a saw Software Development Best Practices 52

and so is this Software Development Best Practices 53 and so is this Software Development Best Practices 54

and so is this Software Development Best Practices 55 and so is this Software Development Best Practices 56

and so is this Software Development Best Practices 57 and so is this Software Development Best Practices 58

and so is this Software Development Best Practices 59 and so is this Software Development Best Practices 60

News Flash! MARTIAN RESEARCHERS MAKE KEY DISCOVERY! SOFTWARE DEVELOPMENT IS AS DIFFICULT AS SAWING! Different Projects Call for Aliens donate Different research results Development to Software Approaches! Community Software Development Best Practices 61 Conclusions You Can Take to the Bank Which software development approach works best depends on the kind of project Software Development Best Practices 62

Construx Software Development Best Practices #10 Software Engineering Body of Knowledge (SWEBOK) The SWEBOK (Software Engineering Body of Knowledge) Software Configuration Management Software Construction Software Design Software Engineering Management Software Engineering Process Software Maintenance Software Quality Software Requirements Software Testing Software Tools and Methods Software Development Best Practices 64

Effect of the SWEBOK To organize something is to understand it. Aristotle The main contribution of the SWEBOK is to bring clarity to software development research, discussions, and application Software Development Best Practices 65 Alternatives to the SWEBOK Maybe software is so complicated only gurus can understand it? Perhaps software can t be reduced to words, and you just have to trust the developers to do the right thing? Maybe good development practices should be kept secret so they don t fall into the wrong hands Software Development Best Practices 66

Alternative #1 to the SWEBOK I could try to explain software to you, but you wouldn t understand. Software Development Best Practices 67 Alternative #2 to the SWEBOK Don t ask questions. Just have faith in your team. Software Development Best Practices 68

Alternative #3 to the SWEBOK I could explain software to you, but I d have to kill you. Software Development Best Practices 69 Conclusions You Can Take to the Bank SWEBOK provides a wide spectrum of support for software development practices: Defined, reusable software development processes Academic curriculums Career development Professional certification Employment interviewing Technical skills inventory And we re just getting started! Software Development Best Practices 70

Is the SWEBOK the Ultimate Answer? Truth will sooner come out of error than from confusion. Francis Bacon Software Development Best Practices 71 Construx Software Development Best Practices Conclusions

Construx Software Development Best Practices Breaking News Training Consulting Tools sales@construx.com www.construx.com +1 (425) 636-0100