For some, UML modeling and being agile just do not go together. If you use UML, you are not agile, and if you are agile, you cannot use UML. However, this is not necessarily the case. You can use UML and be agile.
This is certainly not a new idea. Scott Ambler published his book on the subject, Agile Modeling, in 2002. Recently, there have been numerous articles dedicated to this subject. After reading agile coach Jochen Krebs’ article UML and Agile Teams, which talks about the use of UML models by agile teams and hearing about Stephen Mellor’s keynote speech at Code Gen 2014, we wanted to explore the reasons why UML is agile.
We are here to share a few reasons why with you.
Why UML is Agile
1. Enables Better Communication with Project Stakeholders
UML models are a discussion point between different stakeholders such as the developers, the project manager, the client(s), and/or the users which encourages active stakeholder participation. Models communicate the “Big Picture” and ensure that everyone has a common understanding of the project and what needs to be built.
Using models with customers to explain how the software will function helps to encourage customer interaction with the development team. This communication between the groups results in a software that more closely meets the customer requirements. If there is a conflict or a misunderstanding over an element, it can be corrected during the next interaction or increment.
2. Facilitates Collaboration
Building off of the communication element (because good communication is needed to be collaborative), UML is a common reference and helps the team to work together. With UML models, the work can be divided up at the beginning of an iteration or increment, because we know how the different pieces fit together.
Models can also be used by team members to visualize, share, and discuss ideas and solutions to problems.
Additionally, they can help newcomers to a project understand the “Big Picture” and participate more quickly since a visual representation can be easier and clearer to understand and analyze than text.
3. Helps to Focus on What is Important
Yes, if you spend all your time focused on the models and documentation, you are not being agile. But if you use the models to focus on the current problems, they are a valuable artifact. In general, the framework is used over several iterations or increments as the overall architecture of the system doesn’t necessarily change.
Models can be used as a source of up-to-date documentation and can, therefore, be reused during later stages.
4. Delivers a working prototype and allows for testing
The goal of each iteration or increment is to have a working product that can be delivered to the client. Thanks to code generation from UML, you can quickly have a bootstrapped prototype. UML models can also be used for automated test cases. Rapid prototyping and automated testing are ideal for short iterations.
UML Could Be Agile – A Reality Check
We’re all thinking it. There are idealistic principles, and then there’s reality. UML should support agile methods and yet it doesn’t seem to be that simple. Now why is that? Well, we could just take a look at how teams work and the problems they face while using desktop modeling tools such as:
The tools are fairly complex to use, take a long time to install and setup
Sharing models is complicated
Working together on the same model remains impractical
Generating code is tedious and sometimes useless
Questions remain around synchronizing the “code/model”
A simple tool dedicated to hosting and managing versions of models doesn’t exist
Modeling in the cloud is a part of the solution. Real-time collaboration, a browser-hosted modeling tool, and sharing appear to be the key features agile modeling will rely on.
It seems like things are moving in the right direction. What do you think?