Secrets from the Monster: Extracting Mozilla’s Software Architecture

As large systems evolve, their architectural integrity tends to decay. Reverse engineering tools, such as PBS [7, 19], Rigi [15], and Acacia [5], can be used to acquire an understanding of a system’s “as-built” architecture and in so doing regain control over the system. A problem that has impeded the widespread adoption of reverse engineering tools is the tight coupling of their subtools, including source code “fact” extractors, visualization engines, and querying mechanisms; this coupling has made it difficult, for example, for users to employ alternative extractors that might have different strengths or understand different source languages. The TAXFORM project has sought to investigate how different reverse engineering tools can be integrated into a single framework by providing mappings to and from common data schemas for program “facts” [2]. In this paper, we describe how we successfully integrated the Acacia C and C++ fact extractors into the PBS system, and how we were then able to create software architecture models for two large software systems: the Mozilla web browser (over two million lines of C++ and C) and the VIM text editor (over 160,000 lines of C).

[1]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[2]  David Notkin,et al.  An empirical study of static call graph extractors , 1998, TSEM.

[3]  Michael W. Godfrey,et al.  Connecting architecture reconstruction frameworks , 2000, Inf. Softw. Technol..

[4]  Emden R. Gansner,et al.  A C++ data model supporting reachability analysis and dead code detection , 1997, ESEC '97/FSE-5.

[5]  Michel Dagenais,et al.  An analysis framework for understanding layered software architectures , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[6]  Michael W. Godfrey,et al.  Extracting Source Models from Java Programs: Parse, Disassemble, or Profile? , 1999 .

[7]  Michael W. Godfrey,et al.  Evolution in open source software: a case study , 2000, Proceedings 2000 International Conference on Software Maintenance.

[8]  Richard C. Holt,et al.  Forward and reverse repair of software architecture , 1999, CASCON.

[9]  M. N. Armstrong,et al.  Evaluating architectural extractors , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[10]  Robert L. Nord,et al.  Applied Software Architecture , 1999, Addison Wesley object technology series.

[11]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[12]  Hausi A. Müller,et al.  A reverse-engineering approach to subsystem structure identification , 1993, J. Softw. Maintenance Res. Pract..

[13]  Hausi A. Müller,et al.  The Software Bookshelf , 1997, IBM Syst. J..

[14]  Richard C. Holt,et al.  Linux as a case study: its extracted software architecture , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[15]  Michael W. Godfrey,et al.  Architecture Analysis and Repair of Open Source Software , 2000 .

[16]  Dewayne E. Perry,et al.  Metrics and laws of software evolution-the nineties view , 1997, Proceedings Fourth International Software Metrics Symposium.