Software Development Lifecycle (SDLC)
SDLC 6 Phase
- Requirements Specification
- Market research
- Product definition
- System Design
- Specification of system(architecture, data structure, etc.)
- Rigorous plan
- Implementation
- Testing
- Deployment
- Maintenance
Software Process Model
- Abstract representation of development process
- What, when, how to do in each phase
Waterfall Model
- Rigid sequential process of SDLC
Pros
- Easy to follow / estimate cost
- Strong control / documentation
- Scalable to large projects
Cons
- Requires perfect planning
- No flexible response to change
Waterfall Extension: Iterative Model
- Each iteration includes whole SDLC
- Feedback at the end of iteration
Waterfall Extension: V-Model
- Multiple testing to each level
- Acceptance/System/Integration/Unit Test
Waterfall Extension: Spiral Model
- Prototyping + Waterfall
- 4 phase
- Determine objects / Requirements plan
- Identify and resolve risk -> working prototype
- Dev & Test
- Plan for next iteration
- Higher cost
- Non-trivial scope
Agile Process
Goals
- Adaptive planning
- Evolutionary development & delivery
- Time-boxed iteration
- Rapid & flexible respnose to change
Agile Manifesto
- Individuals & Interaction over Processes & Tools
- Working Software over Comprehensive Documentation
- Customer Collaboration over Contract Negotiation
- Responding to Change over Following a Plan
Agile Manifesto 12 Principles
- Early and continuous delivery
- Welcome changing requirements
- Deliver working software frequently
- Work together daily
- Motivated individuals
- Face to face conversation
- Working software is the primary measure of progress
- Constant pace
- Continuous attention to technical excellence and good design
- Simplicity
- Self-organizing teams
- Reflects on how to become more effective, tunes the behavior at regular intervals
Waterfall vs. Agile
Waterfall | Agile | |
---|---|---|
Timeline | Fixed | Fixed (short term) |
Client Involvement | No | Promoted |
Budget | Fixed | Flexible |
Success Rate(Easy/Difficult) | High / Low (architect-centric) | High / High (member-centric) |
Documentations | Good | Poor |
Rational Unified Process (RUP)
- Unified Process → All steps of SDLC unified in each phase
- Integration & Automation is the key
- Inception: What to build
- Prepare vision documents and initial business case
- Including risk assessment and resource estimate
- Develop high-level project requirements
- Manage project scope
- Reduce risk by identifying all key requirements
- Prepare vision documents and initial business case
- Elaboration: How to build
- Detail requirements as necessary (~80%)
- Produce an executable and stable architecture (~10% code implemented)
- Drive architecture with key use cases
- Verify architectural quality (reliability & scalability)
- Continuously assess business case, risk profile and development plan
- Construction: Build
- Build daily / weekly + automated build & test
- Deliver fully functional software
- Transition: Verify & Deploy to Users
RUP Best Practice
- Adapt the process
- Balance stakeholder priorities
- Collaborate across teams
- Demonstrate value iteratively
- Elevate the level of abstraction
- Focus continuously on quality
Extreme Programming (XP)
- A set of principles that provides the highest value in the fastest way possible
- Most useful when plan is completely unclear
XP 5 Values
- Communication
- Simplicity
- Feedback
- Courage
- Respect
XP 12 Practices
- Fine Scale Feedback
- Pair Programming (PP)
- Planning Game
- Test Driven Development (TDD)
- Whole Team
- Continuous Process
- Continuous Integration (CI)
- Design Improvement
- Small Release
- Shared Understanding
- Coding Standards
- Collective Code Ownership
- Simple Design
- System Metaphor
- Programming Welfare
- Sustainable Pace
XP Roles
- Customer
- Developer
- Coach
- Tracker
Pair Programming (PP)
- Code Review to Extreme Level → Real-Time Review
- Driver (Code) & Navigator (Review)
Scrum
- Lightweight framework that helps generate value through adaptive solutions
- Sprint: unit cycle of iteration
- Sprint goal consists of working product
3 Scrum Goals
- Transparency
- Inspection
- Adaptation