A few 20c worth...
(I am using an activity diagram profile for this modelling - judging by the above comments there are n choices of particular style).
My need:
The application is a n (4) tier architecture, delivered to the end user as html pages. My task is to specify the UAT. My goal is to be able to specify the navigations through the various transactions supported by the application, producing a model that allows us to identify the significant end-points, exceptions and error conditions that need to be tested (and from that develop the test cases...)
It seems to me (

) that
1) You can model the flows from either the system perspective or the user perspective. In the former, the activities are what the system does, in the latter the activities are what the user does. mixing the two has been a disaster for us - no-one can gell how we are looking at the
System.
2) It is easier to build the initial model from the user activity pov (IMHO - YMMV). I.e. the page in the browser is considered a black box (actually a control flow) that "just does stuff that results in a new page being displayed in the browser (or a popup, or a child page, or a dialog box, or an inline error message etc etc). We model the various user efforts (including generating invalid POST parameters etc etc) as an activity stereotyped as a <<useraction>>. When the flow is complete, we can with some effort derive each of the possible nav flows through the transaction and set them up as test cases.
3) What I have found that is easier, tho, is to transform the nodes and edges in the graph into a model of the flows form the system pov. The innards of these activities are not described in any meaningful way - but do become the repository of the "business rules" that apply at each .do invocation. The test cases that emerge from this are simpler to detect and describe.
bruce
(p.s. the profile and transforms represent a significant investment by my client, and so are not "available" I'm afraid.)
p.p.s. Now I remember why I was going to write this. We originally tried to build structural models of the system, i.e. modelling "pages" with "links". This soon proved to be impossible and useless. For example, the inital screen of the most often used transaction (no its not Log In!) has 12 action buttons (form submits), 5 local (jscript) actions, ~20-30 Menu actions (activated/inactivated by transaction state), 9 input ("non-hidden" POST param items) and up to 29 optional input "radio buttons" (selected from up to 9*9 sets, in 4 subsets, which are mutually exclusive - all handled by local validation thankfully). What the heck is it? Its a rail travel reservation sales system. Obviously trying to model all these, or even the "signiificant" ones in a structural model would have been more difficault than building the damn thing in the first place. Luckily, we fell back on modelling "what the System does" rather than "how it looks" very early.