CPSC 310 Software Engineering Lecture 2 Software Processes Thanks to Eric Wolhstader, Emerson Murphy-Hill
Admin Please join Piazza if you haven t already piazza.com/ubc.ca/winterterm22013/cpsc310 2
Learning Goals By the end of this unit, you will be able to: Describe benefits of using a software process Describe the waterfall and spiral model including advantages, drawbacks Describe the importance of agile methods 3 3
Why do software projects fail? Unrealistic project goals Inaccurate estimates of needed resources Unmanaged risks Poor communication Do you know of a failed software project or other Vaporware? 4 4
When things go wrong 5
Automated, airport-wide baggage system 20 miles of track 6 miles of conveyor belts 56 laser arrays that read bar coded tags 3100 standard size baggage telecars 450 oversize cars Some 100 networked computers 6 6
The system 7
The timeframe Started 17 months before scheduled opening In Munich, engineers spend two years just testing a similar, but much smaller system! (With 24/7 operation for 6 months!) 8 8
More risks Most buildings already done System must adapt: sharp turns, narrow corridors Little attention paid to Munich sister project Devised system from scratch Internal communication problem 9 9
Consequences Airport opening delayed four times Overall, 16 months delay Engineering firm went bankrupt New engineering firm Split the system in 3 (one per terminal) Manual backup system Overall damage: 1.3 billion $ Automatic system abandoned in 2005 Reported savings of 1M$ / month 10
Class activity What do you think is the most important mistake that they made? How would you have done things differently? 11 11
Projects need a good plan A software process is a structured set of activities to develop a software system. Defines who is doing what, when and how to reach a goal. 12 12
Software process Process descriptions may also include: Products, which are the outcomes of a process activity; Stakeholders: people who care (about the outcome) Managers Developers Customers Testers What are some major types of software customers? 13
Software process Many different software processes, all include: requirements elicitation, architectural design, detailed design, implementation, integration, testing, Goals of each activity Mark out clear set of steps to perform Produce tangible item(s) Allow for review of work Specify actions to perform in the next activity 14
Productive work analysis Little attention to process (McConnell) 15
Productive work analysis Early attention to process 16
Class activity What software process challenges would Mozilla face as an open source project that would differ from a company with co-located development teams? 17 17
Common software processes Waterfall model (sequential) separate and distinct phases of specification and development Spiral model incremental prototyping with risk management Agile models / principles iterative approach with high customer communication 18
Software process models A software process model is an abstract representation of a software process. Many different types Good for different situations Like different cars Truck to haul goods Bus to transport people Volvo for safety 19
Why should you care? To work as a developer Know the lingo, don t be lost Understand the purpose Understand your role Less frustration To lead a project Assess the risks Choose a model Have a successful project 20 20
Software processes In practice, most large systems are developed using a process that incorporates elements from all of these models. Different models for different types of software types of companies types of management 21
Waterfall model (a.k.a. BDUF: Big Design Up Front) Royce, 1970: http://www.cs.umd.edu/class/spring2003/cmsc838p/process/waterfall.pdf 22
Waterfall: Advantages Good for well-understood, complex projects Tackles all planning up front No midstream changes = efficient process Provides support for an inexperienced team Orderly, sequential, easy-to-follow model Relatively slow progress Reviews at each stage 23 23
Waterfall: Drawbacks Getting requirements right up front. Hard to manage risks (a bit of a gamble) Reactive to errors but not to changing requirements 24 24
Software Project Risks Reference: Top Ten Lists of Software Project Risks : Evidence from the Literature Survey, Arnuphaptrairong 25
Spiral Model Boehm B, "A Spiral Model of Software Development and Enhancement", ACM SIGSOFT Software Engineering Notes", "ACM", 11(4):14-24, August 1986 26
Four sectors of the spiral 1. Determine objectives Specific objectives for the cycle are identified. 2. Identify and resolve risks Risks are assessed and activities put in place to reduce the key risks. 3. Development and test A development model for the system is chosen (e.g. a subset of Waterfall phases). 4. Plan the next iteration The project is reviewed and the next phase of the spiral is planned. 27
Spiral Model Each cycle Ends with demoable prototype Lessons from performing the cycle are reviewed and incorporated for next cycles For each cycle Sectors encompass more of a complete Waterfall Prototype becomes more of a complete product In the last cycle A complete Waterfall emerges 28
Spiral Model Benefits Manages risk by repeated review of prototypes Doesn t jump into building product head first Able to incorporate changes in requirements in each iteration Drawback High administrative overhead Can be overly conservative if you have high confidence in the outcome 29
Coping with change Change is inevitable in software projects Business changes New technology or platforms or APIs Changing requirements New management Change leads to rework or new functionality Design the process so that changes can be accommodated at relatively low cost 30 30
Agile Models / Principles The goal of agility: to develop software in the face of changing environment and constrained resources More a set of principles than a fixed model; many variations of agile processes Developers are indoctrinated with the principles and then trusted to act with less oversight 31
Example of Agile: Extreme Programming http://www.extremeprogramming.org/rules.html 32
Summary Why a software process can be important Definition of a software process There exist many different process models Basic models: Waterfall, Spiral Agile models: incremental and iterative More on agile principles/models in next lecture 33 33