Praise to UML

UML from Wikipedia: “The Unified Modeling Language (UML) is a general-purpose modeling language in the field of software engineering, which is designed to provide a standard way to visualize the design of a system. It was created and developed by Grady Booch, Ivar Jacobson and James Rumbaugh at Rational Software during 1994–95, with further development led by them through 1996.”

To fully convey my appreciation for UML, I must explain how I look at the world.

Below, I define three areas that will help explain my reasoning:

  1. Fashion: what goes together with what in a manner that is hot and sexy that people somehow crave without further need to understand it.
  2. Modernity: ways to solve known problems. Tools and strategies have a modernity aspect. A more modern tool is not necessarily better – but it often is considered as such since the new tool has had the advantage of being created in a world that has more knowledge than the world that created the old tool.
  3. System gist: anything that combines a series of ideas and actions in order to produce value. The gist of the system, in this context, is the system description stripped from everything that is either fashion or modernity as described above.

Let me exemplify these definitions

First example: A car manufacturer is very much reliant on fashion. How the lines of the car body appeal to the target audience is very important but almost totally based on feelings and soft aspects that are hard to measure. The modernity aspect of car manufacturing is important for the manufacturing process: what tools to use, how to apply industrial robots, and what third-party systems to include like anti-lock braking and airbags, etc.  The system gist is captured in the design phase of the car construction process. It involves all the inherited knowledge about what is important for cars in general and also some new things that are important for this car model in particular.

Second example: A surgeon. Modernity provides important tools to diagnose a patient, like MRI. It also provides even better tools for fixing what is wrong, like minimally invasive surgery. The system gist for the surgeon is the knowledge of what and where to cut and how and why organs act as they do. It is important for a surgeon to be able to draw the intuitive line between gist and modernity. Having the latest tools will not be enough if you are not educated on what to look for and how to act upon what you find.  As a patient, you will want a surgeon that masters both the gist and modernity and does not neglect one for the benefit of the other. When it comes to fashion, it is important for plastic surgeons because they too must have the main focus on gist and modernity or the patient will end up with a defective system. I know little about the field of surgery but I am sure that if I knew more, I would also see aspects of fashion in appendix removal procedures. It might be how high to cut and how to stitch the wound that has no immediate support in current science but feels right or looks good.

Where is the software industry in this spectrum?

The software industry differs from the two examples given by not having ONE fixed or slow-evolving system gist. The software industry is actually about producing new systems and as such, new areas that have a gist, modernity, and fashion of their own. The software industry is one Meta level up compared to surgery or car manufacturing. It is in this way not just a human activity like surgery but an activity of activities. This is what makes software development a field that will leave no other area of human activity untouched.

Hundreds of new unique software systems are finalized every day and they will resemble each other when it comes to modernity and fashion. What makes each of them unique is mostly their system gist.

Look at what all the apps on mobile devices share: their execution environment, their use of the network, the interaction patterns, and widgets. Modernity and fashion is a time marker that makes it easy to guess the time of construction for a particular software system.

The modernity aspect of software development is very important to be able to produce a well-behaving system. The fashion aspect of system development is very important to attract users and make the system intuitive to use. These two areas, reused over and over, also evolve at a rather high pace. Refined strategies – or as I call them – modernity aspects - on how to build software systems is a topic discussed endlessly in the developer community.

It is easy for software developers to completely get lost in the modernity aspects. As they do, they will leave less room in their minds for system gist. When we get software developers that move cross-field and mostly work with modernity and fashion, is anyone taking care of the gist?

What sets one software system apart from another is mainly its gist, not its modernity.

UML is all about system gist. This is why we need UML or something that solves the same problems. We use UML to describe system gist in an easy, clear, and partly visual format without any possibility for alternate interpretations. UML is the most prominent way to handle system gist.

For a software engineer, it is important to be able to quickly place arguments on design decisions in the correct category.

  • If it is about system gist then there will be facts to research in the domain of the system in order to make the best decisions. Is it about modernity – then it is important to analyze best practices from the development communities and consider the pace and gain of change to see which path to take.
  • Is it about fashion – stand back and let the end users or market decide. Take a vote if they do not reach a consensus.

Just as software frameworks – like Entity Framework, Hibernate, or the like – aim to help developers with modernity issues, there are manufacturers of generic software systems that aim to solve everything. These are meta-systems where you can somehow describe your system gist and then you would be done.

Since a meta-system like this is a holy grail – the search for it engages many software companies. Of course, many claims are made that the grail is found, but is it really?  And is there really such a thing as the holy grail in the first place?

SharePoint

SharePoint is a tool that I have seen used like this on a number of occasions. As SharePoint may have an appealing modernity and may be fashionable in certain populations it is an easy sell if it also lends itself to handle ANY system gist.

As SharePoint is a software system it has a system gist of its own. One that may be described with UML.

Gist of SharePoint.png 

As you see the gist of SharePoint is tiny. In fact the gist of a Meta systems often are tiny. 

Alan Turing thought us in 1936 that one can build universal machines – a machine that can simulate all other machines. Universality of machines is reached very fast as Stephen Wolfram showed us in his book “A new kind of science (NKS)”-2002 where he suggest that a cellular automate of only two state and three colors is universal. Alex Smith later proved this in 2007.

In light of this it is not surprising that the system gist of SharePoint is Universal – so it can be used to implement any and all systems conceivable. This may seem fantastic – but just because something is possible does not necessarily make it a good idea. It may for example be possible to build anything by gluing grains of sands together under a microscope – but not practical or economical defensible.

Folding down the system gist into ListDefinitions in SharePoint is not the best way to treat the gist. In that format it is not easily evolved and maintained. It is however possible, I do not question that.

My opinion is that the best way currently available to describe system gist is UML using the language of the domain. Refrain from building Meta systems.

Accept that each area of human activity has its own gist that deserves its own UML description. When each area has its own gist clearly described in UML it is easy to maintain and evolve. Free from modernity and fashion issues.

I wish all developers would be aware of the three different areas of gist, modernity and fashion. It is my belief that we limit our ability to develop everything due to lack of focus and lack of discussion on system gist. Having a language for the gist opens up for discussions and thinking that helps development in all areas of human activity.

The MDriven Book - Next Chapter: What if UML was forbidden

See also: UML School

This page was edited 10 days ago on 10/02/2024. What links here