4
304 What is Software Engineering? ► The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints ► Note:  Process, systematic (not ad hoc), evolutionary…  Constraints: high quality, cost, time, meets user requirements

5
305 Analysis of the Definition: ► Systematic development and evolution  An engineering process involves applying well understood techniques in a organized and disciplined way  Many well-accepted practices have been formally standardized ► e.g. by the IEEE or ISO  Most development work is evolutionary ► Large, high quality software systems  Software engineering techniques are needed because large systems cannot be completely understood by one person  Teamwork and co-ordination are required  Key challenge: Dividing up the work and ensuring that the parts of the system work properly together  The end-product that is produced must be of sufficient quality ► Cost, time and other constraints  Finite resources  The benefit must outweigh the cost  Others are competing to do the job cheaper and faster  Inaccurate estimates of cost and time have caused many project failures

12
3012 Practice 1: Develop Software Iteratively Develop Iteratively Control Changes Use Component Architectures Manage Requirements Verify Quality Considered by many practitioners to be the most significant of the six

13
3013 Practice 1: Develop Software Iteratively ► Until recently, developed under assumption - most requirements can be identified up front. ► The research deconstructing this myth includes work by Capers Jones. (See next slide) In this very large study of 6,700 projects, creeping requirements — those not anticipated near the start—are a very significant fact of software development life, ranging from around 25% on average projects up to 50% on larger ones.

23
3023 No Free Lunch- Traps Abound… ► Major impacts on Project Managers, though…. ► Trap: When the initial risks are mitigated, new ones emerge Do not do just the easy stuff, to look good. Do not do just the easy stuff, to look good. Keep re-planning based on all new information. Keep re-planning based on all new information. ► Trap: Remember ‘some’ Rework enables you to enhance your solution Accommodate change early in the project Accommodate change early in the project ► Trap: Iterative development does not mean never to commit to a solution ► Monitor ‘scrap and rework’ ► Trap: Must Control “requirement creep, ” however… Some clients will now naturally recognize many ‘musts…’ clients will now naturally recognize many ‘musts…’

24
3024 Many Traps in Iterative Development Here is another trap: Too long initial iteration ► Winning is fun. Winning teams work better than loosing teams ► Better to have a short initial iteration, than one too long  Cut scope if necessary (much more later) ► Avoid ‘analysis-paralysis’ by time-boxing; you can enhance in later iterations (more later) ► Establish an even rhythm for project (at least w/i a phase) ► Focus on results and deliverables, not activities

25
3025 Iterations Are Time-boxed ► Work is undertaken within an iteration. ► The iteration plan defines the artifacts to be delivered, roles and activities. ► An iteration is clearly measurable. ► Iterations are risk-driven ► Iterations are planned. ► Iterations are assessed! ► Generally, initial iterations (in Construction) based on high risk and core functionalities!

26
3026 The Iteration Plan Defines…. The deliverables for that iteration. The to do list for the team members artifacts

28
3028 Solution: Plan With Evolving Levels of Detail Current Iteration Next Iteration Phases and major milestones  What and when Iterations for each phase  Number of iterations  Objectives and Duration One For Entire Project Fine-grained Plans: Iteration Plans Coarse-grained Plan: Software Development Plan  Iterative Development does not mean less work and shorter schedule  It is about greater predictability

29
3029 Progress is made against MILESTONES ► In the Unified Process:  Each phase is defined by a milestone.  Progress is made by passing milestones.  Milestones measure success ► Phases - NOT TIMEBOXED. ► Iterations ARE TIMEBOXED. Inception ElaborationConstructionTransition Major Milestones

30
30 Summary ► Much more about iteration and iteration planning later in the course… ► You will see some of these again – and, more importantly, use this information in your own iteration planning.