Abstract
Component-based software structuring principles are now commonplace at the application level; but componentization is far less established when it comes to building low-level systems software. Although there have been pioneering efforts in applying componentization to systems-building, these efforts have tended to target specific application domains (e.g., embedded systems, operating systems, communications systems, programmable networking environments, or middleware platforms). They also tend to be targeted at specific deployment environments (e.g., standard personal computer (PC) environments, network processors, or microcontrollers). The disadvantage of this narrow targeting is that it fails to maximize the genericity and abstraction potential of the component approach. In this article, we argue for the benefits and feasibility of a generic yet tailorable approach to component-based systems-building that offers a uniform programming model that is applicable in a wide range of systems-oriented target domains and deployment environments. The component model, called OpenCom, is supported by a reflective runtime architecture that is itself built from components. After describing OpenCom and evaluating its performance and overhead characteristics, we present and evaluate two case studies of systems we have built using OpenCom technology, thus illustrating its benefits and its general applicability.
- Bencomo, N., Blair, G., Coulson, G., Grace, P., and Rashid, A. 2005. Reflection and aspects meet again: Runtime reflective mechanisms for dynamic aspects. In Proceedings of the First Middleware '05 Workshop on Aspect Oriented Middleware Development (AOMD 05, Grenoble, France). Google Scholar
Digital Library
- Blair, G., Coulson, G., and Grace, P. 2004. Research directions in reflective middleware: The Lancaster Experience. In Proceedings of the 3rd Workshop on Reflective and Adaptive Middleware (RM2004; co-located with Middleware 2004, Toronto, Ontario, Canada). Google Scholar
Digital Library
- Bruneton, E., Coupaye, T., Leclerc, M., Quema, V., and Stefani, J. B. 2004. An open component model and its support in Java. In Proceedings of the 7th International Symposium on Component-Based Software Engineering (ICSE-CBSE7, Edinburgh, Scotland).Google Scholar
- Bruneton, E. and Riveill, M. 2000. JavaPod: An adaptable and extensible component platform. Proceedings of the Reflective Middleware 2000, (New York, NY).Google Scholar
- Campbell, A. T., Chou, S., Kounavis, M.E., Stachtos, V. D., and Vicente, J. B. 2002. NetBind: A binding tool for constructing data paths in network processor-based routers. In Proceedings of the 5th IEEE International Conference on Open Architectures and Network Programming (OPENARCH' 02).Google Scholar
- Clarke, M., Blair, G. S., and Coulson, G. 2001. An efficient component model for the construction of adaptive middleware. In Proceedings of the IFIP/ACM Middleware 2001 (Heidelberg, Germany). Google Scholar
Digital Library
- Costa, P., Coulson, G., Gold, R., Lad, M., Mascolo, C., Mottola, L., Picco, G. P., Sivaharan, T., Weerasinghe, N., and Zachariadis, S. 2007. The RUNES middleware for networked embedded systems and its application in a disaster management scenario. In Proceedings of the 5th Annual IEEE International Conference on Pervasive Computing and Communications (PERCOM'07, White Plains, NY). Google Scholar
Digital Library
- Coulson, G., Baichoo, S., and Moonian, O. 2002a. A retrospective on the design of the GOPI middleware platform. ACM Multimed J. 8, 3, 340--352. Google Scholar
Digital Library
- Coulson, G., Blair, G. S., Clarke, M., and Parlavantzas, N. 2002. The design of a highly configurable and reconfigurable middleware platform. ACM Distrib. Comput. J. 15 2, 109--126. Google Scholar
Digital Library
- Coulson, G., Blair, G. S., and Grace, P. 2004. On the performance of reflective systems software. In Proceedings of the International Workshop on Middleware Performance (MP 2004, Phoenix, AZ); satellite workshop of the IEEE International Performance, Computing and Communications Conference (IPCCC 2004).Google Scholar
Cross Ref
- Coulson, G., Blair, G. S., Hutchison, D., Joolia, A., Lee, K., Ueyama, J., Gomes, A.T., and Ye, Y. 2003. NETKIT: A software component-based approach to programmable networking. ACM SIGCOMM Comput. Communi. Rev. 33, 5, 55--66. Google Scholar
Digital Library
- Dowling, J. and Cahill, V. 2001. The k-component architecture meta-model for self-adaptive software. In Proceedings of Reflection 2001. Lecture Notes in Computer Science, vol. 2192. Springer, Berlin, Germany. Google Scholar
Digital Library
- Emmerich, W. 2002. Distributed component technologies and their software engineering implications. In Proceedings of the 24th International Conference on Software Engineering (Orlando, FL). 537--546. Google Scholar
Digital Library
- Fassino, J.-P., Stefani, J.-B., Lawall, J., and Muller, G. 2002. THINK: A software framework for component-based operating system kernels. In Proceedings of the Usenix Annual Technical Conference (Monterey, CA). Google Scholar
Digital Library
- Ford, B., Back, G., Benson, G., Lepreau, J., Lin, A., and Shivers, O. 1997. The Flux OSKit: A substrate for kernel and language research. In Proceedings of the 16th ACM Symposium on Operating Systems Principles (Saint Malo, France). ACM Press, New York, NY, 38--51. Google Scholar
Digital Library
- Furmento, N., Mayer, A., McGough, S., Newhouse, S., Field, T., and Darlington, J. 2002. ICENI: Optimisation of component applications within a grid environment. J. Parallel Comput. 28, 12, 1753--1772. Google Scholar
Digital Library
- Gamma, E., Helm, R., Johnson, R., and Vissides, J. 2004. Design patterns: Elements of reusable object-oriented software. Addison-Wesley, Reading, MA. Google Scholar
Digital Library
- Garlan, D., Monroe, R. T., and Wile, D. 2000. Acme: Architectural description of component-based systems. In Foundations of Component-Based Systems, G. T. Leavens and M. Sitaraman (Eds), Cambridge University Press, Cambridge, U.K. 47--68. Google Scholar
Digital Library
- Grace, P., Blair, G. S., and Samuel, S. 2003. ReMMoC: A reflective middleware to support mobile client interoperability. In Proceedings of the Symposium on Distributed Objects and Applications (DOA 2003, Catania, Sicily, Italy).Google Scholar
- Grace, P., Coulson, G., Blair, G. S., and Porter, B. 2005. Deep middleware for the divergent grid. In Proceedings of IFIP/ACM/USENIX Middleware 2005. Google Scholar
Digital Library
- Hansson, H., Akerholm, M., Crnkovic, I., and Torngren, M. 2004. SaveCCM---a component model for safety-critical real-time systems. In Proceedings of the IEEE Euromicro Conference (Special Session on Component Models for Dependable Systems). Google Scholar
Digital Library
- Helander, J. and Forin, A. 1998. MMLite: A highly componentized system architecture. In Proceedings of the 8th ACM SIGOPS European Workshop (Sintra, Portugal). 96--103. Google Scholar
Digital Library
- Hughes, D., Greenwood, P., Blair, G., Coulson, G., Pappenberger, F., Smith, P., and Beven, K. 2006. An intelligent and adaptable grid-based flood monitoring and warning system. In Proceedings of the UK eScience All Hands Meeting.Google Scholar
- Intel. 2004. Intel IXP1200/2400 Network Processors. Go online to http://www.intel.com/IXA.Google Scholar
- Joergensen, B. N., Truyen, E., Matthijs, F., and Joosen, W. 2000. Customization of object request brokers by application specific policies. In Proceedings of IFIP Middleware 2000 (New York, NY). Google Scholar
Digital Library
- Johnson, E. J. and Kunze, A. R. 2003. IXP2400/2800 programming: The complete microengine coding guide. Intel Press, Santa Ceara, CA. Google Scholar
Digital Library
- Joolia, A., Batista, T., Coulson, G., and Tadeu A. 2005. Mapping ADL specifications to an efficient and reconfigurable runtime component platform. In Proceedings of the 5th Working IEEE/IFIP Conference of Software Architecture (WICSA 5, Pittsburgh, PA). Google Scholar
Digital Library
- Karlin, S. and Peterson, L. 2001. VERA: An extensible router architecture. In Proceedings of the IEEE Conference on Open Architectures and Network Programming (OPENARCH 2001, Anchorage, AK). 3--14.Google Scholar
- Kon, F., Costa, F., Campbell, R., and Blair, G. 2002. The case for reflective middleware. Communi. ACM 45, 6, 33--38. Google Scholar
Digital Library
- Maes, P. 1987. Concepts and experiments in computational reflection. In Proceedings of OOPSLA'87 ACM SIGPLAN Not. 22, 147--155. Google Scholar
Digital Library
- Magoutis, K., Brustoloni, J. C., Gabber, E., Ng, W. T., and Silberschatz, A. 2000. Building appliances out of reusable components using pebble. In Proceedings of the SIGOPS European Workshop 2000 (Kolding, Denmark), 211--216. Google Scholar
Digital Library
- Microsoft. 2005. Net Home Page. Go online to http://www.microsoft.com/net.Google Scholar
- Mozilla Organization. 2005. XPCOM project. Go online to http://www.mozilla.org/projects/xpcom.Google Scholar
- Network Processing Forum. 2005. Go online to http://www.npforum.org/.Google Scholar
- Object Management Group. 1995. The Common Object Request Broker: Architecture and Specification, 2.0 ed. MG, Needham, MA.Google Scholar
- Object Management Group. 1999. CORBA components final submission. OMG Document orbos/99-02-05. OMG, Needham, MA.Google Scholar
- Parlavantzas, N. 2005. Constructing modifiable middleware with component frameworks. Ph.D. dissertation. Computing Department, Lancaster University, Lancaster, U.K.Google Scholar
- Parlavantzas, N., Coulson, G., and Blair, G.S. 2003. An extensible binding framework for component-based middleware. In Proceedings of the 7th IEEE International Enterprise Distributed Object Computing Conference (EDOC 2003, Brisbane, Australia). Google Scholar
Digital Library
- Rashid, R., Baron, B., Forin, A., Golub, D., Jones, M., Julin, D., Orr, D., and Sanzi, R. 1989. Mach: A foundation for open systems. In Proceedings of the 2nd Workshop on Workstation Operating Systems (WWOS2).Google Scholar
- Reid, A., Flatt, M., Stoller, L., Lepreau, J., and Eide, E. 2000. Knit: Component composition for systems software. In Proceedings of the 4th Conference on Operating Systems Design and Implementation (OSDI). 47--360. Google Scholar
Digital Library
- Roman, M., Mickunas, D., Kon, F., and Campbell, R. H. 2000. LegORB. In Proceedings of the IFIP/ACM Middleware 2000 Workshop on Reflective Middleware. IBM Palisades Executive Conference Center, Yorktown Heights, NY.Google Scholar
- Stewart, D., Volpe, R., and Khosla, P. 1993. Design of dynamically reconfigurable real-time software using port-based objects. Robotics Institute, Rep. No. CMU-RI-TR-93-11. Carnegie Mellon University, Pittsburgh, PA.Google Scholar
- Sun Microsystems. 2005. Go online to http://java.sun.com/products/ejf/index.html.Google Scholar
- Szyperski, C. 1998. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, Reading, MA. Google Scholar
Digital Library
- Van Ommering, R., Van Der Linden, F., Kramer, J., and Magee, J. 2000. The Koala component model for consumer electronics software. IEEE Comput. 33, 3, 78--85. Google Scholar
Digital Library
- Winter, M., Genbler, T., Christoph, A., Nierstrasz, O., Ducasse, S., Wuyts, R., Arevalo, G., Muller, P., Stich, C., and Schonhage, B. 2002. Components for embedded software: the PECOS approach. In Proceedings of the 2002 International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES'02, Grenoble, France). ACM Press, New York, NY, 19--26. Google Scholar
Digital Library
Index Terms
A generic component model for building systems software
Recommendations
A composite complexity measure for component-based systems
The increasing importance of software measurement has led to design and development of new software measures. Controlling and minimizing software complexity is the most important objective of each software development paradigm because it affects all ...
Building components with embedded security monitors
QoSA-ISARCS '11: Proceedings of the joint ACM SIGSOFT conference -- QoSA and ACM SIGSOFT symposium -- ISARCS on Quality of software architectures -- QoSA and architecting critical systems -- ISARCSA software component should be trustworthy and behave in a secure manner as it will be reused many times. Despite extensive efforts, usually, it cannot be guaranteed that a developed software component is completely secure. Hence, its execution in the ...






Comments