Hammurapi is a code quality governance platform to mitigate risks of outsourcing* of software development.
To put more formally, Hammurapi is a solution for holistic analysis of large software systems developed with extensive use of contractual workforce.
Hammurapi produces a consolidated report for the entire application (take a look at a sample report). The report identifies most significant problems in the application and allows to navigate to the source of the problem in a few clicks.
By large we mean thousands of source artifacts totalling to dozens of megabytes of source code. The largest application analyzed by Hammurapi so far had more than 6000 source files with total size of more than 100 megabytes. It took about 7 hours for Hammurapi on a dual core Pentium box to review the application and produce a report.
Largeness has the following implications:
- Though source code is available, the codebase is essentially a black-box because of its size. It is not possible to address all potential problems at once. Help of a tool is needed to identify potential problems and determine which problems shall be addressed first.
- Absolute numbers (e.g. total number of violations in the code) are not as important as progress indicators (e.g. codebase size and number of violations today and a month ago).
- The tool shall be able to produce reports in a timely manner.
More and more organizations outsource software development efforts to optimize cost and to keep the organization focused on core competencies. While outsourcing promises a number a benefits, it also brings a number of challenges:
- Ownership of code and Tribal knowledge. Development teams get disbanded shortly after completion of the construction phase. Developers get re-assigned to other efforts, often outside of the customer organization. It leads to low level of tribal knowledge. In a case of a problem with some piece of code there might be nobody who is familiar with that code. Maintainability becomes very important.
- Training. Some studies indicate that only one out four Java developers possesses genuine knowledge of the language. Sending people to training classes may make sense for employees, but for contractors it is not cost efficient, because of the transient nature of their association with the customer organization.
Hammurapi addresses these problems in the following ways:
- The customer organization establishes a set of coding guidelines which are automatically checked by the tool. Hammurapi has a number of inspectors to check maintainability of code. For example, cyclomatic complexity inspector, JavaDoc inspector, code length inspector.
- Hammurapi has a number of inspectors which catch potential programmer errors.
- Hammurapi Eclipse plug-in delivers guidelines to developers' fingertips, so they learn on the job.
Hammurapi reduces TCO (Total Cost of Ownership) and risk of software development.
- Lower development cost - Safety net provided by inspectors allows to use lower cost developers.
- Learning on the job - Eclipse plug-in provides instant feedback to developers. By developing custom inspectors senior developers can effeciently pass their knowledge to the team.
- Lower maintenance costs - Hammurapi has a number of maintainability inspectors.
* By outsourcing here we mean a situation when ownership of the application changes shortly after completion of development, and the party receiving the application code needs to gain confidence in the code quality.