The UML provides very good tools for specifying behavior application systems. Behavior may be specified for individual classes, subsystems, components and use cases with statecharts and activity diagrams. Behavior may also be specified for elements acting in collaboration using interactions diagrams using sequence and collaboration diagrams. Statecharts, an enhanced form of state form the basis for behavior in the UML. Statecharts provide the ability to specify both hierarchical and concurrent behavior. Activity charts, while intimately related to statecharts, are used effectively to model algorithmic behavior. Sequence diagrams are used to show how collections of individual elements work together in collaboration to produce system-wide behavior.