You are here: Home V2 Software Software More ... Memops Code Generation

Memops Overview

Getting the program: The Memops machinery is available under the GPL license. You can download the code from our repository on SourceForge,  We would strongly advise you to contact us if you want to make use of Memops - we should be happy to help you getting started, and to collaborate on modelling areas of science that are close to the existing CCPN model.
Documentation: There is documentation for various aspects of Memops, but no proper manual.

About the Memops code generation machinery

A data standard is just a specification for how your data should be organized. In order to make use of it, you need a lot of computer code to store the data on disk, read them into memory, access and modify them, and check that the data are following the rules of the standard. Memops (for MEta MOdel Programming System) was created by CCPN to produce that computer code automatically for a given model. A detailed description has been published in early 2010.

The basic organization of Memops is shown above. The data model is written in UML - a computing industry standard for systems modeling - and edited by specialists in the relevant scientific domain. The Memops framework generates data access subroutine libraries (APIs) and data storage implementations automatically from the model description. Less than one per cent of the final code has to be handwritten. The applications that users actually see access all their data by calling the APIs, either directly or through wrapper.

This folder contains information about the Memops code generation machinery, use of ObjectDomain for UML, data model storage, and major changes to the data model structure. Most contents started as change proposals, with a reasoned discussion, and remain illuminating even where they do not exactly reflect the final implementation.

The main sources on the generation machinery, model storage, and business rules are elsewhere:

MetaModel: The header comment of the memops.metamodel.MetaModel module. A diagram of the MetaModel classes can be found here.

ObjectDomain usage rules: The header comment of the memops.scripts_v2.model.ObjectDomain module.

XML model storage and I/O: The header comment of the memops.format.cml.XmlGen module.

Future plans

  • Porting Memops to a current UML editing system, likely under Eclipse
  • Producing a faster Python API, using newer features like slots.
  • Adding proper unicode support.
  • Make XML storage files diff'able by adding persistent object IDs to use for intra-file crosslinks.