This Article 
 Bibliographic References 
 Add to: 
Avoiding Packaging Mismatch with Flexible Packaging
February 2001 (vol. 27 no. 2)
pp. 124-143

Abstract—To integrate a software component into a system, it must interact properly with the system's other components. Unfortunately, the decisions about how a component is to interact with other components are typically committed long before the moment of integration and are difficult to change. This paper introduces the Flexible Packaging method, which allows a component developer to defer some decisions about component interaction until system integration time. The method divides the component's source into two pieces: the ware, which encapsulates the component's functionality; and the packager, which encapsulates the details of interaction. Both the ware and the packager are independently reusable. A ware, as a reusable part, allows a given piece of functionality to be employed in systems in different architectural styles. A packager, as a reusable part, encapsulates conformance to a component standard, like an ActiveX control or an odbc database accessor. Because the packager's source code is often formulaic, a tool is provided to generate the packager's source from a high-level description of the intended interaction, a description written in the architectural description language UniCon. The method and tools are evaluated with a series of experiments in which three wares and nine types of packaging are combined to form thirteen components.

[1] R.J. Allen, “A Formal Approach to Software Architecture,” doctoral dissertation, School of Computer Science, Carnegie Mellon Univ., Pittsburgh, 1997.
[2] D. Batory, B. Lofaso, and Y. Smaragdkis, “JTS: A Tool Suite for Building GenVoca Generators,” Proc. Int'l Conf. Software Reuse 1998.
[3] A.P. Black, “An Asymmetric Stream Communication System,” Proc. Symp. Operating Systems Principles, 1983.
[4] J.R. Callahan, “Software Packaging,” PhD thesis, Univ. of Maryland, 1993.
[5] J.R. Cameron, “An Overview ofjsd,” Comm. ACM, vol. 32, no. 4, pp. 444–458, 1989.
[6] N. Carriero and D. Gelernter, "Linda in Context," Comm. ACM, vol. 32, no. 4, Apr. 1989, pp. 444-458.
[7] C. Chen and J.M. Purtilo, “Event Adaptation for Intergrating Distributed Applications,” Proc. Int'l Conf. Software Eng. and Knowledge Eng., 1995.
[8] T. Colcombet and P. Fradet, “Enforcing Trace Properties by Program Transformation,” Comm. ACM, vol. 6, no. 7, pp. 396–408, 1963.
[9] M.E. Conway, “Design of a Separable Transition-Diagram Compiler,” Comm. ACM, vol. 6, no. 7, pp. 396–408, 1963.
[10] R. DeLine, “Resolving Packaging Mismatch,” PhD thesis, Carnegie Mellon Univ., 1999.
[11] R. DeLine, “A Catalog of Techniques for Resolving Packaging Mismatch,” Proc. Symp. Software Reusability, 1999.
[12] R. DeLine, G. Zelesnik, and M. Shaw, “Lessons on Converting Batch Systems to Support Interaction,” Proc. Int'l Conf. Software Eng., 1997.
[13] D. Garlan et al., "Architectural Mismatch or Why It's Hard to Build Systems Out of Existing Parts," Int'l Conf. Software Eng., 1995.
[14] D. Garlan, R.T. Monroe, and D. Wile, “Acme: An Architecture Description Interchange Language,” Proc. Computer-Aided System for Analysis of Conflicts, 1997.
[15] D. Gelernter and N. Carriero, "Coordination Languages and Their Significance," Communications, Vol. 35, No. 2, Feb. 1992, pp. 96-107.
[16] C.A.R. Hoare, Communicating Sequential Processes, Prentice Hall, Englewood Cliffs, N.J., 1985.
[17] Inmos Ltd., occam2 Reference Manual. Prentice-Hall, Int'l Series in Computer Science, 1988.
[18] G. Kahn and D.B. MacQueen, “Coroutines and Networks of Parallel Processes,” Proc. Int'l Federation for Information Processing Congress, 1977.
[19] G. Kiczales, J. Lamping, A. Mandhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin, “Aspect-Oriented Programming,” Proc. European Conf. Object-Oriented Programming, 1997.
[20] C. Videira Lopes and G. Kiczales, “D: A Language Framework for Distributed Programming” Technical Report SPL 97-010, Xerox Palo Alto Research Center, 1997.
[21] D.E. Mularz, “Pattern-Based Integration Architectures,” Pattern Languages of Program Design, J.O. Coplein and D.C. Schmidt, eds., ch. 7. Addison-Wesley, 1995.
[22] D.L. Parnas, “On the Criteria to be Used in Decomposing Systems into Modules,” Software–Practice and Experience, vol. 21, no. 6, pp. 539–536, 1991.
[23] J.M. Purtilo and J.M. Atlee, "Module Reuse by Interface Adaptation," Software Practice and Experience, vol. 21, no. 6, pp. 539-556, June 1991.
[24] J. Reppy, Concurrent Programming in ML. Cambridge Univ. Press, 1999.
[25] T.Y. Leung and R.R. Muntz, "Query Processing for Temporal Databases," Proc. IEEE Int'l Conf. Data Eng., 1990.
[26] A.W. Roscoe, "Model Checking CSP," A.W. Roscoe, ed., A Classical Mind. Prentice Hall, 1994.
[27] M. Shaw, “Architectural Issues in Software Reuse: It’s Not Just the Functionality, It’s the Packaging,” Proc. IEEE Symp. Software Reuse, IEEE Press, New York, 1995.
[28] M. Shaw, R. DeLine, D.V. Klein, T.L. Ross, D.M. Young, and G. Zelesnik, "Abstractions for Software Architecture and Tools to Support Them," IEEE Trans. Software Eng., Apr. 1995.
[29] M. Shaw, R. DeLine, and G. Zelesnik, "Abstractions and Implementations for Architectural Connections," Proc. Third Int'l Conf. Configurable Distributed Systems (CDS'96), IEEE Computer Soc. Press, Los Alamitos, Calif., 1996.
[30] M. Shaw and D. Garlan, Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.
[31] World Wide Web Consortium, “Extendable Markup Language (XML),” http://www.w3.orgXML/.
[32] D.M. Yellin and R.E. Strom, "Interfaces, Protocols, and the Semi-Automatic Construction of Software Adaptors," Proc. OOPSLA '94, ACM SIGPLAN Notices, vol. 29, no. 10, pp. 176-190, Oct. 1994.

Index Terms:
Mismatch, software packaging, system integration, software component, software architecture.
Robert DeLine, "Avoiding Packaging Mismatch with Flexible Packaging," IEEE Transactions on Software Engineering, vol. 27, no. 2, pp. 124-143, Feb. 2001, doi:10.1109/32.908958
Usage of this product signifies your acceptance of the Terms of Use.