During the estimation process of a software project, it is necessary to be very careful to avoid the pitfall of fractalization. Otherwise, you could face skyrocketing charges and costs.
To better understand that syndrome, we can take an example, trying to answer the question:
How long is the French coastline?
It depends on the break down level. At a scale of 1/1,000,000, the length of the French coastline is about 18,000 km. However maps do not show the same level of details at the scales 1 cm = 100 m and 1 cm = 10 km. And if we measure the coastline skirting each sand grain, the distance would be huge!
For instance, the coastline of the Kerguelen Islands, which is very serrated, may double in size depending on the fact of using a scale of 1/1,000,000 or of 1/90,000. (Reference)
Fractalization and project estimation
In order to estimate the cost of a project, it is crucial to identify the elementary components, the sum of which is the size of the software to be developed. But the trick is to stop at the appropriate size of decomposition.
If we take as an example a requirement such as: “the application that allows to manage client records”.
We can break it down as follows:
- The creation of a client record;
- The consultation of a client record;
- The modification of a client record;
- The deletion of a client record.
We could break it down with a higher level of granularity:
- The creation of a client record:
-> Show an empty entry grid;
-> Check that the SS number is valid;
-> Check that the post code and the city match;
The breaking down process can continue until the elemental instruction in the programming language are defined.
The higher the granularity level appears, the higher the evaluation of work should be done. Indeed, experience shows that when you estimate all operations separately at a very thin level, the charge of work skyrockets.
It is then essential to select a reasonable level of decomposition that is clear enough to avoid any ambiguity.
What decomposition level should you choose?
It is the main question, and the Function points (ISO 14143) approach answers it in a practical way. It is the notion of elemental process that defines granularity.
-> the smallest unit of activity that matches all the following points:
- is significant for the user;
- is a entire transaction;
- is autonomous;
- leaves the application in a coherent state.
Example 1: A functional requirement can indicate that a function must be provided to manage employees data. That requirement is divided into smaller units of work, such as “add an employee”, “change employee”, “delete employee” or “see employee”.
Example 2: The individual requirements may indicate that it is necessary to add different types of data about employees (such as the address, the salary and the related data), but the smallest significant activity unit for the user is “add an employee”.
Strengthened by the notion of “primary intent”, according to IFPUG, an elemental process is either:
- An inpout,
- An output,
- An enquiry.
Even if there may be an additional processes that comes up with elemental ones, it is the primary intention that will define its type.
For instance, a customer record entry and saving screen may display other elements (an output). The primary intention is to show data, the process will then only be an “entry”, in spite of displays, which are inputs.
Thus, the granularity is defined with respect to the user, and the actions he/she undertakes.
In the aforementioned example, and according to the IFPUG Function Points standard, the appropriate granularity level is:
- Creation of a client record;
- Consultation of a client record;
- Modification of a client record;
- Deletion of a client record.
The pitfall of fractalization is even more important in case of subcontracted projects. The subcontractor may possibly decompose the works way too much. The reason behind this is to specify more in details its client’s demand and to be sure they are on the same page, and it is more profitable for him/her.
It is then crucial that the decomposition rules are clear and precise, and it is even better if they are based on a standard such as the Function Points (IFPUG, COSMIC, etc.). This way, one can resort to an independent Function Point expert.