====== Variations and languages in UML2/MOF family ====== ===== Introduction ===== UML, as known as a Unified Modelling Language, is a general-purpose visual modeling language that is intended to provide a standard way to visualize the design of a system. [1] As you can notice from its name, ‘unified’ stands for a set of different sublanguages or diagrams within one big family, UML. And for any non-experienced user it would be obvious that if these sublanguages are a part of bigger UML language, in reality they do not have that much in common. According to Bernhard Rumpe and Robert France, ‘Furthermore, the UML does currently not provide good mechanisms for introducing and describing variations or selecting concrete sub-variants yet.’. [2] To approve this point of view, this essay would represent difference between two common examples of behavioral UML diagrams, Use-case, Activity and Sequence, as from the brief perspective they are really similar to one another, but in the deeper view they have much more differences, especially in their purposes. ==== Use case diagram ==== A use case diagram is a graphical depiction of a user's possible interactions with a system. A use case diagram shows various use cases and different types of users the system has and will often be accompanied by other types of diagrams as well. The use cases are represented by either circles or ellipses. The actors are often shown as stick figures. While a use case itself might drill into a lot of detail about every possibility, a use-case diagram can help provide a higher-level view of the system. Due to their simplistic nature, use case diagrams can be a good communication tool for stakeholders. The drawings attempt to mimic the real world and provide a view for the stakeholder to understand how the system is going to be designed [3]. ==== Activity diagram ==== Activity diagram is intended to model both computational and organizational processes (i.e., workflows), as well as the data flows intersecting with the related activities. [4] They are mostly needed to show the structured flow of one activity decomposed to several ordered actions and interactions between them within the system or process. They are used within organizations to model customer journeys, to show the process of receiving an order through shipping to the customer, and to model sales processes. [5] ==== Sequence diagram ==== The sequence diagram is used primarily to show the interactions between objects in the sequential order that those interactions occur. It depicts relations between lifelines (roles or object instances) by messages (to connect several objects) and guards (controlling the flow between objects), An organization's technical staff can find sequence diagrams useful in documenting how a future system should behave. During the design phase, architects and developers can use the diagram to force out the system's object interactions, thus fleshing out overall system design. [6] ===== Main Difference ===== After brief overview of these two diagrams, both of them are serving the same purpose: to show how different actions or events are step-by-step interacting with each other in the preferred process. And from the far perspective it actually is. As UML has been used as a language for a graphical description of particular fields or domains, all of the sublanguages inside UML tree are used to show different dependencies between objects inside the analyzing domain. The main difference is, which specific aspect of the project it should cover and for which it is modelled to, and this is also the main problem. Diagrams don’t have any cross points in which they can easily interact with each other, and the only thing that they have in common, it is being part of a main UML notation, so the only connection they have, it is mostly vertical, but not horizontal. There are no specific tools in every sublanguage, by using which they can easily cooperate with each other in order to make a complete and full description of analyzing field. ===== The Big Picture of UML2 ===== On the other hand, there is a concept called The Big Picture of UML2 [7], which is a collaboration diagram of different UML sublanguages. {{:arch:big_pict.png?600|}} Figure 1. The Big Picture of UML2 It also contains all interactions within this scope. But this diagram has one particular issue – for the non-experienced user or a person who is not very familiar to the UML, it would be very hard to read and understand what this diagram depicts and how all of the diagram elements relate and work with each other. And this can also state as a proof for the previously mentioned fact that UML2 doesn’t have particular tools in order to fully show all of the dependencies between different sublanguages. Of course, it is a good idea to unite all the sublanguages by using one particular tool, but on practice this concept it not widely spread. ===== Unification ===== Of course, unification of the all the sublanguages into the one combined powerful tool is a good idea, but at the same time it would be hard to upgrade it in order to meet the new requirements, not only costs, but more time efforts. UML2 is so good established and time checked language for description different project aspects, that for uniting every sublanguage people need to create a whole new methodology to do it. And even though if these requirements will be met, they make UML even more complex than in its current state. And here the new question has appeared – is it actually necessary? ===== Is it actually necessary? ===== As it was mentioned previously, UML’s main purpose is to show how different parts of the system/domain would be made. And for this role UML family, with its variety of sublanguages, suits perfectly. In my opinion, UML sublanguages better stay dependent, with its own specialty and purposes for which that notation was built. Of course, it will be nice if UML somehow will be updated with new tools to be even more flexible, but it isn’t that necessary. It can be game-changing, but as it was also mentioned previously, by extending the scope it makes UML even more complex and closed to wider public. ===== Conclusion ===== In conclusion I want to mention that UML is a really powerful tool, that could cover basically all of the particular scopes, those are needed to be decomposed in order to successfully develop the project. And even though it doesn’t have well-functioning horizontal integration between different sublanguages in the same family, it is still very useful and could be easily implemented as independent parts of the same notation, with its unique purposes. ===== References ===== - Wikipedia. UML. https://en.wikipedia.org/wiki/Unified_Modeling_Language - Bernhard Rumpe, Robert France. Variability in UML language and semantics, 2011. https://www.researchgate.net/publication/220059386_Variability_in_UML_language_and_semantics - page 1 - Wikipedia. Use case diagram. https://en.wikipedia.org/wiki/Use_case_diagram - Wikipedia. Activity diagram. https://en.wikipedia.org/wiki/Activity_diagram - Mind Manager. What is an Activity diagram? https://www.mindmanager.com/en/features/activity-diagram/#:~:text=Activity%20diagrams%20show%20the%20flow,and%20to%20model%20sales%20processes. - IBM. Explore the UML sequence diagram. https://developer.ibm.com/articles/the-sequence-diagram/ - Anton Khritankov. ASD-6.1. BigPicture - ICONIX. Slide 6.