You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(46) |
Aug
(14) |
Sep
|
Oct
|
Nov
|
Dec
|
---|
From: John R. <jsr...@ya...> - 2001-08-25 04:38:37
|
This application is straightforward, clean and functional. It is a good baseline for the gui component of FSM. I liked the auto layout functionality. The developer computes several layouts displaying the state machine created by the user. He then displays the optimal layout. This will be one of the key implementation issues for the gui. I will attempt to state the problem as follows: "Given a set of linked states which have been randomly placed on the screen by the user, find an algorithm to generate a layout for these states". I want to explore alternatives to the algorithm used by this application. We can embody this algorithm in the strategy pattern, so that we can switch algorithms later on, should we find better alternatives. He also has other features in the app such as eliminating unreachable states and converting from a NFA to a DFA. We could consider these later... Please respond with inputs for formatting algorithms... Thanks, John. --- "Stathy G. Touloumis" <st...@st...> wrote: > Here is a generic FSM visual editor developed in > java. Would definitely > require some work but perhaps can lay a foundation > to build upon. Full > source is available : > http://www.belgarath.demon.co.uk/java/fsme.html > > > > > -- There is always somebody better than you . . . > -- Until you realize this you can never be the best. > > Stathy G. Touloumis > Coder > > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: Madhan D. <gma...@ya...> - 2001-08-17 11:27:12
|
umm... JBuilder is an IDE and also it provides a visual editor for the GUI part of the application. It comes with some extra GUI components that are not part of the standard JDK swing !!! its really worth using and it comes free !!! im not sure whether it provides cvs facilities...but still its one great RAD tool when it comes to gui development !!! __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: Stathy G. T. <st...@st...> - 2001-08-16 19:51:14
|
Here is a generic FSM visual editor developed in java. Would definitely require some work but perhaps can lay a foundation to build upon. Full source is available : http://www.belgarath.demon.co.uk/java/fsme.html -- There is always somebody better than you . . . -- Until you realize this you can never be the best. Stathy G. Touloumis Coder |
From: Stathy G. T. <st...@st...> - 2001-08-16 19:17:16
|
Thought these were interesting and possibly helpful. C++ toolkit for finite-state machines and regular expressions : http://www.csd.uwo.ca/research/grail/ ftp://ftp.win.tue.nl/pub/techreports/pi/automata/toolkit/ Java FSM : http://sourceforge.net/projects/openai/ Full functional open-source code generator in C : http://www.imatix.com/html/libero/index.htm |
From: sridhar n. <n_s...@ya...> - 2001-08-16 17:53:06
|
I saw GEF project on tigris.org (http://gef.tigris.org) when I was looking at argoUML. This seems to be a framework that will help in building the GUI part of our project. I think we should seriously consider building our application using the GEF library. -sridhar __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: sridhar n. <n_s...@ya...> - 2001-08-16 17:48:44
|
I tried the argoUML tool and haven't run into any problems yet. I will continue to use it to maintain my private copy of our work. I can publish the diagrams as gif files. I had listed 4 high level Use Cases for the UI^SM (User Interface for the Statemachine project) in an earlier email. Here is the template I am planning to use for describing the use cases in more detail. This is from Rational Unified Process and we can fill in as much detail as we find appropriate. I have time planned for this work during this weekend. If anyone wants to take some use cases and elaborate, please let me know which use cases you will be working on. -sridhar ----BEGIN TEMPLATE--------------------- 1.Use-Case Name [The following template is provided for a Use-Case Specification, which contains the textual properties of the use case. This document is used with a requirements management tool, such as Rational RequisitePro, for specifying and marking the requirements within the use-case properties. The use-case diagrams can be developed in a visual modeling tool, such as Rational Rose. A use-case report (with all properties) may be generated with Rational SoDA. For more information, see the tool mentors in the Rational Unified Process.] 1.1 Brief Description [The description briefly conveys the purpose of the use case. A single paragraph will suffice for this description.] 2. Flow of Events 2.1 Basic Flow [This use case starts when the actor does something. An actor always initiates use cases. The use case describes what the actor does and what the system does in response. It needs to be phrased in the form of a dialog between the actor and the system. The use case describes what happens inside the system, but not how or why. If information is exchanged, be specific about what is passed back and forth. For example, it is not very illuminating to say that the actor enters customer information. It is better to say the actor enters the customers name and address. A Glossary of Terms is often useful to keep the complexity of the use case manageableyou may want to define things like customer information there to keep the use case from drowning in details. Simple alternatives may be presented within the text of the use case. If it only takes a few sentences to describe what happens when there is an alternative, do it directly within the Flow of Events section. If the alternative flow is more complex, use a separate section to describe it. For example, an Alternative Flow subsection explains how to describe more complex alternatives. A picture is sometimes worth a thousand words, though there is no substitute for clean, clear prose. If it improves clarity, feel free to paste graphical depictions of user interfaces, process flows or other figures into the use case. If a flow chart is useful to present a complex decision process, by all means use it! Similarly for state-dependent behavior, a state-transition diagram often clarifies the behavior of a system better than pages upon pages of text. Use the right presentation medium for your problem, but be wary of using terminology, notations or figures that your audience may not understand. Remember that your purpose is to clarify, not obscure.] 2.2 Alternative Flows 2.2.1 < First Alternative Flow > [More complex alternatives are described in a separate section, referred to in the Basic Flow subsection of Flow of Events section. Think of the Alternative Flow subsections like alternative behavioreach alternative flow represents alternative behavior usually due to exceptions that occur in the main flow. They may be as long as necessary to describe the events associated with the alternative behavior. When an alternative flow ends, the events of the main flow of events are resumed unless otherwise stated.] 2.2.1.1 < An Alternative Sub-flow > [Alternative flows may, in turn, be divided into subsections if it improves clarity.] 2.2.2 < Second Alternative Flow > [There may be, and most likely will be, a number of alternative flows in a use case. Keep each alternative flow separate to improve clarity. Using alternative flows improves the readability of the use case, as well as preventing use cases from being decomposed into hierarchies of use cases. Keep in mind that use cases are just textual descriptions, and their main purpose is to document the behavior of a system in a clear, concise, and understandable way.] 3. Special Requirements [A special requirement is typically a nonfunctional requirement that is specific to a use case, but is not easily or naturally specified in the text of the use cases event flow. Examples of special requirements include legal and regulatory requirements, application standards, and quality attributes of the system to be built including usability, reliability, performance or supportability requirements. Additionally, other requirementssuch as operating systems and environments, compatibility requirements, and design constraintsshould be captured in this section.] 3.1 < First Special Requirement > 4. Pre-conditions [A pre-condition of a use case is the state of the system that must be present prior to a use case being performed.] 4.1 < Pre-condition One > 5. Post-conditions [A post-condition of a use case is a list of possible states the system can be in immediately after a use case has finished.] ----END TEMPLATE--------------------- --- John Rodrigues <jsr...@ya...> wrote: > I'm not too happy with this tool (ArgoUML). It's buggy > and somewhat akward!! I guess we could use any drawing > tool for drawing the use case diagrams (with the stick > figures) and also for the UML models. > > We would not be using the UML-tool to generate the > code anyway. > > Sridhar, when can we start off with the use cases for > the GUI ?? > > Dennis, is Jbuilder just an IDE, or does it also > provide an add-on framework?? Does it use a repository > for code?? > > Thanks, > John. > > > --- John Rodrigues <jsr...@ya...> wrote: > > I came across Argo/UML which is an open source > > (Apache > > license) CASE tool for UML and Use cases. It > > generates > > XML output. Download version 0.8.x which is their > > production release. It's written in Java. > > > > Get it at : > > http://argouml.tigris.org/ > > > > Thanks, > > John. > > > > __________________________________________________ > > Do You Yahoo!? > > Send instant messages & get email alerts with Yahoo! > > Messenger. > > http://im.yahoo.com/ > > > > _______________________________________________ > > Statemachine-development mailing list > > Sta...@li... > > > http://lists.sourceforge.net/lists/listinfo/statemachine-development > > > __________________________________________________ > Do You Yahoo!? > Make international calls for as low as $.04/minute with Yahoo! > Messenger > http://phonecard.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: John R. <jsr...@ya...> - 2001-08-16 15:55:37
|
I'm not too happy with this tool (ArgoUML). It's buggy and somewhat akward!! I guess we could use any drawing tool for drawing the use case diagrams (with the stick figures) and also for the UML models. We would not be using the UML-tool to generate the code anyway. Sridhar, when can we start off with the use cases for the GUI ?? Dennis, is Jbuilder just an IDE, or does it also provide an add-on framework?? Does it use a repository for code?? Thanks, John. --- John Rodrigues <jsr...@ya...> wrote: > I came across Argo/UML which is an open source > (Apache > license) CASE tool for UML and Use cases. It > generates > XML output. Download version 0.8.x which is their > production release. It's written in Java. > > Get it at : > http://argouml.tigris.org/ > > Thanks, > John. > > __________________________________________________ > Do You Yahoo!? > Send instant messages & get email alerts with Yahoo! > Messenger. > http://im.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: Madhan D. <gma...@ya...> - 2001-08-16 05:46:45
|
umm........... for the XML parser we can use IBMs XML parser. Its pretty simple to use. I'm having JBuilder3 foundation which can be downloaded free from borland !!! UML tool for free.... no idea !!! __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: John R. <jsr...@ya...> - 2001-08-14 03:19:50
|
I came across Argo/UML which is an open source (Apache license) CASE tool for UML and Use cases. It generates XML output. Download version 0.8.x which is their production release. It's written in Java. Get it at : http://argouml.tigris.org/ Thanks, John. __________________________________________________ Do You Yahoo!? Send instant messages & get email alerts with Yahoo! Messenger. http://im.yahoo.com/ |
From: sridhar n. <n_s...@ya...> - 2001-08-13 18:29:23
|
I will continue to document and develop use cases, requirements and help documentation for these efforts. This will help us all work towards common shared goals and will also help us talk about things in a more precise manner. Please review the Use Cases and Supplementary Specifications and comment. I will publish them to the project website on sourceforge in html after our discussion here. -sridhar ------------------------------------------------------------------------ USE CASES For UI^SM The following are from the use cases we have developed so far, and these seem to be relevant to UI^SM. I have also added a few new ones. UC1 Draw FSM This use case represents the creation of a diagram representing the FSM. To Do: develop interaction sequence UC2 Generate Code From Diagram This use case describes how the user can generate code to build the FSM from the diagram representing the FSM. To Do: develop interaction sequence UC3 View FSM This use case deals with loading and viewing of the FSM from a file. To Do: develop interaction sequence UC4 Print FSM This use case describes how the FSM diagram can be printed. To Do: develop interaction sequence SUPPLEMENTARY SPECIFICATIONS Design Constraints DC1 The UI application is developed in java DC2 The file format for storing the FSM is XML ------------------------------------------------------------------- __________________________________________________ Do You Yahoo!? Send instant messages & get email alerts with Yahoo! Messenger. http://im.yahoo.com/ |
From: sridhar n. <n_s...@ya...> - 2001-08-13 18:07:26
|
Hi all, The items mentioned below seem to be tools/utilities that can help one program using the Statemachine templates. I thought the main goal of this project was to build a C++ template for building Statemachines. This seems to be missing from the work list. Item #2 is going to generate code. I believe that this code will be using the C++ template that we develop for building a Statemachine. A proprietary version of this is at http://www3.sympatico.ca/dbiggar/FA.home.html (information provided by vishaka in an earlier thread). We should be working on the building of C++ template as well. I am most interested in this item, but don't have enough knowledge to build templates. I have just used C++ templates. vishaka and jsrodrigues seem to be good candidates to lead this effort. -sridhar --- Madhan Dennis <gma...@ya...> wrote: > Hi guys !! > > Sorry i've been out of touch with you all !! ok here's > my idea > > 1. We need someone to develop a UI in Java which will > help in generating XML files for the state machine. > The UI should also be able to read the generated XML > files and load the state machine diagram specified by > the XML file. The XML can be as follows: > > <StateMachine ApplicationName="..." Author="..." > Version="..."> > <Object Description="..." Name="...." > InitialStateID="..."> > <State Name="..." Description="..." ID="..."> > <EventID> > .... > </EventID> > <ActionID> > ... > </ActionID> > <NextStateID> > ... > </NextStateID> > </State> > <Action Name="..." Description="..." ActionID="..."> > <FunctionPtr FunctionName="..." Parameters="..."> > </FunctionPtr> > </Action> > </Object> > </StateMachine> > > > 2. We can develop the parser for the XML and code > generation in C++. This code should read the XML file > generated by the Java User Interface and generate > first > a. StateMachineManager.cpp/.h > This file basically handles > registration/unregistration function and object > retrieval queries from external sources. It manages > the StateMachine objects which are registered with it. > Whenever an event is raised it finds the interested > state machine objects and forwards the events to it. > This is obviously a singleton object > > b. StateMachine<ObjectName>.cpp/.h > This file contains the source code of the > state machine object. It registers with the > StateMachineManager and comes to life !!! > > c. TestProgram.cpp/.h > A test program which will help developers > understand how to use the generated files !! > > Ok from all of your skill sets I have choosen the > following people for specific tasks. > > 1. UI > John S. Rodrigues > Vincent K > T.Praveen Kumar > Vaibhav Natu > > 2. CodeGen > Johannes Strömberg > Stathy G. Touloumis > Richard Skinner > Vishakha Vaidya > > 3. Documentation/Help System > Sridhar natarajan > > The code names for the individual modules are > > 1. UI^SM > User Interface to the power of State Machine !! > > 2. CodeGen^SM > Code generator to the power of State Machine !! > > So when will we able to start off on the project ? Can > we start it by the next 3 days ?? > > Please reply soon k guys ?? Lets start making things > work !!! > > Thanks !! > > Regards, > Madhan > > __________________________________________________ > Do You Yahoo!? > Send instant messages & get email alerts with Yahoo! Messenger. > http://im.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Send instant messages & get email alerts with Yahoo! Messenger. http://im.yahoo.com/ |
From: <vvi...@in...> - 2001-08-13 05:07:53
|
Hi Guys !! Let's start off as soon as possible. Regards, Vishakha Madhan Dennis <gma...@ya...> on 12/08/2001 10:47:42 Please respond to Madhan Dennis <gma...@ya...> To: State Machine Development List <sta...@li...> cc: (bcc: Vishakha V Vaidya/India/IBM) Subject: [Statemachine-development] Req Hi guys !! Sorry i've been out of touch with you all !! ok here's my idea 1. We need someone to develop a UI in Java which will help in generating XML files for the state machine. The UI should also be able to read the generated XML files and load the state machine diagram specified by the XML file. The XML can be as follows: <StateMachine ApplicationName="..." Author="..." Version="..."> <Object Description="..." Name="...." InitialStateID="..."> <State Name="..." Description="..." ID="..."> <EventID> .... </EventID> <ActionID> ... </ActionID> <NextStateID> ... </NextStateID> </State> <Action Name="..." Description="..." ActionID="..."> <FunctionPtr FunctionName="..." Parameters="..."> </FunctionPtr> </Action> </Object> </StateMachine> 2. We can develop the parser for the XML and code generation in C++. This code should read the XML file generated by the Java User Interface and generate first a. StateMachineManager.cpp/.h This file basically handles registration/unregistration function and object retrieval queries from external sources. It manages the StateMachine objects which are registered with it. Whenever an event is raised it finds the interested state machine objects and forwards the events to it. This is obviously a singleton object b. StateMachine<ObjectName>.cpp/.h This file contains the source code of the state machine object. It registers with the StateMachineManager and comes to life !!! c. TestProgram.cpp/.h A test program which will help developers understand how to use the generated files !! Ok from all of your skill sets I have choosen the following people for specific tasks. 1. UI John S. Rodrigues Vincent K T.Praveen Kumar Vaibhav Natu 2. CodeGen Johannes Str?mberg Stathy G. Touloumis Richard Skinner Vishakha Vaidya 3. Documentation/Help System Sridhar natarajan The code names for the individual modules are 1. UI^SM User Interface to the power of State Machine !! 2. CodeGen^SM Code generator to the power of State Machine !! So when will we able to start off on the project ? Can we start it by the next 3 days ?? Please reply soon k guys ?? Lets start making things work !!! Thanks !! Regards, Madhan __________________________________________________ Do You Yahoo!? Send instant messages & get email alerts with Yahoo! Messenger. http://im.yahoo.com/ _______________________________________________ Statemachine-development mailing list Sta...@li... http://lists.sourceforge.net/lists/listinfo/statemachine-development |
From: John R. <jsr...@ya...> - 2001-08-13 01:23:46
|
Sounds good!! For the UI, we could start off by identifying the design patterns we would be using (MVC immediately comes to mind), the classes etc. It would be great to have a UML diagram of the design. Anyone know any free UML tool?? Guess we could look on freshmeat.net What would be the version of Java we would be using?? I have the JDK 1.3 on Linux. Is anyone using any of the IDE's (Jbuilder, Forte etc.)??. I use the command line tools.. Would we consider using any existing Java XML parsers (or for that matter any existing code)for the UI, or will we "roll our own??". Thanks, John. --- Madhan Dennis <gma...@ya...> wrote: > Hi guys !! > > Sorry i've been out of touch with you all !! ok > here's > my idea > > 1. We need someone to develop a UI in Java which > will > help in generating XML files for the state machine. > The UI should also be able to read the generated XML > files and load the state machine diagram specified > by > the XML file. The XML can be as follows: > > <StateMachine ApplicationName="..." Author="..." > Version="..."> > <Object Description="..." Name="...." > InitialStateID="..."> > <State Name="..." Description="..." ID="..."> > <EventID> > .... > </EventID> > <ActionID> > ... > </ActionID> > <NextStateID> > ... > </NextStateID> > </State> > <Action Name="..." Description="..." > ActionID="..."> > <FunctionPtr FunctionName="..." > Parameters="..."> > </FunctionPtr> > </Action> > </Object> > </StateMachine> > > > 2. We can develop the parser for the XML and code > generation in C++. This code should read the XML > file > generated by the Java User Interface and generate > first > a. StateMachineManager.cpp/.h > This file basically handles > registration/unregistration function and object > retrieval queries from external sources. It manages > the StateMachine objects which are registered with > it. > Whenever an event is raised it finds the interested > state machine objects and forwards the events to it. > This is obviously a singleton object > > b. StateMachine<ObjectName>.cpp/.h > This file contains the source code of the > state machine object. It registers with the > StateMachineManager and comes to life !!! > > c. TestProgram.cpp/.h > A test program which will help developers > understand how to use the generated files !! > > Ok from all of your skill sets I have choosen the > following people for specific tasks. > > 1. UI > John S. Rodrigues > Vincent K > T.Praveen Kumar > Vaibhav Natu > > 2. CodeGen > Johannes Strömberg > Stathy G. Touloumis > Richard Skinner > Vishakha Vaidya > > 3. Documentation/Help System > Sridhar natarajan > > The code names for the individual modules are > > 1. UI^SM > User Interface to the power of State Machine !! > > 2. CodeGen^SM > Code generator to the power of State Machine !! > > So when will we able to start off on the project ? > Can > we start it by the next 3 days ?? > > Please reply soon k guys ?? Lets start making things > work !!! > > Thanks !! > > Regards, > Madhan > > __________________________________________________ > Do You Yahoo!? > Send instant messages & get email alerts with Yahoo! > Messenger. > http://im.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Send instant messages & get email alerts with Yahoo! Messenger. http://im.yahoo.com/ |
From: Madhan D. <gma...@ya...> - 2001-08-12 05:17:43
|
Hi guys !! Sorry i've been out of touch with you all !! ok here's my idea 1. We need someone to develop a UI in Java which will help in generating XML files for the state machine. The UI should also be able to read the generated XML files and load the state machine diagram specified by the XML file. The XML can be as follows: <StateMachine ApplicationName="..." Author="..." Version="..."> <Object Description="..." Name="...." InitialStateID="..."> <State Name="..." Description="..." ID="..."> <EventID> .... </EventID> <ActionID> ... </ActionID> <NextStateID> ... </NextStateID> </State> <Action Name="..." Description="..." ActionID="..."> <FunctionPtr FunctionName="..." Parameters="..."> </FunctionPtr> </Action> </Object> </StateMachine> 2. We can develop the parser for the XML and code generation in C++. This code should read the XML file generated by the Java User Interface and generate first a. StateMachineManager.cpp/.h This file basically handles registration/unregistration function and object retrieval queries from external sources. It manages the StateMachine objects which are registered with it. Whenever an event is raised it finds the interested state machine objects and forwards the events to it. This is obviously a singleton object b. StateMachine<ObjectName>.cpp/.h This file contains the source code of the state machine object. It registers with the StateMachineManager and comes to life !!! c. TestProgram.cpp/.h A test program which will help developers understand how to use the generated files !! Ok from all of your skill sets I have choosen the following people for specific tasks. 1. UI John S. Rodrigues Vincent K T.Praveen Kumar Vaibhav Natu 2. CodeGen Johannes Strömberg Stathy G. Touloumis Richard Skinner Vishakha Vaidya 3. Documentation/Help System Sridhar natarajan The code names for the individual modules are 1. UI^SM User Interface to the power of State Machine !! 2. CodeGen^SM Code generator to the power of State Machine !! So when will we able to start off on the project ? Can we start it by the next 3 days ?? Please reply soon k guys ?? Lets start making things work !!! Thanks !! Regards, Madhan __________________________________________________ Do You Yahoo!? Send instant messages & get email alerts with Yahoo! Messenger. http://im.yahoo.com/ |
From: Madhan D. <gma...@ya...> - 2001-07-27 03:00:26
|
ummm...... well john... we still haven't got into the coding phase yet !!..... we're still in the req specs stage......... !!! --- John Rodrigues <jsr...@ya...> wrote: > Where do I get the files (code, docs etc.) for > statemachine? I was looking for the files at the > sourceforge ftp site and also in the cvs repository. > > > > __________________________________________________ > Do You Yahoo!? > Make international calls for as low as $.04/minute > with Yahoo! Messenger > http://phonecard.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: John R. <jsr...@ya...> - 2001-07-27 02:25:11
|
Where do I get the files (code, docs etc.) for statemachine? I was looking for the files at the sourceforge ftp site and also in the cvs repository. __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: <vvi...@in...> - 2001-07-26 06:04:51
|
Hello John, Welcome to the prject. Here's an introduction to FSM. An FSM software architecture is particularly ideal for event-driven applications. These applications simply sit and wait for input to change or for a signal or interrupt to arrive. When such an event arrives, it performs some action, produces some output, then goes into a waiting pattern again. A major advantage of using an FSM is the ability to decompose large applications using a very small number of items in a diagram. For example, the following seemingly trivial FSM: (Embedded image moved to file: pic03510.gif) This FSM has two states, two inputs, and four different actions and outputs defined, for a total of 16 different items that need to be considered by the software. To be able to clearly show 16 different items on a single diagram with this much simplicity makes FSMs valuable for relaying an architectural design. A circle in an FSM represents a "state". Think of a state as "waiting for something to happen". The "something" comes in the form as a change in input, or arrival of a signal, or perhaps the interrupt generated by a timer. The input then triggers an action, possibly produces output, and possibly changing the next state. In digital logic designs, the inputs are generally always binary. In these cases, implementing the FSM in hardware (e.g. using an FPGA) might be preferable to doing it in software. The power of using software becomes apparent when inputs are not necessarily binary. For example, the input can be specified as "an alphanumeric character," which means the letter is in the range {`A'..'Z' || `a'..'z' || `0'..'9'}. In software, this range is easily specified as isalpha(ch). The software FSM can also have inputs that are inequalities, such as "if (inputA < 100) do action 1". The actions can also be as simple or as complex as necessary. An action could simply toggle a value (like selecting or de-selecting an item), or it can be extremely complex, like starting an entirely new process. The output can have many forms. The most obvious is information displayed on the terminal for the user. But output can also be data to a file or to global memory, a return value for a function, a message to another system, or any other form of output. Once the event has been processed, the final item to be done before going to check for a new input is to determine the next state. The diagram clearly shows the next state for any input; this can be translated to code using either state tables, or a global "state" variable that is used as an index in deciding what to do when the next input arrives. For example, the simple state machine above can be implemented in code as a switch statement as follows: switch (state) { case A: switch (input) { case 0: do action a1 produce output 1 break; case 1: do action2 produce output 2 break; } case B: switch (input) { case 0: do action3 produce output 3 break; case 1: do action4 produce output 4 break; } } A switch statement, however, is not necessarily the best way to implement an FSM. In particular, the inputs must be constant, and a lot of code might be required to do similar things. There exist many alternatives. For example, if the input values are constants, jump and lookup tables or hash tables become especially efficient. For example, the simple two-state two-input FSM can be shown in a table as follows: |------+ ---------------| | | | input | |------+---------------+---------------| | state| 0 | 1 | |------+---------------+---------------| | A | action1/output| action2/output| | | 1 | 2 | |------+---------------+---------------| | B | action3/output| action4/output| | | 3 | 4 | |------+---------------+---------------| A major advantage of the tabular form is that you can quickly identify any undefined combinations of inputs and states, as well as ensure there are no conflicting actions. Such completeness aids in producing robust code. We can then write the code as follows: call function action[state,input](); generate output lookup[state,input]; Of course, the output might be dependent on the action as well. But the above shows how jump tables (i.e. arrays of functions) and lookup tables can be used to efficiently implement code that is structured as a finite state machine. As the software designer, you have total control on how states are numbered. Generally you number them beginning at 0, so that lookup tables are concise. However, if any other state numbering works, then use it. In cases where software is defined with dozens of states and hundreds of possible inputs (e.g. what if every key on your keyboard can do something different, like if you were writing code for an editor?), such abbreviated code becomes very easy to work with. Each action is then defined as a standalone subroutine, and the task of integrating everything is very simple. On the other hand, with a large number of states or inputs, there might only be only a few different states and actions, and rather more complex conditions are used to determine the action. For example, "input 0" might refer to "all alphanumeric characters" while "input 2" is all special characters. Maybe there is a third input, "all non-printable characters". In such cases, either large if-then-else statements can replace the use of a switch statement, or the conditions for each input can be encoded as functions. The use of large if-then-else statements does make it much more difficult to modify and debug. However, sometimes it is the best way. But at the very least, always consider the alternate lookup table methods. Suppose we define each box in the state table by a structure: typedef struct { fsmCond_f condition; // returns a boolean value fsmAction_f action; // return value is the output int nextstate; } fsm_t; The state table is then defined as follows: fsm_t statetable[MAXSTATES][MAXINPUTS] = { { abcCondition, abcAction, 1 }, { defCondition, defAction, 3 }, etc. } The MAXINPUTS refers to the number of input columns in the table, not the number of inputs. Thus, if one of the columns is "all alphanumeric characters", that counts as a single input. Note the structure of the functions in the table. This is the same as you did in question 2 of the exam, so you already know how to build these kinds of tables. Later we will see a trick using C macros to make the definition of these types of tables even easier. The state machine can then be implemented as a single loop within the infinite outer loop: fsm_t *fstate; while (1) { // infinite loop waits for events state = nextstate; wait for event; fstate = &statetable[state][i]; for (i=0;i<MAXINPUTS;++i) {[i];ite if (fstate->condition(args-if-any)) { output = fstate->action(args-if-any); send output to wherever nextstate = fstate->nextstate; } } } Variations to the above loop can be made as necessary. But the closer the design of the system can correspond to the above basic structure, the easier it will be to implement. New states can then easily be added just by building a module with the xyzCondition() and xyzAction() functions defined, then adding them to the state table. That was just an intro so that we are all thinking on similar lines. You also find some good stuff on the following sites http://www.bagpuss.dircon.co.uk/courses/chs-217/Semester2/Week8/Lecture2/ http://helios.hud.ac.uk/staff/scomhro/Courses/Spr01/CHS217/lecture/lecture8/#SECTION00050000000000000000 I have also downloaded some lectures from various Univs, I'll post a summary some time later as I still have to go thru them. Till then, bye Vishakha |
From: sridhar n. <n_s...@ya...> - 2001-07-26 05:57:19
|
Here is one that we are aware of: http://www3.sympatico.ca/dbiggar/FA.home.html -sridhar --- John Rodrigues <jsr...@ya...> wrote: > I'd like to know of some resources for FSM's. Any > websites you guys are already looking at / know of?? > > Thanks, > John. > > __________________________________________________ > Do You Yahoo!? > Make international calls for as low as $.04/minute with Yahoo! > Messenger > http://phonecard.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: sridhar n. <n_s...@ya...> - 2001-07-26 05:55:02
|
Since GeoCrawler does not archive the attachments, I have uploaded the file to sourceforge.net. The diagram can be accesed at http://statemachine.sourceforge.net/fizzim/EponFSM.gif I created this diagram by looking at the EponFSM.h file. It looked logical, but I couldn't run the machine and get the results described by this diagram. I am now thoroughly confused. I was assuming that the Create() method will create an instance of the machine and then one can use the Transiton() method to provide input to the machine. The results I got when I ran the code with these assumptions were not matching the state machine I have in the diagram. What is the Tick() method? Has anyone figured out Nick's code yet? -sridhar --- sridhar natarajan <n_s...@ya...> wrote: > Here is the statemachine defined by Nick's sample files. > I created it to help me understand the code and thought others might > find it useful as well. > > ----from Nick----- > > ATTACHMENT part 2.2 application/octet-stream name=EponFSM.h > > > > ATTACHMENT part 2.3 application/octet-stream name=Epon.cpp > > > > ATTACHMENT part 2.4 application/octet-stream name=Epon.h > > > > ATTACHMENT part 2.5 application/octet-stream name=CFSM.h > > ----end from Nick----- > > __________________________________________________ > Do You Yahoo!? > Get personalized email addresses from Yahoo! Mail > http://personal.mail.yahoo.com/ > ATTACHMENT part 2 image/gif name=EponFSM.gif __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: sridhar n. <n_s...@ya...> - 2001-07-26 05:49:09
|
I checked the mailing list archive at GeoCrawler and found that the attachments are not stored there. I have uploaded the files that I had created to the statemachine project website at sourceforge.net. Use Case Diagram (Draft 01) can be viewed at http://statemachine.sourceforge.net/Use_Case_model.htm -sridhar --- John Rodrigues <jsr...@ya...> wrote: > What tool are you guys using for the UML diagrams? Is > there any free tool available for Linux/Win98. > > Also, how do I get the attachments posted to the > mailing list? > > Thanks, > John. > > __________________________________________________ > Do You Yahoo!? > Make international calls for as low as $.04/minute with Yahoo! > Messenger > http://phonecard.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: John R. <jsr...@ya...> - 2001-07-26 00:24:00
|
I'd like to know of some resources for FSM's. Any websites you guys are already looking at / know of?? Thanks, John. __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: John R. <jsr...@ya...> - 2001-07-25 21:53:42
|
What tool are you guys using for the UML diagrams? Is there any free tool available for Linux/Win98. Also, how do I get the attachments posted to the mailing list? Thanks, John. __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: Vaibhav N. <vn...@ya...> - 2001-07-25 17:58:51
|
here goes... in any given state when you receive an interesting event you will trigger an action. the successful completion of this action is very important. if this action is not successful (e.g database record is locked), and you still move to the next state, not only will you be in an inappropriate state, but also you will lose the failure info. secondly, all the actions are synchronous. should an action get stuck, you entire state machine will stall. also some actions are timing sensitive. for example, if you do not Acknowledge a TCP sequence number within the window, you might as well skip it as the source will retry with a new sequence number anyway. the synchronous nature of actions also make them the performance bottlenecks. However, FSMs based on Asynchronous actions are hard to implement. Another performance factor is the granularity of the events. Asynchronous actions are most appropriate for complex actions with multiple failure points. If you are developing a general purpose FSM, you cannot apriori assume the performance criteria. you have to let the user specify how an event is to be processed by the FSM. One more point i missed earlier was QoS for events. while the FSM is processing event sequentially, events may queue up. the decision about which event to pick up next for processing has to be driven by a QoS policy. For Example, "Remote host closed connection" event is more important than "account information updated" event. if you have N "refresh X-window" messages, they all can be processed as 1 message. This feature can be developed as an event-manager that FSM will rely on. --- Madhan Dennis <gma...@ya...> wrote: > ummm...sounds good.... could you elaborate more on > this..... kinda being it into a sequence of > operations > ? > > > --- Vaibhav Natu <vn...@ya...> wrote: > > Hi > > i have been thinking on the following lines: > > present-state:=s1 > > rcvd-event:=e1 > > trigger-action:=f1 > > if(f1 successful) > > next-state:=s2 > > elseif(f1 timedout) > > next-state:=s3 > > else > > next-state:=s4 > > > > What do you think of this? > > ---vaibhav > > --- Madhan Dennis <gma...@ya...> wrote: > > > Great !! > > > > > > So lets start working on the specs !! > > > > > > Code Gen guys..... please let us know the XML > > format > > > we need to generate.... if not XML any other > > format > > > (CVS, etc) k ? > > > > > > Madhan > > > > > > --- sridhar natarajan <n_s...@ya...> > > > wrote: > > > > Madhan, > > > > > > > > I can join you in doing the Java GUI. I have > > some > > > > exposure to the > > > > Rational tools as well. > > > > > > > > -sridhar natarajan > > > > > > > > --- Madhan Dennis <gma...@ya...> > > wrote: > > > > > Hi Guys !!! > > > > > > > > > > Welcome to our group, Vaibhav and Vincent !! > > > They > > > > have > > > > > joined our project as developers. > > > > > > > > > > Thanks !! > > > > > > > > > > Regards, > > > > > Madhan > > > > > > > > > > PS: Any other comments about the FSM script > ?? > > > Hey > > > > > Richard we need to get this thing rolling > fast > > > > !!!! > > > > > and Code Gen guys, how is the code gen > design > > > > coming > > > > > along.... have u started the design or only > > spec > > > > is > > > > > over ? I also need someone to take up the > Java > > > GUI > > > > for > > > > > the FSM editor. I know Java... so if someone > > > else > > > > also > > > > > can join me we can do the FSM editor > > > together.... > > > > i've > > > > > got Rational Rose 2000 @ home... its got an > > > > excellent > > > > > State editor... we can use that as a > reference > > > :) > > > > :) > > > > > > > > > > Reply soon Guys !!!!!!!!!!!!!!!!!!!! > > > > > > > > > > > > > > __________________________________________________ > > > > > Do You Yahoo!? > > > > > Make international calls for as low as > > > $.04/minute > > > > with Yahoo! > > > > > Messenger > > > > > http://phonecard.yahoo.com/ > > > > > > > > > > > > _______________________________________________ > > > > > Statemachine-development mailing list > > > > > > Sta...@li... > > > > > > > > > > > > > > > http://lists.sourceforge.net/lists/listinfo/statemachine-development > > > > > > > > > > > > > > __________________________________________________ > > > > Do You Yahoo!? > > > > Make international calls for as low as > > $.04/minute > > > > with Yahoo! Messenger > > > > http://phonecard.yahoo.com/ > > > > > > > > > _______________________________________________ > > > > Statemachine-development mailing list > > > > Sta...@li... > > > > > > > > > > http://lists.sourceforge.net/lists/listinfo/statemachine-development > > > > > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Make international calls for as low as > $.04/minute > > > with Yahoo! Messenger > > > http://phonecard.yahoo.com/ > > > > > > _______________________________________________ > > > Statemachine-development mailing list > > > Sta...@li... > > > > > > http://lists.sourceforge.net/lists/listinfo/statemachine-development > > > > > > __________________________________________________ > > Do You Yahoo!? > > Make international calls for as low as $.04/minute > > with Yahoo! Messenger > > http://phonecard.yahoo.com/ > > > __________________________________________________ > Do You Yahoo!? > Make international calls for as low as $.04/minute > with Yahoo! Messenger > http://phonecard.yahoo.com/ > > _______________________________________________ > Statemachine-development mailing list > Sta...@li... > http://lists.sourceforge.net/lists/listinfo/statemachine-development __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: Vincent K. <kok...@ya...> - 2001-07-25 17:24:17
|
Hi everyone, I'm in. - Vincent __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |
From: Madhan D. <gma...@ya...> - 2001-07-25 16:35:06
|
ummm...sounds good.... could you elaborate more on this..... kinda being it into a sequence of operations ? --- Vaibhav Natu <vn...@ya...> wrote: > Hi > i have been thinking on the following lines: > present-state:=s1 > rcvd-event:=e1 > trigger-action:=f1 > if(f1 successful) > next-state:=s2 > elseif(f1 timedout) > next-state:=s3 > else > next-state:=s4 > > What do you think of this? > ---vaibhav > --- Madhan Dennis <gma...@ya...> wrote: > > Great !! > > > > So lets start working on the specs !! > > > > Code Gen guys..... please let us know the XML > format > > we need to generate.... if not XML any other > format > > (CVS, etc) k ? > > > > Madhan > > > > --- sridhar natarajan <n_s...@ya...> > > wrote: > > > Madhan, > > > > > > I can join you in doing the Java GUI. I have > some > > > exposure to the > > > Rational tools as well. > > > > > > -sridhar natarajan > > > > > > --- Madhan Dennis <gma...@ya...> > wrote: > > > > Hi Guys !!! > > > > > > > > Welcome to our group, Vaibhav and Vincent !! > > They > > > have > > > > joined our project as developers. > > > > > > > > Thanks !! > > > > > > > > Regards, > > > > Madhan > > > > > > > > PS: Any other comments about the FSM script ?? > > Hey > > > > Richard we need to get this thing rolling fast > > > !!!! > > > > and Code Gen guys, how is the code gen design > > > coming > > > > along.... have u started the design or only > spec > > > is > > > > over ? I also need someone to take up the Java > > GUI > > > for > > > > the FSM editor. I know Java... so if someone > > else > > > also > > > > can join me we can do the FSM editor > > together.... > > > i've > > > > got Rational Rose 2000 @ home... its got an > > > excellent > > > > State editor... we can use that as a reference > > :) > > > :) > > > > > > > > Reply soon Guys !!!!!!!!!!!!!!!!!!!! > > > > > > > > > > __________________________________________________ > > > > Do You Yahoo!? > > > > Make international calls for as low as > > $.04/minute > > > with Yahoo! > > > > Messenger > > > > http://phonecard.yahoo.com/ > > > > > > > > > _______________________________________________ > > > > Statemachine-development mailing list > > > > Sta...@li... > > > > > > > > > > http://lists.sourceforge.net/lists/listinfo/statemachine-development > > > > > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Make international calls for as low as > $.04/minute > > > with Yahoo! Messenger > > > http://phonecard.yahoo.com/ > > > > > > _______________________________________________ > > > Statemachine-development mailing list > > > Sta...@li... > > > > > > http://lists.sourceforge.net/lists/listinfo/statemachine-development > > > > > > __________________________________________________ > > Do You Yahoo!? > > Make international calls for as low as $.04/minute > > with Yahoo! Messenger > > http://phonecard.yahoo.com/ > > > > _______________________________________________ > > Statemachine-development mailing list > > Sta...@li... > > > http://lists.sourceforge.net/lists/listinfo/statemachine-development > > > __________________________________________________ > Do You Yahoo!? > Make international calls for as low as $.04/minute > with Yahoo! Messenger > http://phonecard.yahoo.com/ __________________________________________________ Do You Yahoo!? Make international calls for as low as $.04/minute with Yahoo! Messenger http://phonecard.yahoo.com/ |