Visualizing Software Architecture with Off-The-Shelf Components Jie Ren, Richard Taylor Institute for Software Research University of California, Irvine
Outline Overview Background Integrate off-the-shelf components Visualize static structure Visualize dynamic execution Related work Conclusion
Overview Motivation: To facilitate construction of large software To explore issues in reusing OTS Components Validation Integrating ArchStudio, Visio and Graphviz AWACS simulator Contribution demonstration of the effectiveness of development with COTS components exploration of different integration technologies the software architecture visualization solution
Background: C2, xadl C2 Architecture Style Components, connectors Interface: top, bottom Events: request, notification xadl 2.0 Architecture Description Language Instance Structure and Type Configuration Management Support
Background: ArchStudio xarchadt ADT Tier components providing more "convenient" APIs to xarchadt... Convenience Tier Analysis, Simulation, and other tools without user interfaces.... No-UI Tools Tier Visio UI-based tools and UIs for upper layers tools. ArchEdit UI Tools Tier File Manager/Invoker Management Tier
Background: Visio and Microsoft Visio Graphviz popularity, support, functionality, and customizability Graphviz (from AT&T Research) the appearance of the resulting graph drawings tool usability: speed, scalability
Visio for ArchStudio
Integrating Components Integrate ArchStudio and Visio Running ArchStudio within Microsoft JVM Interoperation with Sun JVM through RMI Generic COM/Event Bridge Integrate Visio and Graphviz File-based Native COM interface
Visio as Graphical Editor Enhance Visio to edit architectural constituents Functionalities: Create component and connector types Create/Delete components/connectors Connect/Disconnect components/connectors Undo the editing operations Group/Ungroup components and connectors Create sub architectures
Visualization of Static Structure Extensible visual notation Visualizing architecture description Supporting complex architecture
Visual Notations Template, Stencil, and Master Meta masters for component type, connector type, and link type One master for each type Customization of masters
Visualize Architecture Description Use Graphviz to layout constituents of an architecture Visio reads the result and positions the components and connectors
Architecture Concepts to be Visualized Notion of A->B Visualized In Box- And-Line-like Description Components Box Box Visualized In xadl-like Description Connectors Line Box (different type) Links (Implicit) Line Input to Graphviz Component-> Component Component-> Connector; Connector-> Component Handling of direction: order of appearance Different shapes for components and connectors Handling of link: use Visio s built-in link
AWACS Structure AWACS 40+ component types 120+ components 200+ connectors 400+ links 10000+ lines of xadl code <componenttype id="mainrdmx_type"> </componenttype>... <connectortype id="connector_type_1"> </connectortype> <component id="mainrdmx1"> <type href="#mainrdmx_type"/> <interface id= MAINRDMX1_I_AOCPCAU1 /> </component> <connector id="connector_02"> <type href="#connector_type_1"/> <interface id= Interface_B_02 /> </connector> <link id="link_mainrdmx1_02"> <point> <anchoroninterface href="#mainrdmx1_i_aocpcau1"/> </point> <point> <anchoroninterface href="#interface_b_02"> </point> </link>...
AWACS Visualization
Group Support Complex Sub Architecture Architecture Browser Architecture
Visualize Dynamic Execution Instantiation Events Listener
Visualization Summary General purpose graphical editor Visualize architecture descriptions, using architect s graphical notations Group, sub-architecture, browse Animation of execution
Related Work Visualization in other ADLs Developed from scratch Few support both static and dynamic visualization Integrating Commercial Products Goldman/Balzer: PowerPoint Coppit/Sullivan: Package Oriented Programming Other forms of software architecture visualization Grundy/Husking: SoftArch Reverse Engineering Community
Conclusion Integrating COTS into a visualization solution Contribution: demonstration, integration, solution Choosing components: open source, easy customization, business factors Further work: event filtering/track, architecture analysis, architecture evolution