Agile software development enables an entrepreneur to launch a product in the market within a short span of time. For executives to know whether the agile methodology is right for them, we share information on basic principles behind agile, preferred team structure, and common methodologies such as scrum, extreme programming (XP), and dynamic systems development method (DSDM), and feature-driven development (FDD).
What is Agile Methodology in Software Development?
Agile is a unique approach to software development that considers different components such as client’s requirements, continuous learning and testing, iterative development, tangible value addition after every two weeks, and more.
Basic Principles of Agile Software Development
Communication and feedback
Communication among different software development team members can be a challenge, especially during the pandemic, when most people are working from home. In such cases, communication tools can be used to keep different software development team members on the same page while they work together to create a minimum viable product (MVP).
When the agile methodology is used, the teams work for the same hours. The reason is, that while working in the same hours, team members can collaborate, share concerns, give feedback, and work together productively in almost real-time.
In agile software development, the concept of “planning less change” is followed. After a few sprint cycles, the changes are made life and customer feedback is carefully analyzed. Based on the analysis, more changes are added to the backlog that is selected either in the current or upcoming sprint.
The two basic requirements that should be considered while creating an agile software development process are – moving the project forward at a constant pace and the ability to handle pressure, such as deadlines, budget increases, and more, due to changing requirements. For effective management and productivity, there can be sprints with high-paced work followed by a rest period. However, maintaining higher productivity along with high-paced work in all sprints can be forced but this approach is generally not sustainable.
The selection of team members to work on a software development project using agile methodology is an important step. An essential part of the selection process is to consider the skill set and responsibility. Furthermore, there should be a personality match for a positive work environment. The team members should be good professionals who are self-governed and are able to trust each other.
The quality of self-governance is critical in agile methodology as work is generally high-paced and there is a need for independent problem solvers. On the other hand, micromanagement, hand-holding, or mentorship is avoided as such practices usually take time. It is important for team members to gain a clear understanding of software development requirements beforehand which also means knowing the product roadmap.
There are two common development models – waterfall and agile. In the waterfall model, the requirements are gathered once. This also means, the one-time participation of the customer. On the other hand, in agile software development, the customer participates in the requirement gathering process throughout the development. The correct terminology would be – that the customer plays an active role to maintain the product backlog. There are other times when a customer may play an active role to modify the requirements – when product demos are provided, during daily stand-up meetings, and more.
Preferred Team Structure for Agile Software Development
At the core of agile software development, collaboration plays an important role. The collaboration happens between different team members who have a specific roles. Considering the scrum framework, the designation, as well as the role, is explained below:
- Business Owner – The business owner plays an active role in the development of the minimum viable software product (MVSP). The business owner primarily coordinates with the scrum master and product owner.
- Product Owner – The product owner ensures maximum return on investment (ROI) from development efforts while creating the MVSP. The product owner does so by setting priorities. There are three primary responsibilities of a product owner – managing scrum backlog, release, and stakeholder management.
- Scrum Master – The scrum master is responsible to convert the direction shared by the product owner or business owner into tangible value. To do so, the scrum master assists with backlog management assists the development team to self-organize, managing potential roadblocks, and more.
- Design, Development, and Testing Team – Ideally, the design, development, and software testing team members work in harmony. Once the front-end of the web application is developed, the development team member adds functionality. Finally, the testing team member will check the functionality by developing different cases.
- Subject Matter Experts – Prospects require solutions that address the pain points of their industry. An end-to-end web and mobile app development service provider may have subject matter experts who assist the development team as well as a scrum master.
Common Methodologies and Frameworks within Agile
Scrum is a widely popular framework used to develop software products. The emphasis is primarily on the design, development, testing, and deployment of the product. The development is done in sprints that are usually for two or three weeks. The scrum team has a product owner, scrum master, development team, subject matter experts, and more.
The progress of the agile software development project is measured through daily scrum meetings that are often completed in under fifteen minutes. Here is more information on the workflow of the scrum framework.
Workflow of Scrum Framework
The scrum framework consists of different components such as sprints, sprint planning, daily scrum, sprint review, sprint retrospective, backlog refinement, and canceling a sprint. Here is a brief overview of each aforementioned term.
- Sprints – Sprints are usually for two weeks. During the sprint, a backlog is generated which contains information on deliverables for the current sprint.
- Spring Planning – The sprint planning process initiates with a meeting in which the scrum team is invited. The team mutually agrees upon a goal and identifies backlog items that will help achieve that goal.
- Daily Scrum – The daily scrum meeting is a timeboxed event that is limited to fifteen minutes. Certain guidelines are to be followed while conducting daily scrum, such as developers should speak, bottlenecks and risks should be identified, and more.
- Sprint Review – After a sprint is finished, the sprint review is conducted. Ideally, the product owner should be present as the deliverables are shown to the stakeholders. This presents an opportunity to receive feedback.
- Sprint Retrospective – As the scrum framework complements the continuous learning philosophy, after a sprint is completed, learnings are discussed in a retrospective meeting. The general idea is to discuss what went well and what didn’t. If something didn’t go as planned, then the reasons behind it are discussed as well.
- Backlog Refinement – To maintain quality within the backlog, the refinement step was added. The backlog refinement step enables one to – break a large requirement into smaller requirements, identify dependencies, modify the priorities, and more.
- Canceling a Sprint – If the goals are not being met within a sprint, the product owner can cancel a sprint.
Extreme programming primarily focuses on extensive testing. To do so, the concept of “pair programming” is used. The name includes the term “extreme” considering the general approach of taking regular software development practices to extreme levels.
Common Activities in Extreme Programming
- Coding – The coding practice in extreme programming includes extensive feedback from other programmers as this framework is major “Testing” focused.
- Testing – After the software development phase, testing is critical to remove bugs or errors. Depending on the time exhausted in the testing phase, the quality of a software product may vary. In extreme programming, the concept of testing is taken to the extreme to remove the maximum number of bugs or errors. This is achieved through “pair programming”. There are two different approaches to testing in extreme programming – unit and acceptance testing.
- Listening – In extreme programming, programmers play an important role by listening to the needs of the customers. To do so, programmers should have a clear idea of what features may actually help the customers and what business logic changes might be required.
- Designing – A good software design is easy to maintain. It also adds value by avoiding dependencies that might add complexity as modifying one module of the software may require changes in multiple other modules.
Dynamic Systems Development Method (DSDM)
In the dynamic systems development method (DSDM), three factors are fixed beforehand. The three factors are – cost, quality, and time. Furthermore, DSDM embraces the MoSCoW prioritization method to modify priorities. Doing so results in timely delivery of the software.
Principles of DSDM
- Focus on the business need – In DSDM, business goals are equally important as the delivery date of the software. The way “focus on business needs” is managed is through certain practices such as MoSCoW prioritization, breaking down big tasks into smaller ones through timeboxing, refining the deliverables, and more
- Deliver on time – Emphasis is given to the delivery of deliverables using MoSCoW prioritization, due date management, and timeboxing technique.
- Collaborate – The concept of “workshop” is implemented in DSDM, where stakeholders are involved in the project. Understanding the needs of sponsors and users is important and the same is conveyed to the team by visionary and ambassadors, respectively.
- Never compromise quality – The testing phase was introduced quite early in the case of DSDM and plays an active role throughout the development.
- Build incrementally from firm foundations – The “enough design up front” approach enables the client as well as the agile software development company to understand the basic requirements. With each iteration, the team can reconsider the priorities and include feedback from stakeholders.
- Develop iteratively – The iterative approach adds value to the project as it involves constant testing. The iterative software development approach also complements the acceptance of feedback from relevant stakeholders.
- Communicate continuously and clearly – Communication is enhanced in DSDM with daily stand-up meetings that are informal and a good place to discuss ideas, workshops to keep the product aligned with the expectations of the stakeholders, and more.
- Demonstrate control – Managing a software development project and using DSDM requires proactive managerial skills. This includes keeping relevant stakeholders and team members on the same page, effective use of reporting and analytics, and focussing on the delivered requirements.
Feature Driven Development (FDD)
To understand FDD, it is important to consider the three essential components of FDD. The first component that led to the creation of FDD was object modeling, the second component is the use of feature lists to manage requirements, and finally, three other components were devised by Jeff De Luca, creator of feature-driven development, own professional experience.
Activities in Feature Driven Development
- Develop Overall Model – In this activity, the scope of the software development project is finalized through a high-level walkthrough. Different models are created and are reviewed in a peer review meeting. The selected models are eventually merged into the overall model.
- Build Feature List – After the first activity, complex features are simplified and converted into small functionalities. The features represent a mix of client requirements as well as business activities. Ideally, each feature is expected to be developed within two weeks in FDD.
- Plan by Nature – Once features are finalized, they are further divided and allocated to different programmers who then work towards refining the classes. This is a three-step process – the development sequence is identified first, the business activities are assigned to chief programmers, and classes are assigned to developers.
- Design by Feature – A list of features is finalized considering a timeboxed approach. Shortly after feature selection, sequence diagrams are created. Finally, a design inspection is scheduled and conducted.
- Build by Feature – In this iterative activity, the actual coding takes place. Unit testing is performed shortly followed by code inspection. If no bugs are found, the code is added to the main build.
Agile software development methodologies underwent radical changes in the past few years. The applications of agile can be found in other areas such as marketing, sales, and more. With tangible outcomes, it is important for executives and project managers to understand the importance of agile and implement the relevant practices to create customer-centric products or offer more client-centric services.