3 Software Process Venkat Subramaniam PROC1 Whats a
3. Software Process Venkat Subramaniam PROC-1
What’s a process? • Set of activities in creating software • It involves creativity – hard to automate – Requires human judgment • No one approach to create software – Different organizations and groups within organization do different things Venkat Subramaniam PROC-2
Activities • Requirements specification • Analysis • Design • Implementation • Testing • Maintenance and evolution Venkat Subramaniam PROC-3
Different Approaches • Waterfall • Spiral • Iterative & Incremental Development • Agile Venkat Subramaniam PROC-4
Waterfall Model Requirements Analysis Design Implementation &Testing Integration Maintenance Venkat Subramaniam PROC-5
What’s good about Waterfall • Easy to plan – (but hard to execute) • Easy to explain the progression of the project – (but may not be the reality, however) • Help with budgeting and estimating time upfront – (often overrun though) Venkat Subramaniam PROC-6
Problems with Waterfall • Sequential steps • Not easy to work with • Each stage expected to be complete and well done • Assumes requirements are well understood – (Are they ever? ) • Hard to keep up with change – (change is the only constant) • Hard to meet users needs Venkat Subramaniam PROC-7
Spiral Model Analysis Requirements Specification Design Implementation & Unit Testing Integration Venkat Subramaniam PROC-8
What’s good about Spiral • Recognizes that software applications need to evolve • Each version may be one loop though the spiral • You have a chance to revisit and modify things that may not be correct or adequate Venkat Subramaniam PROC-9
Problems with Spiral • Each cycle may be long – waterfall • If each cycle is large, hard to modify system – change may be prohibitive • May be expensive • If cycles are short, planning may be hard – Project management and reporting will be an issue Venkat Subramaniam PROC-10
Iterative & Incremental Dev. • Consider waterfall as a guiding framework, but not execution model • Consider spiral as execution model within that guiding framework • Planned with versions in mind – incremental • Each increment involves many cycles of all the activities, ending with executable application Venkat Subramaniam PROC-11
Iterative & Incremental Dev. Waterfall Spiral Iterative & Incremental Development Venkat Subramaniam PROC-12
Advantages & Disadvantages of IID • Provides good opportunity to analyze risk • System evolves • Coding starts early • Integration start sooner • May still be ceremonial • Iteration may be too long • Some companies that claim to be doing IID actually are doing waterfall Venkat Subramaniam PROC-13
Agile Development Process • Iterative and evolutionary development • Adaptive planning • Incremental delivery • Agility • More focused on success than sticking with a plan • Working software is valued and considered measure of progress Venkat Subramaniam PROC-14
Advantages • Closely matches user expectations • You may modify and evolve as understanding as requirements evolve • Functionality stabilizes overtime Venkat Subramaniam PROC-15
Disadvantage • Hard to document each step • Project management is not easy • System may be poorly structure – You may hack your way though • Works effectively only for small teams Venkat Subramaniam PROC-16
Where does it work? • For small teams • Small to medium size projects • Not effective on large projects – (large projects are not effective any ways!!) • Requires competent team Venkat Subramaniam PROC-17
The Agile Manifesto • Individuals and interactions – over process and tools • Working Software – over comprehensive documentation • Customer collaboration – over contract negotiations • Responding to change – over following a plan Venkat Subramaniam PROC-18
The Agile Principles • Satisfy Customer through early and continuous delivery of valuable software • Welcome changing requirements any time • Deliver working software frequently • Business people and developers work closely • Motivated individuals trusted to do job • Face-to-face conversation • Working software measure of progress • Processes that promote sustainable development • Sponsors, developers, users should maintain constant pace indefinitely • Attention to technical excellence and good design enhances agility • Simplicity is essential • Reflect on how to become more effective, and tunes and adjusts behavior accordingly Venkat Subramaniam PROC-19
Agile Modeling • UML is for understanding/communication not for documentation • Agile modeling is not avoiding modeling • Do not apply UML to all or most of software • Defer simpler design till programming • Use UML for smaller percentage of system where it is required • Choose lightweight simpler tools • Don’t model alone • Look for good enough solution • Use design as guidelines – it will be inaccurate when you start • Do not expect (or be expected) to design and hand off for coding – developer must be part of designing Venkat Subramaniam PROC-20
Agile Processes • Scrum – Self-organizing teams – Daily team measurement – Avoid following predefined steps – Standup meetings, 30 day iteration, demo to stake holders at end of iteration • XP – Collaboration – Quick and early software creation – Communication, simplicity, feedback, courage – Constant feedback, test driven development Venkat Subramaniam PROC-21
- Slides: 21