Before embarking on the development of a project, it is necessary to find out how the finished product will look both in the customer's expectations and directly in the view of the performers. Therefore, the most crucial stage in project preparation is the correct organization of labor costs. It is then that the vision of the result and the route to its receipt are coordinated. In inadequate assessment, precise project planning and management are problematic.
In This Article:
What is Software Project Estimation?
All project managers will certainly have a task to plan a project at some point. It is at the planning stage that the future success of the entire project is laid, so the process of its evaluation takes an important place here. The manager is faced with a rather difficult task — to learn how to form the most competitive and accurate estimates of the team's required time and efforts for all processes within the framework of the most reasonable labor costs. Moreover, so that later it is guaranteed to fall into them. What is software project estimation?
An estimate is a forecast or a rough idea that allows you to determine how much effort, resources, time, money will be required to complete a specific task or create a particular product. This is not an attempt to guess something, but an agreement between the customer and the contractor about the framework and, possibly, the way of completing the task, since both the business and the project managers need predictability and limiting risks.
Evaluation of tasks or a project as a whole does not have a single explicit algorithm or a simple plan since there are no similar projects. Each project is unique in its way: what works great in one case may not work at all in any other — even with the same data, team, and budget. In this case, one must not forget that unforeseen circumstances may arise at any time. Every manager needs to know that the better the assessment is done, the better the chances of completing the project and saving the budget.
There are many different effective methodologies for conducting quality software evaluations. However, the quality of the result is influenced by a suitable technique and many other factors that you must consider. A good forecast sometimes requires very detailed design and preparation: about the same duration as the task itself.
IT project estimation software
There are many programs for automatic time management and time scheduling. Their use will save you unnecessary work, reduce the time for maintenance and control, give more accurate calculations, reduce the likelihood that you will miss something overdue, and allow you to add and remove tasks without losing data. Each company may have its preferences. Here is a list of some of them:
- Gantt chart (Microsoft Excel, Microsoft Project, LibreOffice Calc, OnlyOffice, Smartsheet, GanttPRO, Comindware, "Google Sheets")
- Trello
- Jira
- Asana
- ActiveCollab
- Wrike
- Basecamp
- Bitrix24
- Megaplan
- Open Plan
- Comindware
- Flowlu
- Advanta
Project Estimation Necessity
The customer often wants to know the considerable cost and timing of his project immediately. But in the case of IT development projects, the answer is often wildly inaccurate. IT products are not goods on supermarket shelves with precise price tags, and without understanding the specifics of a project, it is impossible to name the budget required to create it. And it can even take weeks to form an adequate detailed assessment.
So what is project appraisal? It is the starting stage of its implementation. The assessment of the project gives a reasonably accurate understanding of how long it will take to implement all the tasks and implement the project as a whole.
An important criterion is the reliability of the project estimates. Estimating the cost and labor costs "by eye," the performer can create unnecessary problems for the customer and himself. In case of underestimating software projects, the contractor will have to sacrifice either the quality of his work or profit, squeezing the software development time and reducing the size of his team. And if, at the same time, the customer is unhappy, disappointed in his choice, it undermines confidence in the performer as a professional.
But overestimation of the project and excessive reinsurance are also undesirable. Such projects will be much more expensive. It can lead to you not taking the project into software development because another company could evaluate it better and provide the customer with a more reasonable cost. It is important to note that overly extended deadlines and lack of team control can lead to the displacement of work on other projects, which also entails losses for the software development company.
Project Cost Estimation Methods
Several estimation techniques help determine how much money, effort, resources, and time it will take to create a specific system or product. They all have different complexity and accuracy of the estimates obtained. For each project, you need to select your most acceptable method, which will allow you to get a high-quality, most accurate assessment and lead the project to success.
We can divide all methods into two conditional groups.
Flexible methods
They allow you to make high-level assessments at a stage when there is still not enough input information (level of negotiations, commercial proposal):
- Delphi,
- Wideband Delphi,
- Three-point Estimation (PERT),
- Analogous Estimation (Top-down Estimation),
- Parametric Estimation.
Exact methods
They allow you to make deep and more accurate estimates at the stage of project planning (after the conclusion of the contract):
- Function Points,
- Story Points,
- Bottom-up Estimation,
- Use Case Points.
Some of the estimation techniques are briefly described below. For best results, you need to study them in more detail.
Delphi (Expert Judgment)
The Delphi method, developed in the 1950s and 1960s at the RAND Corporation, is a systematic, interactive forecasting (score generation) method based on the opinion of experts in a specific area of interest. It can be either one expert or a group of several expertise carriers.
Wideband Delphi
It was created in the 1970s by Barry Boehm and John A. Farquhar. The Wideband Delphi method implies more interaction and more communication between participants.
Three-Point Estimation or PERT
One of the most common and simplest methods. Based on three types of assessment:
- optimistic (O = Optimistic),
- pessimistic (P = Pessimistic),
- realistic / average (M = Middle or Most Likely).
The PERT (Program Evaluation Review Technique) method was developed and described in 1958 by order of the US Navy's Special Projects Division for a missile system project.
Analogous Estimating (Top-down Estimation: from general to specific)
Analogous Estimating is a technique that uses parameter values from historical data to estimate a similar parameter for future performance. You can rely on experience to solve similar problems/projects or do something similar. The method is used in cases where there is not enough information and documentation about the project, especially at the initial stages of the project.
Parametric Estimating
The method is similar to analogy assessment. It also focuses on information and data from previous projects. The point is to build some parameterized forecast model based on experience, available data, metrics, and statistical data (the main difference from the Analogous Estimating method). Using this method allows you to analyze the impact of a particular parameter on cost, budget, and duration.
Function Points
IBM employee Alan Albrecht first proposed the Function Points method in 1979. A functional point (FP) is a unit of measure for expressing the volume of a software product (business functionality) that an information system (as a product) provides to a user. FP defines the size of the software. They are widely popular as the industry standard.
Story Points
It is a method for assessing the complexity of tasks in Agile and Scrum. Story Point is a measure used to estimate the complexity of implementing User Story and other charges. The key feature of the method is that this metric is not tied to a specific time, such as days or hours of development. Instead, relative units are used, which do not allow you to determine the exact time that you will spend on growth, but at the same time, help to quickly and efficiently prioritize tasks based on their complexity.
Bottom-up Software Project Estimation
The method is similar to an expert assessment, only in this case, the forecast is not made for the entire project as a whole but separately for its constituent tasks. We collect the judgment in parts, determine how much time is necessary for each participant in the development process, and bring everything together, taking additional risks into account. This method uses a Work Breakdown Structure (WBS), which involves breaking it into smaller tasks.
Use Case Points
The method was developed by Gustav Karner in 1993 during his time at Objectory Systems (which later merged with Rational Software and then IBM) to cost estimate software volume, object-oriented systems, and system requirements.
UCP (Use Cases) is a method for evaluating projects based on the system's use cases being considered. The requirements for the system are written in the form of use cases, and the amount of software is calculated by decomposing them, taking into account technical assumptions and assumptions about the environment.
- A use case is a series of interrelated interactions between a user and a system that enables the user to achieve a goal.
- Use cases are a way to reflect the functional requirements of a system. The user of the system is called "Actor."
This method is included in the RUP methodology and is applied using the UML (Unified Modeling Language). UCP is based on the Function Points methodology, but it has been greatly reduced for use by non-experts. Unlike FP, UCP takes into account many elements: non-functional requirements, organizational risks, performers, and their competence in assessing technical and environmental complexity.
Types of evaluating an IT project
What are project evaluations? We can roughly divide them into approximate, detailed, and accurate estimates. In each of them, the same amount of work is estimated, they differ in detail and, therefore, in the time allotted for their processing.
Approximate estimation
An approximate estimate can provide a rough estimate of the timing and cost. Its main method is an assessment by analogy — based on similar projects and cases created by the performer. In this case, the customer will only hear approximate figures with a sufficiently large fork. This assessment, though quick, is imprecise. It is suitable only for typical projects implemented over and over again. They form a base containing information about the time spent on implementation and solving problems that have arisen. It can be used, for example, to evaluate the creation of an online store. Having similar experience, as well as a general understanding of the number of pages, categories, and products, filtering methods, the desired design, you can give an approximate cost of creating such a site. But projects are not identical — platforms, settings, team composition, competencies change, new technologies are used, or old ones are updated. All this increases the risks and, consequently, the inaccuracy of the assessment.
Detailed Software Project estimation
The team will need to break the TOR into blocks and various functionalities to prepare a detailed assessment. In this case, they will use a competency assessment method. The same task can have a different level of difficulty for each team member and, of course, take other times to complete. Consequently, the whole team is involved in such an assessment, not one person. Everyone prepares a review of their part of the work and lays down the risks. For example, creating the same online store may involve various integrations with third-party systems. They will not affect the designer's work in any way, but they can be difficult for developers. This approach is already more detailed, and the fork will be much smaller. Also, a plus will be a clear vision of the timing and methods of implementing the assessed project — it is clear not only what needs to be done, but by whom and for how long it will be implemented.
Accurate estimation
An accurate assessment is carried out based on the previous stage's results. This method, although laborious, is considered the best - the customer receives the exact time and cost, and the contractor fully understands the future project and how to create it. Such an assessment assumes that the project has already been taken into operation - the customer is focused on the cost, a detailed discussion was held with him,a detailed list of requirements was drawn up, the necessary functionality was selected, and the visual part of the project was agreed. Only after that the team can disassemble the project by tasks and stages and evaluate each separately. For example, only after the project's design has been completely created, you can start reevaluating the ready-made detailed assessment of the layout.
Software Project Estimation Process
First of all, we need to decide how to form the deadlines and cost of projects.
Step 1: Assess tasks
The first thing that needs to be done in estimation process after studying the customer's requirements is to divide the project into independent functional parts (tasks). For example, if we are evaluating a mobile application for a standard online store, then the division may look something like this:
- Catalog
- Shopping cart and pay for orders
- Store news
- Contacts
After that, the software engineering team determines the time spent on the implementation of all the listed tasks:
Step 2: Calculation of the project development time
No matter how hard the developers try, their timing estimate is extremely rarely proper. So, first of all, starting from the complexity of the project and the team's experience, we define insurance: the amount of additional time required to resolve various contingencies. Usually, insurance looks like a certain multiplier (percentage) by which the total development period is increased.
Next, we need to determine the order of stages of work (workflow). Regardless of the methodology used (agile or waterfall), we need to know how our team performs various types of work. In our mobile app example, the order might look like this:
At first, the back-end and the user interface are developed independently of each other. When they are completed, parallel programming of the application begins for different platforms. If all stages are completed, the project will be considered completed.
Now we have all the necessary information and can start calculating the timing:
- In the case of Waterfall: we sum up the amount of time for each type of work (UI / UX, Back-end, etc.), add insurance to them, and, taking into account their sequence, we find the longest sequence of work, which, in fact, represents the total number time required to implement the project.
- In the case of Agile: taking into account the sequence of work, we determine the time for implementing each of the tasks (catalog of goods, news, etc.), after which, by summing them up and adding insurance, we get the deadline for the project.
Step 3: Calculate the cost of project development
The next thing we should get is the project's cost, which is usually formed from two types of costs: general monthly expenses (office rent, payment for servers, software licenses, etc.) and salaries of the direct executors of the project. As for the management salaries, they are more suitable for the first category since they are a more ''passive'' expense item. In some cases, they can be optional (for example, when it comes to a small team of freelancers).
''Total monthly expenses'' are calculated very simply: we divide their amount by the average number of days in a month and multiply by the number of calendar days required for the project.
The software project estimation of costs for performers' salaries depends on the development methodology used:
- In the case of Waterfall: for each employee, we divide the monthly salary by the average number of working days in a month and multiply the result by the number of working days required to implement the stage of work for which he is responsible; at the end, we summarize all payments.
- In the case of Agile: for each employee, we divide the salary by the average number of working days in a month and multiply by the number of working days required to implement the entire project. In the end, we summarize the results.
Now, knowing the cost of the project (payments to performers + total costs), we can get the final cost by adding a couple more things to it:
- Profit: everything is quite simple here; we either add the desired percentage of the project cost or add the corresponding item to the “total expenses” (if we want to receive a fixed monthly income).
- Taxes: everyone considers them a little differently due to various taxation systems and ways of evading them. In some cases, taxes can be considered as some average percentage of the cost of the project with profit included.
- Commission of the sales manager: depends on your terms of cooperation, if you pay a percentage of the transaction, then this is a percentage of the cost, profit and taxes, and if you pay a portion of the profit, then obviously you count it as a percentage of the pledged profit obtained in the first paragraph.
So now we have the final cost of the project. But what if the client, having heard the result, asks us: “What if we do without X?”.
G-Estimator as a software estimation project is a convenient way to calculate the number of hours and money needed to develop an IT project. In the next section, we will take a step-by-step guide on how to estimate a software project with the help of a G-Estimator.
A step-by-step guide on G-Estimator
Step 1: Average hourly rate
Enter the approximate daily rate you are willing to pay to develop the application. It can be your in-house team member's average daily cost or the rates you are paying to your technology partner.
Step 2: Platforms
Next, we select the platforms based on which our application will be developed. For example, let's take mobile development for two platforms, iOS and Android.
Step 3: Application size
Next, we define the size of the application: small, medium, or large. To determine what size application you need to develop — just look at the description of each type.
Step 4: UI Design
You can choose MVP if you want to check the viability of a product, basic - when design customization is important and polished — when you need a completely custom design with unique elements.
Step 5: Users & Accounts
There are options like: Email / Password Sign Up, Facebook Sign Up, Twitter Sign Up, Google Sign Up, LinkedIn Sign Up, and others.
Step 6: User Generated Content
In this section, you add all the interactive features for your users, for example, Dashboard, Activity Feed, Media Uploading, User Profiles, and more.
Step 7: Mobile specific features
In this section, you can add specific features that are needed for your platform: App Icon Design, Device Sensor Data, Health Data, Apple Watch, and others.
Step 8: Dates & Locations
Here you choose everything related to scheduling, planning, and location: Calendaring, Display of Map data, Geolocation, Bookings.
Step 9: Social & Engagement
In this section you have the option to add features such as Messaging, Forums or commenting, Social Sharing, Push to Facebook Open Graph and Push Notifications.
Step 10: Billing & eCommerce
In this section, we add features directly related to payment and financial transactions: Shopping Cart, User Marketplace, In-App Purchasing, Payment Information Collection, and others.
Step 11: Admin, Feedback & Analytics
Here we choose whether we need such functions as CMS Integration, User Admin pages, Moderation / Content Approval, Support, etc.
Step 12: External APIs and Integrations Days
This point includes: Connect to one or more third-party services, An API for others to integrate with your app, SMS Messaging, and Phone Number Masking.
Step 13: Security Days
This clause includes all security-related features, including SSL Certificate-based Security, DDoS protection, and Two Factor Authentication.
Step 14: App Specific Development Days
Here you can select additional functions such as App Specific Development and Project Managers.
Step 15: Fill Out the Form
The final step is to fill out your email so you can get your approximate estimation of a software project.
Conclusion
Summing up, we can say that assessment is one of the most critical stages in developing any IT project. Only with a high-quality approach to this stage, both on the part of the performer and on the part of the customer, can a result be achieved that will not disappoint any of the parties.