Controlling accessibility in agile projects with the Access Modifier Modifier
Philipp Bouillon
Eric Großkinsky
Friedrich Steimann
Konferenzen und Workshops
erschienen in:
Proc. of TOOLS (2008)
Access modifiers like public and private let the programmer control the accessibility of class members. Restricted accessibility supports encapsulation, i.e., the hiding of implementation details behind the interface of a class. However, what is an implementation detail and what makes the interface of a class is often subject to change: especially in an agile setting (with absence of an upfront design dictating accessibility levels), the interface of a class evolves much like its implementation, settling only towards the finalization of a project. However, while insufficient accessibility is reported by the compiler, excessive accessibility is not, the effect being that massively refactored programs usually end up with larger interfaces than necessary. With our Access Modifier Modifier tool, we allow programmers to increase and keep accessibility at higher levels during the development phase, and reduce it only once the required access has stabilized. Fixed design decisions (such as a published API) can be designated by corresponding annotations, making them immune to changes through our tool. When evaluating the Access Modifier Modifier on a number of internal packages, we found that accessibility was excessive in 32% of cases on average.