Reasoning About Parameterized Components with Dynamic Binding

Parameterized components provide an effective way of building scalable, reliable, flexible software. Techniques have been developed for reasoning about parameterized components in such a way that the relevant properties of a parameterized component can be predicted based on the restrictions on actual parameters. These techniques assume that the parameters are bound at compile-time. But in some cases, compile-time is just not late enough to instantiate a parameterized component; we would like to push instantiation into run-time instead. Doing this is sometimes dangerous, since we can no longer depend on the type system of the language to support our reasoning methods. In this paper, we present a specification notation and associated proof obligations, which when satisfied, allow us to extend the theories of reasoning about templates with static binding to dynamically-bound templates. We present these proof obligations in the context of the Service Facility pattern, which is a way of building templates whose parameters are dynamically bound.

[1]  MeyerBertrand,et al.  Design by Contract , 1997 .

[2]  Bruce W. Weide,et al.  Dynamic module replacement in distributed protocols , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[3]  Joseph A. Goguen,et al.  Parameterized Programming , 1984, IEEE Transactions on Software Engineering.

[4]  Dirk Riehle Composite design patterns , 1997, OOPSLA '97.

[5]  Mickey Williams Microsoft Visual C , 2002 .

[6]  Harold W. Thimbleby,et al.  Delaying Commitment , 1988, IEEE Softw..

[7]  Bruce W. Weide,et al.  Service Facilities: Extending Abstract Factories to Decouple Advanced Dependencies , 2002, ICSR.

[8]  Stephen H. Edwards,et al.  A framework for detecting interface violations in component-based software , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).