The Eclipse Apogy open source project provides a set of frameworks, Eclipse EMF models, and Graphical User Interface components that simplify the creation of the software required to operate a physical system.
