Tuesday, April 15, 2014

Applying Function Points to COTS applications



Applying Function Points to COTS applications

My first project in Function Point Analysis was to count a COTS (Commercial off the shelf) application. I must admit that, initially, I have had a very tough time in leveraging FP principles to that application. But in the end, I was able to manage it well. In this document I will share some of my findings while applying Function Points to COTS applications.

What are COTS?

The traditional definition of COTS software is the software sold by a commercial software vendor, usually with a maintenance contract for a defined period of time.

The basic purpose of buying COTS software is to reduce overall risk, complexity and costs associated with the development of the product and maximize return on investment (ROI). The cost mainly includes,

1.       Development cost

2.       Resource costs

3.       Research costs

While in many cases this may be a wise strategy towards fulfilling the business needs, there is no guarantee that the use of COTS will result in a cheaper, faster, and higher quality solution for meeting those needs over in-house development.

There is a prevailing belief, or rule of thumb, within the IT Industry that if a software solution can be purchased that will provide at least 80% (the 80/20 rule) of the desired business functionality it will be more cost effective to buy rather than build. However, this “rule of thumb” may not always hold true and many programs end up being over budget, late or even ultimately cancelled.

The organizations can do cost benefit analysis using Function Points to evaluate this decision.

Having said this, I would like to inform readers that now days, there is a growing trend of buying a product from third party vendor simply because it provides more value in terms of cost.

Important Facts about COTS application –

Being developed by a third party vendor, many times, most of the functions, components, and database are kept hidden to the buyer. The software vendor due to its strategic, marketing and legal issues tends to hide important/ core information from the buyer.  So for the buyer, it appears to be a black box. This adds to the complexity of counting such applications.

There are two ways in which these COTS products can be bought – AS IS or With Customization. Most of the times, it requires some customization, configuration of the COTS products to be able to fit them into buyer organization’s environment.

All these aspects should be considered while calculating Function Points.

Guiding Principles –

Here are some of the guiding principles.

1.       COTS products can provide “n” number of functions many of which may not be used by the buyer organization. Such redundant functions are not considered while calculating FP.

2.       Functions which are customized via modification, addition should be considered.

3.       Functions which are deleted or disabled as part of customization are not considered.

4.       Functions which are planned to be used in 2nd phase are also not considered while calculating initial baseline count. These functions once deployed in 2nd phase can be identified and retrofitted to the initial baseline count of the application.

5.       The interfaces developed as part of COTS fitment should be considered as appropriate.

6.       Functions which are built one time for COTS fitment are also considered in the initial baseline count.

7.       The freebies or additional modules which may come along with the COTS product but which are of no use to the buyer organization can be skipped.

8.       The internal database created or customized for COTS fitment should be considered.

9.       The database from COTS application (if known) which is being used should only be considered. The database related to the redundant functions should not be considered.

10.   If a function is repeated in different modules of the COTS product, then it should be considered only once.

Simplifying method –

While counting any COTS software, use following steps

1.       Refer operational manual/ user manual which would provide an insight on the functionality offered by the software product.

2.       Request for an in-depth demonstration of the software either from the vendor or Business Analyst/ SME.

3.       Study “Help” function to understand the functionality provided by the software.

4.       Determine the functions in scope.

5.       Understand and identify all transaction functions after referring to the user manual and software demo.

6.       For each transaction function, identify logical data base. This is not an easy step especially for any rookie counter. Taking help from a business analyst or project manager for determining database structure is advisable.

7.       After identifying data functions and transaction functions, apply “Default” complexity method to determine the complexity of those functions. The “Default” complexity method assigns, “Average” complexity to transactional functions and “Low” complexity for data functions. (This method is even supported by NESMA)

8.       You can also apply NESMA indicative or estimated method to determine ballpark size in case detailed information about data functions and transaction functions is unavailable

9.       However, stick to one approach/ method for both data and transaction functions

10.   Make and note assumptions wherever possible with the help of SMEs or Business Analyst

I am sure above notes would help you fine tune your approach in counting COTS applications.

Size –

A caution of note to all the readers - FP count of COTS applications may run into 50K or even 100K function points so it is imperative to use a robust recording tool to minimize counting errors, time and resources. Workbench tool from Charismatek and Scope from Total Metrics are of good help.

Applicability –

Forecasting applications, free and open source softwares, SAP applications, Peoplesoft applications etc. can be counted using above practices.