
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
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.
