index.html 8.2 KB

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