Skip to content

Agile Development

Agile software development is a term that is used for a set of frameworks and practices that were expressed in the Manifesto for Agile Software Development. Agile software development is just a philosophy. In this class we will explore using a framework called scrum that has been modified for software development uses.

TIP

This module will take an estimated 7 - 9 hours to complete.

Module Assignments

  • Read this document
  • Complete the end of module quiz on canvas
  • Complete the end of module reflection on canvas(flip grid)

Manifesto for Agile

The Manifesto for Agile software consists of twelve principles.

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

Scrum

Scrum is described as a "framework within which you can employ various processes and techniques", rather than a process, or a technique, for building products. The Scrum framework is primarily team based, and defines associated roles, events, artifacts and rules. The three primary roles within the Scrum framework are:

  1. The product owner who represents the stakeholders,
  2. The scrum master who manages the team and the Scrum process
  3. The team, about 7 people, who develop the software.

Each project is delivered in a highly flexible and iterative manner where at the end of every sprint of work there is a tangible deliverable to the business.

The requirements that form the basis of the project are collated into what is called a Project Backlog, and is updated regularly. The features that are associated with these requirements are termed User Stories.

The work is time-boxed into a series of 1 to 4 week cycles where the business and project team estimate which User Stories in descending priority order are achievable each cycle, or Iteration. This subset of User Stories from the Project Backlog form the basis of the Iteration Backlog planned for delivery over that two week period.

Under Scrum, there are 3 time boxed (or fixed duration) meetings held during an Iteration plus a daily stand-up meeting for the team, scrum master and (ideally) the product owner. At the beginning of a sprint, features to be developed during the sprint are decided during the sprint planning meeting. At the end of the Iteration are another 2 meetings, the Iteration review and Iteration retrospective where the team reviews the product and demonstrates the use of the software, as well as reflect on, and improve, the Iteration process itself.

After the sprint is complete, the next set of User Stories is selected from the Project Backlog and the process begins again. Burn rate is monitored to determine when funding will be exhausted.

Learning Progression

The table below shows the scrum/agile learning process that will happen over four classes. Each class will add a little more complexity until you are practicing the entire process in CS481.

As you can see by the table below we are going to start with a simpler process and just focus on User Stories and Tasks in this course. In future classes you will continue to use scrum and have a chance to explore some of the other concepts. By the time you get to CS481 - Senior Design you will be ready to apply the entire process on an real project from industry.

It is important to take the time to understand this process because in this class the user stories and tasks will be given to you to follow, in upper division classes you will be required to write them yourself. So take the time to really understand the why and how so you will be prepared for harder classes 😁.

ConceptCourseDescription
TasksCS208Tasks are the activities performed to deliver a User Story.
User StoriesCS208The User Story is a one or two line description of the business need, usually described in terms of features.
SprintCS321A sprint is a 1 to 4 week time-boxed event focused on the delivery of a subset of User Stories taken from the Project Backlog.
Sprint BacklogCS471Subset of User Stories from the Project Backlog that are planned to be delivered as part of a Sprint.
Project BacklogCS471The Project Backlog is the current list of User Stories for the Project. User Stories can be added, modified or removed from the Backlog during the Project.
RequirementCS481The end user statement that outlines their information need.
ProjectCS481Discreet set of end user requirements that have been grouped, prioritized and funded.
Technical DebtCS481This refers to items that were either: missing from the Planning meeting; or deferred in favor of early delivery.
  • CS208 - Introduction to FullStack Web Development
  • CS321 - Data Structures and Algorithms
  • CS471 - Software Engineering
  • CS481 - Senior Design

User Stories and Tasks

  • User Story - The User Story is a description of the business need, usually expressed as a feature.
  • Task - A task is typically a single activity that can be described in one sentence that contributes to the delivery of a User Story. Generally a task takes no longer than 4-8 hours of effort to complete There may be one or many Tasks per User Story The task can only be assigned to and owned by one person at a time

When you start working on your final project you will notice that it has been configured with several user stories and and associated tasks for you to complete. Using the scrum/agile process should help tame to complexity of software development.

This section was adapted from material created by Evan Leybourn under the CC license.

cc

Released under the MIT License.