Software Development Methodologies 1. A methodology is: A collection of procedures, techniques,...

14
Software Development Methodologies 1

Transcript of Software Development Methodologies 1. A methodology is: A collection of procedures, techniques,...

Page 1: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

Software Development Methodologies

1

Page 2: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

• A methodology is:• A collection of procedures, techniques, principles, and tools

that help developers build a computer system

• There are two main approaches to development methodologies:• Traditional monumental or waterfall methodologies• Agile or lightweight methodologies

2

Page 3: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

What is Waterfall?• Sequential development process• Discrete steps

• Requirements• Design• Implementation• Test

• Long running, typically months but may span years• Well documented design• Emphasis on knowing everything upfront• Can be rigid and inflexible

3

Page 4: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

4

Concept Review

Requirements Review

Design Review

Validation Readiness Review

Release Readiness ReviewConcept

Requirements

Design

Implementation

Validation

Packaging & Delivery

Support

Retirement

Concept ProposalProduct Requirements DocumentProduct Proposal-Includes: - Market Analysis - Competitive Analysis - Product Positioning - Prelim. Earnings Est. - Cost/Benefit Analysis

Software Requirement SpecificationProject Plan-Includes: - Market Plan - Test Plan - Quality Plan - Documentation Plan - Support Plan - Packaging and Delivery Plan

User Interface SpecificationDesign Specification

SoftwareUser DocumentationS/W Test SpecificationsTraining MaterialsMarketing, Sales, and Demo Materials

Initial ScriptsTest ResultsRelease NotesFinal User DocumentationQuality Report

Product PackagingProduct

Archived ProductRetirement PlanLEGEND

Review

Stage

Deliverables

Project Lifecycle

Sample Waterfall Project

Page 5: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

What is Agile?• Short timeframe, iterative development cycles (Sprint)• Daily communication• Emphasis on small, cross-functional teams• Face-to-face rather than written documentation• “Releasable” code after every Sprint• Can be dogmatic

5

Page 6: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

6

Project Lifecycle

Sample Agile Project

Sprint 1 Sprint 2 Sprint 3 Sprint (Final)…

Sprint PlanningDesign, Implementation, ValidationSprint Demo

Requirements (Backlog) Grooming …

Page 7: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

Comparing Agile to Waterfall• Strengths of Waterfall

• Communication with outside groups• Strategic planning• Lots of documentation

• Strengths of Agile• Tight control over schedule and milestones• Focus on customer features• Integrated development and testing

• Observation• Agile is good for implementing features• Waterfall is good for implementing product

7

Page 8: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

8

Project Lifecycle

Merged Agile/Waterfall Project

Sprint 1 Sprint 2 Sprint 3 Sprint (Final)…

Documentation

Regression Testing

Requirements (Backlog) Grooming

Training

Page 9: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

Agile Manifesto I• Our highest priority is to satisfy the customer through

early and continuous delivery of viable software• Welcome changing requirements, even late in

development; Agile processes harness change for the customer’s advantage

• Business people and developers must work together daily throughout the project

9http://agilemanifesto.org

Page 10: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

Agile Manifesto II• Deliver working software frequently, from a couple of

weeks to a couple of months, with a preference of the shorter timescale

• Build projects around motivated individuals• Give them the environment and support they need, and

trust them to get the job done

10

Page 11: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

Agile Manifesto III• The most efficient and effective method of conveying

information to and within a development team is face-to-face conversation

• Working software is the primary measure of progress

11

Page 12: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

Agile Manifesto IV• Agile processes promote sustainable development. The

sponsors, developers, and users should be able to maintain a constant pace indefinitely

• Continuous attention to technical excellence and good design enhances agility

12

Page 13: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

Agile Manifesto V• Simplicity – the art of maximizing the amount of work

not done – is essential• The best architectures, requirements, and designs emerge

from self-organizing teams• At regular intervals, the team reflects on how to become

more effective, then tunes and adjusts its behaviors accordingly

13

Page 14: Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.

?