Modern Software Development Methodologies

Table of contents


1. Agile

1.1. Agile Software Development

1.2. The Agile Manifesto

1.3. Agile Principles

1.4. Different Trends of AGILE

2. Scrum

2.1. Scrum Values

2.2. Principles of Scrum

2.3. Components

2.4. Roles

2.5. Scrum Artifacts

2.5.1. Product Backlog

2.5.2. Sprint and Sprint Backlog

2.5.3. Burn-down chart

3. Scrum Events

3.1. Sprint Planning

3.1.1. Spring Planning Meeting

3.2. Daily Scrum Meeting

3.3. Sprint Review

3.4. Sprint Retrospective


1. Agile

  1. Agile is the ability to create and respond to change. It is a way of dealing with, and ultimately succeeding in, an uncertain and turbulent environment.
  2. AGILE provides a foundation for the teams to build software

1.With the highest value

2.With high quality

3.With in the shortest time

1.1. Agile Software Development

  1. Agile Software Development is an umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto.
  2. Solutions evolve through collaboration between self-organizing, cross-functional teams utilizing the appropriate practices for their context

1.2. The Agile Manifesto

  1. The Agile Manifesto, also called the Manifesto for Agile Software Development, is a formal proclamation of four key values and 12 principles to guide an iterative and people-centric approach to software development.

1.3. Agile Principles

  1.  Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4.  Businesspeople and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6.  The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7.  Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10.  Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

1.4. Different Trends of AGILE

  1. SCRUM
  2. eXtreme Programming (XP)
  3. Test Driven Development (TDD)
  4. Pair Programming
  5. Behavior Driven Development
  6. Lean Software Development
  7. Kanban

2. Scrum

  1. Scrum is a process framework used to manage product development and other knowledge work.
  2. Scrum is a management and control process that cuts through complexity to focus on building software that meets business needs
  3. Scrum is best suited in the case where a cross-functional team is working in a product development setting where there is a nontrivial amount of work that lends itself to being split into more than one 2 – 4 week iteration

2.1. Scrum Values

  1. Commitment

->Team members personally commit to achieving team goals

  1. Courage

->Team members do the right thing and work on tough problems.

  1. Focus

->Concentrate on the work identified for the sprint and the goals of the team.

  1. Openness

->Team members and stakeholders are open about all the work and the challenges the team encounters.

  1. Respect

->Team members and stakeholders are open about all the work and the challenges the team encounters.

2.2. Principles of Scrum

  1. Transparency

->The team must work in an environment where everyone is aware of what issues other team members are running into.

  1. Inspection

->Frequent inspection points built into the framework to allow the team an opportunity to reflect on how the process is working.

  1. Adaptation

->The team constantly investigates how things are going and revises those items that do not seem to make sense.

2.3. Components

  1. SCRUM Roles
  2. SCRUM Artifacts
  3. SCRUM Events

2.4. Roles

  1. Users/Stakeholders

->Those who are going to use the product or have a vested interest in how it turns out.

  1. Product Owner

->Client's representative

->Define the features of the product

->Decide on release date and content

->Accept or reject work results

  1. SCRUM Master

->Is the team role responsible for ensuring the team lives agile values and principles and follows the processes and practices that the team agreed they would use.

  1. Development Team

->Consists of the people who deliver the product increment inside a Sprint.

->Main responsibility of the development team is to deliver the increment that delivers value to every Sprint.

->Cross-functional

->QA, Programmers, UI Designers, etc.

->Work collaboratively and share responsibilities.

->Typically 5-10 people

2.5. Scrum Artifacts

  1. Product Backlog
  2. Sprint Backlog
  3. Burn down Charts

2.5.1. Product Backlog

  1. The product backlog is a collection of user stories which present functionality which is required/wanted by the product team.  
  2. Usually the product owner takes responsible for this list.

2.5.2. Sprint and Sprint Backlog

  1. Contain a collection of stories which could be included in the current sprint.
  2. The team decides what gets added to the sprint
  3. The team decides what gets added to the sprint

2.5.3. Burn-down chart

  1. Is a graphical representation of work left to do versus time.
  2. It is a run chart of outstanding work. It is useful for predicting when all of the work will be completed.
  3. Can be applied to any project containing measurable progress over time.
  4. Outstanding work can be represented in terms of either time or story points.

3. Scrum Events

  1. Sprint Planning
  2. Daily scrum
  3. Sprint review
  4. Sprint retrospective
  5. Product backlog refinement

3.1. Sprint Planning

  1. Each Sprint may be considered a project with no more than a one-month horizon.
  2. Like projects, Sprints are used to accomplish something. Each Sprint has a definition of what is to be built, a design and flexible plan that will guide building it, the work, and the resultant product

3.1.1. Spring Planning Meeting

  1. The work to be performed in the Sprint is planned at the Sprint Planning, it’s a collaborative work of the entire Scrum Team.
  2. Time-boxed to a maximum of eight hours for a one-month Sprint.
  3. Sprint Planning answers the following:
  4. What can be delivered in the Increment resulting from the upcoming Sprint?
  5. How will the work needed to deliver the Increment be achieved?

3.2. Daily Scrum Meeting

  1. Short (15 min) frequent meetings, facilitated by the Scrum Master.
  2. One activity – Scrum Master asks each attendee 3 questions.
  3. What have you completed (relative to the Backlog) since the last Scrum meeting?
  4. What got in your way of completing this work?
  5. What will you do between now and the next Scrum meeting?

3.3. Sprint Review

  1. Sprint Review is held at the end of the Sprint to inspect the Increment and adapt the Product Backlog if needed.
  2. ANYTHING can be changed, work can be added, eliminated, reprioritized.
  3. 4-hour time boxed meeting for a 1-month sprint.

3.4. Sprint Retrospective

  1. Is usually the last thing done in a sprint.
  2. Occurs after the Sprint Review and prior to the next Sprint Planning.
  3. Three-hour time-boxed meeting for one-month Sprint.
  4. Participants

-> The entire team, including both the Scrum Master and the product owner should participate.

  1. The retrospective gives the team the opportunity to identify 3 key aspects:

->What should start doing?

->What did not go well (and stop doing again)?

->What went well (and should keep doing?)?