• Publications
  • Influence
Ownership types for flexible alias protection
Ownership types form a static type system that indicates object ownership, which provides a flexible mechanism to limit the visibility of object references and restrict access paths to objects, thus controlling a system's dynamic topology.
The Qualitas Corpus: A Curated Collection of Java Code for Empirical Studies
The Qualitas Corpus, a large curated collection of open source Java systems, is described, which reduces the cost of performing large empirical studies of code and supports comparison of measurements of the same artifacts.
Flexible Alias Protection
Using flexible alias protection, programs can incorporate mutable objects, immutable values, and updatable collections of shared objects, in a natural object oriented programming style, while avoiding the problems caused by aliasing.
Understanding the shape of Java software
The results of the first in-depth study of the structure of Java programs are presented, finding evidence that some relationships follow power-laws, while others do not.
The impact of inadequate customer collaboration on self-organizing Agile teams
The causes of inadequate customer collaboration are described, its adverse consequences on self-organizing Agile teams, and Agile Undercover - a set of strategies used by the teams to practice Agile despite insufficient or ineffective customer involvement are described.
Self-Organizing Roles on Agile Software Development Teams
These roles-Mentor, Coordinator, Translator, Champion, Promoter, and Terminator-are focused toward providing initial guidance and encouraging continued adherence to Agile methods, effectively managing customer expectations and coordinating customer collaboration, securing and sustaining senior management support, and identifying and removing team members threatening the self-organizing ability of the team.
Scale-free geometry in OO programs
Though conventional OO design suggests programs should be built from many small objects, like Lego bricks, they are instead built from objects that are scale-free, like fractals, and unlike Lego
Relationship aspects
It is shown how relationships can be implemented as a library of aspects in Aspect/J, making the resulting programs easier to read, write and reuse, and as efficient as hand-written code.
Efficient Object Querying for Java
This work has developed a prototype extension to Java which tracks all objects in a program using AspectJ and allows first-class queries over them in the program, indicating that such queries can be significantly faster than common programming idioms and within reach of hand optimised queries.
Agile Development Iterations and UI Design
The key results from this study are that agile iterations facilitates usability testing; allows software developers to incorporate results of those tests into subsequent iterations; and crucially, can significantly improve the quality of the relationship between UI designers and software developers.