30/01/2023

Building step by step – how software is designed by Agile teams

When thinking of how software is designed by Agile teams, we first need to ask ourselves, what is meant by it?

By Tanay Kalideen in software design

blog main image

Agile Software Development is a methodology based on twelve principles, namely,

  1.  customer satisfaction,
  2. the ability to accommodate change in a project,
  3. deliver high quality software, projects must be built by motivated teams,
  4. efficient communication,
  5. keeping an efficient constant pace,
  6. maintaining high aptitudes of technical brilliance,
  7. be simple to use,
  8. business and developers should cooperate and work with one another,
  9. interaction in person,
  10. self-organized teams,
  11. regular reflection and adjustment,
  12. early delivery of product.

Based on the above principles the Agile software development methodology was formed. It is an approach to how product development should be done to provide a high-quality software product in an efficient manner and to ensure all requirements are met. Agile practices aim to minimize the frequent change at which a customer would change requirements for a product/project, ensuring that a product does meet the expectations of a client.

By making use of an iterative pattern, agile software development helps all stakeholders in a project to communicate and work efficiently during the project. An Agile team consists of the following members, each play a different role,

  • Product Owner– Should be able to work great with people and have strong communication skills as they would be a common ground to which the team, client and stakeholders can effectively communicate with one another. Some other responsibilities would be managing the project, client expectations, requirements, vision, and the backlog of a project. A product owner should be able to organize and make decisions on which items that should be a high priority based on sprint goals.
  • Team Lead– Should have leaderships skills and good communication skills. A team lead will often provide insight from a technical perspective to the team often based on the requirements of the client/product owner.
  • Development team– This would be a team with everyone playing a different role and responsible for designing, developing and testing the product. Each member will play a vital role during the different steps of the software development process. These roles are, the designers, architects, developers, quality testers. Designers will work together with the client and product owner to create designs for the user interface of the project and how the final product should look like.  Architects would create the flow for how certain functionalities of the project should operate. Developers would be responsible for programmatically solving and implementing the requirements. Testers will test the product as a quality assurance if the product meets the minimum requirements of the client.
  • Stakeholders- These could be members who oversee the operational and financial aspects of a project within the internal organization. External members are the clients.

Each member of this team would play vital roles during the software development process. If we consider all the above information, we can define what is an agile team? An Agile team consist of different members that will use agile methodology principles to develop software, all playing a different role to build efficient software step-by-step.

Agile software development can be broken up into seven different techniques, scrum, Kanban, crystal, feature driven development, dynamic systems development method, extreme programming, lean. Of these seven techniques, scrum is the most used. As it is one of the most common agile practices and is a technique used at Full Stack, it will be discussed further.

What is scrum? It is a project management framework used to guide teams by making use of an iterative pattern applied to the different stages to solve software related problems efficiently. It is commonly used as it helps to keep all stakeholders aware of what must be done. There are five stages the scrum methodology make use of in the development of software,

  1. Initiation- This would be the initial analysis of the project. What is needed to get the project done, rough estimates, tools required and what role each member within the team would play. A team lead role is usually assigned during this stage. The team lead will then work together with the product owner to ensure everyone on the team understands what must get done.

  2. Planning- During this stage the client requirements is broken down into story points, each having an acceptance criteria. The product owner and tech lead would then determine resources required. Each member in the team would then join a planning session in which a detailed discussion about what is expected of them. A timeline is then determined by breaking down story points into smaller tasks during the planning session. The team then discusses the time required for each of these tasks. This timeline would then be used as a guidance to achieve the agreed goals by the product owner, i.e. completing a feature for example. In the end once this is all completed, a Sprint backlog is determined as a result. A sprint can run for different intervals, i.e. one week up to a month. Each sprint can have different features or sprint goals.

  3. Implementation stage- This is when the software development works starts. Items of the backlog is picked by the developers within the team according to the priority set by the product owner and completed. Once a developer has programmatically solved the task and eventually completed the story point, the story will then enter a quality assurance testing phase. The quality assurance teams consist of internal testers within the organization, whom will test the completed work against various test scenarios and the acceptance criteria of the story. If the story does not pass quality assurance testing, it is then sent back to the developer to resolve accordingly. If the story does pass testing, it is marked as done (completed).

  4. Reviewing stage- During this stage, the team will evaluate if the sprint goal has been achieved. The team will discuss any triumphs and shortfalls during the past sprint. If all goals have been met and the feature is complete, the team will then move back to the planning stage, in which a new feature would be broken down into story points, then into small tasks and plan the new sprint backlog. If goals were not met, the team would then discuss what were the shortfalls and what is required to complete outstanding work and prevent the shortfall in the next sprint.

  5. Release stage- This could also be known as the deployment stage, at which point the team deploys the new features of the project. The client will review to check if it meets agreed requirements. If client has no changes to make, the feature will then be deployed. If any bugs come out of the release, the team then works on them to resolve and deploy as needed.

As scrum is an agile practice, an iterative pattern is applied to the five stages until the product/project is complete, meaning there can be various sprints, each having their own sprint goals and eventually making up the required product for the client.

Together these five stages make up a step-by-step guide to which software can be developed by agile teams by making use of the scrum technique. As software development progresses, new techniques can emerge from existing techniques, which will build on the existing techniques, by making the development process more efficient and effective.  

Get Started With Full Stack!

Ready to transform your business? Contact us today to discuss your project needs and goals.