Allocating resources for the testing and the verification of all the parts of a large software system is a cost-prohibitive task. To alleviate this issue, prediction models able to identify portions of source code more prone to contain bugs have been the object of several studies.
The main research topic is the definition of accurate prediction models that, on the one hand use a suitable set of predictors able to characterize the bug-proneness of code components, and on the other hand are able to use appropriate machine learning techniques to distinguish those components affected by bug.
Software testing is an essential yet expensive activity in software development, therefore much research effort has been put to automate it as much as possible. Search-based software testing consists of using meta-heuristic optimizing search technique, such as genetic algorithms, to address problems in the software testing and verification and validation domain, such as regression testing optimization and automatic test data generation.
The main goal of an optimization process is to guide the search toward good solutions from a potentially infinite search space, within a practical time limit.
Energy efficiency is a vital characteristic of any mobile app, and indeed is becoming an important factor for user satisfaction. However, optimizing the energy consumption of a mobile app is non-trivial due to the highly volatile nature of mobile execution environments and the lack of knowledge of software developers.
The goal of this topic is on the one hand to build new tools able to measure the energy profile of mobile apps, and on the other hand to propose new methods and tools able to assist software developers.
Software repositories such as source code control systems, communications stored between project staff and monitoring systems of the defects are used to improve the management of the progress of software projects.
The purpose of this branch of research is to find out how to obtain information in order to help understand the development and evolution software processes, support forecasts on software development, and plan future developments.
Empirical software engineering is a subdomain of software related to experiments on systems software (software products, processes and resources).
This branch includes the design of experiments on software, the collection of the results, and the consequent development of laws and theories.
Proponents of empirical software engineering argue that, given the nature of the software, it is possible to broaden the knowledge about it through new experiments.