Bachelorproject Dynamic Software Quality Metrics
To measure the quality of software on a source-code level, several software quality metrics have been introduced. Among the most often studies ones are coupling and cohesion:
- Coupling measures the dependence between different parts (e.g., packages, classes) of a software product,
- Cohesion similarly measures the ``internal'' dependence between different parts (e.g., classes) inside an organizational unit (i.e., a package) of a software product.
As a guideline, usually low coupling and high cohesion are considered desirable to achieve a high degree of maintainability.
Usually, coupling and cohesion are studied in a static setting, i.e., by analyzing the source code of a program. However, due to object-oriented language features like polymorhisms and dynamic binding, static measures are not considered sufficient for the analysis of many modern software systems.
The goal of a current research project in our working group is to develop new software metrics that take dynamic data into account. In addition to addressing the above-mentioned concerns, we are also interested in a quantitative analysis: In addition to the question which classes (or methods) of a software system depend on each other, such a metric also takes the number of "connections" (e.g., method calls between classes) into account. The new measures will then be compared to existing static ones, and their usefulness will be evaluated using e.g., statistical methods and correlations with data from software repositories.
Concrete topics for a possible bachelor's thesis in this project include implementation and adaptation of several tools necessary for the project, including:
- measurement of dynamic software quality metrics from the above-mentioned collected data,
- measurement of static quality metrics from given Java programs (either compiled or given as sourcr code),
- statistical comparisons of different software metrics,
- aggregation of different measures.