Abstract
To design effective exception handlers, developers must predict at design time the exceptional events that may occur at runtime, and must implement the corresponding handlers on the basis of their predictions. Designing exception handlers for component-based software systems is particularly difficult because the information required to build handlers is distributed between component and application developers. Component developers know the internal details of the components but ignore the applications, while application developers own the applications but cannot access the details required to implement handlers in components.
This article addresses the problem of automatically healing the infield failures that are caused by faulty integration of OTS components. In the article, we propose a technique and a methodology to decouple the tasks of component and application developers, who will be able to share information asynchronously and independently, and communicate implicitly by developing and deploying what we call healing connectors. Component developers implement healing connectors on the basis of information about the integration problems frequently experienced by application developers. Application developers easily and safely install healing connectors in their applications without knowing the internal details of the connectors. Healing connectors heal failures activated by exceptions raised in the OTS components actually deployed in the system.
The article defines healing connectors, introduces a methodology to develop and deploy healing connectors, and presents several case studies that indicate that healing connectors are effective, reusable and efficient.
- Apache. 2012a. Apache maven. http://maven.apache.org.Google Scholar
- Apache. 2012b. Apache projects. http://projects.apache.org/.Google Scholar
- Aspectwerkz. 2012. Aspectwerkz. http://aspectwerkz.codehaus.org/.Google Scholar
- Eclipse. 2012. Eclipse emf-jet. http://www.eclipse.org/modeling/emf/docs/.Google Scholar
- Jboss. 2012. Jboss projects. http://www.jboss.org/.Google Scholar
- SpringSource. 2012. SpringSource projects. http://www.springsource.org/.Google Scholar
- Sun. 2012. Sun Java Standard Edition Technology. http://java.sun.com/javase/.Google Scholar
- Abbott, R. 1990. Resourceful systems for fault tolerance, reliability, and safety. ACM Comput. Sur. 22, 1. Google ScholarDigital Library
- Alexander, C., Ishikawa, S., and Silverstein, M. 1977. A Pattern Language: Towns, Buildings, Construction. Oxford University Press.Google Scholar
- Anderson, T. and Kerr, R. 1976. Recovery blocks in action: a system supporting high relibility. In Proceedings of the International Conference on Software Engineering. Google ScholarDigital Library
- Anderson, T. and Lee, P. 1990. Fault Tolerance: Principles and Practices. Springer-Verlag. Google ScholarDigital Library
- Apache Software Foundation. 2012. BCEL. http://jakarta.apache.org/bcel/.Google Scholar
- Avizienis, A. 1985. The N-version approach to fault-tolerant software. IEEE Trans. Softw. Eng. 11, 1491--1501. Google ScholarDigital Library
- Avizienis, A., Laprie, J.-C., Randell, B., and Landwehr, C. 2004. Basic concepts and taxonomy of dependable and secure computing. IEEE Trans. Depend. Secure Comput. 1, 1. Google ScholarDigital Library
- Becker, S., Brogi, A., Gorton, I., Overhage, S., Romanovsky, A., and Tivoli, M. 2006. Towards an engineering approach to component adaptation. In Architecting Systems with Trustworthy Components, Lecture Notes in Computer Science, Springer. Google ScholarDigital Library
- Brito, P. H. S., Lemos, R. D., Rubira, C. M. F., and Martins, E. 2009. Architecting fault tolerance with exception handling: verification and validation. J. Comput. Scie. Tech. 24, 2. Google ScholarDigital Library
- Cabral, B. and Marques, P. 2007. Exception handling: a field study in Java and .NET. In Proceedings of the 21st European Conference on Object-Oriented Programming, Lecture Notes in Computer Science, Springer. Google ScholarDigital Library
- Cabral, B. and Marques, P. 2008. A case for automatic exception handling. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering. Google ScholarDigital Library
- Candea, G., Kawamoto, S., Fujiki, Y., Friedman, G., and Fox, A. 2004. Microreboo: A technique for cheap recovery. In Proceedings of the 6th Symposium on Operating Systems Design and Implementation. Google ScholarDigital Library
- Carzaniga, A., Gorla, A., Perino, N., and Pezzè, M. 2010. Automatic workarounds for web applications. In Proceedings of the 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering. Google ScholarDigital Library
- Carzaniga, A., Gorla, A., and Pezzè, M. 2009. Handling software faults with redundancy. In Architecting Dependable Systems VI, R. de Lemos, J.-C. Fabre, C. Gacek, F. Gadducci, and M. H. ter Beek, Eds., Lecture Notes in Computer Science. Springer, 148--171. Google ScholarDigital Library
- Chang, H., Mariani, L., and Pezzè, M. 2009. In-field healing of integration problems with COTS components. In Proceedings of the 31st International Conference on Software Engineering. Google ScholarDigital Library
- Constantinides, C. A., Bader, A., Elrad, T. H., Netinant, P., and Fayad, M. E. 2000. Designing an aspect-oriented framework in an object-oriented environment. ACM Comput. Surv. 1. Google ScholarDigital Library
- Cristian, F. 1982. Exception handling and software fault tolerance. IEEE Trans. Comput. 31, 6. Google ScholarDigital Library
- Cristian, F. 1989. Exception handling. In Dependability of Resilient Computers, T. Anderson, Ed., Blackwell Scientific Publications, 68--97.Google Scholar
- de Castro Guerra, P., Rubira, C., Romanovsky, A., and de Lemos, R. 2004. A dependable architecture for COTS-based software systems using protective wrappers. In Architecting Dependable Systems II, R. de Lemos, C. Gacek, and A. Romanovsky, Eds., vol. 3069, Lecture Notes in Computer Science, Springer, 147--170.Google Scholar
- Demsky, B. and Rinard, M. 2003. Automatic detection and repair of errors in data structures. SIGPLAN Notices 38. Google ScholarDigital Library
- Demsky, B. and Sundaramurthy, S. 2011. Bristlecone: Language support for robust software applications. IEEE Trans. Softw. Engi. 37, 1, 4--23. Google ScholarDigital Library
- Elnozahy, E. N., Alvisi, L., Wang, Y.-M., and Johnson, D. B. 2002. A survey of rollback-recovery protocols in message-passing systems. ACM Comput. Surv. 34, 3. Google ScholarDigital Library
- Fetzer, C., Felber, P., and Hogstedt, K. 2004. Automatic detection and masking of nonatomic exception handling. IEEE Trans. Softw. Engi. 30, 8, 547--560. Google ScholarDigital Library
- Filho, F., da S. Brito, P., and Rubira, C. 2006. Specification of exception flow in software architectures. J. Syst. Softw. 79. 1397--1418.Google Scholar
- Friedrich, G., Fugini, M., Mussi, E., Pernici, B., and Tagni, G. 2010. Exception handling for repair in service-based processes. IEEE Trans. Softw. Engi. 99, 198--215. Google ScholarDigital Library
- Fu, C., Milanova, A., Ryder, B. G., and Wonnacott, D. G. 2005. Robustness testing of Java server applications. IEEE Trans. Softw. Engi. 31, 4. Google ScholarDigital Library
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Google ScholarDigital Library
- Garcia, A. F., Beder, D. M., and Rubira, C. M. F. 1999. An exception handling mechanism for developing dependable object-oriented software based on a meta-level approach. In Proceedings of the 10th International Symposium on Software Reliability Engineering. IEEE Computer Society. Google ScholarDigital Library
- Garcia, A. F., Rubira, C. M. F., Romanovsky, A., and Xu, J. 2001. A comparative study of exception handling mechanisms for building dependable object-oriented software. J. Syst. Soft. 59, 2. Google ScholarDigital Library
- Garlan, D., Allen, R., and Ockerbloom, J. 1995. Architectural mismatch or why its hard to build systems out of existing parts. In Proceedings of the 17th International Conference on Software Engineering. ACM. Google ScholarDigital Library
- Horning, J., Lauer, H. C., Melliar-Smith, P. M., and Randell, B. 1974. System structure for error detection and recovery. In Proceedings of the International Conference on Operating Systems. Google ScholarDigital Library
- IBM. 2012. Eclipse Test & Performance Tools Platform. http://www.eclipse.org/tptp/.Google Scholar
- Johnson, R. 2005. J2EE development frameworks. IEEE Computer 38, 1. Google ScholarDigital Library
- Keshav, R. and Gamble, R. 1998. Towards a taxonomy of architecture integration strategies. In Proceedings of the 3rd International Workshop on Software Architecture. ACM. Google ScholarDigital Library
- Krena, B., Letko, Z., Tzoref, R., Ur, S., and Vojnar, T. 2007. Healing data races on-the-fly. In Proceedings of the ACM Workshop on Parallel and Distributed Systems: Testing and Debugging. Google ScholarDigital Library
- Leavens, G. T., Baker, A. L., and Ruby, C. 2006. Preliminary design of JML: A behavioral interface specification language for Java. SIGSOFT Softw. Engi. Notes 31, 3. Google ScholarDigital Library
- Li, J., Huang, G., Zou, J., and Mei, H. 2007. Failure analysis of open source J2EE application servers. In Proceedings of the 7th International Conference on Quality Software. IEEE Computer Society. Google ScholarDigital Library
- Lippert, M. and Lopes, C. V. 2000. A study on exception detection and handling using aspect-oriented programming. In Proceedings of the 22nd International Conference on Software Engineering. ACM. Google ScholarDigital Library
- Lorenzoli, D., Mariani, L., and Pezzè, M. 2007. Towards self-protecting enterprise applications. In Proceedings of the IEEE International Symposium on Software Reliability Engineering. Google ScholarDigital Library
- Maxion, R. A. and Olszewski, R. T. 1998. Improving software robustness with dependability cases. In Proceedings of the 28th Annual International Symposium on Fault-Tolerant Computing. IEEE Computer Society. Google ScholarDigital Library
- Maxion, R. A. and Olszewski, R. T. 2000. Eliminating exception handling errors with dependability cases: A comparative, empirical study. IEEE Trans. Softw. Engi. 26, 9. Google ScholarDigital Library
- Mehta, N. R., Medvidovic, N., and Phadke, S. 2000. Towards a taxonomy of software connectors. In Proceedings of the 22nd International Conference on Software Engineering. ACM. Google ScholarDigital Library
- Microsoft. 2012. Windows update. http://www.windowsupdate.com/.Google Scholar
- Miller, R. and Tripathi, A. R. 1997. Issues with exception handling in object-oriented systems. In Proceedings of the European Conference on Object-Oriented Systems. Lecture Notes in Computer Science, Springer.Google Scholar
- Pan, K., Kim, S., and Whitehead, E. 2008. Toward an understanding of bug fix patterns. Empirical Software Engineering. Google ScholarDigital Library
- Pezzè, M. and Young, M. 2007. Software Testing and Analysis: Process, Principles and Techniques. Wiley. Google ScholarDigital Library
- Pitman, K. 2001. Condition handling in the lisp language family. In Advances in Exception Handling Techniques, A. Romanovsky, C. Dony, J. Knudsen, and A. Tripathi, Eds., Lecture Notes in Computer Science, vol. 2022. Springer. Google ScholarDigital Library
- Pradhan, D. K. and Vaidya, N. H. 1994. Roll-forward checkpointing scheme: A novel fault-tolerant architecture. IEEE Trans. Comput. 43. Google ScholarDigital Library
- Qin, F., Tucek, J., Sundaresan, J., and Zhou, Y. 2005. Rx: Treating bugs as allergies—a safe method to survive software failures. In Proceedings of the 20th ACM Symposium on Operating Systems Principles. Google ScholarDigital Library
- Randell, B. 1975. System structure for software fault tolerance. In Proceedings of the International Conference on Reliable Software. ACM. Google ScholarDigital Library
- Rinard, M. 2007. Automated techniques for surviving (otherwise) fatal software errors. Electron. Notes Theoret. Comput. Sci. 174, 4, 113--116. Google ScholarDigital Library
- Robillard, M. P. and Murphy, G. C. 2003. Static analysis to support the evolution of exception structure in object-oriented systems. ACM Trans. Softw. Engi. Method. 12, 2. Google ScholarDigital Library
- Romanovsky, A. B. 2001. Exception handling in component-based system development. In Proceedings of the 25th International Computer Software and Applications Conference on Invigorating Software Development. IEEE Computer Society. Google ScholarDigital Library
- Rosenblum, D. S. 1992. Towards a method of programming with assertions. In Proceedings of the 14th International Conference on Software Engineering. ACM. Google ScholarDigital Library
- Rubira, C. M. F., de Lemos, R., Ferreira, G. R. M., and Filho, F. C. 2005. Exception handling in the development of dependable component-based systems. Softw. Practice Exper. 35, 3. Google ScholarDigital Library
- Simons, K. and Stafford, J. 2004. CMEH: Container managed exception handling for increased assembly robustness. In Proceedings of the International Symposium on Component-Based Software Engineering. Lecture Notes in Computer Science, vol. 3054, Springer.Google Scholar
- Sinha, S. and Harrold, M. J. 1999. Criteria for testing exception-handling constructs in Java programs. In Proceedings of the IEEE International Conference on Software Maintenance. IEEE Computer Society. Google ScholarDigital Library
- Szyperski, C. 2002. Component Software: Beyond Object-Oriented Programming. ACM Press and Addison-Wesley. Google ScholarDigital Library
- Vaidyanathan, K. and Trivedi, K. 2005. A comprehensive model for software rejuvenation. IEEE Trans. Depend. Secure Comput. 2, 2. Google ScholarDigital Library
- Wasylkowski, A. and Zeller, A. 2011. Mining temporal specifications from object usage. Automat. Softw. Engi. 18, 3--4, 263--292. Google ScholarDigital Library
- Wei, Y., Pei, Y., Furia, C. A., Silva, L. S., Buchholz, S., Meyer, B., and Zeller, A. 2010. Automated fixing of programs with contracts. In Proceedings of the International Symposium on Software Testing and Analysis. Google ScholarDigital Library
- Xu, J., Romanovsky, A., and Randell, B. 1998. Coordinated exception handling in distributed object systems: From model to system implementation. In Proceedings of the 18th International Conference on Distributed Computing Systems. IEEE Computer Society. Google ScholarDigital Library
- Yakimovich, D., Bieman, J. M., and Basili, V. R. 1999. Software architecture classification for estimating the cost of COTS integration. In Proceedings of the 21st International Conference on Software Engineering. IEEE Computer Society Press. Google ScholarDigital Library
Index Terms
- Exception handlers for healing component-based systems
Recommendations
Towards architecture-level middleware-enabled exception handling of component-based systems
CBSE '11: Proceedings of the 14th international ACM Sigsoft symposium on Component based software engineeringException handling is a practical and important way to improve the availability and reliability of a component-based system. The classical code-level exception handling approach is usually applied to the inside of a component, while some exceptions can ...
Testing-based Process for Evaluating Component Replaceability
Replacing pieces of component-based systems carries a serious risk on the expected stability. Substitutability of components must then be carefully identified. With this intent, this paper presents a process to evaluate replacement components by ...
Enforceable component-based realtime contracts
We present enforceable component-based realtime contracts, the first extension of component-based software engineering technology that comprehensively supports adaptive realtime systems from specification all the way to the running system.
To provide ...
Comments