Bauhaus – A Tool Suite for Program Analysis and Reverse Engineering

  • Aoun Raza
  • Gunther Vogel
  • Erhard Plödereder
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4006)

Abstract

The maintenance and evolution of critical software with high requirements for reliability is an extremely demanding, time consuming and expensive task. Errors introduced by ad-hoc changes might have disastrous effects on the system and must be prevented under all circumstances, which requires the understanding of the details of source code and system design. This paper describes Bauhaus, a comprehensive tool suite that supports program understanding and reverse engineering on all layers of abstraction, from source code to architecture.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Eisenbarth, T., Koschke, R., Plödereder, E., Girard, J.F., Würthner, M.: Projekt Bauhaus: Interaktive und inkrementelle Wiedergewinnung von SW-Architekturen. In: 1. Workshop Software-Reengineering, Bad Honnef, Germany (1999)Google Scholar
  2. 2.
    Nosek, J.T., Palvia, P.: Software Maintenance Management: Changes in the Last Decade. Journal of Software Maintenance 2, 157–174 (1990)CrossRefGoogle Scholar
  3. 3.
    Fjeldstadt, R.K., Hamlen, W.T.: Application Program Maintenance Study: Report to Our Respondents. In: Proc. of GUIDE 48, Philadelphia, PA (1983)Google Scholar
  4. 4.
    Rainer Koschke, J.F.G., Würthner, M.: An Intermediate Representation for Reverse Engineering Analyses. In: Working Conference on Reverse Engineering, Hawaii, USA, pp. 241–250. IEEE Computer Society Press, Los Alamitos (1998)Google Scholar
  5. 5.
    Czeranski, J., Eisenbarth, T., Kienle, H., Koschke, R., Simon, D.: Analyzing xfig Using the Bauhaus Tool. In: Working Conference on Reverse Engineering, Brisbane Australia, pp. 197–199. IEEE Computer Society Press, Los Alamitos (2000)Google Scholar
  6. 6.
    Wilson, R.P., Lam, M.S.: Efficient Context-Sensitive Pointer Analysis for C Programs. In: PLDI (1995)Google Scholar
  7. 7.
    Steensgaard, B.: Points-to Analysis in Almost Linear Time. In: POPL 1996: Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 32–41. ACM Press, New York (1996)CrossRefGoogle Scholar
  8. 8.
    Das, M.: Unification-based Pointer Analysis with Directional Assignments. In: PLDI, pp. 35–46 (2000)Google Scholar
  9. 9.
    Andersen, L.O.: Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen (1994)Google Scholar
  10. 10.
    Sinha, S., Harrold, M.J.: Analysis and Testing of Programs with Exception Handling Constructs. IEEE Trans. Softw. Eng. 26, 849–871 (2000)CrossRefGoogle Scholar
  11. 11.
    Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Transaction on Programming Languages and Systems 13, 451–490 (1991)CrossRefGoogle Scholar
  12. 12.
    Engler, D., Ashcraft, K.: RacerX: Effective, Static Detection of Race Conditions and Deadlocks. In: SOSP 2003: Proceedings of the 19th ACM Symposium on Operating Systems Principles, pp. 237–252. ACM Press, New York (2003)CrossRefGoogle Scholar
  13. 13.
    Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs. In: SOSP 1997: Proceedings of the 16th ACM Symposium on Operating Systems Principles, pp. 27–37. ACM Press, New York (1997)CrossRefGoogle Scholar
  14. 14.
    Helmbold, D.P., McDowell, C.E.: A Taxonomy of Race Detection Algorithms. Technical report, University of California, Santa Cruz, CA, USA (1994) Google Scholar
  15. 15.
    IEEE Standards Board: IEEE Recommended Practice for Architectural Description of Software-intensive Systems—Std. 1471-2000 (2000)Google Scholar
  16. 16.
    Koschke, R.: Atomic Architectural Component Detection for Program Understanding and System Evolution. PhD thesis, University of Stuttgart (2000)Google Scholar
  17. 17.
    Murphy, G.C., Notkin, D., Sullivan, K.J.: Software Reflexion Models: Bridging the Gap between Design and Implementation. IEEE Computer Society Transactions on Software Engineering 27, 364–380 (2001)CrossRefGoogle Scholar
  18. 18.
    Koschke, R., Simon, D.: Hierarchical Reflexion Models. In: Working Conference on Reverse Engineering, pp. 36–45. IEEE Computer Society Press, Los Alamitos (2003)Google Scholar
  19. 19.
    Eisenbarth, T., Koschke, R., Simon, D.: Locating Features in Source Code. IEEE Computer Society Transactions on Software Engineering 29 (2003)Google Scholar
  20. 20.
    Lindig, C., Snelting, G.: Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis. In: Proceedings of the 19th International Conference on Software Engineering. IEEE Computer Society Press, Los Alamitos (1997)Google Scholar
  21. 21.
    Haak, D.: Werkzeuggestützte Herleitung von Protokollen. Diplomarbeit (2004)Google Scholar
  22. 22.
    Eisenbarth, T., Koschke, R., Vogel, G.: Static Object Trace Extraction for Programs with Pointers. Journals of Systems and Software (2005)Google Scholar
  23. 23.
    Larus, J.R.: Efficient Program Tracing. Computer 26, 52–61 (1993)CrossRefGoogle Scholar
  24. 24.
    Bellon, S., Koschke, R.: Comparison and Evaluation of Clone Detection Tools. IEEE Computer Society Transactions on Software Engineering 21, 61–72 (2004)Google Scholar
  25. 25.
    Vogel, G., Simon, D., Plödereder, E.: Teaching Software Engineering with Ada 95. In: Vardanega, T., Wellings, A.J. (eds.) Ada-Europe 2005. LNCS, vol. 3555, pp. 115–128. Springer, Heidelberg (2005)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Aoun Raza
    • 1
  • Gunther Vogel
    • 1
  • Erhard Plödereder
    • 1
  1. 1.Institut für SoftwaretechnologieUniversität StuttgartStuttgartGermany

Personalised recommendations