Git Product home page Git Product logo

rosetta-dsl's Introduction

Overview of the Rosetta DSL

Continuous Integration: Codefresh build status
License: Apache 2.0

What is the Rosetta DSL

Rosetta is a Domain-Specific Language (DSL) designed for the financial industry, which purpose is to consolidate market standards and operational practices into a cohesive domain model (or simply model). In software engineering, a domain model is a conceptual model of the domain that incorporates both data and behaviour (i.e. rules and processes).

The key idea behind Rosetta is that financial markets presently have two unappealing characteristics in support of electronic data representation:

  • Variety of data representations. The plurality of data standards (the main ones being FIX, FpML, ISO 20022 and EFET) is compounded by the many variations in the implementation of those, to which we need to add a wide range of proprietary data representations.
  • Limited availability of native digital tools that would allow those data representations to be directly translated into executable code. Even the protocols that have a native digital representation (e.g. FpML and FIXML, which are available in the form of XML schemas) have associated specifications artefacts which require further manual specification and/or coding in order to result in a complete executable solution. In FpML, this is the case of the associated validation rules. In FIX, an example of such are the Recommended Practices/Guidelines, which are only available in the form of PDF documents.

Rosetta addresses those shortcomings by enabling the consolidation of various data and workflow representations into a cohesive model (hence the naming reference to the Rosetta Stone). The model is automatically translated into executable code using code generators and can directly be used as part of an implementation stack.

Rosetta DSL Components

This open-source Rosetta DSL repository comprises 2 components:

  • Syntax, also known as a grammar
  • Code Generators, provided by default as Java

Syntax

All the modelling artefacts available in the Rosetta syntax are documented in the Rosetta Modelling Artefacts section. The syntax is used to express the model for the financial industry domain, which is referred to as a Common Domain Model (or CDM). The CDM is designed to be shared openly across all industry participants, hence the name Common.

The CDM is hosted separately from the Rosetta DSL in its own repository.

Code Generators

Code generators are key to remove the need for technologists to translate the model specifications into actual code. To make the model technology platform-agnostic while ensuring inter-operability of different implementations, these code generators are also open source.

Only default code generators are provided as part of the Rosetta DSL repository. A separate Code Generators repository allows the community to create and make available code generators in potentially any software language. The Code Generator documentation details the code generation mechanism and how to write and test one.

The ISDA CDM

The ISDA Common Domain Model is the first live application of the Rosetta DSL to the Derivatives markets. It is openly accessible through the CDM Portal, subject to the ISDA CDM licence.

For more details, please consult the ISDA CDM documentation or contact ISDA directly at [email protected]

The Rosetta SDK

In order to use the Rosetta DSL that is open-source, a complete Software Development Kit (SDK) named Rosetta Core will be provided to the community (ETA 2019 Q3). Much like how software engineers use programming languages and tools to create software, it is useful to think of Rosetta Core as a set of tools to use when creating and editing the domain model.

Rosetta Core provides a complete adoption tool-kit for the DSL and the CDM, allowing firms to convert data files into CDM, edit and test the model to develop their own implementations, and contribute back to the CDM project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.