240 likes | 380 Views
Concrete Architecture of Firefox 2. Team One July 6, 2007. Agenda. Introduction Concrete Architecture Comparison with Conceptual Modules JavaScript Interpreter XML Parser Display Backend Conclusion. Introduction. Analyzing Concrete Architecture
E N D
Concrete Architecture of Firefox 2 Team One July 6, 2007
Agenda • Introduction • Concrete Architecture • Comparison with Conceptual • Modules • JavaScript Interpreter • XML Parser • Display Backend • Conclusion
Introduction • Analyzing Concrete Architecture • Previously researched Conceptual Architecture • Extracted Architecture from code
Comparison with Conceptual • High cohesion (XPCOM) • Additional layers • Extensions • Common • Additional dependencies
Modules: JS Interpreter • Called SpiderMonkey • Written in C • Many classes and packages, but 6 seem to be most important
LiveConnect • Package in SpiderMonkey • Bridge between JavaScript and Java • Depends on a few internal classes and XPCOM
XPConnect • Package in SpiderMonkey • Allows JavaScript objects access to XPCOM objects and vice-versa • Depends on some internal classes and XPCOM
JSInterp • Class in SpiderMonkey • JavaScript Interpreter Class • All classes that depend on JSInterp are internal • All classes JSInterp depends on are internal
API Classes • JSAPI, JSXDRAPI, JSDbgAPI • Used by external classes • Depend on and are depended on by many internal classes • Façade Pattern
API Classes • JSAPI is the main API for SpiderMonkey • JSXDRAPI is the external data representation API • JSDbgAPI is SpiderMonkey’s debug API
XML Parsers • expat module performs DOM parsing • xml module performs SAX parsing • Both work independently of each other • expat module is self-contained and has no dependencies; however, xml module relies on stream input and string operations support from xpcom
htmlparser Module • Abstracts away string and unichar issues • Delegates parsing requests to expat and xml modules, and receives the result back. • Implements something close to a façade, however, xml talks to xpcom
Deviation from Conceptual • Nothing is invoking/depending on parser module for XML parsing requests • Could be a dynamic dependency rather than static, which bfx and lsedit cannot capture
Modules: Display Backend • Set of platform-independent drawing primitives • Adapter to the native graphics interface (GTK, GDI, etc) • PostScript handling • Shared sub-components
Deviation from Conceptual • UI talks directly to Display Backend • Interaction with Common • intl • xpcom • nsprpub
Conclusion • Conceptual Architecture Useful • Additional Layers • Additional Dependencies
Thank you Questions?