ACM Home Page
Please provide us with feedback. Feedback
Explicit programming
Full text PdfPdf (856 KB)
Source Aspect-oriented software development archive
Proceedings of the 1st international conference on Aspect-oriented software development table of contents
Enschede, The Netherlands
COLUMN: Full papers table of contents
Pages: 10 - 18  
Year of Publication: 2002
ISBN:1-58113-469-X
Authors
Avi Bryant  University of British Columbia, Vancouver BC Canada V6T 1Z4
Andrew Catton  University of British Columbia, Vancouver BC Canada V6T 1Z4
Kris De Volder  University of British Columbia, Vancouver BC Canada V6T 1Z4
Gail C. Murphy  University of British Columbia, Vancouver BC Canada V6T 1Z4
Sponsors
CTIT : Centre for Telematics and Information Technology
IPA : Institute for Software and Arithmetic
KNAW : Koninklijke Nederlandse Akademie van Wetenschappen
PATO : Post Academisch Tecbnisch Onderwijs
University of Twente : University of Twente
NWO : Dutch Orgartisation for Scientific Research
IBMR : IBM Research
AITO : Association Internationale pour les Technologies Objets
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 17,   Downloads (12 Months): 39,   Citation Count: 14
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/508386.508389
What is a DOI?

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
 
2
AspectJ web page. http://www.aspectj.org.
3
4
 
5
6
 
7
Dawson R. Engler. Incorporating application semantics and control into compilation. In Proc. of the First Conference on Domain-Specific Languages. Usenix, 1987.
 
8
 
9
Erich Gamma and Kent Beck. Test-infected: Programmers love writing tests. Java Report, 3(7):51-56, 1998.
 
10
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns. Addison Wesley, 1995.
 
11
 
12
Hyper/J web page. http://www.research.ibm.com/hyperspace/HyperJ/HyperJ.htm.
 
13
iContract web page. http://www.reliable-systems.com/tools/iContract/iContract.htm.
 
14
 
15
Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In Proc. of European Conference on Object-Oriented Programming (ECOOP), volume 1241 of Lecture Notes in Computer Science, pages 220-242. Springer Verlag, 1997.
 
16
 
17
OMG. Model driven architecture (mda). ormsc/01-07-01.
18
 
19
Kent M. Pitman. The revised MacLisp manual. Technical Report MIT-LCS-TR-295, M.I.T. Artificial Intelligence Lab, 1983.
20
 
21
Charles Simonyi. The death of computer languages, the birth of intentional programming. Technical Report MSR-TR-95-52, Microsoft Research, 1995.
 
22
23
 
24
John Vlissides and Andrei Alexandrescu. To code or not to code, part i and ii. C++ Report, March and June 2000.
25

CITED BY  14

Collaborative Colleagues:
Avi Bryant: colleagues
Andrew Catton: colleagues
Kris De Volder: colleagues
Gail C. Murphy: colleagues