Here is another example of the application of UML to real world situations – this time in the area of software program management:
As part of all software projects executed in India, we release software all the time, but we never have a separate function called Release Management. Release management is part of a project managers job, right?
While that may be the case with projects executed by Indian vendors, our customers operate differently. Most US IT organizations have a functional structure – separate teams for requirements management, software development, software QA, build, infrastructure management etc.
The following use case diagram illustrates the various actors involved in a software project and their interaction with a Release Manager. The direction of the dependency arrow indicates who depends on who, whereas the label on the dependency doubles up as an information flow!
This diagram clearly positions a Release Manager as a coordinator who orchestrates the progress of a software release. Note that what we usually call a Project Manager is called a Development Manager here. In other words, in our projects, the Development Manager and the Release Manager are usually one and the same person, and designated “Project Manager”.
A Release Manager’s job is broken down into two major functions – Release Planning and Release Tracking. I illustrate each of these with a separate use case diagram.
Release planning is all about defining the scope of a release, estimating the effort required and creating a schedule for the release.
Release tracking is all about tracking the progress of the various activities involved in the release. This is not limited to development and QA but includes UAT, infrastructure readiness and production rollout.
Simple and clear diagrams to illustrate release management. Question: Are use case diagrams a natural choice for illustrating this topic?
My first thought was to use activity diagrams (with swim lanes) because release management is a process and activity diagrams are best suited for process flows. I then realized that a single activity could involve multiple actors – for example Define Requirements involves Release Manager, BA Manager and Business Stakeholder. How do I show one activity falling within the purview of three swim lanes?
Having abandoned activity diagrams, the only choice I had left was use case diagrams. You loose the sequence information (for example, the Release Planning diagram says nothing about the sequence in which Build Release Backlog, Estimate Release Effort and Create Release Schedule need to be executed), but in this case the sequence is very intuitive and the absence of sequence information in the diagrams does not bother me overmuch.
Note that so far I have not modeled Release Planning and Release Tracking as separate use cases; I used two separate use case diagrams instead.
In this final use case diagram, I close that gap by modeling Release Management as two separate use cases – Release Planning and Release Tracking. All other use cases are included in these two use cases.