Skip to content
Luis Diogo Couto edited this page Nov 21, 2014 · 1 revision

Overture has a fairly large code base (near 500k LoC) spread across multiple modules and implementing many different functionalities. It's easy for new (and even experienced developers) to get lost. This document should serve as a reference to all developers of what is available, where is is available and the rationale for this particular organization.

This document is primarily aimed at new developers who need to familiarize themselves with Overture. But it should be of use to anyone that needs information regarding the architecture of Overture. It is meant to be an authoritative source on the architecture and should be kept up-to-date as the architecture changes. The focus is more on the interactions of the various modules so their descriptions are written in terms of what they require and provide. Less attention is paid to the internal architecture of the modules (with the exception of the AST module since its architecture directly influences every other module).

This is a reference guide. It describes the architecture of Overture and provides rationales for the major architectural decisions present in the current code base. It is not a guide that you should follow. However, when developing new plug-ins you should be able to refer to it and understand how your plug-in fits into the overall architecture.

History

In order to help raise the popularity of formal modeling techniques in industrial software engineering projects, a group of people (namely John Fitzgerald, Paul Mukherjee, Peter Gorm Larsen, Nico Plat and Marcel Verhoef) started in 2003 the initiative of the Overture project. The objective of the Overture project is to provide an industrial-strength, open source tool set to allow the use of precise abstract models (expressed in the Overture Modeling Language) in software development, and to foster an environment that allows researchers and other interested parties to experiment with modifications and extensions to the tool.

Clone this wiki locally