1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 3<html> 4<head> 5 <meta http-equiv="Content-Language" content="en-us"> 6 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> 7 <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> 8 <meta name="ProgId" content="FrontPage.Editor.Document"> 9 <link rel="stylesheet" type="text/css" href="../../../boost.css"> 10 11 <title>The Boost Statechart Library - Overview</title> 12</head> 13 14<body link="#0000FF" vlink="#800080"> 15 <table border="0" cellpadding="7" cellspacing="0" width="100%" summary= 16 "header"> 17 <tr> 18 <td valign="top" width="300"> 19 <h3><a href="../../../index.htm"><img alt="C++ Boost" src= 20 "../../../boost.png" border="0" width="277" height="86"></a></h3> 21 </td> 22 23 <td valign="top"> 24 <h1 align="center">The Boost Statechart Library</h1> 25 26 <p align="center">(formerly known as boost::fsm)</p> 27 28 <h2 align="center">Overview</h2> 29 </td> 30 </tr> 31 </table> 32 <hr> 33 34 <h2>Contents</h2> 35 36 <dl class="index"> 37 <dt><a href="#Overview">Overview</a></dt> 38 39 <dd><a href="#SupportedPlatforms">Supported platforms</a></dd> 40 41 <dd><a href="#GettingStarted">Getting started</a></dd> 42 43 <dd><a href="#Audience">Audience</a></dd> 44 45 <dt> </dt> 46 47 <dt><a href="tutorial.html">Tutorial</a> [pdf: <a href= 48 "tutorial.pdf">English</a>, <a href= 49 "http://prdownloads.sourceforge.jp/jyugem/7127/fsm-tutorial-jp.pdf">Japanese</a>]</dt> 50 51 <dt><a href="uml_mapping.html">UML to Boost.Statechart mapping 52 summary</a></dt> 53 54 <dt><a href="faq.html">Frequently Asked Questions (FAQs)</a></dt> 55 56 <dt><a href="configuration.html">Configuration</a></dt> 57 58 <dt><a href="definitions.html">Definitions</a></dt> 59 60 <dt><a href="reference.html">Reference</a> [pdf: <a href= 61 "reference.pdf">English</a>]</dt> 62 63 <dt><a href="rationale.html">Rationale</a> [pdf: <a href= 64 "rationale.pdf">English</a>]</dt> 65 66 <dt><a href="performance.html">Performance</a></dt> 67 68 <dt><a href="acknowledgments.html">Acknowledgments</a></dt> 69 70 <dt><a href="future_and_history.html#ToDoList">To-do list</a></dt> 71 72 <dt><a href="future_and_history.html#ChangeHistory">Change 73 history</a></dt> 74 </dl> 75 <hr> 76 77 <h2><a name="Overview" id="Overview">Overview</a></h2> 78 79 <p>Welcome to Boost.Statechart, a C++ library for finite state machines. 80 Features include:</p> 81 82 <ul> 83 <li>Straightforward transformation from UML statechart to executable C++ 84 code and vice versa. Currently, this needs to be done manually both ways 85 but it should not be difficult to automate these tasks</li> 86 87 <li>Comprehensive <a href= 88 "http://www.omg.org/cgi-bin/doc?formal/03-03-01">UML semantics</a> 89 support: 90 91 <ul> 92 <li>Hierarchical (composite, nested) states</li> 93 94 <li>Orthogonal (concurrent) states</li> 95 96 <li>Entry-, exit- and transition-actions</li> 97 98 <li>Guards</li> 99 100 <li>Shallow/deep history</li> 101 102 <li>Event deferral</li> 103 </ul> 104 </li> 105 106 <li>Error handling support</li> 107 108 <li>Maximum type-safety</li> 109 110 <li>Compile-time statechart validation</li> 111 112 <li>Support for asynchronous state machines and multi-threading</li> 113 114 <li>State-local storage</li> 115 116 <li>Generic design allowing for the customization of memory management, 117 error handling and threading</li> 118 </ul> 119 120 <h3><a name="SupportedPlatforms" id="SupportedPlatforms">Supported 121 platforms</a></h3> 122 123 <p>Whether and how Boost.Statechart will work on your platform is best 124 determined on the <a href= 125 "http://www.boost.org/development/tests/master/developer/statechart.html"> 126 status page</a>. If the cells in your compilers column are all green, the 127 library should work as advertised. Cells of different color indicate 128 possible problems; follow the links for details. Before employing the 129 library I would also advise to run the tests (see <a href= 130 "#GettingStarted">Getting started</a>) on your particular platform in all 131 the modes (debug, release, etc.) that are later used during development 132 (the status page shows debug mode results only). The closer the test 133 compiler switches mirror the ones that are later used during development, 134 the less likely are future surprises. An example of such a surprise is 135 Intel 9.0 with MSVC 7.1 base toolset, where DllTestNormal and DllTestNative 136 pass in debug mode but fail in release mode.</p> 137 138 <h3><a name="GettingStarted" id="GettingStarted">Getting started</a></h3> 139 140 <ol> 141 <li>Follow the steps 1-4 described on the <a href= 142 "../../../more/getting_started.html">Boost Getting Started Page</a>. 143 Since Boost.Statechart is a header-only library, you should now know 144 enough to compile the examples in the tutorial in your favorite 145 environment (except PingPong which requires Boost.Thread binaries)</li> 146 147 <li>Optional: If you want to compile the PingPong example or use <a href= 148 "reference.html#ClassTemplatefifo_scheduler">fifo_scheduler<></a> 149 in your project, you need to get hold of the Boost.Thread binaries and 150 link against them, see steps 5-6 on the Boost Getting Started Page</li> 151 152 <li>Optional: If you want to run the tests, you need to get the bjam 153 executable, as described under step 5.2 on the Boost Getting Started 154 Page. After doing so, bjam should be installed in your <code>PATH</code>. 155 Open a command prompt and change the current directory to 156 <code>boost_1_38_0/libs/statechart/test</code>. Type 157 <pre> 158bjam --toolset=<i>your-toolset</i> 159</pre> 160 161 <p>(where <code><i>your-toolset</i></code> is one of the names 162 documented under step 5.2.2 on the Boost Getting Started Page) and hit 163 CR. After the test run, failures (if any) are indicated at the end of 164 the output, in the form of a "<code>...failed updating X 165 targets...</code>" message. For some platforms certain failures are 166 expected, see <a href="#SupportedPlatforms">Supported 167 platforms</a>.</p> 168 </li> 169 </ol> 170 171 <h3><a name="Audience" id="Audience">Audience</a></h3> 172 173 <p>Throughout all Boost.Statechart documentation it is assumed that the 174 reader is familiar with the state machine concept, UML statecharts and most 175 of the UML state machine terminology. The following links might be 176 interesting if this is not the case:</p> 177 178 <ul> 179 <li><a href= 180 "http://www.objectmentor.com/resources/articles/umlfsm.pdf">http://www.objectmentor.com/resources/articles/umlfsm.pdf</a> 181 introduces state machines and UML statecharts</li> 182 183 <li><a href= 184 "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> 185 explains most of the UML statechart elements and terminology</li> 186 187 <li>The inventor of statecharts, David Harel, presents a thorough but 188 still very readable discussion in his original paper: : <a href= 189 "http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf"> 190 http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/Statecharts.pdf</a></li> 191 192 <li>The UML specifications (formal) can be found here: <a href= 193 "http://www.omg.org/cgi-bin/doc?formal/03-03-01">http://www.omg.org/cgi-bin/doc?formal/03-03-01</a> 194 (see chapters 2.12 and 3.74)</li> 195 </ul> 196 197 <p>Some of the used terminology cannot be found in the UML specifications, 198 please see <a href="definitions.html">Definitions</a> for more 199 information.</p> 200 <hr> 201 202 <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src= 203 "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional" 204 height="31" width="88"></a></p> 205 206 <p>Revised 207 <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->09 April, 2007<!--webbot bot="Timestamp" endspan i-checksum="30014" --></p> 208 209 <p><i>Copyright © 2003-<!--webbot bot="Timestamp" s-type="EDITED" s-format="%Y" startspan -->2007<!--webbot bot="Timestamp" endspan i-checksum="778" --> 210 <a href="contact.html">Andreas Huber Dönni</a></i></p> 211 212 <p><i>Distributed under the Boost Software License, Version 1.0. (See 213 accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or 214 copy at <a href= 215 "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p> 216</body> 217</html> 218