End of last year I was honored to receive an invitation to present in the Distinguished Speaker Series at the Insitute for Software Research at University of California at Irvine.
I quickly decided that the topic to discuss would be our research on software architecture, and in particular our work on metrics for maintainability.
Irvine is one of the world’s leading centers on research in software architecture. The Institute of Software Research is headed by Richard Taylor, who supervised Roy Fielding when he wrote his PhD thesis covering the REST architectural style, and Nenad Medvidovic during his work on architectural description laguages. Current topics investigated at Irvine include design and collaboration (André van der Hoek, and David Redmiles of ArgoUML fame), software analyis and testing (James Jones), and programming laguages (Cristina Lopes), to name a few. An overview of the group’s vision on software architecture can be found in their recently published textbook. In short, I figured that if there is one place to present our software architecture research it must be Irvine.
The talk (90 minutes) itself will be loosely based on my keynote at the Brazilian Software Engineering Symposium (SBES 2012), which in turn is based on joint research with Eric Bouwers and Joost Visser (both from SIG).
I’ll post the slides when I’m done. The full slides are available on speakerdeck, but here’s the storyline along with some references.
The context of this research is a software risk assessment, in which a client using a particular system seeks independent advice (from a consultant) on the technical quality of the system as created by an external supplier.
How can the client be sure that the system made for him is of good quality? In particular, will it be sufficiently maintainable, if the business context of the system in question changes? Will it be easy to adapt the system to the ever changing world?
In situations like these, it is quintessential to be able to make objective, evidence-based statements about the maintainability of the system in question.
Is this possible? What role can metrics play? What are their inherent limitations? How can we know that a metric indeed captures certain aspects of maintainability? How should metric values be interpreted? How should proposals for new metrics be evaluated?
Simple answers to these questions do not exist. In this talk, I will summarize our current progress in answering these questions.
I will start out by summarizing four common pitfalls when using metrics in a software development project. Then, I will describe a metrics framework in which metrics are put into context by means of benchmarking and a quality model. Subsequently, I’ll zoom in on architectural metrics, focusing on metrics for encapsulation. I will discuss a proposal for a new metric, as well as its evaluation. The evaluation comprises both a quantitative assessment (using repository-mining) of its construct validity (doest it measure encapsulation?), as well as qualitative assessments of the usefulness in practice (by interviewing consultants who applied the metrics in their day to day work).
Based on this, I will reflect on the road ahead for empirical research in software metrics and architecture, emphasizing the need for shared datasets, as well as the use of qualitative research methods to evaluate practical impact.
The talk is scheduled for Friday March 15, in Irvine — I sincerely hope to see you there!
If you can’t make it, Eric Bouwers and I will present a 3.5-hour tutorial based on this same material at ICSE 2013, in May in San Francisco. The tutorial will be more interactive, taking your experience into account as well where possible, and it will have a stronger emphasis on metrics (based on SIG’s 10 year experience with using metrics in industry). Register now for our tutorial, and looking forward to seeing you there!
The slides of my presentation.
A video recording of my presentation (mp4)
Eric Bouwers, Joost Visser, and Arie van Deursen: Getting what you measure. Communications of the ACM 55(7): 54-59 (2012).
Eric Bouwers, Arie van Deursen, and Joost Visser. Dependency profiles for software architecture evaluations. In Proceedings 27th International Conference on Software Maintenance (ICSM), pp. 540-543. IEEE, 2011
Eric Bouwers, Arie van Deursen, and Joost Visser. Quantifying the Encapsulation of Implemented Software Architectures. Technical Report TUD-SERG-2011-033-a, Delft University of Technology, 2012 (under review)
Eric Bouwers, Arie van Deursen, and Joost Visser. Evaluating Usefulness of Software Metrics – an Industrial Experience Report. In Proceedings International Conference on Software Engineering (ICSE), Software Engineering in Practice (SEIP) track, ACM/IEEE, 2013.