Detecting Software Defects in Telecom Applications Through Lightweight Static Analysis: A War Story
In safety-critical and high-reliability systems, software development and maintenance are costly endeavors. The cost can be reduced if software errors can be identified through automatic tools such as program analyzers and compile-time software checkers. To this effect, this paper describes the architecture and implementation of a software tool that uses lightweight static analysis to detect discrepancies (i.e., software defects such as exception-raising code or hidden failures) in large commercial telecom applications written in Erlang. Our tool, starting from virtual machine bytecode, discovers, tracks, and propagates type information which is often implicit in Erlang programs, and reports warnings when a variety of type errors and other software discrepancies are identified. Since the analysis currently starts from bytecode, it is completely automatic and does not rely on any user annotations. Moreover, it is effective in identifying software defects even in cases where source code is not available, and more specifically in legacy software which is often employed in high-reliability systems in operation, such as telecom switches. We have applied our tool to a handful of real-world applications, each consisting of several hundred thousand lines of code, and describe our experiences and the effectiveness of our techniques.
KeywordsCompile-time program checking software development software tools defect detection software quality assurance
Unable to display preview. Download preview PDF.
- 2.Blau, S., Rooth, J.: AXD 301—A new generation ATM switching system. Ericsson Review 75(1), 10–17 (1998)Google Scholar
- 10.Johansson, E., Pettersson, M., Sagonas, K.: HiPE: A High Performance Erlang system. In: Proceedings of the ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, New York, NY, pp. 32–43. ACM Press, New York (2000)Google Scholar
- 11.Marlow, S., Wadler, P.: A practical subtyping system for Erlang. In: Proceedings of the ACM SIGPLAN International Conference on Functional Programming, pp. 136–149. ACM Press, New York (1997)Google Scholar
- 12.Mishra, P., Reddy, U.S.: Declaration-free type checking. In: Proceedings of the Twelfth Annual ACM Symposium on the Principles of Programming Languages, pp. 7–21. ACM Press, New York (1984)Google Scholar
- 13.Muchnick, S.S.: Advanced Compiler Design & Implementation. Morgan Kaufman Publishers, San Fransisco (1997)Google Scholar
- 14.Naish, L., Dart, P.W., Zobel, J.: The NU-Prolog debugging environment. In: Porto, A. (ed.) Proceedings of the Sixth International Conference on Logic Programming, pp. 521–536. The MIT Press, Cambridge (1989)Google Scholar
- 15.Nyström, S.-O.: A soft-typing system for Erlang. In: Proceedings of ACM SIGPLAN Erlang Workshop, pp. 56–71. ACM Press, New York (2003)Google Scholar