The quality of software is a long debated topic and there are various notions of quality. For example, quality may be related to functionality and performance, i.e. good quality software will implement features correctly and efficiently. Quality may be also related to maintainability and structure, i.e. high quality software is well programmed so that it is easy to modify.
There have been many approaches to improve software’s quality. For example, static and dynamic analysis (including testing) aims at finding bugs or performance bottlenecks; programming conventions aim to guide the writing of readable and hence more maintainable code; bad smells and refactorings aim at detecting and repairing structural problems.
Given the complexity and size of current software projects, often with millions of lines of code, automated software engineering techniques are required to assess the quality of code, pointing out those places that may have quality problems requiring the developers’ attention.
Within this topic, the following kinds of research projects are sought:
- investigating relationships between different kinds of quality, e.g. between comprehensibility of a program and its defect rate
- investigating the evolution of quality, e.g. if certain quality characteristics are more prone to degrade over the lifetime of a software project
- developing new metrics and visualisation techniques to effectively detect and present quality problems in large software projects
- applying interdisciplinary approaches to quality, e.g. using natural language techniques to assess the comprehensibility of source code
Skills and Background required
Given the vast scope of software quality and its influences, applicants should have a broad interest in software development, from process to coding, even though the actual project will have a contained scope. Depending on the kind of project the applicant wishes to pursue, knowledge of another discipline and/or software visualisation may be required. Good programming skills are required to implement the developed techniques into automated quality assessment tools.
- Raymond Buse and Westley Weimer. A Metric for Software Readability. Proc. ISSTA 2008.
- Simon Butler et al. Exploring the Influence of Identifier Names on Code Quality: an empirical study To appear in Proc. CSMR 2010.
- Martin Fowler. Refactoring home page
- Ilja Heitlager et al. A Practical Model for Measuring Maintainability. Proc. of QUATIC 2007, pp. 30-39, IEEE.
- Ho-Won Jung et al. Measuring software product quality: a survey of ISO/IEC 9126, IEEE Software 21(5):88-92, Sept.-Oct. 2004
- Diomidis Spinellis. A tale of four kernels. Proc. ICSE 2008, ACM.
- A. Vermeulen et. al. The Elements of Java Style. Cambridge Univ. Press, 2000.
- A list of tools