Component Behaviour Evaluation (ComponentBee) is a proposed open source project under the Eclipse Technology Project.
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. Please send all feedback to the eclipse.componentbee newsgroup.
ComponentBee project provides an extensibile frawework for tools that are used to evaluate the dynamic behaviour of software components in unit and integration tests. In brief, such tools are able to log the dynamic behaviour of software components, extract behaviour patterns from the collected log, and finally calculate reliability (or other quality) values for the tested components. ComponentBee also faciliates the creation of visual test model editors.
The construction of reliable component-based SW systems requires methods to facilitate the SW integrators to ensure that the SW architecture, selected components, and finally the constructed SW system meet the desired quality requirements. Component Behaviour Evaluation (ComponentBee) framework supports the reliability testing of software components and integrates these testing features to support architectural-level reliability analysis of software systems.
The ComponentBee project develops an extensible framework and exemplary tools to evaluate the reliability and quality of software components that are executed in multiple threads. The project does not focus on dynamic behaviour monitoring but utilises existing TPTP tools in trace and raw log data recording.
The aim of the project is to develop a framework for tools being capable of evaluating dynamic behaviour of software components from trace and raw log data. The framework provides interfaces for: 1) the trace and raw log data and 2) for processors that will process and compose new presentations for trace and raw log data. The trace and raw log data interfaces provide an access to data structures that present the dynamic behaviour of software components. The processors will utilise these trace and raw log data interfaces and compose different kinds of presentations (data structures) for dynamic behaviour of software components. More precisely, the processors will: 1) compose an abstract tree presentation for dynamic behaviour of software components performing concurrent processing in different threads, then 2) extract behaviour patterns from the abstract tree presentation, and finally 3) evaluate the extracted behaviour patterns and calculate quality and reliability values for the evaluated software components. In addition, the ComponentBee framework provides a domain-specific-language (DSL), which supports the creation of visual test model editors.
ComponentBee project also provides exemplary tools that are currently capable of evaluating dynamic behaviour of multithreaded Java programs. The provided tools are model-based tools that are integrated into Eclipse. They include a visual editor, which can be used to create generic and reusable test models and, then, to refine these test models to support the testing of specific Java components.
The ComponentBee framework is based on components from several Eclipse projects. The most important relationships are the following.
The current version of the ComponentBee consists of four main packages:
In order to increase the level of modularity, the components of the packages communicate with each other via predefined interfaces. Each package is divided into core and implementation parts. The core part provides interfaces for the components of the package whereas the implementation part provides the reference implementations for the core interfaces. In addition, predefined extension points enable developers to build on ComponentBee.
The ComponentBee framework provides extension points for plug-ins that can support test creation, utilisation of UML models in testing, or recording and evaluation of raw and trace data about dynamic behaviour of SW components. Two kinds of extension points exist in the ComponentBee: static (ie. Eclipse) extension points and dynamic extension points. The Plug-in Development Environment (PDE) provides tools to create, develop, test, debug, build and deploy Eclipse plug-ins by using the static extension points. The dynamic extension points provide a mechanism to extend the ComponentBee at run-time with the plug-ins being developed in the workspace of Eclipse. The current set of extension points are listed in the following table.
VTT Technical Research Centre of Finland is offering the current version of the ComponentBee as an initial codebase (see http://opensource.erve.vtt.fi/componentBEE/main.html). The ComponentBee model and tools have been built in accordance with the proposed concept. The current code base consist of 22146 SLOC hand-written code (152 classes/interfaces) and a GMF-generated visual editor with 360 classes. The current code base has been made availabe under the Eclipse Public Lisence (EPL)
The following parties (from outside of VTT) have expressed interest in the ComponentBee project and allowed using their name in this proposal:
The given parties are our partners in the research project (ITEA-COSI) which has financed the development of the ComponentBee. We have not yet tried to promote the ComponentBee tool outside of the research team.
The further development of the ComponentBee tool is still on-going work. We would greatly appreciate improvement suggestions and feedback from the Eclipse community. The proposed initial contributors are there to develop the tool into the direction desired by the community. In our opinions, following improvements are needed, for example: (1) more plug-ins (UMLImporters) capable of generating test model templates of UML models (e.g. of sequence diagrams), (2) new Eclipse editors enabling testers to define extension elements refining the test model templates for the actual reliability tests and (3) new plug-ins supporting evaluation of other quality attributes of concurrent Java programs (e.g. performance attributes).