article



Evaluating COTS Using Function Fit Analysis
by Lori Holmes

Introduction

Today many organizations are attempting to reduce software development effort and schedule by purchasing off-the-shelf solutions rather than building them in-house. This strategy can be very cost effective if the Commercial Off-The-Shelf (COTS) solution meets the customer requirements. Unfortunately in numerous situations, COTS solutions have proven to be a great disappointment. This is largely due to the lack of fit in meeting the required functionality. The result is a major COTS enhancement project comparable to a custom developed solution in terms of overall project schedule and cost. In one such situation, it was found that the COTS solution fit only 2% of the requirements. 98% of the solution would have to be delivered as new development and enhancements to the COTS package. Luckily in this situation, the problem was identified early in the process and the proposed COTS solution was rejected.

The situation described above and similar experiences highlight the fact that it is important to conduct a complete and accurate assessment of how well a COTS solution fits the requirements and not rely on vendor claims of high compatibility. This article will discuss a technique that has proven to be successful for projects in evaluating the compatibility of COTS products to customer requirements. The technique, called Function Fit Analysis, is based on function point analysis. Function point analysis 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 necessary to meet customer requirements.

Function Fit Analysis provides the ability to:
  • Document functional requirements in terms understandable to users and technicians
  • Identify the functional gap of the COTS products
  • Quantify the effort necessary to enhance the COTS package
  • Provide input into the "make versus buy" decision making process
Since Function Points are a key element to this process it is important to understand their definition. "Function points are a measure which represents the functional size of application software." (International Function Point Users Group, Function Point Counting Practices Manual, Release 4.1.) Function Points are a unit of measure that represents the work products of software developers. They are used to quantify the deliverables of the software development process. When combined with other data such as effort and defects, metrics can be developed to aid in planning and managing software projects. Function Points were originally developed as a communication tool for defining functional requirements in non-technical terms. To accomplish this they describe functionality from the end-user's perspective of how it supports their business functions.

To count function points it is necessary to understand the counting rules as well as the user requirements of the project or system being assessed. For that reason it is important to have knowledgeable participants and supporting documentation available when conducting the count. The function point process as defined by the International Function Point User Group (IFPUG) follows:

The Function Point Analysis Process


There are three types of function point counts; they are Development project count, Enhancement project count and Application count. Determining which count to be produced is the first step in the process. The different types of counts and how they are used in the Function Fit Analysis process are described below.

Development project counts are used to size projects with totally new functionality and include all functions being developed. In Function Fit Analysis the development project count would compare to the 'custom developed' alternative. Enhancement projects are modifications to existing systems and include application functions that are added, changed, or deleted. This is the type of count used when evaluating specific COTS alternatives in the Function Fit Analysis Process. It identifies the enhancements necessary in the COTS product for it to meet customer needs. The final type of count is an Application count. This 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).

To complete a function point count, user recognizable functions are identified and evaluated. From a user's perspective, a computer application assists them in doing their job by providing five (5) basic functions. Two of these capabilities address the data requirements of the business and are referred to as data functions. Data functions consist of Internal Logical Files (ILF) and External Interface Files (EIF). Three of these capabilities address the user's need to access and manipulate data stored on the files and are referred to as transactional functions. Transactional functions consist of External Inputs (EI), External Outputs (EO), and External Inquiries (EQ).

The Five Components of Function Points

Data Functions
  • Internal Logical Files
  • External Interface Files
Transactional Functions
  • External Inputs
  • External Outputs
  • External Inquiries
The first data function allows users to utilize data they are responsible for maintaining. For example, a user may be responsible for adding, changing and deleting employee information on the Employee Master file. Therefore the user is responsible for maintaining the file. Logical groupings of data that are maintained by an end user of an application are referred to as Internal Logical Files (ILF).

The second function of an application provided an end user is also related to logical groupings of data. In this case the user is not responsible for maintaining the data. The data resides in another application and is maintained by another user. The user of the application being counted requires the other application's data for reference purposes only. For example, a user may require the ability to access security information from the security application. The user does not have the responsibility for updating security information but must reference it to complete their job. Groupings of data from another application that are used only for reference purposes are defined as External Interface Files (EIF).

The remaining functions address the user's capability to access the data contained in ILFs and EIFs. This capability includes maintaining, inquiring and outputting of data. These are referred to as transactional functions.

The first transactional function allows a user to maintain Internal Logical Files through the ability to add, change and delete the data. For example, a user can add, change and delete employee information on the employee master file. In this case the user is utilizing a transaction referred to as an External Input (EI). An External Input gives the user the capability to maintain the data on ILFs through adding, changing and deleting its contents.

The next function gives the user the ability to produce outputs that contain calculations. For example a user may require a report that contains expense data with derived information. The report is produced using information that they maintain and information that they reference. In function point terminology the resulting report is called an External Output (EO).

The final capability provided to users through a computer application addresses the requirement to display specific data from files. In this situation there is no manipulation of the data, it is a direct retrieval of information contained on the files. For example a user can inquire on employee data by inputting a social security number and retrieving employee data. These transactions are referred to as External Inquiries (EQ).

Two adjustment factors are applied to calculate the function point count. The first adjustment, functional complexity, assigns weights to each functional component based on data elements and processing logic. The second adjustment, the Value Adjustment Factor, evaluates the operational complexity of the application.

Function points are just one piece of information that is used in the Function Fit Analysis process. The Function Fit Analysis process consists of five primary steps that are described below.

Function Fit Analysis Process


Step 1: Requirements Function Point Analysis

This step is used to identify and document exactly what functionality is necessary to meet the customer needs. This assessment should be completed early in the development life cycle to provide insight into the scope of the project. It can be completed early because it is based on what functions are to be delivered and not how they are to be delivered. During this step, a function point count is completed based on documented functional requirements or by analyzing the functions of an existing system to be replaced. It is important to focus on the 'to be' version of the system and to identify all of the functions necessary to meet the users' needs. The analysis should focus on quantifying user requirements only and not on potential COTS solutions. The result of this step will be a development function point count and a detailed listing of the functions necessary to meet the requirements. For example, a course registration application may contain the following functions:

User Functions
Add training course information.
Modify training course information.
Display training course information.
Establish training sessions.
Add participants to training sessions.

Step 2: COTS Functional Evaluation

This step involves reviewing the various COTS choices and comparing their functionality to the requirements documented in the first step. From a function point perspective, this is an enhancement project count since we are starting with a system and identifying changes 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:

A. Exist in the COTS with no change required [Unchanged]
B. Exist in the COTS but require enhancements to meet the requirements [Change]
C. Need to be added to the COTS product [Add]
D. Exist in the COTS but are unrelated to the requirements and will not be used [Unused]
The resulting enhancement function point count will summarize how well the COTS product matches the functional requirements. Using the example functions from above, the COTS evaluation function point count will contain the following:

User Function Enhancement Activity
Add training course information. Unchanged
Modify training course information. Change
Display training course information. Change
Establish training sessions. Add
Add participants to training sessions. Add

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

Step 3: Functional Fit Analysis

This step is used to apply a percentage to the 'fit' between the requirements and the COTS product. By comparing the function point counts from the previous two steps a fit can be determined. One of the first tasks is to define what 'fit' means in the minds of all those involved in the assessment. There are different ways of looking at fit depending on the approach used. In Function Fit Analysis (FFA), 'fit' is defined as the amount of out-of-the-box functionality that can be utilized without any modifications. Using this definition, a comparison of the requirements function point count to the COTS function point count will result in calculating the 'fit' percentage of the COTS. (FFA fit = Unchanged FPs ¸ Total FPs from Step 1)

In addition to the 'fit' calculation, analysis of the percentage of added and changed functions is also useful. These percentages can be calculated by identifying the 'Added' and 'Changed' functions from Step 2, calculating a function point count, and evaluating it against the total function point count from Step 1.

The 'Added' function point count will show the amount of user requirements that are not supported at all in the COTS product. Obviously if this is a large number it may be better to look at a different alternative or consider a custom developed solution.

Identifying 'Changed' functions is helpful in evaluating whether to enhance the COTS to meet the business requirements, modify the business process to meet the COTS, or a combination of both. This analysis provides an opportunity to revisit certain functions with the users to see if the requirements are flexible.

The following table details the Added, Changed, and Unchanged Function Points for a project.



Identifying and quantifying the 'Unused' functions in the COTS product can be helpful in a couple of ways. First, they are used to determine how much of the purchase COTS solution will not be utilized. Second, reviewing these functions with users may help to generate ideas on how to improve the business process in the future.

Knowing the 'fit' numbers is one piece of information that is helpful in the make/buy decision. The other piece of information is the estimate to deliver the functions in the various options. This leads us to the next step in the Function Fit Analysis Process, Project Estimates.

Step 4: Project Estimates

The function point data from the previous steps is used to develop the project estimates in Step 4. This step uses a top-down approach to estimate effort, staff, and schedule for each alternative under review. The first estimate will be for the 'custom developed' alternative. The are two components to developing an effort estimate. The first is project size, which is the function point count from step one of the Function Fit Analysis process. The second component is an evaluation of the project attributes. Project attributes are the factors that, in addition to project size, influence software development productivity. Four major categories of attributes are evaluated.

Personnel and Management - focuses on knowledge and experience of I/S and user personnel involved in the project.
  1. Process and Methods - focuses on what development and project management methods are used and the extent the methods are followed.
  2. Technology and Tools - evaluates the technology being utilized and the effectiveness of the tools available to the developers.
  3. Environment and Support - evaluates the development environment in terms of computer resources, administrative resources, and overall working environment.
Once the size and the project attributes are determined an effort estimate can be developed. This can be done using various industry tools, industry benchmark data from external consultants, or organization specific historical data. The estimator will select the appropriate productivity rate to use based on the development project function point size and the project attributes. To calculate the effort estimate, the function point count is divided by the productivity rate (Project Effort = Custom Developed Project size ¸ function points/hour). Schedule and staffing estimates are derived from the project effort incorporating organizational constraints such as staff limitations and pre-set schedules.

A similar process is followed for each COTS option under review. For this analysis the project size is based on the enhancement function point count completed in step two of the Function Fit Analysis Process. Project attributes should be reviewed to see if the previously completed assessment applies to the COTS alternatives. Enhancement productivity rates differ from development productivity rates depending on project size, so the effort estimates for the COTS alternatives may not use the same productivity rate (function points/hour) as the custom development option.

At this point there is enough measurement data about the functional requirements to feed to the Make/Buy decision step.

Step 5: Make/Buy Analysis

The function point information and estimate data from Steps 1 through 4 is used in Step 5, the Make/Buy Analysis. The Make/Buy Analysis is the decision making process to determine whether to implement a COTS solution or build a custom solution. Based on the information from the previous steps the following are some initial decision points:

Buy As Is If:
  1. The users are prepared to live with the COTS functionality.
  2. The users are willing to change their business processes to adapt to the COTS application.
  3. The sensitive schedule is an overriding factor. This means delivering the functionality in a certain time frame takes precedence over how the users would like the business process to be. Basically, the schedule is the highest priority and it drives the decision.
  4. Development and future maintenance funding is limited. If there isn't going to be any money available to maintain or enhance a modified or developed system then it may be best to rely on the COTS provider for enhancement and maintenance support.
Customize COTS If:
  1. The cost to customize the COTS product is more viable than building. Development costs as well as ongoing support and operation costs should be included.
  2. Minor customization is necessary to meet the user requirements.
  3. The schedule is relatively sensitive. If developers can take advantage of existing COTS functionality and modify a minimal number of functions, then the development time frame will be shorter. If a short schedule is a requirement, then business functions should be evaluated to determine if they could be changed to utilize the COTS functionality, therefore limiting the customization.
Custom Develop (no COTS) If:
  1. A significant number of requirements are not available. If the user requirements are very specific and cannot be changed to use the existing COTS functionality, then building them from scratch is the best option.
  2. Initial cost of the COTS, including enhancement and support dollars, is higher than developing and supporting the application in-house.
  3. Ongoing upgrades are cost prohibitive. This point considers the cost of implementing future upgrades to the COTS product. If installing the upgrades requires rework of the customizations then it is possible that significant development effort would be incurred each time an upgrade is installed. If this situation occurs, it would not be cost effective.
In addition to evaluating the development effort the following factors should be included in the Make/Buy Analysis:

COTS Costs
Make sure to include all the costs associated with the COTS product. This would include Evaluation costs, Initial purchase costs, Seat or Site license costs, and Annual support and operation costs.

Access to package specifics
Discuss with the COTS vendor what technical components of the product will be available to the in-house developers. For example, will they have access to the data model or process model? What 'hooks' are available to the developers for adding custom code? Is there a coding standard the COTS provides to ensure custom built components will have the same look and feel as the core product?

Ownership of Customized Software
Once the COTS solution has been purchased and customization is completed there may be a gray line defining who owns what. Make sure you understand the rules up front.

Customization Responsibility
Determine up front who will be making the changes to the COTS and what the associated costs will be. This may also dictate who owns the customized code.

Existing Database Structure
Some organizations have strict guidelines on naming conventions and structures. It is beneficial to examine the COTS database structure to see if it can easily comply with your organization. If it does not, a decision can still be made to change the organization rules to meet the COTS.

Existing Computing Architecture
This will be important if the COTS product needs to communicate with other in-house, non-COTS, applications. The compatibility should be examined to determine the amount of work necessary to integrate multiple systems.

Once the above information is gathered and analyzed the Function Fit Analysis Process is complete and an appropriate Make/Buy decision can be made. The data and findings from the process should be documented and stored in a repository for reference. The information may be helpful in future analyses of this kind.

Summary

There is a great deal of information that is necessary to make an informed decision of whether to utilize COTS in development efforts or not. The Function Fit Analysis Process provides an excellent framework for information gathering, evaluation, and decision making. It communicates functional requirements in objective terms so the COTS can be evaluated from a 'fit' perspective and identifies functions to evaluate for possible business process reengineering efforts.

Since Function Fit Analysis provides a size metric for the development options it enables estimates to be made in terms of effort, staff, and schedule. Without knowing 'what' needs to be delivered it is impossible to determine a good estimate of how long it will take to deliver it. Function Fit Analysis gives us the 'what'.

In today's world of providing things better, faster, and cheaper it can be difficult to determine the best option. The use of COTS products has been touted as a faster and better method for software development, but that is not always the case. Function Fit Analysis is a valuable technique to help evaluate purchased/customized solutions and make the best and most appropriate decision for each organization and each project.

About the author
This article was written by Lori Holmes, a Managing Consultant with Q/P Management Group, Inc. and was first published in the STC Crosstalk publication February, 2000.

© Copyright 2000-2002. Q/P Management Group, Inc. Proprietary and Confidential. All Rights Reserved