Systems Analysis and Its Role in COTS selection

By

Matt House

The ever-changing business climate has forced companies to rethink their approach to information technology.  Many companies are opting to use Commercial of-the-shelf (COTS) software packages.  COTS software is a vendor-supplied product that performs a specific function that can be integrated with existing systems (Morisio).  These packages can be sold or licensed to any company, and because of this it’s sold as a standard product with little or no modification of the source code.  The vendor still owns the intellectual property rights to the software (Morisio).  The development phase isn't the only place where companies can see cost savings; many COTS providers also provide support of their software during a licensing period.  The COTS buyer source selection process involves the matching of the company's requirements to the various producers’ capabilities while looking for the supplier with the smallest gap.  The use of COTS software requires companies to revise their processes and procedure to mirror the functionality of the COTS software. 

 

The requirements gathering phase maybe more important when planning for a COTS project than a traditionally developed system.  You always want to have your requirements defined the best they can, but when planning a COTS system it may be even more important because in a traditionally developed system you can always go amend your software development package unlike COTS where you get what you get.  Its not enough to know what your needs/wants are, they need to be prioritized because more often than not you will not be able find them all fulfilled by one package (Moriso).  When looking at the purchase of COTS products, it needs to be done from the perspective of buying any commercially available product.  For the most part COTS software is sold "as-is" and cannot be changed to fulfill a requirement.  It is for this reason requirements need to be well defined before you can begin the process of selecting your COTS systems. Steps for determining your requirements should include: determine what systems and actors will be involved, determine the importance of the systems features and their relationship to your quality model, the relationship to these features and your system throughput needs, and to make sure that the new COTS component with be within compliance tolerances (Carvallo).  Poor requirements definition can lead to the purchase of a system or component that does not fulfill all of your immediate needs and may not be flexible enough for changing needs down the road. This diagram shows a comparison between the traditional software development process and the COTS selection process (Carvallo). As you narrow your selection of potential systems, you will need to look at what trade-offs you may or may not have to deal with.  Since it is doubtful that all of your needs are going to be met, you may need to look at what end-user processes may need to change as a result of the limitations of your possible systems (Brownsword).  It is also gauge the functional performance of a proposed COTS application.  It isn't enough that a system does what you want it to; it needs to do it with a performance time that is acceptable with regard to your whole system.  Testing and profiling needs to be done to see how well a piece of software performs required functions (Putrycz).

 

Architecture is another aspect of selecting a COTS product that is a key aspect in the analysis of a COTS product.  Many COTS components are modularized so that they can be "plugged" into one's existing architecture (Yakimovich).  This is another reason why it is important to understand what will be required of a system before you can decide on a COTS system.  Architecture validation is key to helping ensure that your COTS software interfaces with your other existing components.  Your architecture needs designed un such a way that you will be able to facilitate linkage between your COTS software and other shared modules, libraries and data sources (Yakimovich).  The architecture must be robust enough to survive through many years of evolutionary change so as to prevent costly replacement.  This requires you to understand the market place so as to determine the long-term viability of the various offerings you are evaluating (Brownsword). He is a link to a video where a project manager discusses issues that arise from having architecture issues when integrating COTS components.

 

Another consideration of your source selection process is the interface definition to ensure that your COTS system can work seamlessly with its existing systems.  Do you need to develop middle ware to make your COTS product work with existing systems?  You need to make sure that your architecture allows this plug and play capability or that middle ware development costs and issues don't nullify the selection of a COTS product (Brownsword). You need to monitor these connections and allow for full integration testing of new patches and updates to make sure that these changes in the software do not affect you architecture integrations.  Modification of your COTS software is a two-headed monster; you get what you want, but you then have unique and more costly software to maintain because that maintenance is solely your responsibility (Chang).  Testing and test cases should be prioritized as to the level of severity a fault can have.  Integrations or functions that could severely affect the throughput of your system, as a whole should be tested early and with every new patch and release.  Lower impact integrations or functionality can be tested less frequently or if a new change directly affects them (Mariani).

 

Configuration management is just as important with COTS software as it is with in-house development.  All updates, patches and defect fixes must be thoroughly tested to ensure that it doesn't affect your core program functionality.  A small tweak can cause devastating impacts to targeted and adjacent systems thus requiring the full integration testing that can't be accomplished at the software supplier and can only be accomplished by the buyer’s team.  Therefore, there is a greater testing burden on the buyer of COTS software that in the traditional development (Brownsword).  In the traditional environment you know all the changes that have been made to the source code whereas in a COTS environment you're relying on the producer's testing who has no knowledge of your systems and potential interface issues.  So it is incumbent on the buyer to fully test the software before you put it into your production environment.  Failure to do can have devastating impact on your business's operation.  With COTS software you find yourself with more patches and enhancements than you do with in house designed software because of the numerous customers and varying needs of those customers. These numerous patches must be constantly tested to make sure that they do not interfere with your overall system functionality (Cortellessa). In traditional software development you go through a development phase followed by a maintenance phase but with COTS the needs of all their customers cause the producer and their customers to live in a state of constant development.  Therefore, the user must decide if and when they put software updates into their system.  In an effort to maintain a stable production environment a company may elect to incorporate updates in block point structures versus how the supplier releases their updates.

 

Another consideration in the selection and management of COTS developers is the management and assessment of the inherent risk with your potential suppliers.  Does your supplier have sufficient resources to support your deployment?  Are other customers a higher priority and does my project rate the A team or the B Team from the COTS provider?  Is the potential provider financially solvent and able to provide support for years to come?  Many of the issues are the same as a traditional development but the ability to control the process and outcome change.  Your ability to direct resources and set priorities is significantly less as a buyer versus a designer (Yang).  As a designer you have one priority and that is your company and as a COTS provider you have to balance the priorities of your many customers and the challenges is where does your company fit in to those priorities.  The ability to successfully support the deployment of their COTS applications can significantly affect the business case for your source selection.  Schedule delays drive cost as your standing army of systems engineers, testers and middle ware developers can put a project in the red in short period of time.

 

The ability to evaluate trade-off activities is crucial to successfully selecting a COTS provider and executing a project on cost and within budget.  Since not all COTS applications are equal you must be able to evaluate as part of your requirements definition phase the relative importance of those requirements versus cost, schedule and functionality.  Trade-offs must be performed during the selection phase and you will undoubtedly be required to make tradeoffs during the deployment phase as issues arise and choices must be made to execute the project on time or within cost.  Therefore a disciplined method for evaluating these trade-offs must be developed and utilized throughout the project (Morgan).

 

Another unique challenge of COTS software is the internal challenge of setting the appropriate expectations with your internal stakeholders.  With an in house design your are developing a system around existing processes and with COTS products the users will be forced to make changes and compromises.  Change is frightening to most people and organizations.  If your deployment is to go successfully you need to bring those stakeholders along with you every step of the way.  You need make sure that you stakeholders feel like their concerns are being addressed, but that the reason you are moving to a new COTS product is for the benefit of the organization.  Your internal team's participation is vital or any number of real and imagined walls will be built in order to kill your project and prove their fears have foundation (Morgan).

 

There are many pros and cons to the use of COTS products.  It can produce very large cost savings due to a lower development and maintenance effort.  However a project needs to be aware of the differences between integrating a COTS package and a traditional in house development project.  The biggest difference between the two is being aware of what you can and can't control. Here is model showing what the flow of work is on a COTS project.  This model illustrates which aspects of the project are worked on in house and which parts are out of the COTS buyer’s hands (Brownsword). Since changes in the baseline version are unlikely, a company needs to make sure the new COTS package will fulfill their needs.  Since the buyer has little no control of the core functionality of the product, the buyer must aware of and properly manage the things it does have control of.  These things include how the new package will fit into the company's existing architecture, testing methodologies and schedule, and maybe most importantly stake holder perception and usability.   It should not be understated how important stakeholder buy in is.  COTS changes the way systems are designed and in turn how they are used.  If an organization can adapt to new ways of thinking about systems analysis, then they will be able to leverage the all the positives that can come from integrating COTS software into their systems.

 

 

 

 

 

Works Cited:

Morisio, M; Seaman, C.B.; Parra, A.T.; Basili, V.R.; Kraft, S.E.; Condon, S.E.  “Investigating and Improving a COTS-Based Software Development Process”

 

Carvallo, Juan; Franch, Xavier; Quer, Carme.Requirements Engineering for COTS-based Software Systems”

 

Brownsword, Lisa; Oberndorf, Tricia; Sledge, Carol. “Developing New Processes for COTS Based Systems”

 

Putrycz, Eric “Using Trace Analysis For Improving Performance in COTS Systems”

 

Yakimovich, Daniil; Bieman, James M; Basili, Victor R. “Software architecture classification for estimating the cost of COTS integration”

 

Mariani, Leonardo; Papagiannakis, Sofia; Pezze, Mauro. “Compatibility and regression testing of COTS-component-based software”

 

Cortellessa, Vittorio; Crnkovic, Ivica; Marinelli, Fabrizio; Potena, Pasqualina.Driving the Selection of COTS Components on the Basis of System Requirements”

 

Yang, Ye; Boehm, Barry; Clark, Betsy.Assessing COTS Integration Risk Using Cost Estimation Inputs”

 

Morgan, Maggie; Martin, Chris; McGee-Lennon, Marilyn; Clark, Julia; Hine, Nick; Wolters, Maria. “Requirements Gathering with Diverse User Groups and Stakeholders”

 

Chang, Herv´e; Mariani, Leonardo; Pezze, Mauro “In-Field Healing of Integration Problems with COTS Components”