Shell International Exploration and Production - Research and Technology Services / EPT-HM
Foenix2000 was an existing product, used for generating analysis reports on oil/rock samples, that had reached is limits with respect to maintainability and extendability. It was my task to rearchitectue the system, and help extending it.
The new architecture was conceptually a plugin-based one, with a tiny core, and with most functionality delegated to plugins. The core consisted of a data loader, which used a GIS system to make selections on the data.
There were several plugins, like an age determinator, based on a neural network; a charting module used to plot several characteristics in very specialized ways, including grouping/classificating, and interactive linking of plots together; an expertsystem based reporting/analysis module to generate reports based on expertsystem rules, including relevant charts, etc; a printing module used to create printer ready reports; and several other modules. For plugins it was possible to collaborate to some extent, such that a combination of plugins added some extra value.
Other features include the database/databaseschema agnosticness, dynamic updates of the software, automatic recovering from most failures/bugs.
For the development we used eXtreme Programming, which made us very flexible with respect to new feature request, and also added to the stability of the system. Most crucial parts were covered by unit tests. JProbe was being used to tackle performance challenges, possible threading problems, and to get an insight in the coverage of our tests.
The new system was commercial grade, and won several international awards.