You can read this listing like a flowchart, you iterate over the questions decide, go one step deeper and so on. Therefore I thought the best way to visualize it, using a flowchart. The problem is, in this hierarchical set it is possible to end in more than one state and its totally valid.

I have never seen a flowchart where you can enter more than one state. Is it still possible and I am missing the right symbol to present this logic or are flowchart not fitting anyway?

What other graphical representation could I use, is there something fitting in UML? A non-deterministic state machine seems not to be intuitive enough, transfering it into a deterministic state machine would result in to many states, and so on.

2 Answers
2

I am not entirely sure, if you want to describe the process of determining state in which the thread is in, or if you want to describe the lifecycle of the thread. Other thing is, I am not entirely sure what do you mean by multiple states and where do you see nondeterminism there. As far as I understand it, if I keep answering the questions, I get to the one state the thread is in - that is easily described using deterministic state machines/statecharts/UML statemachine diagrams.

Flowcharts are in a way orthogonal to statecharts - they focus on activities you have to do to get to particular state (it is like having boxes for transitions in statecharts). It is natural to end an activity (flowcharts in UML are called Activity diagrams) in one node - it is the end of activity, it represents you have already decided what state it is (observe, we don't care which state). If you are very inclined to use flowcharts, you can model every question as a junction with branches for each answer and an activity for each answer and at the end connect all the answer nodes together in end node.

I would personally choose statecharts, because you are not really interested in questions, but in answers (I guess).

I'm not entirely sure that it's what you want, but you could take a look at the notation used in the UML Activity Diagram (also: the Wikipedia article on Activity diagrams) to get some ideas of representing concurrent actions and paths of flow. This diagram type has notations for decisions, splits and joins in concurrent activities, and ending states.

I'm not sure that you can call what you are doing an Activity diagram, but it sounds like that is the kind of notation you are looking for. Even if it's not a standard UML diagram, it should be easily understandable by people who are familiar with UML.