Explicit programming
- 22 April 2002
- proceedings article
- Published by Association for Computing Machinery (ACM)
Abstract
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.Keywords
This publication has 8 references indexed in Scilit:
- MayaPublished by Association for Computing Machinery (ACM) ,2002
- Concern graphsPublished by Association for Computing Machinery (ACM) ,2002
- The Java syntactic extender (JSE)Published by Association for Computing Machinery (ACM) ,2001
- Domain-specific languagesACM SIGPLAN Notices, 2000
- Hyper/JPublished by Association for Computing Machinery (ACM) ,2000
- Visualizing dynamic software system information through high-level modelsPublished by Association for Computing Machinery (ACM) ,1998
- Aspect-oriented programmingPublished by Springer Nature ,1997
- Macros that workPublished by Association for Computing Machinery (ACM) ,1991