skip to main content
10.1145/1134285.1134320acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Discovering faults in idiom-based exception handling

Authors Info & Claims
Published:28 May 2006Publication History

ABSTRACT

In this paper, we analyse the exception handling mechanism of a state-of-the-art industrial embedded software system. Like many systems implemented in classic programming languages, our subject system uses the popular return-code idiom for dealing with exceptions. Our goal is to evaluate the fault-proneness of this idiom, and we therefore present a characterisation of the idiom, a fault model accompanied by an analysis tool, and empirical data. Our findings show that the idiom is indeed fault prone, but that a simple solution can lead to significant improvements.

References

  1. E. N. Adams. Optimizing preventive service of software products. IBM Journal of Research and Development, 28(1):2--14, 1984.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. T. Ball and S. K. Rajamani. The slam project: debugging system software via static analysis. In Conference Record of POPL 2002: The 29th SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 1--3. ACM, January 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. B. W. Boehm. Software Engineering Economics. Prentice-Hall, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Bruntink, A. van Deursen, and T. Tourwé. Isolating Idiomatic Crosscutting Concerns. In Proceedings of the International Conference on Software Maintenance, pages 37--46. IEEE Computer Society, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Bruntink, A. van Deursen, R. van Engelen, and T. Tourwé. An evaluation of clone detection techniques for identifying crosscutting concerns. In Proceedings of the IEEE International Conference on Software Maintenance, pages 200--209. IEEE Computer Society, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Bush. Improving software quality: the use of formal inspections at the jpl. In Proceedings of the International Conference on Software Engineering, pages 196--199. IEEE Computer Society, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. W. R. Bush, J. D. Pincus, and D. J. Sielaff. A static analyzer for finding dynamic programming errors. Softw., Pract. Exper., 30(7):775--802, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. H. Chen and D. Wagner. Mops: an infrastructure for examining security properties of software. In ACM Conference on Computer and Communications Security, pages 235--244. ACM, November 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. F. Christian. Exception handling and tolerance of software faults, chapter 4, pages 81--107. John Wiley & Sons, 1995.Google ScholarGoogle Scholar
  10. M. Das, S. Lerner, and M. Seigle. Esp: Path-sensitive program verification in polynomial time. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 57--68. ACM, May 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. Dyer. The cleanroom approach to quality software development. In Proceedings of the 18th International Computer Measurement Group Conference, pages 1201--1212. Computer Measurement Group, 1992.Google ScholarGoogle Scholar
  12. D. R. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In 4th Symposium on Operating System Design and Implementation, pages 1--16. USENIX Association, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. N. E. Fenton and S. L. Pfleeger. Software Metrics: A rigorous and Practical Approach. PWS Publishing Company, second edition, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, and R. Stata. Extended static checking for java. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 234--245. ACM, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. C. Fu, A. Milanova, B. G. Ryder, and D. G. Wonnacott. Robustness testing of java server applications. IEEE Transactions on Software Engineering, 31(4):292 -- 311, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. N. H. Gehani. Exceptional C or C with exceptions. Software Practice and Experience, 22(10):827--848, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. S. Johnson. Lint, a C Program Checker. Technical Report 65, Bell Laboratories, Dec. 1977.Google ScholarGoogle Scholar
  18. J. Lang and D. B. Stewart. A study of the applicability of existing exception-handling techniques to component-based real-time software technology. ACM Transactions on Programming Languages and Systems, 20(2):274 -- 301, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. A. Lee. Exception handling in C programs. Software Practice and Experience, 13(5):389--405, 1983.Google ScholarGoogle ScholarCross RefCross Ref
  20. J.-L. Lions. Ariane 5 flight 501 failure. Technical report, ESA/CNES, 1996.Google ScholarGoogle Scholar
  21. M. Lippert and C. V. Lopes. A study on exception detecton and handling using aspect-oriented programming. In Proceedings of the International Conference on Software Engineering, pages 418 -- 427. IEEE Computer Society, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. B. Littlewood. Dependability assessment of software-based systems: state of the art. In Proceedings of the International Conference on Software Engineering, pages 6--7. ACM Press, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. Musuvathi, D. Y. W. Park, A. Chou, D. R. Engler, and D. L. Dill. CMC: A pragmatic approach to model checking real code. In 5th Symposium on Operating System Design and Implementation. USENIX Association, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S. Paul and A. Prakash. A Framework for Source Code Search using Program Patterns. IEEE Transactions on Software Engineering, 20(6):463--475, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. E. S. Roberts. Implementing exceptions in C. Technical Report 40, Digital Systems Research Center, 1989.Google ScholarGoogle Scholar
  26. M. Robillard and G. C. Murphy. Regaining control of exception handling. Technical Report TR-99-14, Department of Computer Science, University of British Columbia, 1999. Google ScholarGoogle Scholar
  27. M. P. Robillard and G. Murphy. Static analysis to support the evolution of exception structure in object-oriented systems. ACM Transactions on Software Engineering and Methodology, 12(2):191--221, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. S. Sinha and M. J. Harrold. Criteria for testing exception-handling constructs in java programs. In Proceedings of the International Conference on Software Maintenance. IEEE Computer Society, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. T. Tourwé and T. Mens. Identifying Refactoring Opportunities Using Logic Meta Programming. In Proceedings of the European Conference on Software Maintenance and Reengineering, pages 91--100. IEEE Computer Society, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. W. N. Toy. Fault-tolerant design of local ess processors. In Proceedings of IEEE, pages 1126--1145. IEEE Computer Society, 1982.Google ScholarGoogle Scholar
  31. E. van Emden and L. Moonen. Java quality assurance by detecting code smells. In Proceedings of the Working Conference on Reverse Engineering, pages 97--106. IEEE Computer Society, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. H. Winroth. Exception handling in ANSI C. Technical Report ISRN KTH NA/P-93/15-SE, Department of Numerical Analysis and Computing Science, Royal Institute of Technology, Stockholm, Sweden, 1993.Google ScholarGoogle Scholar

Index Terms

  1. Discovering faults in idiom-based exception handling

        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
        • Published in

          cover image ACM Conferences
          ICSE '06: Proceedings of the 28th international conference on Software engineering
          May 2006
          1110 pages
          ISBN:1595933751
          DOI:10.1145/1134285

          Copyright © 2006 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: 28 May 2006

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • Article

          Acceptance Rates

          Overall Acceptance Rate276of1,856submissions,15%

          Upcoming Conference

          ICSE 2025

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader