Reliable code continues to perform well without problems. It rarely crashes, if ever. As you can imagine, code that is on board the Mars rovers must be extremely reliable because making on-site maintenance calls is somewhat difficult. But the MER mission wanted earthbound software used by mission control to be reliable, too. Once the mission was underway, no one wanted software problems to disrupt operations.
As noted earlier, the CIP project took several measures to ensure the intrinsic reliability of the system:
Adhering to industry standards and best practices, including J2EE
Using proven COTS software wherever practicable, including a commercial application server from an established middleware vendor
Using a service-oriented architecture with modular services
Implementing simple, straightforward middleware services
We further enhanced reliability with extra nails: service logging and monitoring. While these features can be useful for debugging even small programs, they become essential for keeping track of the runtime behavior of large applications.
During development, we used the open source Apache Log4J Java package to log nearly everything that occurred in the middleware services. It was certainly useful for debugging during development. Logging enabled us to write code that was more reliable. Whenever there was a bug, the logs told us what was going on just prior to the problem, and so we were better able to fix the bug.
We originally intended to reduce the logging ...