skip to main content
research-article

Exception handlers for healing component-based systems

Published:22 October 2013Publication History
Skip Abstract Section

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.

References

  1. Apache. 2012a. Apache maven. http://maven.apache.org.Google ScholarGoogle Scholar
  2. Apache. 2012b. Apache projects. http://projects.apache.org/.Google ScholarGoogle Scholar
  3. Aspectwerkz. 2012. Aspectwerkz. http://aspectwerkz.codehaus.org/.Google ScholarGoogle Scholar
  4. Eclipse. 2012. Eclipse emf-jet. http://www.eclipse.org/modeling/emf/docs/.Google ScholarGoogle Scholar
  5. Jboss. 2012. Jboss projects. http://www.jboss.org/.Google ScholarGoogle Scholar
  6. SpringSource. 2012. SpringSource projects. http://www.springsource.org/.Google ScholarGoogle Scholar
  7. Sun. 2012. Sun Java Standard Edition Technology. http://java.sun.com/javase/.Google ScholarGoogle Scholar
  8. Abbott, R. 1990. Resourceful systems for fault tolerance, reliability, and safety. ACM Comput. Sur. 22, 1. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Alexander, C., Ishikawa, S., and Silverstein, M. 1977. A Pattern Language: Towns, Buildings, Construction. Oxford University Press.Google ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. Anderson, T. and Lee, P. 1990. Fault Tolerance: Principles and Practices. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Apache Software Foundation. 2012. BCEL. http://jakarta.apache.org/bcel/.Google ScholarGoogle Scholar
  13. Avizienis, A. 1985. The N-version approach to fault-tolerant software. IEEE Trans. Softw. Eng. 11, 1491--1501. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. Cristian, F. 1982. Exception handling and software fault tolerance. IEEE Trans. Comput. 31, 6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Cristian, F. 1989. Exception handling. In Dependability of Resilient Computers, T. Anderson, Ed., Blackwell Scientific Publications, 68--97.Google ScholarGoogle Scholar
  26. 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 ScholarGoogle Scholar
  27. Demsky, B. and Rinard, M. 2003. Automatic detection and repair of errors in data structures. SIGPLAN Notices 38. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Demsky, B. and Sundaramurthy, S. 2011. Bristlecone: Language support for robust software applications. IEEE Trans. Softw. Engi. 37, 1, 4--23. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. Filho, F., da S. Brito, P., and Rubira, C. 2006. Specification of exception flow in software architectures. J. Syst. Softw. 79. 1397--1418.Google ScholarGoogle Scholar
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. IBM. 2012. Eclipse Test & Performance Tools Platform. http://www.eclipse.org/tptp/.Google ScholarGoogle Scholar
  40. Johnson, R. 2005. J2EE development frameworks. IEEE Computer 38, 1. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  44. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  50. Microsoft. 2012. Windows update. http://www.windowsupdate.com/.Google ScholarGoogle Scholar
  51. 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 ScholarGoogle Scholar
  52. Pan, K., Kim, S., and Whitehead, E. 2008. Toward an understanding of bug fix patterns. Empirical Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Pezzè, M. and Young, M. 2007. Software Testing and Analysis: Process, Principles and Techniques. Wiley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  55. Pradhan, D. K. and Vaidya, N. H. 1994. Roll-forward checkpointing scheme: A novel fault-tolerant architecture. IEEE Trans. Comput. 43. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  57. Randell, B. 1975. System structure for software fault tolerance. In Proceedings of the International Conference on Reliable Software. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Rinard, M. 2007. Automated techniques for surviving (otherwise) fatal software errors. Electron. Notes Theoret. Comput. Sci. 174, 4, 113--116. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  60. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  61. Rosenblum, D. S. 1992. Towards a method of programming with assertions. In Proceedings of the 14th International Conference on Software Engineering. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  63. 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 ScholarGoogle Scholar
  64. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  65. Szyperski, C. 2002. Component Software: Beyond Object-Oriented Programming. ACM Press and Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Vaidyanathan, K. and Trivedi, K. 2005. A comprehensive model for software rejuvenation. IEEE Trans. Depend. Secure Comput. 2, 2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Wasylkowski, A. and Zeller, A. 2011. Mining temporal specifications from object usage. Automat. Softw. Engi. 18, 3--4, 263--292. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  69. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  70. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Exception handlers for healing component-based systems

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM Transactions on Software Engineering and Methodology
        ACM Transactions on Software Engineering and Methodology  Volume 22, Issue 4
        Testing, debugging, and error handling, formal methods, lifecycle concerns, evolution and maintenance
        October 2013
        387 pages
        ISSN:1049-331X
        EISSN:1557-7392
        DOI:10.1145/2522920
        Issue’s Table of Contents

        Copyright © 2013 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 22 October 2013
        • Accepted: 1 September 2012
        • Revised: 1 June 2012
        • Received: 1 October 2011
        Published in tosem Volume 22, Issue 4

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader