Location: digital only (Zoom and Moodle)
Public software repositories like Maven Central or the NPM Registry provide simple access to thousands of different software libraries. Besides a short description of their functionality and their download count, there is typically no additional information available for developers to judge the software's quality, complexity or correctness. As a result, choosing a software library for any given task is often done based on the number of downloads, or the library's popularity on external platforms like Stack Overflow.
Software engineering literature has proposed many different metrics for measuring the quality of software artifacts, and researchers often provide corresponding implementation prototypes. However, in order to use these metrics for selecting libraries, one has to download the prototype, ensure that it is working as intended and execute it for every candidate library to obtain metric values. As this is a non-trivial, time-consuming process, it is typically not used in practice.
During the course of this project, participants first understand the foundations of different software metrics and research the current State-of-the-Art. Afterwards, one or multiple metrics are being implemented and integrated into the Delphi system. Delphi manages and index of all software libraries in Maven Central, and calculates different metric values for every single library release. This enables developers to easily query libraries via their desired metric values. For implementing metrics, the participants may use either Scala or Java, and build ontop of the OPAL framework for static analyses. The framework provides high-level functionality for analysing JVM bytecode, so that basic functionalities like extracting the number of classes do not have to be implemented from scratch.
As a last step, participants are expected to evaluate their implementation performance, in order to test whether it is suited for analyzing millions of JAR files
Other metrics and the current state-of-the-art are being studied in the theoretical phase of the project.
The final grade is influenced by:
- the participation in the theoretical phase of the project
- the quality of implementation
- the quality and results of the evaluation
- the final presentatio