Code Quality – Steps for Technical Due Diligence in Software Purchases

code-quality

If you were tasked with performing due diligence for a software product/IP you/your company was considering buying. What would be your steps to make sure the purchase was acceptable from a technical risk level? The scenario is one company has a product you or your company is interested in buying in it's entirety (IP and code) so that your company can now sell that product or it's services. The upfront assumption is the product has some value, but you want to assess the technical foundation of the product to ensure it's not a complete hack and nightmare to support.

Examples of this might include

  • Compile/Build and install the software on a clean computer to verify the build and deploy cycle.
  • Run a code profiling tool against the code base to get an idea of overall code quality.

What else? Are there any resources/checklists on the web which might help?

Best Answer

Since I didn't get a true answer to my question I though I'd follow up with what I did.

I ended up putting together a combination of a Due Diligence Checklist and a Software Quality Assessment in a combined document along with a list of questions and answers received from the various communications with the company we were buying the product from.

For the Software Quality Assessment I used a variant of the ISO/IEC 9126 standard tailoring it to our internal needs and weightings. This covers key aspects of software including maintainability, evolvability, portability and descriptiveness.

The due diligence checklist had a list of activities along with whether they had been completed and comments on how the activity was done. Activities included the following:

Software Architecture

  • High level Software Architecture Overview Presented
  • Software Architecture Documentation Provided
  • Code Quality Analysis Performed

Hardware Architecture

  • High level Hardware/Infrastructure Overview Presented
  • Hardware/Infrastructure Architecture Documentation Provided

Support

  • High Level Support Overview Presented
  • Support and troubleshooting documentation provided
  • High level onboarding walkthrough
  • Onboarding documentation delivered

Build and Deploy

  • Build and Deploy Documentation Delivered
  • Clean Machine Build and Deploy executed

Cost Estimates

  • Estimate ongoing Support costs for onboarding and keeping the product running
  • Estimate initial hardware and resource costs for bringing the solution “in house”
  • Estimate initial software and resource costs for bringing the solution “in house”