Skip to content

Software Development Lifecycle (SDLC) models

Take aways from other methods

The Agile manifest

```{admonition} Values - Individuals and interactions over processes and tools - Working software over comprehensive documentation - Customer collaboration over contract negotiation - Responding to change over following a plan

Or:
"Agile = characterized by the division of tasks into short phases of work and frequent re-assessment and adaptation of plans."

**Most of the following models are Agile...**

### Dynamic system development method (DSDM)

- Timeboxing
- MoSCoW prioritization:
    - must-have
    - should-have
    - could-have
    - and won’t-have, or will not have right now.
        - Some companies also use the “W” in MoSCoW to mean “wish.”
- Iterative and incremental approach

### Feature-driven development (FDD)

- Feature teams
- Parallel development
- Tracking completion status (reporting, milestones, percentage completion)

### Crystal methods

- People-centric
- Frequent delivery
- No "one size fits all"
- Modern principles: automated tests, frequent integration

### Scrum (For very large projects)

- Business value-driven comprehensive framework
- Scrum roles
    - Owner
    - development team:
    - testers
    - documenters
    - DB admins
    - scrum master: agile coach, servant leader, removes barriers, coaches and convinces; does not manage
- scrum workflow
    - sprint planning->sprint->review->retrospective
- Potentially shippable product increment each sprint
- Suitable for very large projects

#### Lean

- **Minimize waste**, visualize production, look for bottlenecks, inefficiencies
- **Last responsible moment**: wait ‘til we have enough facts
    - not make decisions based on preset timelines.
- Deliver as fast as possible: small iterations are easier to manage

### Kanban

- Visualize your work, **limit work in progress**

### Extreme Programming

- [https://www.agilealliance.org/glossary/xp](https://www.agilealliance.org/glossary/xp)
- Just In Time design

```{admonition} Branching and merging is not listed as a core XP practice
- is generally not a favorable practice in Agile approaches.
- Branching has the potential for creating technical debt if changes are not merged frequently.
- The risks an be somewhat mitigated by merging frequently.
- In any case, branching and merging .

Pair programming
  • Collaborate, continuous code inspection
  • real-time development technique to increase algorithm implementation

Test-driven development

  • Write test
  • Write function to fail test
  • Write code to pass test

Spotify

  • Culture
    • Innovation: hackathons
    • Learning from each other
    • Failure-friendly culture
    • (internal) code repositories, visible and open for other teams
    • Minimize handoffs (help from other teams)
    • Bureaucracy minimized

DevOps (Development Operations)

  • Developers and testers
  • Ops (operations): people working with release, servers, middleware, network, storage configs, monitoring techniques
  • DevOps aims to extend fast and frequent software feature development approach to build an efficient delivery pipeline.
  • Phases: development --> test --> stage --> production
    • development: unit testing (code)
    • test: integration testing (User-interface, web server, app server, back-end)
    • stage: user acceptance
    • production
  • Continuous...
    • Integration: Central repository
      • development + test
    • Development: Ensuring stable product after every release
      • development + test + stage
    • Deployment: automating updates to production
      • development + test + stage + production

And more...