What are the key benefits of using UML models in software maintenance? I came across only few handful of papers regarding costs and benefits of UML models in software maintenance.
UML can ALWAYS be usefull in software related activity, but you must know what you are doing rather than using it because "my boss says UML is cool!".
Benefits of UML can depend on many factors. In some situations it is likely to be more beneficial. I try to mention some of them.
Likely to be more beneficial:
- Larger and complexer is your subject, more benefit you can expect. Especialy when they are relationship between different aspects
- If this SW maintenance means some extra development/extension, it could be very useful to use UML to clarify it. You can show existing system and the way it should be extended. You can of course always show the nre reqs.
- if your system is already modelled in UML, you can use it to locate the problem and plan further enhancements
- if both modeller and model reader know OO and have some experience in UML, they will almost always make it beneficial.
- if you want to generate some code further more
- if you need to support a system with no documentation, it could be usefull to document it first (use reverse engineering to import the code and organize it in UML)
- if you plan to mainain this system for a long time and with lots of people
Maybe not so beneficial:
- if the maintenance does not involve intensive extension/programming
- if the subject under maintenance is too small - it can be more efficient to use natural languege or even spoken word
- if either the person who models or who uses the diagram later is not skilled in OO and UML. If none of them is, forget about using UML and start learning it :)
- if you already have some other kind of documentation