|
ABSTRACT
Design patterns are a valuable mechanism for emphasizing structure, capturing design expertise, and facilitating restructuring of software systems. Patterns are typically applied in the context of an object-oriented language and are implemented so that the pattern participants correspond to object instances that are created and connected at run-time. This paper describes a complementary realization of design patterns, in which many pattern participants correspond to statically instantiated and connected components.Our approach separates the static parts of the software design from the dynamic parts of the system behavior. This separation makes the software design more amenable to analysis, thus enabling more effective and domain-specific detection of system design errors, prediction of run-time behavior, and more effective optimization. This technique is applicable to imperative, functional, and object-oriented languages: we have extended C, Scheme, and Java with our component model. In this paper, we illustrate our approach in the context of the OSKit, a collection of operating system components written in C.
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
|
G. Baumgartner, K. Läufer, and V. F. Russo. On the interaction of object-oriented design patterns and programming languages. Technical Report CSD-TR-96-020, Department of Computer Sciences, Purdue University, 1996.
|
| |
3
|
J. Bosch. Design patterns as language constructs. Journal of Object-Oriented Programming, 11(2):18-32, 1998.
|
| |
4
|
K. B. Bruce and J. C. Vanderwaart. Semantics-driven language design: Statically type-safe virtual types in object-oriented languages. In Electronic Notes in Theoretical Computer Science, volume 20. Elsevier Science Publishers, 2000.
|
 |
5
|
Curtis Clifton , Gary T. Leavens , Craig Chambers , Todd Millstein, MultiJava: modular open classes and symmetric multiple dispatch for Java, Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.130-145, October 2000, Minneapolis, Minnesota, United States
|
 |
6
|
C. Consel , L. Hornof , R. Marlet , G. Muller , S. Thibault , E.-N. Volanschi , J. Lawall , J. Noyé, Partial evaluation for software engineering, ACM Computing Surveys (CSUR), v.30 n.3es, Sept. 1998
[doi> 10.1145/289121.289141]
|
| |
7
|
D. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In Proc. of the Fourth Symposium on Operating Systems Design and Implementation, pages 1-16, San Diego, CA, Oct. 2000.
|
 |
8
|
|
 |
9
|
|
| |
10
|
M. Flatt. Programming Languages for Component Software. PhD thesis, Rice University, June 1999.
|
 |
11
|
|
 |
12
|
Bryan Ford , Godmar Back , Greg Benson , Jay Lepreau , Albert Lin , Olin Shivers, The Flux OSKit: a substrate for kernel and language research, Proceedings of the sixteenth ACM symposium on Operating systems principles, p.38-51, October 05-08, 1997, Saint Malo, France
|
| |
13
|
|
| |
14
|
B. Harper, E. Cooper, and P. Lee. The Fox project: Advanced development of systems software. Computer Science Department Technical Report 91-187, Carnegie Mellon University, 1991.
|
| |
15
|
|
| |
16
|
C. Marcos, M. Campo, and A. Pirotte. Reifying design patterns as metalevel constructs. Electronic Journal of SADIO, 2(1):17-29, 1999.
|
 |
17
|
Sean McDirmid , Matthew Flatt , Wilson C. Hsieh, Jiazzi: new-age components for old-fasioned Java, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.211-222, October 14-18, 2001, Tampa Bay, FL, USA
|
| |
18
|
|
| |
19
|
J. G. Mitchell, W. Mayberry, and R. Sweet. Mesa Language Manual, 1979.
|
| |
20
|
|
| |
21
|
A. Reid, M. Flatt, L. Stoller, J. Lepreau, and E. Eide. Knit: Component composition for systems software. In Proc. of the Fourth Symposium on Operating Systems Design and Implementation, pages 347-360, San Diego, CA, Oct. 2000.
|
| |
22
|
|
| |
23
|
M. Tatsubori and S. Chiba. Programming support of design patterns with compile-time reflection. In Proc. of the OOPSLA '98 Workshop on Reflective Programming in C++ and Java, pages 56-60, Vancouver, Canada, Oct. 1998.
|
| |
24
|
V. Yodaiken. The RTLinux manifesto. In Proc. of the Fifth Linux Expo, Raleigh, NC, Mar. 1999.
|
|