Size and Effort estimation method for Mobility Software Projects
In my previous article “Characterization of Mobility Projects”, I had promised to write another article addressing the effort estimation methodology for Mobility Software Projects. It took some time to bring this out, as I was involved in some personal commitments during the period. The details are included based on the first-hand experience of conceptualizing, developing, piloting and successfully implementing the said method in live mobility projects.
Background:
We execute various kinds of bespoke projects using different software development methodologies and models. We apply Function Point estimation methodology for all conventional business applications. However, in recent times we observed certain limitations in the use of FPA, for the software projects, where the functionality was around mobile hardware.
We researched and brainstormed to select a suitable functional size measurement procedure for Mobility projects (Mobile centric software applications), and while doing so, we had decided that the selected method should give emphasis on the characteristics of the mobility software. Hence the first step was to list down the characteristics of the project. The article “Characterization of Mobility Projects” summarizes the outcome of this step.
The next step was to identify a globally known sizing methodology. We studied various well-known Function Point Analysis (FPA) methods based on IFPUG. COSMIC, NESMA guidelines, but noticed that all these methods had some gaps and not addressing our initial requirement of meeting the Mobility Project Characteristics, though the above methods, could also be used for estimating the size of the mobility applications with certain assumptions. In this way, our hunt for the method continued and finally, we narrowed down to a method, which in our opinion, was quite adoptive to the mobility software characteristics. This method is called as Functional Sizing Method (FSM) as recommended by FiSMA (Finland Software Measurement Association) guidelines. This method is a general parameterised size measurement method for all types of software. However, according to our assessments, it is very well suited for mobility projects, though not as popular as IFPUG FPA. FiSMA method is also ISO/IEC 14143-1 standard, like other methods.
Another requirement of the method was that ‘the method can be used to estimate the size in the early stages of the project’, when there are many unknowns. To satisfy this requirement, we had tailored or in a way deviated from the standard computing procedure as stated by FiSMA. This article will also explain the tailored procedure wherever done.
Functional Size Measurement (FSM) Procedure:
Underlying the principle of ‘User needs’, which is specified as ‘Functional Requirements’ and they are implemented as ‘Services’ in the mobile applications. FiSMA identifies 7 Base Functional Components (BFC) classes. BFC is an ‘elementary unit’ of the Functional User Requirement which is subjected for counting and to arrive at the Functional Size. There ae 7 BFC Classes, as listed below. And FSM is computed for each one representing one group of service.
1. Interactive end user navigation & Query Services
2. Interactive end user Input services
3. Non-Interactive end user output services
4. Interface services to other applications
5. Interface services from other applications
6. Data storage services
7. Algorithmic services
Each one of the above is described briefly in the context of mobility project, in below section.
1. Interactive end user navigation & Query Services
User-interface objects that are used to interact with the system without storing or manipulating (called as: maintaining) persistent data in the system are included in this discussion. The word ‘maintaining’ data refers to the services where data is changed which includes Creating, Updating or Deleting of data. However, in this set of objects (BFC), it is stated that, the data is not maintained.
Amount of size units counted in this BFC, depends upon the number of different data items of the BFC measured and the number of reading references needed to the entity.
Formula for finding out the size units in this category of BFC: 0.2 + n/7 + r/2 , where n is number of data items, r is the number of reading reference.
The following entity types are considered under this BFC:
? Icons – an interface object to start an application
? Login/ Logout dialog – a part of interactive user Interface
? Menu – user interface used for selecting an operation from available list of operations
? Selection List – A part of the user interface, showing a list of choices of acceptable values
? Data Enquiry - A part of User Interface which us used to displays the data content to the user
? Generating Dialogue – A part of interactive user interface connected with other services like report or query
? Browsing list – is a part of user interface that shows a list of similar data (static data list view)
Amount of size units counted depends upon the number of different data items of the BFC measured, and the number of reading references needed to the entity types such as:
Note: To simplify the procedure, we have considered n = 1 for ‘Icon’, ‘Menu’, and ‘Selection list’ and n = 2 for rest of the BFC types.
Refer the following section from an example (of estimation) for clarity:
2. Interactive end user Input services
In the mobile applications we come across the need of interactive user interface functions that are used in persistent data maintenance. As stated earlier, 3 maintenance functions such as Create, Modify and Delete of data records from the system storage are performed in this BFC.
From a user’s point of view, this BFC will perform the business tasks that change the data contents of the system. From the information system (technology) point of view, end-users enter data and manipulate the data stored in the System.
Amount of size units of input functions depends on the number of different data items of the BFC measured, the number of needed reading references and the number of needed writing references to entity types.
This BFC class is measured by dividing it into 3 types such as:
- 1-Functional Input dialog – Supports 1 of the 3 maintenance types
- 2-Functional Input dialog - Supports any 2 of the 3 maintenance types
- 3-Functional Input dialog - Supports all 3 of the maintenance types
Formula for finding out the size units in this category of BFC: m x (0.2 + n/5 + w/1.5 + r/2), where m = 1 or 2 or 3 (depends on BFC types), n is number of data items, w is the number of writing reference, r is the number of reading reference.
Note: To simplify the procedure, we have considered w and r = 1 in the initial FSM estimates, this would also go well with the practical experience of lack of complete information at this stage of the project.
Refer the following section from an example (of estimation) for clarity:
3. Non-Interactive end user output services
This service specifies all parts of the user interfaces that are non-interactive and outbound to the user.
This type of service will not maintain persistence data, but they may use and/or manipulate the data maintained in the system.
Amount of size units of ‘output services’ depends on the number of different data items of the BFC measured and the number of needed reading references to entity types.
This BFC class divided into 4 BFC types
- Output Forms: like Receipt, Bill – having a same format and fit to a page
- Reports: Like Sales Report, Status report – are printed or displayed whose layout may vary within a specified framework
- E-mails & text messages – electronically transmitted output documents which have standard structure
- Monitor Screen outputs: Continuously displayed on the monitor, which may be regularly updated
Formula for finding out the size units in this category of BFC: 1 + n/5 + r/2, where n is the number of data items and r is the number of reading reference.
Note: To simplify the procedure, we have considered r = 2 in the above formula form initial FSM estimates.
Refer the following section from an example (of estimation) for clarity:
4. Interface services to other applications
This BFC class represents the Interface services (or data transfers) from the mobile system to other external applications or devices
The amount of size units of this BFC class depends on the number of different data items of the BFC measured
3 outbound interface functions in this BFC types
- Messages to other applications are data groups sent on-line, usually in real-time, to any other application.
- Batch records to other applications are data groups written to a temporary file for transferring to another application.
- Signals to devices or other applications are strings or single pieces of information sent to any other application or a device.
Formula for finding out the size units in this category of BFC: 0.5 + n/7 + r/2, where n is the number of data items and r is the number of reading reference always considered as 2 (r=2) for simplicity. The simplified formula: 1.5 + n/7
Refer the following section from an example (of estimation) for clarity:
5. Interface services from other applications
This BFC class specify all automatized data transfer functions, receiving data groups provided and sent by any other application or any device.
Amount of size units of inbound interface functions depends on the number of different data items of the BFC measured, the number of reading references and the number of writing references to entities.
In this FSM method inbound interface functions are divided into three BFC types :
- Messages from other applications are data groups received on-line, usually in real-time from any other application.
- Batch records from other applications are data groups received off-line from any other application.
- Signals from devices or other applications are strings or single pieces of information received from any other application or device (for example a sensor).
Formula for finding out the size units in this category of BFC: 0.2 + n/5 + w/1.5 + r/2, where n is the number of data items and r is the number of reading reference and w is the number of writing reference; For simplicity w and r are considered as = 1. (i.e. w=1, r=1), The simplified formula reduces to 1.37 + n/5
Refer the following section from an example (of estimation) for clarity:
6. Data Storage Services
This BFC class specify a group or collection of related and self-contained (persistent) data which the user requires the software to provide with the feature of storing the data.
These data are often called as entity types, data groups, data classes or objects of interest, data store
This BFC class of services store data and make it available for maintenance, inquiry, or output.
Data storage services are typically implemented as tables in relational databases, or as records in data files in general.
Amount of size units of data storage services depends on the number of different data items i.e. the number of attributes related together in the self-contained group or collection.
Data storage services are divided into two BFC types:
- Entities or classes are logical components of the data storage service, representing fundamental things of relevance to the user, about which persistent information is stored.
- Other record types include all the tables and logical records, which are not counted as entities or classes. (for example, system logs, temporary tables),
Formula for finding out the size units in this category of BFC: 1.5 + n/4, where n is the number of data items.
Refer the following section from an example (of estimation) for clarity:
7. Algorithmic & Manipulation services
This BFC class: Algorithms are used to define the business rules. They also independently manipulate data routines.
Algorithmic manipulation may consist of arithmetic and/or logical operations.
Amount of size units of algorithmic and manipulation services depends on the number of different operations performed and the number of different variables needed.
This BFC Class is divided into six BFC types such as the following:
- Security routines are manipulating services providing security services like encryption, decryption, advanced authorisation etc.
- Calculation routines are manipulating services providing arithmetic or logical counting services.
- Simulation routines are manipulating services providing simulative calculating services.
- Formatting routines are manipulating services providing special format conversion services (i.e. not only typical, simple editing). An example of formatting routines could be changing table rows to graphics.
- Database cleaning routines are manipulating services supporting data storage maintenance, removing unnecessary records and combining or cumulating data items based on user-defined rules. These routines are often scheduled and performed in batch mode.
- Other manipulation routines include all independent user-defined data manipulation services, which are not counted as any other algorithmic and manipulation BFC type functions.
Formula for finding out the size units in this category of BFC: 0.1 + n/5 + r/3, where n is the number of data items and r is the number of operations.
Refer the following section from an example (of estimation) for clarity:
Next step is to sum up all the functional size derived from the above 7 BFCs as below:
The estimations are always done with many assumptions due to unknowns, so the estimation can be nearer to the actual, if and only if the value of the estimation parameters (features, environments, number of fields, number of writes so on) considered all fall near the actual. However, these idealistic situation does't exist. So we should always safeguard our estimates with some incremental values that is meant for covering/ mitigating the risk of low estimation.
In our estimation model, we have considered two types of incremental values based on certain listed factors. One is called as Complexity factor and the other as Buffer factor.
Complexity Factors:
We can use the following 13 groups of complexity factors choosing one option from each group and later averaging it up. Apply the average % to the size as derived in above steps.
Buffer factors Parameters and Values (with 4 groups):
Select one from each group and sum the base points to get the overall Buffer factor % (apply this % on the Size derived after applying the Complexity factor)
In this article, I tried to provide as much information as I could. If you need any clarifications, please let me know. If you find this article useful, please comment. Thanks.
Senior Manager at Cognizant
4 年Thanks sir
Management Consulting and Training
4 年I have given the template in the article. You may please copy the title and the first row columns and use. If you need further help, send me that Excel to me I will help you. Thanks for writing.
Senior Manager at Cognizant
4 年Would it possible to share any case with data along with templates used?