Contracts in practice
Carlo A. Furia
Senior researcher at the Chair of Software Engineering, Department of Computer Science of ETH Zurich
DEIB - Conference Room
April 17th, 2015
2.30 pm
Contacts:
Matteo Giovanni Rossi
Research line:
Advanced software architectures and methodologies
Senior researcher at the Chair of Software Engineering, Department of Computer Science of ETH Zurich
DEIB - Conference Room
April 17th, 2015
2.30 pm
Contacts:
Matteo Giovanni Rossi
Research line:
Advanced software architectures and methodologies
Abstract
Contracts are a form of lightweight formal specification embedded in the program text. Being executable parts of the code, they encourage programmers to devote proper attention to specifications, and help maintain consistency between specification and implementation as the program evolves. The present study investigates how contracts are used in the practice of software development. Based on an extensive empirical analysis of 21 contract-equipped Eiffel, C#, and Java projects totaling more than 260 million lines of code over 7700 revisions, it explores, among other questions:
- which kinds of contract elements (preconditions, postconditions, class invariants) are used more often;
- how contracts evolve over time;
- the relationship between implementation changes and contract changes;
- and the role of inheritance in the process.
Short Bio
Carlo A. Furia is a senior researcher at the Chair of Software Engineering in the Department of Computer Science of ETH Zurich. In his research he develops models, techniques, methods, and tools to support the analysis, rigorous development, and verification of software and software-intensive systems. His recent work has focused on improving the applicability and practicality of formal methods by taking advantage of simple program annotations such as contracts. He is co-chairing SCORE (the student contest on software engineering), an event of ICSE 2016. He has a PhD in Computer Science from the Politecnico di Milano.