Software Development Life Cycle

Software Development Life Cycle

Agile

  • Based on iterative development cycles

  • Reqs and solutions evolve through the interactions of "cross-functional" teams

  • Considered a "philosophy" of development

    • "Something you live not something you do"

    • "Agile Manifesto"

  • Requires a lot of buy-in

Core Principles/Values

  1. Prioritizing individuals/interactions above processes/tools

  2. Working software over comprehensive documentation

    • Lack of documentation can be a setback
  3. Customer collaboration over contract negotiation.

    • What does the customer actually want?
  4. Responding to change over following the plan

    • Conversations for renegotiations

    • Responding to changes in the market (e.g. adding chatbots)

Pros

  • Flexibility

  • Testing early can find/resolve problems quickly/effectively

  • Collaboration with end-users/clients makes for tailored applications.

Cons

  • The flexibility of Agile can lead to undisciplined teams that ignore best practices or fail to make progress due to ever-changing expectations.

  • Requires a team that is trained in the Agile implementation and is committed to it.

  • A relaxed focus on documentation can make maintaining an ever-expanding codebase difficult

  • Backlog bloat/feature creep - Because requirements are not all set out at the beginning. It is easy for new features/backlog items to be added continually so the product is never completed.

  • Communication breakdowns can easily lead to massive delays or wasted/duplicated costly efforts.

Scrum

  • Scrum is the most popular Agile implementation/framework

  • Scrum divides the project into time-boxed "sprints".

Sprints

  • Sprints generally last 1-4 weeks

  • Sprints have a "sprint backlog" which are the tasks that need to be completed during that sprint. These backlog items come from the "project backlog" which is the entire list of known requirements for the project.

  • Backlog items are generally defined as "user stories" which phrase the requirement from the perspective of user functionality.

Scrum Roles

  • Scrum Master (Scrum Lead): Facilitator of the Scrum Ceremonies (Scrum meetings) and ensures that Scrum practices are being followed. This role is often taken on by the team's manager or lead developer.

  • (Full) Scrum Team - The full cross-functional team including

    • Business Analysts (BA)

    • Project Owner (PO)

    • Quality Assurance/Analysts (QA) w/ lead

    • Developers and Lead

  • Scrum Development Team: All the developers that are contributing to the project.

Scrum Ceremonies (meetings):

  • Sprint Planning Meeting:

    • The backlog is set for the sprint

    • The timeframe is set (generally 2 weeks)

    • Other decisions made

      • initial task assignment

      • story pointing (allocation of effort to complete)

      • Includes Full Scrum team generally

  • Backlog grooming/refinement:

    • The team reviews the user stories in the backlog and ensures that everyone is on the same page
  • Daily standups:

    • Daily meeting (usually in the morning)

    • Blockers: a problem encountered by a team member outside their control that needs to be resolved before they can continue working on their assigned task.

  • Sprint retrospective:

    • A Scrum team evaluates how well the team performed in the previous Sprint.
  • Sprint review:

    • Showcase the features implemented during the Sprint.

    • The scrum team attends and gives input to make sure expectations are met

Artifacts:

  • Product Backlog: This is the whole list of known requirements for the project

  • Sprint Backlog: The requirements that should be completed this sprint.

  • Burndown/Burnup Charts: This is a graph that shows the history of story point completion throughout the Sprint.

    • Story pointing is the process at the start of the sprint planning meeting for giving value to each user story that represents its complexity.

Pros/Cons:

As an Agile framework, the Scrum pros/cons are the same as the general Agile pros/cons. However, the lack of specific completion deadlines for the project makes it especially subject to backlog bloat.

Kanban:

  • This is an Agile implementation that uses a visual board to track development projects.

  • Each developer has access to the board.

  • The board shows user stories or other tasks

Each developer should be only working on 1 card at a time.

Pros/Cons:

Same as general Agile. However, the Board is a great way to visually communicate the state of the application and the current efforts of the team.

Scrumban:

  • Combines Scrum and Kanban. The Kanban board is generally used for the sprint instead of the whole project.

  • Allows developers to always see what the team is doing and helps avoid duplicate efforts.

  • This requires the effort to both have the Scrum ceremonies and maintain the Kanban board.

eXtreme Programming (XP):

  • Agile implementation for experienced development teams.

  • The system is highly complex and requires signification training to pull off effectively but can be highly productive when done correctly

  • Two parts of XP have been taken out of the system and are more widely used:

    • User/Story Epics: These are collections of User Stories that relate to broader functionalities (e.g. User authentication/authorization). Mostly used for backlog organization

    • Paired-Programming: This is the concept of two people programming on one keyboard.

      • One developer will be the navigator who is not typing but rather is focused on what functionality currently needs to be written and how it fits in with the rest of the code base.

      • The other developer is the pilot who is responsible for writing the implementation for the current functionality needed.

      • The Navigator and Pilot should switch roles regularly, generally every 20 minutes or so.

      • There is a broader sense of paired programming where the navigator/pilot roles are not used and two developers are just working together to solve a problem.