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.
- E. N. Adams. Optimizing preventive service of software products. IBM Journal of Research and Development, 28(1):2--14, 1984.Google ScholarDigital Library
- 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 ScholarDigital Library
- B. W. Boehm. Software Engineering Economics. Prentice-Hall, 1981. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- F. Christian. Exception handling and tolerance of software faults, chapter 4, pages 81--107. John Wiley & Sons, 1995.Google Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- N. E. Fenton and S. L. Pfleeger. Software Metrics: A rigorous and Practical Approach. PWS Publishing Company, second edition, 1997. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- N. H. Gehani. Exceptional C or C with exceptions. Software Practice and Experience, 22(10):827--848, 1992. Google ScholarDigital Library
- S. Johnson. Lint, a C Program Checker. Technical Report 65, Bell Laboratories, Dec. 1977.Google Scholar
- 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 ScholarDigital Library
- P. A. Lee. Exception handling in C programs. Software Practice and Experience, 13(5):389--405, 1983.Google ScholarCross Ref
- J.-L. Lions. Ariane 5 flight 501 failure. Technical report, ESA/CNES, 1996.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- E. S. Roberts. Implementing exceptions in C. Technical Report 40, Digital Systems Research Center, 1989.Google Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- W. N. Toy. Fault-tolerant design of local ess processors. In Proceedings of IEEE, pages 1126--1145. IEEE Computer Society, 1982.Google Scholar
- 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 ScholarDigital Library
- 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 Scholar
Index Terms
- Discovering faults in idiom-based exception handling
Recommendations
Efficient Java exception handling in just-in-time compilation
Research ArticlesJava uses exceptions to provide elegant error handling capabilities during program execution. However, the presence of exception handlers complicates the job of the just-in-time (JIT) compiler, while exceptions are rarely used in most programs. This ...
Exception Handling and Software Fault Tolerance
Some basic concepts underlying the issue of fault-tolerant software design are investigated. Relying on these concepts, a unified point of view on programmed exception handling and default exception handling based on automatic backward recovery is ...
Exception Handling in CLU
For programs to be reliable and fault tolerant, each program module must be defined to behave reasonably under a wide variety of circumstances. An exception handling mechanism supports the construction of such modules. This paper descnbes an exception ...
Comments