Software Practices Lab Homepage
Information Fragments
Registration-Based Abstraction
Summarizing Software Artifacts
past projects...
Reading Group
SPL Wiki [local access]

Explicit Programming

Avi Bryant, Andrew Catton, Kris De Volder, and Gail C. Murphy.

To appear in the Proceedings of 1st International Conference on Aspect-Oriented Software Development, April 2002, p. 10-18.



Many design concepts can be expressed only indirectly in source code. When this occurs, a single concept at design results in a verbose amount of code that is scattered across the system structure. In this paper, we present explicit programming, an approach that enables a developer to introduce new vocabulary into the source to capture a design concept explicitly. An introduced vocabulary item modularizes the implementation details associated with a design concept, reducing the scattering of code needed to express the concept. The vocabulary item appears in the code where the concept is needed; uses of the vocabulary may thus remain distributed through the code. We believe explicit programming provides a useful engineering point, balancing modularization and separation in (at least) two cases. First, when a design concept is tightly coupled with particular constructs in a program, separation is unlikely to lead to any benefits of reusability or comprehensibility. Second, concepts that emerge as a system evolves can be encapsulated and recorded, paving the way for later separation when conditions warrant it. We introduce ELIDE, a tool that supports explicit programming in Java, and describe several cases showing the utility of the explicit programming approach.

© ACM, 2002. This is the authors' version of this work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in AOSD 2002,