Contents Today Introduction What is Software Engineering? Software Development Processes Project Management Requirements Engineering Software Construction Group processes Quality Assurance Software Management and Evolution 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Software Development Processes What is that? The Waterfall Model The Spiral Model The V-Model Iterative and Incremental Development Agile Development CMM Systematic Process Improvement 2/9 - 08 What is Software Engineering 1? “The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.” NATO conference ‘68 in Garmisch “ (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. IEEE std 610.12-1990, 1990 (2) The study of approaches as in (1).” Glossary of Software Engineering Terminology Programvarukonstruktion - Jonny Pettersson, UmU What is Software Engineering 2? SWEBOK Knowledge Areas Software requirements Software configuration management Software design Software engineering management Software construction Software engineering process Software testing Software engineering tools and Software maintenance SWEBOK Related Disciplines Computer engineering Computer science ÎBig difference? Management Mathematics 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU 2/9 - 08 What is Software Engineering 3? COMPUTER SCIENCE Theories Computer Functions ENGINEERING PRINCIPLES CUSTOMER Proven Techniques Problem SOFTWARE ENGINEERING Tools and Techniques to Solve Problems 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU methods Software quality Project management Quality management Software ergonomics Systems engineering Programvarukonstruktion - Jonny Pettersson, UmU Why Do We Need SE? Software is everywhere Software becomes more and more complex Software failures may harm our lives (see Risks Digest) Software projects exceed budgets and schedules ... Î Software must be engineered like any other product 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU 1 Elements of Software Engineering The Message Methods Technical “how to’s” to support software development tasks Languages Notations to support methods Software Engineering is software construction with a big ‘E’ Tools Support for (the usage of) methods and languages Processes Coordination and management of software development tasks supported by methods, languages, and tools ÎEconomically produce quality software Programvarukonstruktion - Jonny Pettersson, UmU 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Software Development Processes A Scalable Process? A “method” for constructing software Defined Repeatable Requirements Build first version Elements Phases and or disciplines Roles Activities Artefacts (In overviews often only the first are listed) 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Modify until client is satisfied development 2/9 - 08 Requirements Analysis Specification The Spiral Model (‘88) DETERMINE GOALS, ALTERNATIVES, CONSTRAINTS Planning tiv na er Alt Design Budget3 tiv na es 3 s2 3 1 Devel opm plan ent Inte g and ration test plan Installation Plan Programvarukonstruktion - Jonny Pettersson, UmU Risk analys is raints 2 Const Requirements, life-cycle plan Testing 2/9 - 08 4 e tiv Co na ns er tra Alte Alt int rna Budget2 Budget1 tives s1 start PLAN next phase EVALUATE ALTERNATIVES AND RISKS Risk analysis raints 3 Const Coding Budget4 raints 4 Const es 4 er Alt Operation and Maintenance Operation Programvarukonstruktion - Jonny Pettersson, UmU The Waterfall Model (‘70) Requirements maintenance Risk ana lys is2 Risk analysis1 Prototype1 Prototype2 Prototype3 Prototype4 Simulations, models, Concept e benchmarks nt of operation ar me f t w i re Detailed So qu design re Validated s nts requireme Code Validated, Unit test ign verified des System test Acceptance test So de ftw si ar gn e 2/9 - 08 DEVELOP AND TEST 2 Waterfall vs. Spiral Model Waterfall Model The V-Model Spiral Model sequence of phases Complex, iterative model; many integrated tasks Management Document driven Risk driven Quality Control Natural milestone after each phase Continuous evaluation, integrated into the model Customer interaction No Prototypes are built and evaluated by customers in every iteration Risk High (late feedback) Low (risk analysis is integrated in the model) Usability 2/9 - 08 Small and/or low risk projects Testplan Requirements Model Complexity Simple, linear Verification Testplan Specification Large projects System design Focus on errors in the construction ÎInspection Programvarukonstruktion - Jonny Pettersson, UmU Operation Validation Iterative and Incremental Development Component design Testplan Testplan Acceptance test System- & integration test Unit test Focus on errors in the product Coding ÎTesting Iterative Development in RUP Waterfall model Strongly based on phases Stable documents “Easy” to manage Problems Incomplete/ volatile requirements Testing late No early prototypes Solution Develop a solution for growing subsets of requirements (Ö increments) Rework existing solutions (Ö iterations) 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU © IBM Rational 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Agile Development Rational Unified Process lightweight flexible heavyweight plan based Movement against “big up front” requirements or design © IBM Rational 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU 3 The Agile Manifesto Agile vs. Traditional Agile Traditional Low Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan High Requirements volatility Low/medium Criticality of application Medium/high High Project risk level Low That is, while there is value in the items on the right, we value the items on the left more. High Volatility of context/environment Low High Overall team expertise Low Low Staff turnover High Process overhead High See http://www.agilealliance.com/ for more details (e.g., the principles). 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Low 2/9 - 08 Examples for Agile Processes Programvarukonstruktion - Jonny Pettersson, UmU Scrum TDD XP Crystal Scrum … 2/9 - 08 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Choice of process The Message What kind of process do you think Ericsson is using? There is no “one size fits all” process Programvarukonstruktion - Jonny Pettersson, UmU 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU 4 Process Maturity Models CMM Overview CMM: Capability Maturity Model 5: Level Framework for process assessment and improvement Developed by the SEI 1986 (for the DoD) Five maturity levels 4: 3: Initial (ad-hoc process) Repeatable (repeatable process) Defined (well-defined, documented process) Managed (predictable process) Optimised (continuous process improvements) 2: The DoD requires level 3 from all contractors Current version: CMMI 1.2 (2006) 2/9 - 08 1: Programvarukonstruktion - Jonny Pettersson, UmU 2/9 - 08 improve “Just do it.” in Evaluation Check results. 2/9 - 08 Activity produce reality estimation 2/9 - 08 Median 3.5 $49,000-$1,202,000 $245,000 $490-$2,004 $1375 9-67% 35% Yearly increase in error detection effectivity 6-25% 22% Yearly decrease in project schedule 15-23% 19% Yearly decrease in error reports after delivery 10-94% 39% Return of Investment (ROI) 4-8.8:1 5:1 Software Engineering Institute, 1994 (CMU/SEI-94-TR-013) 2/9 - 08 Before Costs Time Errors 1-9 Yearly increase in productivity Programvarukonstruktion - Jonny Pettersson, UmU improve Data Yearly costs in total Key process areas Initial Result Systematic Process Improvement Pays Off Yearly costs per developer Repeatable: Software configuration management Software quality assurance Software subcontract management Software project tracking and oversight Software project planning Requirements management to put Programvarukonstruktion - Jonny Pettersson, UmU Number of years of process improvement Defined: Peer reviews Intergroup coordination Software product engineering Integrated software management Training program Organization process definition Organization process focus After Likelihood Planning Managed: Quality management Process measurement and analysis Systematic Process Improvement ⇒ More Reliable Estimations Systematic Process Improvement Think first. Optimized: Process change management Technology innovation Defect prevention Programvarukonstruktion - Jonny Pettersson, UmU Programvarukonstruktion - Jonny Pettersson, UmU Relative Costs of Development Phases 2% 4% 1% 6% 5% 7% Requirements Specification Planning Design Coding Testing Integration Maintenance 8% 67% For particularly long-lived systems (e.g., software in airplanes) this can be much higher Compiled data from 1976-1981, see [Schach 97]. Researchers assume that these numbers are still valid. However, there are no recent empirical studies. 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU 5 The Message Summary What is Software Engineering? The more mature the process and the more long-lived and critical the product, the less effort goes to coding 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Software Development Processes What is that? The Waterfall Model The Spiral Model The V-Model Iterative and Incremental Development Agile Development CMM Systematic Process Improvement 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU Next time Introduction Software Development Processes Project Management Requirements Engineering Software Construction Group processes Quality Assurance Software Management and Evolution 2/9 - 08 Programvarukonstruktion - Jonny Pettersson, UmU 6