Sequence diagrams, the only good thing UML brought to software development
I personally think Statecharts are a more useful construct than sequence diagrams. It encodes complex behaviour that a developer can use as a guide to develop.<p>More importantly it gives a good inkling of what behaviour is allowed and what is not allowed.<p>For example a statechart can encode that a traffic light can only turn green from amber and not from red.<p>It also has "H" history state which remembers which substate it was last in, when the system entered this composite state, the previous time. This allows to model behaviour that relies upon "memory" or past behaviour which is very common in real systems.