Architecture

  1. Persistence Strategy

    Regatta Workbench stores the complete state of a regatta in a simple text file, much as a word processor stores a document. The decision to use a human-readable text file rather than a database makes sharing regatta information as simple as copying and transferring a file. Because the file format is XML-based and, hence self-describing and well-tooled, others who want to mine and use the data in other ways will find it easy to integrate and filter.

    The file format used by Regatta Workbench is called the Regatta Markup Language, or RML for short. RML stores the state of a regatta in a hierarchical data structure designed to be intuitive for those familiar with the rowing regatta domain.



  2.  

  3. Software Development Tools and Runtime

    The original designer of any computer software can never full anticipate the various uses a program will have. Several design decisions were made to accommodate a more open and extensible architecture:

    Regatta Workbench is developed completely with only free, open source software development tools and libraries. Regatta Workbench heavily leverages tools that support Model Driven Architecture making changes to the core engine easier and less fragile

    Points of variability have been identified and code added to make customizing some of the components and plugging in new components easier.

    Regatta Workbench is built on a powerful and extensible platform called the Eclipse Rich Client Platform (RCP). This framework brings with it a unique and flexible plug-in architecture.

  4. In fact, all of Regatta Workbench is implemented as a series of Eclipse plugins. Because Regatta Workbench relies only on RCP and a Java Virtual Machine, the application is portable across multiple operating systems.

    Eclipse RCP (Rich Client Platform) is a general purpose Java-based application framework which operates with the concept of "plugins". The key benefits of using RCP are twofold: (1) to allow future updates via the Web, thus saving production costs of soon-outdated CD-ROMs, and (2) to allow further modules such as toolkits to be "plugged in" as and when available, thus providing a flexible environment suitable for the significant variety of regatta needs and initiatives.


  5. Object Model and Tooling

    A regatta object model forms the foundation of the Regatta Workbench code base. This model is maintained with a development process that makes extensive use of round-trip code generation techniques and model driven architecture. A meta-model describing all the data in the object model is used as the driver for the model code generator. The primary tool for developing and maintaining the regatta object model is the Eclipse Modeling Framework. EMF is leveraged to:

    • generate the bulk of the code for the Workbench object model and editing components
    • serialize the object model to XML
    • edit the model using a commmand framework with do/undo support
    • maintain the relationships between model objects

    The meta-model information is kept inside of the Java interface classes in the form of Javadoc comments. The code generator interprets special tags within the Javadoc, translating each into the model code.