AkiVaMu Just tiny things come to mind...

System Development Life Cycle

Introduction

Referred from wikipedia:

  • The SDLC (aka application development life-cycle) describes a process for planning, creating, testing, and deploying an information system
  • The concept is applied to general system, may includes hardware, software…
  • There are usually 6 phases: analysis, design, development and testing, implementation, documentation, and evaluation.
  • There are several models:
    • Waterfall:
      • Sequential or big-design-up-front (BDUF) models
      • Complete and correct planning to guide large projects and risks
    • Agile:
      • Focus on lightweight processes
      • Allow for rapid changes
    • Iterative:
      • Focus on limited project scope
      • Expanding or improving products by multiple iterations
  • Models vs SDLC phases
    • For waterfall, all phases built as one go
    • For Agile, Iteractive: each short iteration include all phases
  • Project vs Product
    • Project life cycle: encompasses all the activities of the project
    • Systems development life cycle: focuses on realizing the product requirements

Phases

Initiation

  • Concept proposal
  • Cost/Benefit analysis
  • Output: decision to start project

Requirement Analysis & Definition

Planning (management)

  • Output:
    • Resource estimation (human, time)
    • Scheduling, Roadmap

Designing

  • Base on SRS to define the system
  • Output:
    • Architecture Spec
    • Function Spec

Development and testing

  • Base on design, development and testing can be performed in parallel
    • Dev: coding and testing
    • Test: define strategy, test case and run test
  • Output:
    • Source code, deployable
    • Test strategy, test report

Acceptance, installation, deployment

Push to production

Operations & Maintenance

May do evaluation, feature update, bug fix…

Disposal

Perform migration to new system, destroy artifact, archiving…

Methodologies

There are good infographics about history of software development methodologies

history of software development methodologies

  • Waterfall
    • Traditional. Include sequential, non-iterative phases
    • Useful if: objective is clear, stable, predefined
    • Weakness: too rigid, high risk, can’t adapt to change
  • Iterative & Incremental
    • Repeated cycles (iterative) and in smaller portions at a time (incremental)
    • Start with a simple implementation
      • Iterative: refining, enhancing
      • Incremental: adding
    • Pros: quick demo product, low risk for final product, adapt to change
  • Spiral
    • Emphasis on Risk analysis
    • Iterative 4 phases: Planning, Risk Analysis, Engineering and Evaluation

Agile

Define a philosophy, moving from predictive -> adaptive, project -> product

Values:

  • Individuals and Interactions over processes and tools
    • Face-to-face conversation
  • Working Software over comprehensive documentation
    • Iterative, Incremental
    • CI/CD
    • Quality focus
  • Customer Collaboration over contract negotiation
    • Close, daily cooperation between business people and developers
  • Responding to Change over following a plan
    • Welcome changing requirements, even in late development.
    • Timeboxing, short feedback loop

Frameworks

  • SCUM
    • Individuals: PO, SM, Dev
    • Iteration: Timeboxed into sprints (with fixed commitment)
    • Workflow:
      • Backlog refinement
      • Sprint planning
      • Daily scrum
      • Sprint demo/review
      • Sprint retrospective
    • Limitations:
      • Require close communication
      • Require wide skilled team member
      • Scalability
  • Kanban
    • Individuals: not required
    • Iteration: continuous flow instead of timebox (Change happens at anytime)
    • Useful for project with varying priority
  • Large-scale Scrum (LeSS)
  • Scaled Agile Framework (SAFe)

Reference:

Standards