I am starting to learn Alloy and really like what I've seen.
Before encouraging my colleagues to join me in learning and using Alloy, I need to understand the relationship between Alloy and UML.
In general, anything that you can tell me about the relationship (or lack of relationship) between Alloy and UML would be greatly appreciated.
Thank you.
Alloy is comparable to UML class diagrams augmented with OCL, UML’s constraint language. It doesn’t replace the other diagrams of UML.
I’d recommend using Alloy for modeling data and for modeling behavior at a high level. For examples, see the Alloy website. You can always translate Alloy models into UML diagrams.
Alloy is designed to offer — precise, succinct models of data rich designs — fully automatic analysis
UML diagrams aren’t expressive enough for detailed modeling. The UML constraint language OCL does cover the same kinds of details as Alloy but does not have automated support to the same degree.
The constraints in Alloy aren’t for checking the structure of a diagram, but for actually modeling a system and expressing its properties (and then you can check that the system satisfies the properties). Alloy is incomparable to OCL in expressiveness: OCL is more expressive in its treatment of arithmetic, but it lacks transitive closure, for example.
I'm not very current with UML/OCL research, so perhaps someone in that area can chime in, but I can recommend that for more info on that you start with the work of Martin Gogolla's group, such as Mark Richters thesis on the semantics of OCL.
If you search for "Alloy and UML" you'll find a bunch of papers about automatic translations from UML to Alloy, and comparison papers such as this one. We also wrote a paper way back about OCL and Alloy which probably criticizes OCL for things that have been fixed in the work of Richters et al.