Skip to content

GumTree Design_161153051

nxi edited this page Apr 9, 2015 · 1 revision
Created by Tony Lam, last modified on Jul 12, 2010

Design Philosophy

Basic Principles

Time and resource for software development are always constrained. Rapid development and maintainable code have hence become an important issue for modern day software design. The design of GumTree is no exception. In order to achieve those goals, we inject the following concepts in our design:
  • Reusability - maximising code reuse can free developers from working on fundamentional features, and hence they can spend more time on writing more complex domain specific logics.
  • Scalability - making application easily extensible can encourage developers to reuse the existing code base.
  • Reconfigurability - design with configurability in mind reduces the amount of coding in a large project that requires to support a number of similar use cases.

Architectural Styles

In order to archive the design goals from above, the following three architectural styles are promised in GumTree:
  • Plug-in Architecture - this is a modular way to
  • Service Oriented Architecture -
  • Resource Oriented Architecture -

Application Model

A GumTree based application typically consists of three major components:
Platform + Frameworks + Customisations
  • Platform - each GumTree application is built on an application platform, which includes a runtime kernel plus a number of application services. The GumTree platform itself is a fully functional application, where additional features are adding by installing plug-ins into the runtime kernel. Plug-ins can leverage application services such as logging and persistence to simplify the coding task. Further explanation on the concept of platform is available on the article "Creating Micro-platforms" (see further readings)
  • Frameworks - framework is referred as a collection of reusable components to solve complex issues, for example, the data analysis framework is designed to help developers to glue existing algorithms in an easy way. GumTree applications can equip with one or multiple frameworks to address different needs of the users.
  • Customisations - depending on your user requirement, an application may require little or significant customisation on the existing building blocks. In order to make good use of existing components, GumTree promotes two type of customisations: extension and integration. When a new behaviour is added within the context of an existing framework, we contribute this via extension. If possible, we implement more sophisticated features by integrating components from multiple frameworks.
Let's take an example by decomposing a GumTree desktop application that is used for instrument control. This application may consists of an extensible and general purposed workbench (platform), generic instrument control component (framework), and instrument specific user interface component for special operations (customisation). A more detailed description of the application design will be covered in the GumTree Architecture chapter.

Further Readings

Use Cases

GUI front-end for instrument control

User friendly front-end on existing control system

Live data reduction

Immediate user feedback on experiment quality

Coordinate services and aggregate information across multiple systems

Database access, authentication, etc

Experiment automation

Combining above use cases: Time efficient and optimatised; reduce learning curves; closed loop operation
Document generated by Confluence on Apr 01, 2015 00:11
Clone this wiki locally