The Source Code Analysis and Assessment Service


Source code is the most detailed description and expression of company's intellectual property. It is often expressed in hundreds of thousands of lines of code. For example, base Java Platform without extensions contains:
    909 files
    290,103 lines of code (320 lines per file on average)
    736 object classes with 9352 functions
    206 interfaces with 1219 functions
This is very hard and time consuming to analyze manually, however it contains the most detailed information and description of the intellectual property.

During the process of introducing a company to investors, the company describes its intellectual property and makes claims about the code that implements their intellectual property. As a part of the due diligence process, investors don't have a direct way to evaluate those claims. They have to rely on the indirect ones: the history of the management team, the fact that the code works and that there are customers, partners etc. Very often there is a significant difference between what the code should/could do and what it actually does and how it does it. In some cases even the management is not quite aware of the state of their own code.

Objective


The objective of the assesment would be to provide confirmation that the code does what the company says it does. It would allow investors to focus on the business issues (management, the market, the space, the competition, business model etc.) knowing that the quality of the technology is there. Of course, the quality of code is just one data point in evaluating the investment.

Code Assesment Categories


The major categories of claims about the code are:
    Exact functionality
    Quality of the architecture, object and database models
    Quality of the code itself
    Dependence on third party libraries
    Portability, extensibility, performance, code size
    Competitive advantage the code provides compared to other technologies
    How difficult would it be for the competition to recreate

Neuron Computing is able to provide these reports using its code analysis technology for a set of supported languages: C, C++, Intel Assembler, Java, C#, VB, ASP, SQL, XML, HTML. The technology allows us to write custom macros and code to facilitate any needed data extraction from the code. This allows us to answer any specific, custom questions investors and/or management might have.

Problems that would be uncovered


The issues the code analysis would be able to uncover would include:
    Unfinished code. Thin layer of skeleton code with most of its parts unimplemented or hard coded. Good looking UI without implementation content.
    Code that needs significant efforts to complete
    Code that is simply an extension of third party libraries and technologies with no true technology of its own
    Code that has poor quality; e.g. overly complex architecture and data model or lack thereof; repetitive objects; hard coded models; no proper layering of objects and code and modules to allow for integration with other; use of global variables.
    Code too dependent on particular platform and technology and hard to port to other platforms or network architectures
    Code that has performance bottlenecks that are structural and hard to change

Reports


Standard Report would include the following six sections:
    Code Statistics
    List of modules, files per module, languages used, classes, methods, lines of code
    Code quality statements
      Architecture
      Object models
      Database models
      Modular design
      Clean, non-repetitive code
      Use of global variables
    List of third party libraries and dependency on those libraries
    Portability of code
    Extensibility of code
    Performance issues

A clean report would provide assurance to the investors that sound software engineering techniques are used in developing the code and would allow the investors to focus on the market side of investment.

Custom Report would answer any specific questions investors might have about the technology, including the questions like:
    Competitive advantage the code provides compared to other technologies
    How difficult would it be for the competition to recreate the technology