I've always relied on wireframes to communicate the user interface requirements of a system. This is definitively a good approach that helps everyone understand how an application is supposed to work.
It also has shortcomings; sometimes it's hard to communicate specific details without putting together wireframes showing all the different possibilities.
The process gets expensive quickly. The amount of time needed to put together these wireframes is definitively high compared to the time required to use a statechart for the same purpose.
Here is a quick and high level statechart representing how this blog works as of today:
Obviously, with a statechart, I'm limited to communicate behavior and not styles, or layout. It's a great approach to telling the story of the interface of the system, however, I feel it's very underused in the Industry.
Wireframes are still a more sexy way to solve the same problem. But they're also more expensive, slow to create, hard to maintain, and sometimes, difficult to decode. They generate a lot of waste when not used the right way.
Statecharts are one possible answer to that.