Use of the Unified Modeling Language (UML) has quickly spread throughout the software development industry as a concrete foundation for designing and developing software applications. It has become the de facto standard in the world of object-oriented systems and is becoming essential for component-based development (CBD). For IT professionals looking for key career differentiators, UML experience will be a critical element if it isn’t already.
One benefit of UML is that it greatly improves the communication of system design to all stakeholders of a software system. It achieves this by providing an economy of semantics and notation, as well as a language for constraining designs, called the object constraint language (OCL). Designs are expressed independently of any programming language or development process, allowing analysts, managers, modelers, and developers of varying technical expertise to readily share designs via UML models.
UML provides a standard way of visually modeling object-oriented systems through diagramming views, such as use case, class, interaction, statechart, activity, and implementation diagrams. Each diagram provides a way to express important aspects of the system design. Use case diagrams model the functionality of a system. Class diagrams model the static structure of a system. Interaction diagrams model the collaborations among classes in achieving scenarios, or threads of action, within a use case. Statechart diagrams model the precise behavior of classes, methods, or components. Activity diagrams support business process modeling. Implementation diagrams model the dependencies among software components and the run-time infrastructure that executes them.
UML is also extensible and customizable through the use of stereotypes and tags. Stereotypes and tags can be grouped into profiles that are applied to specific modeling domains. Profiles add the flexibility to UML that allows modelers to customize UML to specific modeling environments. Several profiles are currently being standardized for UML. These include profiles for enterprise distributed object computing (EDOC), CORBA, EJB, EAI, and Real-Time.
UML profiles provide a higher level of abstraction for designing systems. For example, EDOC is an abstraction above CORBA, EJB, or COM+ profiles, which pertain to specific component technologies. Profiles can be stacked on top of one another and related through a mapping. For example, a business model may map to an EDOC model, which can then map to either a CORBA, EJB, or COM+ model. This will allow designers to separate design solutions from implementation technologies, thus preserving these solutions as technologies continue to change.