Files
statechart/doc/index.html
2006-07-12 21:52:33 +00:00

220 lines
8.1 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<title>The Boost Statechart Library - Overview</title>
</head>
<body link="#0000FF" vlink="#800080">
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
"header">
<tr>
<td valign="top" width="300">
<h3><a href="../../../index.htm"><img alt="C++ Boost" src=
"../../../boost.png" border="0" width="277" height="86"></a></h3>
</td>
<td valign="top">
<h1 align="center">The Boost Statechart Library</h1>
<p align="center">(formerly known as boost::fsm)</p>
<h2 align="center">Overview</h2>
</td>
</tr>
</table>
<hr>
<h2>Contents</h2>
<dl class="index">
<dt><a href="#Overview">Overview</a></dt>
<dd><a href="#SupportedPlatforms">Supported platforms</a></dd>
<dd><a href="#GettingStarted">Getting started</a></dd>
<dd><a href="#Audience">Audience</a></dd>
<dt>&nbsp;</dt>
<dt><a href="tutorial.html">Tutorial</a> [pdf: <a href=
"tutorial.pdf">English</a>, <a href=
"http://prdownloads.sourceforge.jp/jyugem/7127/fsm-tutorial-jp.pdf">Japanese</a>]</dt>
<dt><a href="uml_mapping.html">UML to Boost.Statechart mapping
summary</a></dt>
<dt><a href="faq.html">Frequently Asked Questions (FAQs)</a></dt>
<dt><a href="configuration.html">Configuration</a></dt>
<dt><a href="definitions.html">Definitions</a></dt>
<dt><a href="reference.html">Reference</a> [pdf: <a href=
"reference.pdf">English</a>]</dt>
<dt><a href="rationale.html">Rationale</a> [pdf: <a href=
"rationale.pdf">English</a>]</dt>
<dt><a href="performance.html">Performance</a></dt>
<dt><a href="acknowledgments.html">Acknowledgments</a></dt>
<dt><a href="future_and_history.html#ToDoList">To-do list</a></dt>
<dt><a href="future_and_history.html#ChangeHistory">Change
history</a></dt>
</dl>
<hr>
<h2><a name="Overview" id="Overview">Overview</a></h2>
<p>Welcome to Boost.Statechart, a C++ library for finite state machines.
Features include:</p>
<ul>
<li>Straightforward transformation from UML statechart to executable C++
code and vice versa. Currently, this needs to be done manually both ways
but it should not be difficult to automate these tasks</li>
<li>Comprehensive <a href=
"http://www.omg.org/cgi-bin/doc?formal/03-03-01">UML semantics</a>
support:
<ul>
<li>Hierarchical (composite, nested) states</li>
<li>Orthogonal (concurrent) states</li>
<li>Entry-, exit- and transition-actions</li>
<li>Guards</li>
<li>Shallow/deep history</li>
<li>Event deferral</li>
</ul>
</li>
<li>Error handling support</li>
<li>Maximum type-safety</li>
<li>Compile-time statechart validation</li>
<li>Support for asynchronous state machines and multi-threading</li>
<li>State-local storage</li>
<li>Generic design allowing for the customization of memory management,
error handling and threading</li>
</ul>
<h3><a name="SupportedPlatforms" id="SupportedPlatforms">Supported
platforms</a></h3>
<p>Whether and how Boost.Statechart will work on your platform is best
determined on the <a href=
"http://engineering.meta-comm.com/boost-regression/CVS-RC_1_34_0/developer/statechart.html">
status page</a>.
If the cells in your compilers column are all green, the library
should work as advertised. Cells of different color indicate possible
problems; follow the links for details. Before employing the library I
would also advise to run the tests (see <a href="#GettingStarted">Getting
started</a>) on your particular platform in all the modes (debug, release,
etc.) that are later used during development (the status page shows debug
mode results only). The closer the test compiler switches mirror the ones
that are later used during development, the less likely are future
surprises. An example of such a surprise is Intel 9.0 with MSVC 7.1 base
toolset, where DllTestNormal and DllTestNative pass in debug mode but fail
in release mode.</p>
<h3><a name="GettingStarted" id="GettingStarted">Getting started</a></h3>
<ol>
<li>Follow the steps 1-3 described on the <a href=
"../../../more/getting_started.html">Boost Getting Started Page</a>.
After doing so, somewhere on your hard drive you should have a directory
containing the boost distribution (e.g. under
<code>D:\Data\boost_1_34_0</code>), the bjam executable installed in
your <code>PATH</code> and your toolset configured in
<a href="../../../tools/build/v2/user-config.jam">user-config.jam</a>.
</li>
<li>Open a command prompt and change the current directory to
<code>D:\Data\boost_1_34_0\libs\statechart\examples</code></li>
<li>To compile the examples in debug mode, type <code>bjam</code> and hit
CR. Please refer to the bjam command line documentation for other options.
After the build has finished you will find all executables in
<code>D:\Data\boost_1_34_0\libs\statechart\examples\run</code>. In
addition to the examples discussed in the tutorial, this script also
builds the Performance executable in different variants, which show the
effects of various choices on runtime performance, executable size, etc.
Moreover, the Handcrafted executable is also built, which serves to
compare performance of a simple Boost.Statechart machine with its
handcrafted equivalent</li>
<li>Optional: To run the tests, invoke bjam in the directory
<code>D:\Data\boost_1_33_0\libs\statechart\test</code></li>
</ol>
<h3><a name="Audience" id="Audience">Audience</a></h3>
<p>Throughout all Boost.Statechart documentation it is assumed that the
reader is familiar with the state machine concept, UML statecharts and most
of the UML state machine terminology. The following links might be
interesting if this is not the case:</p>
<ul>
<li><a href=
"http://www.objectmentor.com/resources/articles/umlfsm.pdf">
http://www.objectmentor.com/resources/articles/umlfsm.pdf</a>
introduces state machines and UML statecharts</li>
<li><a href=
"http://www.sts.tu-harburg.de/teaching/ws-99.00/OOA+D/StateDiagrams.pdf">
http://www.sts.tu-harburg.de/teaching/ws-99.00/OOA+D/StateDiagrams.pdf</a>
explains most of the UML statechart elements and terminology</li>
<li>The inventor of statecharts, David Harel, presents a thorough but
still very readable discussion in his original paper: : <a href=
"http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf">
http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf</a></li>
<li>The UML specifications (formal) can be found here: <a href=
"http://www.omg.org/cgi-bin/doc?formal/03-03-01">
http://www.omg.org/cgi-bin/doc?formal/03-03-01</a>
(see chapters 2.12 and 3.74)</li>
</ul>
<p>Some of the used terminology cannot be found in the UML specifications,
please see <a href="definitions.html">Definitions</a> for more
information.</p>
<hr>
<p><a href="http://validator.w3.org/check?uri=referer"><img border="0"
src="http://www.w3.org/Icons/valid-html401"
alt="Valid HTML 4.01 Transitional" height="31" width="88"></a></p>
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->12 July, 2006<!--webbot bot="Timestamp" endspan i-checksum="21145" --></p>
<p><i>&copy; Copyright <a href="contact.html">Andreas Huber D&ouml;nni</a>
2003-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y" startspan -->2006<!--webbot bot="Timestamp" endspan i-checksum="770" --></i></p>
<p><i>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>