Static and dynamic structure in design patterns

Eric Eide, Alastair Reid, John Regehr, Jay Lepreau
University of Utah
[pdf] [doi]

Proceedings of the 24th International Conference on Software Engineering (ICSE 2002)
Orlando, Florida, USA
May 2002

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.

BibTeX

@inproceedings{DBLP:conf/icse/EideRRL02 , 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.} , acceptance = {15} , affiliation = {University of Utah} , ar_file = {ICSE_02} , ar_shortname = {ICSE 02} , author = {Eric Eide and Alastair Reid and John Regehr and Jay Lepreau} , booktitle = {Proceedings of the 24th International Conference on Software Engineering ({ICSE} 2002)} , day = {19-25} , doi = {10.1145/581339.581367} , editor = {Will Tracz and Michal Young and Jeff Magee} , file = {knit-icse02.pdf} , location = {Orlando, Florida, {USA}} , month = {May} , pages = {208--218} , publisher = {ACM} , title = {{S}tatic and dynamic structure in design patterns} , year = {2002} }