On almost all my previous blog posts related to Software Development I had mentioned a lot about something called Unified Modeling Language (UML) created by Rational Software, but I haven’t really covered the definition of it, and as you can guess, in this post we will cover the topic of Modeling Languages and as all the other definitions we had seen, by itself is quite abstract and covers a lot of alternatives.
If you search for Modeling Language, you will probably end up with results about UML because of it’s popularity, but according to Techopedia, the concept by itself means any graphical or textual computer language that provisions the design and constructions of structures and models following a systematic set of rules and frameworks.
As stated, you can basically create your own unique Modeling Language, called it as whatever you want and become famous (if you are lucky), but, you might have the question, why is UML so popular? In this post we will focus on answering that question. Keep in mind that there are a lot of modeling languages out there (this image pretty much sums a lot of them up).
Unified Modeling Language
One of first things you will probably see when you start exploring the software development environment is the word UML (I pretty much spam you with this word in my TC2004 blog posts). The creators of this modeling language are Ivan Jacobson, Grady Booch and James Rumbaugh (yes, they appear again!), there’s a lot of information UML, there’s even an official page (I recommend checking it out), but let’s try to put it in less complex words, we can summarize it as follows: it’s just a standard modeling language, which is a way to design and construct the system we are building.
I recommend reading the History of UML section by Visual Paradigm, in which they show a great timeline of how it has been evolving, but where are we now? Let’s look at an image that shows how a UML diagram looks like:
As you can see by the image, we define the actors, the actions it can do, and it’s interactions with the other parts of the systems, but there are multiple types of UML depending on the thing you are trying to represent, for example, you can also represent objects:
There are several types of UML representations, this post by Noel Ceta showcases and explains some of these types, I recommend you to check it out to learn a little bit more. Keep in mind, that if you go to other sources on the Internet or books, you might find a little differences in the way the information is presented, but they basically state the same thing, so don’t worry.
Creating UML Diagrams
Some of you might want to create UML diagrams because they are really useful to show dependencies in your code, and it’s really easy to do it since nowadays there are a lot of useful tools online that can help you with that, for example, if you code in Java, the names Eclipse and Intellij might sound familiar to you, the good thing about this IDE’s is that they provide a ton of functionalities, and one of them that is very usual in Java is the ability to generate the UML diagram of your project. For Eclipse you can use something like ObjectAid UML Explorer; in Intellij you can find it as a built in feature (you need the Ultimate Version, if you are student you can get it for free ;)).
But let’s say that you want to plan your UML diagram while designing (should be the appropriate approach to avoid spaghetti code), if you are a student with an adjusted budget, I really encourage you to use Draw IO, I have personally used it a lot for the past years in college, and it’s a saver.
Again, you probably have the feeling of: “What should I use?“, and of course, I cannot answer that questions, as every single thing in our path through software development, like methodologies, tools, techniques, etc., we have been seeing that there are an incredibly amount of alternatives to pick from, the same applies to Modeling Languages, we only talked about UML, but you are free to use whatever you want, but it’s important to at least know a little bit about everything to make sure that you can choose the right tools for the job you are making.