Systemdesign for OpenCAGE

Campus Software Solutions

Tobias Beichter
Dietrich Haak
Jörg Hoh
Hans Malte Kern
Stefan Mahler
Michael Reinsch
Michael Stürmer
Christian Viehmann
Fabian Wallwitz

Table of Contents
1. Preface
About this document
Project Overview
Project Goals
Product Goals
Design goals
Restrictions to the Design
Tools we use
Versions Of This Document
2. General Design Decisions
Layer Model
Trigger
Solution
Limitations
Ada95 as Implementation Language
Trigger
Solution
Limitations
GTK+ as GUI Toolkit
Trigger
Solution
Limitations
OO-Interfaces
Trigger
Solution
3. Overview
Overview of the System Components
Model
Display
Controller
4. Model
Overview
General structure of the model
The GIF
The RFG specific classes
Overview
Edges
Building the tree
Getting Type information
How is the RFG Adapter affected by changes directly to the RFG?
Actions
Why and what is an action?
How to use Actions
Analyses
Configuration Data
Introduction
Benefits
Adding new data to the configuration file
Implementation
5. Display
The Graph Area and the general draw strategy
Motivation
General structure of the Graph Area
Moving selected nodes
Selecting with a scope
Sensitive border
Scrolling
Drawing only the visible part of the content of a Graph Area
Display Hierarchy Diagram
Motivation
Mechanics
Graph_Window_Display
Motivation
Mechanics
Draw Strategy
Graph_Window_Model
Motivation
Mechanics
Quad_Tree_Component
Motivation
Mechanics
Object_Display
Motivation
Mechanics
Layouts
Motivation
Mechanics
Workbench
Motivation
Mechanics
Masters
Motivation
Mechanics
Layout Master
Window Master
Analysis-Master
Example
Example: UML Collaboration Diagram
Example: Description
Cursors
Motivation
Mechanics
Future Enhancements
Dialogs
Motivation
Mechanics
Context Menus
Motivation
Mechanics
Tables
Table Concept
Pixmap Tables
Name Tables
Zoom Tables
Color Tables
6. Controller
Command Factory
Motivation
Mechanics
Command
Motivation
Mechanics
Command Pipeline
Motivation
Mechanics
The Parts of the Command Pipeline
Conditions
Motivation
Mechanics
Scripting Output
Motivation
Mechanics
Limitations
Example
UML Class Diagram
UML Sequence Diagram
Script Execution
Motivation
Mechanics
7. Interfaces
Introduction
The Graph Interface (GIF)
Motivation
Mechanics
Class diagram
Actions
Motivation
Layouts
8. Event System
Introduction
Motivation
Concept
RFG to OpenCAGE Model Events
Events within the OpenCAGE Model
OpenCAGE Model to OpenCAGE GUI Events
Events within the OpenCAGE GUI
Example: Creating a node
9. Design Patterns
Introduction
What is a design pattern?
Describing Design Patterns
The FET pattern: data source, data gate, data drain
Name, Intent
Motivation
Applicability
Structure
Participants
Collaborations
Consequences
Implementation
Sample Code
Known Uses
Related Patterns
Command
Abstract Factory
Observer
Visitor
Model-View-Controller (MVC)
10. Holy Re-Usable Components
FIFO
Parameter Pot (PP)
Motivation
Mechanics
The data structure
Deserialization
Adding new Pot_Elements
Command Pipeline
Double linked List
Mechanics
Graphic Component
Motivation
Mechanics
11. Initialization
Introduction
Initialization of OpenCAGE
Loading of a RFG
12. Enhancements
How to enhance OpenCAGE
Motivation
A new Layout
A new, very complex Layout
A new Node-Type
A new Edge-Type
A new functionality
A new Action
A new Command
A new Model
A new Analysis
A new Attribute
Bibliography
List of Figures
3-1. Layers of OpenCAGE
4-1. Model Overview
4-2. RFG Adapter / Implementation of Graph Interface (GIF) for RFG
4-3. RFG Adapter / Implementation of Graph Interface (GIF) for RFG
5-1. Display Hierarchy Diagram
5-2. Graph_Window_Display Overview Diagram
5-3. Graph_Window_Model Overview Diagram
5-4. Quad_Tree_Component Overview Diagram
5-5. Quad_Tree_Component Overview Diagram
5-6. Object_Display Overview Diagram
5-7. Layout Overview Diagram
5-8. UML Class diagram: Workbench
5-9. UML Class Diagram: OpenCAGE.Masters
5-10. UML Class Diagram: Layout Master
5-11. UML Class Diagram: Window Master Model and Display
5-12. UML Class Diagram: Analysis Master Model
5-13. UML Class Diagram: Analysis Master Display
5-14. Example: UML Collaboration Diagram
5-15. UML Class Diagram: Cursors
5-16. UML Class diagram: Simple Dialog
5-17. UML Class diagram: Button_Box
5-18. UML Class diagram: Dialogs
5-19. UML Class diagram: Dialog Factories
5-20. UML Class Diagram: Menus
5-21. Pixmap Tables Overview
5-22. Attrbiute Tables Overview
5-23. Name Table Overview
5-24. Zoom Table Overview
5-25. Color Table Overview
6-1. Command and Command Factory
6-2. Command Pipeline
6-3. Mainloop
6-4. Example: Start Analysis (1)
6-5. Example: Start Analysis (2)
7-1. UML Class Diagram: Hierarchy of Graph Interface (GIF)
7-2. UML Sequence Diagram: Example of using the Graph Interface (GIF)
7-3. Hierarchy of Actions (incomplete)
8-1. Event example
8-2. Observers listening to the RFG
8-3. Observers within the OpenCAGE Model
8-4. Observers listening to the OpenCAGE Model
8-5. Observers within the OpenCAGE GUI
9-1. Data Flow: FET example
9-2. Sequence Diagram: FET example
9-3. Class Diagram: FET
9-4. Sequence Diagram: FET init
9-5. Sequence Diagram: FET call
10-1. UML Class Diagram: Parameter Pot (PP)
10-2. Double linked List Overview
10-3. Graphic Component Class Diagram