xjCharts A C++ / Java Statecharts Tool for Developers Experimental Object Technologies
2 © 1999 Experimental Object Technologies What is xjCharts? A tool for developers of event-driven software A graphical Editor that creates and handles statechart objects in C++ or Java code A runtime Engine that executes your statecharts according to UML semantics Editor is easy to use Engine is fast
3 © 1999 Experimental Object Technologies When Do You Need a Statechart? During its execution, a program performs operations in response to the external or internal events and conditions Sometimes, this event and time ordering of operations is so pervasive that we can best formally characterize the behavior of such programs in terms of a statechart David Harel
4 © 1999 Experimental Object Technologies Existing Statecharts Tools There are other tools on the market: iLogix Statemate Rational Rose ObjecTime Developer ISI BetterState They are heavyweight environments that force developer to learn a lot, to follow certain design templates, to use project files, etc Poor integration with other tools developers use
5 © 1999 Experimental Object Technologies When Do Developers Use xjCharts? Developers realize that a component of the system is event-driven They want to stay with their favorite development environment and rapidly insert a statechart into an existing project They want the statechart to work fast, with minimum overhead They do not want to learn a new environment
6 © 1999 Experimental Object Technologies How Do Developers Use xjCharts? xjCharts Engine Your development environment Compiler & Linker ? xjCharts Editor Source files Your application
7 © 1999 Experimental Object Technologies xjCharts Editor You just share your source file between your DE and xjCharts Editor Two synchronized views on source: graphics and text – edit either Development platform: Win32 GraphicsText
8 © 1999 Experimental Object Technologies Code Generation xjCharts generates C++ or Java 1.1 Everything is generated while you draw The complete information about the statechart is stored in the source file – no extra files needed
9 © 1999 Experimental Object Technologies xjCharts Engine Executes your statechart. Provides UML semantics Is fast: up to 500,000 events per second on Intel Pentium II 450 MHz Is a library compiled for each target platform Source may be licensed
10 © 1999 Experimental Object Technologies Target Platforms Win32 / MS Visual C++ Linux / gcc or pgcc QNX / Watcom C++ Any Java 1.1 compatible platform No OS VxWorks HP-UX Under Development
11 © 1999 Experimental Object Technologies Visual Language of xjCharts B H Composite state History state Branch Initial state Simple state Final state Transition
12 © 1999 Experimental Object Technologies Attributes of States and Transitions B H Entry action: Code Exit action: Code Action: Code Guard: Boolean expr. Trigger: Event / Timeout Action: Code Guard: Boolean expr. Action: Code Action: Code
13 © 1999 Experimental Object Technologies UML xjCharts supports these UML constructs: Composite states Branches Shallow and deep history states Final states UML Event model xjCharts does not support: Orthogonal states
14 © 1999 Experimental Object Technologies Summary xjCharts Editor creates and handles statecharts in your source code C++ and Java generated while you draw Development platform: Win32 Target: Win32, Linux, QNX, Java, no OS Fast Engine: 500,000 eps on PII 450 Platform-independent event model UML syntax and semantics