노무현 대통령 배너


2008. 6. 1. 10:35

Visual Studio와 연동되는 UML 툴-UML StateWizard

IntelliWizard© - UML StateWizard

An open source software under LGPL license.


Start Page

Introduction ...
What State Machine
Why State Machine
Running Environment
License Policy

Features


Product Family
API Set
Demo & Manual

Downloads

Installation
Engine Source Code

Users & Partners


User Stories
Forums



UML StateWizard

  • A ClassWizard-like round-trip UML dynamic modeling/development tool runs in popular IDEs.
  • A commercial-grade cross-platform state-oriented framework for Win32, Linux, pSOS.
  • For concurrent,distributed and real-time application development.

What is UML StateWizard?

UML StateWizard acts as an Visual C++ add-in, which provides a UML (Unified Modeling Language) state machine programming mechanism in form of portable standard C or C++ classes for either embedded systems development and simulation, or Windows/WinCE application development. After embedded systems' simulation and debugging in IDE, developer can move program to a destination working environment (such as VxWorks, embedded Linux, etc) with little or no extra investment of effort.

UML StateWizard supports

  • Visual C++ 6.0 English and German Edition
  • eMbedded Visual C++4.0
  • Visual Studio 2003
  • Visual Studio 2005 Profession or Team Suite

The StateWizard Agreement based on LGPL:

This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs.

Hot Links

What is new in the latest release ?

  • The StateWizard Pro V1.3 released
  • The StateWizard Standard V7.9 released
  • Several compatibility issues for VS 2005 solved.
  • Support state machine construction with the StateChart.

Why UML StateWizard?

You may ask why UML StateWizard, while there are already many good UML tools such as Rational Rose, VisualState and others. Our answer is:

  • UML StateWizard aims at not only being a modeling or code generation tool, but also being a full-featured UML dynamic modeling tool with reverse engineering and round-trip engineering features. It models program with the State Charts or the State Tree, moreover, it synchronizes the model with the changes in the application code in the stages of software design and coding;
  • Just like the MS Visual C++ ClassWizard, StateWizard runs inside the integrated development environment. There is no need to switch between tools for design/development. Many other UML modeling tools run as stand alone applications;
  • No intermediate modeling file. Build UML diagrams directly from a set of specific macro and flags in source code.
  • StateWizard rapidly builds applications with state machine based frameworks. It efficiently codes state charts directly in platform-independent standard embedded C/C++;
  • StateWizard provides state tracking, simulation and debugging for embedded system development.  

Those UML tools that generate code for UML behavioral models such as state diagrams are usually quite expensive. Basic UML drawing and code generation tools can be obtained for a few hundred dollars per license seat, but the tools that generate code from state charts are usually on the order of several thousand dollars per seat. Organizations on a limited budget may be forced to use less expensive tools, meaning that the state machine design must be maintained separately from the program code, almost guaranteeing that the design and code will drift away from each other during and after development. It becomes very difficult to keep the design updated with changes in the source code, requiring great process discipline by the developer.

The Goals of the StateWizard API Set and the Application Framework

  • Simplicity: It should be easy to construct state machine trees/applications.
  • Extensibility: It should be extensible to add other pseudo states.
  • Cross-Compiler: Support for VC++, EVC++, GCC, Diab C and for Win32/Linux
  • Cross-Platform: The StateWizard engine based on a cross-platform OS API library, for Linux/Win32.
  • Multi-threaded: Several groups of state machines (applications) are allowed to run at each separate thread/task
  • Unicode Support: Support Ascii/Unicode log strings output in Ascii/Unicode text files.
  • Debugging: Provide real-time state tracking into a file and the StateTree, debugger fields filter, module-based output filter.


UML StateWizard is a full-featured UML tool:

  • UML diagram support: StateWizard supports the state tree, state chart drawing for dynamicl modeling.
  • Forward engineering: The StateWizard UML tool does not limit its use to just pictorial depictions of diagrams. Because the structure of the system defined by the diagram is translated by a developer into actual source code, StateWizard bridges this step by generating the source code in a state machine framework with the methods stubbed out. Developers can take up this stub code and fill in with the actual code.
  • Reverse engineering: Reverse engineering is exactly the opposite of forward engineering. In reverse engineering, StateWizard loads all the files of the application/system, identifies state relationships among applications, and reconstructs the entire state machine structure along with all relationships.
  • Round-trip engineering: A rule in software design is that no design remains unchanged. This is as true for small systems as it is for large systems. During development, the design structure defined in the UML model undergoes changes to incorporate differences in implementation that may not have been envisaged during design. It becomes very difficult to keep the design of the system synchronized with the changes in the source code. StateWizard’s round-trip engineering feature allows the UML tool to synchronize the model with changes in the application code. StateWizard enforces real-time synchronization of its model to modifications in the source code. For example, developers can visually do a drag-and-drop operation in a state chart diagram and the source code will change as well. On the other hand, developers may directly modify the source code and modifications will be automatically shown in the state chart diagram. StateWizard serves as a bridge between state chart diagram and source code.
  • Documentation: StateWizard provides some way for the designer to document design decisions in the diagrams. A designer may save a state chart as a BMP file and a state tree as a text file.
  • Integration with popular IDE (VC++): With the increasing use of iterative methodologies for building software systems, it becomes very difficult to keep the design of the system in sync with the developed code. Hence, it would be useful if the UML tool provides integration with popular IDEs. This feature would enable the UML tool to be updated with the changes in the source code made in the IDE.

You may apply UML StateWizard to :

  • Platform-independent embedded system modeling and simulation.  

In simulation environment, developer can design some simulators using Windows program as service providers. These simulators have identical interface with target service providers' interface. On target environment, developer may take little effort to integrate state machine applications with these service providers to real environment. Active applications may make some service calls exported by service providers, meanwhile may receive some external events triggered by service providers through RTOS functions. There are many different RTOSs although they provide similar functions. RTOS Virtual Layer provides a set of platform independent functions so that it can be moved to other platforms without any state machine applications changes.

In debugging, state machines can be used to test how an application handles insufficient memory situations, to examine allocation patterns, or to log allocation information for later analysis.  

  • State machines based Win32/WinCE programs development through window message hooking technology.

Windows-based applications are event-driven. Each window has a function, called a window procedure, that the system calls whenever it has input for the window. That procedure takes responses depending on the incoming Windows message type.

However, if an application that must sequence a series of actions, or handle inputs differently depending on not only the incoming message but also what state it's in, is often best implemented as a state machine. In a concurrent, distributed system, there are several state machines. Moreover, a state machine may post events to other state machines, so state machines are asynchronous event driven. There is at least an event queue for a running thread.

If state machines run at different thread rather than window’s thread, developers have to handle the thread resources synchronization issues.

Using winodw hook technology, StateWizard run state machine application framework based Win32/WinCE programs without any additional message queue, and these state machines run at the same thread as the hooked window’s thread, so that state machines can work tightly with Windows user interface.

UML StateWizard contains:

The State Chart models embedded systems without using heavyweight, expensive CASE tools. The State Chart gives you a "birds's-eye view" of your application's logical structure and flow. It graphically constructs the state hierarchy, with child states nested within their parent nodes. The state chart's major advantage over state trees is that it displays every state's transitions in the form of arrows from one state to another state. If a developer selects a state or a transition, and then right clicks the mouse, StateWizard will display an action list in a drop down menu configured for the selected state or the transition.

The State Tree is a state machine programmer's assistant, located in the VC workspace tab window. While coding, it provides a state machine framework. It makes it easy for developer to do certain routing tasks such as creating the state machine application, creating the state hierarchy, defining entry functions and exit functions for a state, and defining event handlers. While running, it is a state tracker for all active applications. If a developer selects a state tree item and then right clicks the mouse, StateWizard will provide an action list in a drop-down menu configured for the selected project, application, or state.

This tool supports several user interface resource data generation for the embedded system development, including ASCII / Unicode text strings, menus, bitmaps and fonts. These resource items are organized by the Visual C++ 6.0 resource editor.

StateWizard supplies a rich set of APIs for embedded system applications simulation in Visual C++ developer studio. Meanwhile, provides some debugging tools, useful to fix memory leaks or memory overwriting errors, to test how an application handles insufficient memory situations, to examine allocation patterns, or to log allocation information for later analysis.  

A code line calculator for C/C++ source code

This tool discloses the program's code size, readonly memory, un-initialized memory and writable memory usage based on the generated map file. Further more, this tool can uncover every variable data length in detail.

"Question is more important than the answer." - Plato

We believe the question is more important than the answer. Questions spark discussions and thinking, they help you to form an opinion. It's human nature to need to know the answers, yet if we knew all the answers life would be pretty boring.


Copyright 2007 IntelliWizard Inc. All Rights Reserved.

EMail : info@intelliwizard.com

Email us for any suggestions submit, feature requests, or any information.

We provide technical support for non-commercial or commercial UML StateWizard users.


'프로그래밍 > UML' 카테고리의 다른 글

Free UML Tools  (0) 2008.06.02