custom software boxed

Today, many organizations reduce homegrown software development efforts by purchasing off-the-shelf solutions instead of building them in-house. This strategy can be very cost effective if the Commercial Off-The-Shelf (COTS) solution meets specific company needs. Unfortunately, in many situations, COTS solutions disappoint. As a result, companies usually have to undertake a major COTS enhancement project that is comparable in breadth to building a custom developed solution. Thus, it is important for companies to not rely on vendor claims of high compatibility alone. Instead, organizations should conduct their own compatibility assessments. One technique, called Function Fit Analysis, is particularly useful. The technique, itself, is based on function point analysis – which is the decomposition of an existing or planned system -based on the user's perspective of functional requirements. Function points therefore can be used to evaluate various COTS solutions, select the best solution, and determine the degree of enhancement work that is necessary to meet customer requirements.

Understanding Function Points

Since Function Points are a key element of this process, it is important to understand this term. Function Points are used to quantify the project deliverables of the software development process.

There are three types of function point counts listed below:

  1. Development project counts - are used to size projects with totally new functionality and these counts include all functions that are being developed. In Function Fit Analysis, the development project count compares directly to the 'custom developed' alternative.
  2. Enhancement project counts - include application functions that are added, changed, or deleted. This count type is used when evaluating specific COTS alternatives in the Function Fit Analysis Process as it identifies all the enhancements that are needed.
  3. Application count – essentially is the function point count of any installed system. Once a system is in existence, this is the function point count of all the functions provided to the user regardless of how they were delivered (i.e. developed versus COTS).

Function Fit Analysis Process

commercial shelf software

Step 1: Requirements Function Point Analysis

This step is used to identify and document exactly what functionality is necessary to meet the customer needs. During this step, a function point count is either completed based on documented functional requirements – or by analyzing the functions of an existing system. Further, the analysis should focus on quantifying user requirements only - and not focus on potential COTS solutions.

Step 2: COTS Functional Evaluation

This step involves reviewing the various COTS choices and comparing this functionality to the requirements that were determined in the first step. From a function point perspective, this step is an enhancement project count - since we are starting with a system and identifying the changes that are necessary to meet the functional requirements. Using the function point count from step one as a guide, each database and panel in a COTS alternative is reviewed to identify functions that:

  1. Exist in the COTS with no change required [Unchanged]
  2. Exist in the COTS - but require enhancements to meet the requirements [Change]
  3. Need to be added to the COTS product [Add]
  4. Exist in the COTS - but are unrelated to the requirements and will not be used [Unused]

The COTS enhancement project function point count will include the functions that are being added and changed. The first analysis of the results should compare the function point size of the COTS enhancement project to the function point size of the custom developed solution. If the enhancement function point size is not significantly less than the custom developed solution, then the COTS solution might not be the best 'fit'. The second step of this analysis is to evaluate the 'Unchanged' functions - since this particular function will represent what portion of the solution 'fits' the user requirements. Of course, the 'Unused' functions reveal just how much of the COTS product is not related to the requirements.