Research

Our Software Engineering group focuses on the folowing quality aspects:

  • Reliability: Software reliability is the probability of failure-free operation of a computer program for a specified period in a specified environment.

  • Security: Software security is the umbrella term used to describe software that is engineered such that it continues to function correctly under malicious attack. Software security describes methodologies, frameworks, processes, and strategies that enhance security and reduce vulnerabilities within software and the environment in which it runs.

  • Maintenability: It is well known that the majority of the development effort over software project’s lifetime and up to 80% of the total cost is spent in  maintenance and evolution. Therefore, it is  important for most projects to develop a code base that is easy to maintain.

RESEARCH AREAS

sOFTWARE ENGINEERING FOR MACHINE LEARNING

The usage of Machine Learning techniques is increasingly spreading in many application fields. They are typically used to derive models for classification, prediction, optimization, and similar tasks. Building correct, reliable and robust ML software requires not only the adoption but also a revisitation and extension of Software Engineering (SE) techniques to consider new issues deriving from the introduction of ML components, the associated models, the large datasets they are typically connected to, the need to move data of various kinds from traditional components and ML-based components, and the like. Because of the specific characteristics mentioned above, there is a need to understand deeply the way traditional SE and ML-oriented methods can be blended together to achieve effective and efficient development of ML software.

MACHINE LEARNING FOR SOFTWARE ENGINEERING

The manner in which defects are introduced into code, and the sheer volume of defects in software, are typically beyond the capability and resources of most development teams. Defect prediction models aim to identify software artifacts that are likely to be defective, The main purpose of defect prediction is to reduce the cost of testing, analysis, or code review by prioritizing developers' efforts on specific artifacts such as commits, methods, or classes. As defect prediction proved to support testing activities, software engineering activities other than testing can be reasonably supported by ML. Therefore, it is important to investigate how and which activity can be supported by ML.