Unified Modeling Language (UML) is expected to be adopted by ISO as an international standard for software systems analysis and design. The main function of UML lies in its ability to describe a software system via object-oriented concepts. As an adopted standard, UML will play an important role in communications among software developers. The interface between UML and other CASE tools allows us to generate code for UML specifications. Legacy systems can also be used to produce UML models by the process of reverse engineering. In this paper, we focus on the various uses of UML in the area of software engineering.