Eclipse SCAVA

Primary tabs

To follow discussions for new Eclipse projects, subscribe to the Incubation mailing list.

Software engineers spend most of their time learning to understand the software they maintain or depend on (or will depend on). The goal of this learning process is to support decision-making. In this project, we focus on the increasing dependence on open-source software (OSS) over the last years and the decisions related to depending on open-source software. Eclipse SCAVA will support the efficient and effective decision-making regarding dependence on OSS projects and components thereof. This entails both decisions on the architecture level (to decide to select and OSS project) and on the code level (to design the use of the OSS project).  In particular, SCAVA will provide techniques and tools for extracting knowledge from existing open source components, and use such knowledge to properly select and reuse existing software to develop new systems. The activity of the developer will be continuously monitored in order to raise alerts related to the quality of the selected OSS projects and to give suggestions that can reduce the development effort and increase the quality of the final software products.

Figure 1 shows a high-level overview of the SCAVA approach. It sports two major use cases and two minor user channels which are implemented using two architectural stages: online and offline. The common use case features software engineers using their normal IDE, which is enhanced with decision supporting information mined from OSS projects. The second use case is an advanced tool engineer developing bespoke analysis workflows which can make use of already available and mined data. Next, to these two major IDE use cases, Figure 1 also features the release of the mined information via two online channels. The first is a normal analytics dashboard via the Web to disclose mined information to other stakeholders next to the software engineers (such as project managers). The second online channel is the GitHub API to which we will push information rather than pull it. OSS projects on GitHub can be tagged with useful information (e.g., number succeeded builds and tests by a continuous integration toolkit). SCAVA will publish the results of mining qualitative and quantitative information as GitHub project tags as well.

We describe the two major use cases here in some detail to clarify what SCAVA as a whole entails. We first explain the exceptional case of tool engineers extending the platform, and then the normal case of a software engineering using the SCAVA enabled IDE:

  • In step 1 the tool engineers of Use case II use a special (graphical) editor in their IDE to compose new workflows of data sources and computations. This functionality is commonly available in big data analytics suites; here we specialize this functionality for typical OSS project analysis tasks. This leads to the installation of a new bespoke analysis to the set of existing mining and analysis tools ( 2 ).
  • mining tools will run incrementally in step ( 2 ), and possibly on a remote server, to extract relevant information from a pre-configured set of projects and a list of projects configured by the software engineers of Use case I.
  • The software engineers of Use case I have a wizard to configure SCAVA with a rich set of requirements (step 3 ), which includes not only registering a set of projects of interest but also expressing preferences regarding the algorithms and processed used to project the mined information into the IDE. This configuration is an important step to make meaningful assessment possible later since it makes the context and preferences of the engineer explicit to the platform in terms of technological, quality, configuration, and licensing aspects.
  • Finally step 4 is when the acquired information is put into action, actively supporting the engineers via the IDE, managers via the website, and the open-source community via GitHub integration.

 

Figure 1: SCAVA approach at a glance

Typical example IDE services which may be introduced or enhanced using this architecture are:
  • Code assist - propose relevant code snippets, ranked by relevance and quality and informed by the earlier configuration;
  • Infer/Fix project setup - retrieve a list of ranked relevant reusable components, then set up relevant projects in the IDE and configure dependent projects to use them;
  • Monitoring of development activities of the engineers, who will be notified of relevant facts pertaining to their current task context.

In short, SCAVA analyzes OSS projects offline, in the background, and employs the mined information to support engineers online, directly with their tasks of decision-making through otherwise unobtrusive IDE features which are highly configurable and extensible.