All you need to know to model and design software applications from use cases to software architectures in UML.