The picture above shows one of possible implementations of code governance with Hammurapi. The development process depicted above is simplified for clarity.
For better understanding of value of code governance, let's first walk through the pre-governance development process:
- Developers create source code, test it and check-in to source control repository.
- Another department, Operations, check-out code from source control repository, build binary modules (e.g. EAR files) and deploy to runtime environments.
When a problem occurs in runtime environment there are the following impediments in problem resolution:
- Operations people are not familiar with the code.
- In outsourcing scenarios, developers originally developed the problematic code may have already left the development team.
- Developers have limited if any access to runtime environment.
Code quality governance
Code governance tool (Hammurapi) and processes allow to reduce number of outages and increase quality of the code.
Hammurapi architecture is described in detail on the architecture page. Hammurapi components important for this discussion are:
- Inspector sets - Collections of automated code quality inspectors.
- Eclipse plug-in update site - Location (on the intranet, file system, or in source control repository) from which developers install code inspection plug-in for Eclipse-based IDE's.
- Eclipse plug-in configuration file - A configuration file for the plug-in. The file can be located on the intranet, file system, or in source control repository.
- Reports server - Server component which stores code review results. Review results are accessible through a Web browser.
- The governance team establishes a location (shared folder, intranet site, or version controlled folder) where the team stores Eclipse plug-in update site, inspector sets configuration files, inspectors jars, and documentation.
- It is also recommended for the code governance team to establish an internal Web/Wiki site.
- Developers install Hammurapi Eclipse plug-in from the code governance location and point the plug-in to the plug-in configuration file stored in the code governance location. This approach allows to minimize configuration overhead on developer's side. Once plug-in is installed updates in inspector sets are automatically propagated to the plug-in from the shared location. In the case of version-controlled location updates in inspector sets are obtained by developers when they update their local copies.
- Hammurapi Eclipse plug-in provides instant feedback to developers and lets them fix potential problems as they code, and also learn on the job.
- Hammurapi also integrates into the build process. Reports produced during builds are published to the reports server and is accessible over a web browser.
- Operations team may establish a policy of not allowing deployment of low quality code to runtime environments owned by the operations team.
- The governance team establishes processes for managing changes in inspector sets, i.e. modifications in existing inspectors, development of new inspectors and language modules.