Software Architecture
Core description is a complex process to model in software. It involves data capture, visualization, analysis, collaboration, revision, and publication, with different features required for each step. To complicate things further, I wanted PSICAT to be useful to the broader geoscientific community, rather than just a one-off, custom solution developed for ANDRILL. Since this is an ambitious and complicated undertaking, I needed a flexible, extensible software architecture that would let me reuse functionality common to all drilling projects, while still supporting the development of custom features for specific groups or tasks.
As a Java developer, I looked no further than Eclipse (www.eclipse.org) for my architecture solution. Known as a Java IDE, Eclipse is a full-blown platform of tools and frameworks for developing and managing software. Built on OSGi technology, Eclipse takes the concept of a modular architecture to the extreme.
Traditional applications, such as web browsers, provide well-defined interfaces and extension mechanisms that you can plug into and add new functionality. The host application is fully functional; the plug-ins simply augment it with new features. Eclipse, on the other hand, is built entirely of plug-ins. There is no host application per se, just a small engine that loads and runs plug-ins. All of the end-user functionality (editing and compiling Java source code) is implemented as a collection of collaborating plug-ins.
This pure plug-in approach offers many advantages, including a high-degree of flexibility and reuse. Eclipse can be easily customized to a specific task, such as developing Java code, developing web applications, or managing remote databases, simply by virtue of which plug-ins are included/removed. If a plug-in already exists to perform a particular function, it can be reused as is. The most potent advantage of this approach to application development is that it lets applications be extended in ways not initially envisioned.