For Developers

Costing of Software in Agile Project Management

Costing of software in agile project management

In agile project management, one of the more difficult things to predict is software cost, delivery time, and the potential benefits to the said project. Investors use this information to justify their initial investment and the cost of maintenance. In this article, we’ll aim to minimize this difficulty by exploring software cost estimation, the techniques used to arrive at it, and more. Before that, we’ll take a look at agile project management and its popular methodologies.

What is agile project management?

Agile project management is defined as the frequentative process of managing the tasks involved in a project by dividing each task into smaller ones and incorporating continuous feedback from the team members involved in the project. It entails breaking down the project processes into smaller tasks called sprints.

Agile project management is popular amongst software developers for software development processes. Each iteration of agile project management in the field of software development involves a discussion of the features and a review of the project’s progress. It helps to determine what the next step should be and ensures timely delivery of the project.

Thus, the issues raised during agile project management help to maintain the quality of the project and help to save resources. Adoption of practices like CI/CD (continuous integration and continuous deployment) using the latest technologies speeds up development.

Phases of agile project management

Phases of agile project management.webp

There are five different phases of agile project management:

1. Envision: This phase involves identifying all the requirements of the end users as well as determining the objectives of the project, along with the stakeholders.

2. Speculate: This phase sees team members brainstorm the features of the product, the tools to be used, and the technologies that will enhance it. The final timeline of the project is also decided at this time.

3. Explore: In this phase of agile project management, team members look for alternatives to fulfill the project’s requirements.

4. Adapt: Team members review the project results and work on making corrections and rectifying mistakes based on feedback received from end users. There is an improvement in each cycle.

5. Close: This is the final phase of agile project management. It involves identifying the issues raised during and after the delivery of the project so that they can be mitigated in the future.

How did the need for agile project management arise?

In the last few decades, there has been a significant rise in the use of the agile methodology due to the expansion of software development and information technology. The concept of agile project management emerged in the mid-1940s, and has evolved since then. For instance, James Martin's Rapid Iterative Production Prototyping (RIPP) served as an approach and is discussed in the book Rapid Application Development authored by him.

Following this, new methodologies were developed for agile project management. Two of the most common are Scrum and Kanban. Scrum involves iterations of a fixed length, whereas Kanban involves continuous releases.

Popular techniques in agile project management.webp

Let’s look at these two popular methodologies for agile project management.

Scrum

Scrum is a framework for agile project management which delivers the product in a collaborative manner. It involves fixed-length iterations of work known as sprints. This framework requires team collaboration: the product owner, along with other team members, heads the responsibility of creating the product backlogs, list of features, functionalities, and bugs for successful delivery of the software within the required time.

Scrum involves four ceremonies:

1. Sprint planning: A team meeting of what tasks will be covered in the upcoming sprint.

2. Sprint demo: A team meeting demonstrating the features developed or whatever milestone the team has achieved.

3. Daily standup: A 15- to 20-minute daily meeting to discuss the project’s progress.

4. Retrospective: A collective review of what did not work in the previous sprint so that it is not repeated in the next sprint.

Kanban

Kanban is another framework for agile project management which allows teams to work to their full capacity without being overburdened with work. It is favored over Scrum as it does not have a backlog column. It only has a to-do column that needs to be completed. The capacity of work in this column is decided by work-in progress (WIP) limits. As work is completed, the team immediately moves on to the next task. This allows them to work faster and even more efficiently than Scrum.

Kanban has the following components:

1. Stories or list of stories: Listing tasks that need to be done.

2. Columns or lanes: Used to distinguish tasks from projects and users in the Kanban board.

3. Work in progress limits: Defines the capacity of a team to work and based on this, work is allotted.

4. Continuous releases: Stories or works are released as soon as they are completed, thus forming a crucial part of continuous integration and continuous delivery.

Software cost estimate

The cost of developing software can be defined as the estimation of various resources like money, time, and developers involved in the delivery of the software. Software project cost estimation provides several benefits:

  1. Decides whether the product is beneficial to both the users and the owner.
  2. The team working on the product development knows what to do and how much time they have to complete it.
  3. All team members are on the same page which is necessary for the successful delivery of the project.

Agile estimation techniques

There are two types of agile estimation techniques: waterfall, i.e., the traditional methodology, and agile methodology. Product owners have to decide which will be beneficial for them to estimate the cost of developing software.

Let's discuss the two methodologies in some detail:

Waterfall methodology

This methodology is a sequential process that involves the completion of one task before moving on to the next task without any scope to revisit the already completed tasks. The scope or functionality is kept fixed, whereas the time and the cost are kept variable. Keeping the scope fixed helps to predict the budget of the project. However, there are several problems caused by keeping time and cost variable:

a. How do you identify whether the functionality fixed will prove beneficial for the end users and the owner of the product? What if the functionalities require to be changed in the future?

b. Keeping cost as a variable can be a problem as it may not provide good monetary returns. The increased cost of developing software is primarily due to changes in requirements over time. This results in engaging team members for a longer duration or adding more people to the team to do the work within the stipulated time.

c. Keeping time as a variable is another factor for losing value in the market. The product may not be delivered on time and hence, competitors may introduce the same product in the market earlier.

Agile methodology

The cost of developing software is dependent on time and the number of team members. Thus, increasing the time of the project will require engaging more team members and will increase the software cost significantly. To avoid this, the agile methodology keeps time and the cost fixed, whereas the scope is kept variable. The following are its features:

a. Division of project into mini packages: Agile allows dividing the complete project into mini packages which are released in phases, contributing to the full product development. The price of the package is calculated accordingly. Based on the outcomes of the previously completed packages, future packages are re-estimated appropriately, allowing features to be updated depending on the end-users’ requirement.

b. Easy and flexible changes: Changes may be required at the later stage of the product development process since team members cannot know everything there is to know about delivering a successful product from the outset. There is no cost involved in incorporating the changes that have the same value as that of the old features.

c. Early termination: If the product has been delivered successfully and there are no monetary gains by retaining that project team, then the customer can seek termination of the project early. The customer benefits by getting all the features of importance early, thus saving cost. The project team gets 20% of the remaining contract.

Techniques for cost estimation in software engineering

Cost estimation in software engineering projects requires several techniques which help to gain confidence in size, duration, and effort, along with cost. These techniques are as follows:

1. Estimation of project size: The size of the project is primarily determined by its complexity, functionalities or features, dimensions, and risks. For instance, developing websites like Amazon.com and Facebook.com present different challenges, scope, etc. Though both projects are big, they are different in parameters.

While estimating the total cost, size, and duration of a project, it is important to work within ranges to reduce the risks and uncertainties. Stories that are the features of the product are estimated using story points or ideal days. The total number of these story points or ideal days represents the total size of the project.

2. Story points: Story points are a unit of measurement to determine the overall size of the user story. This includes all aspects, such as integration, testing, code review, etc. For example, story A may be allotted story point 1, whereas story B may be allotted story point 2. Therefore, it can be concluded that story B is twice the size of story A. Ergo, the total size of the project is 3 story points.

3. Ideal days: This is the measurement of the size of the project in days. It determines the size based on whether the team works continuously on the project at any interval. It is an easier concept to correlate than story points when estimating at a high level of the project.

Velocity

Velocity is defined as the capacity of the team to complete the work within a given sprint or iteration. It is usually expressed as a range during the stage of the project since it's hard to depict the velocity of the team at an early stage. For example, 20 to 30 story points per sprint.

Velocity helps to determine how much time it will take to complete a task. Forecasting the velocity of the team involves story points and splitting them into tasks that are performed to complete the story. The number of hours for each task is estimated. This includes designing, code review, implementation, testing, CI/CD, and so on.

A capacity of 70% or more is considered to be good. The velocity usually fluctuates in the first few sprints but later stabilizes, giving more confidence in setting up the timeline to complete the project.

Estimation approaches

Some major agile estimation approaches for estimating the cost of developing software are analogy, parametric, engineering build-up, and extrapolation from actual costs. The process begins with analogy and then matures to actual cost in the later stages of the development owing to the availability of data. It mostly depends on the current stage of the software development life cycle.

During the early stage of development, analogy is the most appropriate agile estimation technique because there is limited data. As it moves to the later stages, data becomes available and the cost estimator can use the actual cost for estimation.

Cost estimation in software engineering using agile estimation techniques is a team-based activity. The driving factor is the product size. There is no defined formula for assigning points to user stories; instead, there are several techniques, as discussed in the previous section. Common methods for assigning story points include the Fibonacci series, ideal days, or small-medium-large.

After assigning the story points to the user stories, the team is responsible for prioritizing and then constructing the release from the product backlog. The number of releases is determined by the sprint schedule prepared by the team based on its velocity (a unique measure of productivity in agile project estimation).

After the first few sprints, the team selects the user story for the next sprint and estimates the appropriate story points. The team decides whether it will be able to complete the selected user stories in a given time depending on their complexity and velocity. This activity is conducted regularly which increases the accuracy of estimating the cost of developing software over the number of sprints.

Step-wise approach of cost estimation

Estimating cost of developing software.webp

Cost estimation is marked by several phases, including:

Initial high-level scope

This is the first phase where team members decide on the high-level epic features and functionalities required by the customers and the outcome. These epic features drive the project in a certain direction. The phase includes:

  • Vision, which determines what is supposed to be built along with identifying the business objectives.

  • High-level epic features that fulfill the needs of customers.

  • MoSCoW analysis to identify all the essential requirements for the successful completion of the project.

Proposal

Here, the product owner decides whether to move forward with the project or not. This depends on the size of the project, data, cost, and duration.

Release planning

In this stage, the features are released in a given timeframe. It involves:

  • Product backlog: These are epic features described as user stories which are essential for product delivery.

  • Estimation: The team uses a tool called planning poker to enable quick, reliable results based on analogous sizing. Planning poker assigns an agreed number called story points (ideal days are also used) to each user story depending on its size and complexity.

  • Prioritization: This involves prioritizing the user stories since the backlog, as well as size, are available for each user story. It is done to identify what is most valuable to the customer to achieve the desired results.

  • Release planning: Once prioritization is complete, the next step is to determine how the features will be rolled out and how long it will take to deliver a releasable product.

Fixed price contract

Once all the above steps are achieved, the next step is to create a quotation for a fixed price project contract. As discussed previously, in agile project estimation, it is advisable to keep project duration and team fixed, whereas scope should be kept as a variable.

Cost considerations

Agile project estimation involves increments and decrements in the cost. Increment in the cost involves initial investments required to implement the development. A decrease in the cost reflects the reduction in costs expected after the development of a release is completed and deployed and the program has reached a stable position.

In this article, we learned the most important aspects of cost estimation in software engineering in an agile environment. We saw how the agile estimation techniques proved to be more robust than waterfall techniques. However, ultimately, the choice of technique varies from team to team and project requirements, which is why there is no singular method that can be used.

Author

  • Author

    Turing

    Author is a seasoned writer with a reputation for crafting highly engaging, well-researched, and useful content that is widely read by many of today's skilled programmers and developers.

Frequently Asked Questions

It is more flexible and gives better results in forecasting the cost estimates of a project.

User stories are prioritized based on scores. These scores can be story points or ideal days.

One of the major disadvantages of using agile estimation techniques is that they require brief estimating and planning methods to execute effectively which is not always possible.

View more FAQs
Press

Press

What's up with Turing? Get the latest news about us here.
Blog

Blog

Know more about remote work.
Checkout our blog here.
Contact

Contact

Have any questions?
We'd love to hear from you.

Hire and manage remote developers

Tell us the skills you need and we'll find the best developer for you in days, not weeks.

Hire Developers