This chapter has focussed on modeling the deeper semantic behavior of an interactive system. To design a usable system one needs to know what it does! We began by looking at different kinds of software engineering formalisms that can be used to specify the behavior of specific systems.