3. Software Process

21
PROC-1 Venkat Subramaniam Venkat Subramaniam 3. Software Process

description

3. Software Process. 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. Activities. - PowerPoint PPT Presentation

Transcript of 3. Software Process

Page 1: 3. Software Process

PROC-1Venkat SubramaniamVenkat Subramaniam

3. Software Process

Page 2: 3. Software Process

PROC-2Venkat SubramaniamVenkat Subramaniam

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

Page 3: 3. Software Process

PROC-3Venkat SubramaniamVenkat Subramaniam

Activities• Requirements specification

• Analysis

• Design

• Implementation

• Testing

• Maintenance and evolution

Page 4: 3. Software Process

PROC-4Venkat SubramaniamVenkat Subramaniam

Different Approaches• Waterfall

• Spiral

• Iterative & Incremental Development

• Agile

Page 5: 3. Software Process

PROC-5Venkat SubramaniamVenkat Subramaniam

Waterfall ModelRequirements

Analysis

Design

Implementation &Testing

Integration

Maintenance

Page 6: 3. Software Process

PROC-6Venkat SubramaniamVenkat Subramaniam

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)

Page 7: 3. Software Process

PROC-7Venkat SubramaniamVenkat Subramaniam

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

Page 8: 3. Software Process

PROC-8Venkat SubramaniamVenkat Subramaniam

Spiral Model

Analysis

RequirementsSpecification

Integration

Design

Implementation& Unit Testing

Page 9: 3. Software Process

PROC-9Venkat SubramaniamVenkat Subramaniam

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

Page 10: 3. Software Process

PROC-10Venkat SubramaniamVenkat Subramaniam

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

Page 11: 3. Software Process

PROC-11Venkat SubramaniamVenkat Subramaniam

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

Page 12: 3. Software Process

PROC-12Venkat SubramaniamVenkat Subramaniam

Iterative & Incremental Dev.

Waterfall

Spiral

Iterative & Incremental Development

Page 13: 3. Software Process

PROC-13Venkat SubramaniamVenkat Subramaniam

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

Page 14: 3. Software Process

PROC-14Venkat SubramaniamVenkat Subramaniam

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

Page 15: 3. Software Process

PROC-15Venkat SubramaniamVenkat Subramaniam

Advantages• Closely matches user expectations

• You may modify and evolve as understanding as requirements evolve

• Functionality stabilizes overtime

Page 16: 3. Software Process

PROC-16Venkat SubramaniamVenkat Subramaniam

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

Page 17: 3. Software Process

PROC-17Venkat SubramaniamVenkat Subramaniam

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

Page 18: 3. Software Process

PROC-18Venkat SubramaniamVenkat Subramaniam

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

Page 19: 3. Software Process

PROC-19Venkat SubramaniamVenkat Subramaniam

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

Page 20: 3. Software Process

PROC-20Venkat SubramaniamVenkat Subramaniam

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

Page 21: 3. Software Process

PROC-21Venkat SubramaniamVenkat Subramaniam

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