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 eﬃcient and eﬀective 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 eﬀort and increase the quality of the ﬁnal 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 oﬄine. 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 workﬂows 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 ﬁrst 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 ﬁrst 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 workﬂows 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-conﬁgured set of projects and a list of projects conﬁgured by the software engineers of Use case I.
- The software engineers of Use case I have a wizard to conﬁgure 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 conﬁguration 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, conﬁguration, 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
- Code assist - propose relevant code snippets, ranked by relevance and quality and informed by the earlier conﬁguration;
- Infer/Fix project setup - retrieve a list of ranked relevant reusable components, then set up relevant projects in the IDE and conﬁgure dependent projects to use them;
- Monitoring of development activities of the engineers, who will be notiﬁed of relevant facts pertaining to their current task context.
In short, SCAVA analyzes OSS projects oﬄine, 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 conﬁgurable and extensible.