Framework-Based Applications: From Incremental Development to Incremental Reasoning
Object-oriented frameworks provide a powerful technique for developing groups of related applications. The framework includes one or more template methods that at appropriate points call various hook methods. Each application built on a framework reuses the template methods provided by the framework; the application developer provides definitions, tailored to the needs of the particular application, for only the hook methods. Our goal is to develop a technique for reasoning in which we reason about the framework behavior just once; whenever a new application A is developed, we arrive at its behavior by composing the behavior of hook methods defined in A with the behavior of the framework. Just as the template methods allow the application developers to reuse the code of the framework, our technique allows them to reuse the effort involved in reasoning about the framework in understanding each application built on the framework.
We illustrate the technique by applying it to a simple example, and contrast our approach with a more standard approach based on behavioral subtyping.
KeywordsBase Class Application Developer Application Designer Template Method Framework Designer
Unable to display preview. Download preview PDF.
- 3.Campbell, R.H., Islam, N.: A technique for documenting the framework of an object-oriented system. Computing Systems 6, 363–389 (1993)Google Scholar
- 5.Fayad, M.E., Schmidt, D.C.: Special issue on object oriented application frameworks. CACM 40 (October 1997)Google Scholar
- 6.Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: Elements of reusable OO software. Addison-Wesley, Reading (1995)Google Scholar
- 8.Lano, K.: Formal Object-Oriented Development. Springer, Heidelberg (1995)Google Scholar
- 9.Liskov, B.: Data abstraction and hierarchy. In: OOPSLA 1987, Addendum to the proceedings, pp. 17–34. ACM Press, New York (1987)Google Scholar
- 12.Foote, B., Johnson, R.: Desigining reusable classes. Journal of OOP 1, 26–49 (1988)Google Scholar