DQL is built on top of an extensible architecture to integrate existing tools and to provide a single, unified interface for users. Internally, DQL is based on Java Technology, Xtext to generate the language infrastructure and OSGi to encapsulate components. The main components in DQL are introduced briefly in the following.
- DQL Language and Editor (LE): The DQL LE consists of the language infrastructure based on Xtext. The infrastructure consists of a parser, a model-based representation of queries, an Eclipse-based editor and an Application Programming Interface (API). Users access DQL through this component by using its textual syntax. The DQL Editor is customized to provide content asssist, especially for contents extracted from referenced model instances, and syntax highlighting. Users can submit their queries directly from the DQL Editor to the DQL QEE and visualize the results.
- DQL Query Execution Engine (QEE): The DQL QEE is the main query processor and controls the execution of queries. It bundles all tasks that are independent of the underlying performance modeling formalism and performance prediction tools. The DQL QEE provides additional functionality such as the computation of aggregates on top of performance metrics and the interpretation of a temporal dimension in performance models.
- DQL Connector: Supplementary to the DQL QEE, a DQL Connector provides the means to control a specific performance modeling formalism and the necessary tools. In a DQL Environment, multiple DQL Connectors can be deployed and users can select their demanded DQL Connector by referencing it in queries through an mandatory identifier. The implementation of a DQL Connector relies directly on a specific modeling formalism or performance prediction technique. Thus, DQL Connectors employ specific tool chains to provide the necessary means to control and embed other approaches in DQL. We highly appreciate users to contact us for assistance during the development of their customized DQL Connectors.
- DQL Connector Registry (CR): The DQL CR manages the coexistence of multiple DQL Connectors in a DQL Environment. It leverages the OSGi Bundle Lifecycle and the OSGi Service Layer to maintain the availability of DQL Connectors. This component is designed to be light-weight with a reasonable memory footprint and low computation overhead.