Can the non usage of UML be justified

In this article I will try to highlight some very startling facts about software systems and software engineering and compare the same with other conventional streams of engineering

This article will only highlight the important facts about systems and system engineering without getting into the detailed explanation of each of the topics.

  1. Analysis as a word means to "Understanding" or a process which leads to understanding.
  2. Understanding / Analysis as a word is always associated with complex problems / systems. So whenever we come across a term called as analysis ... implicitly it means we are dealing with a problem or a system which is highly complex or difficult to understand and hence analysis is needed to understand the complexity. So the moment we come across analysis as a term, the next thing that should come to our mind is ... "we are dealing with a problem or a system which is difficult to understand".
  3. The root cause of complexity always lies in the structural model of the problem or the system wherein more the number of structural components , more the possible interrelationships and more is the complexity of the system.
  4. For anyone to understand the structural complexity of the problem or the system, the prerequisite is that a person should be able to visualize the structural components and their interconnections.
  5. Whenever a human brain encounters a problem which is complex or difficult to understand, implicitly or explicitly the human brain tries to model the problem. Modeling is the phase or the activity wherein a person tries to represent various aspects of the problem or the system in a form [graphical, physical or textual] which can be visualized by a human naked eye so that he can understand their interrelationships and the resultant complexity.
  6. Implicit modeling means creating mental models in the brain so that a person can visualize the structural aspects of the problem and understand the same.
  7. Explicit modeling means a person deliberately uses graphical models [circles, triangles, rectangles, graphs etc ], textual models, scaled down physical models to come out with visible artifacts so as to understand the complexity.
  8. In a nutshell human being cannot understand anything which is complex without modeling or modeling of the problem/system is a prerequisite for a person to understand the same.
  9. If only one stakeholder is supposed to understand the problem/system , non standardized graphical models [non standardized graphical models are those graphical models which can be interpreted in multiple ways like circles , rectangles , triangles] can used to represent the same. But if there are multiple stakeholders are supposed to understand the same problem or the system, then it is highly important that we should only use standardized graphical models [Standardized graphical models can only be interpreted in a single way] to represent different aspects of the problem/system so as to ensure all the stakeholders have a single understanding of the system.
  10. If our brain needs modeling to understand a problems/puzzles which are complex, then systems which can be highly complex and would need modeling as well.
  11. Can we imagine a house/ building/ bridge being developed without engineering drawings , graphical or scaled down physical models ? Can you think about a mechanical machine being created without machine drawings or 3d virtual models ? Will you ever find a electrical system being developed without circuit drawings ? Can you think about a electronics / instrumentation based system without circuit diagrams?
  12. Ask yourself why does a civil engineering architect come out with different civil engineering drawings for different cross sections of the building ? Why do they come out with Autocad models or a small prototype of the building before they can think about the physical construction?
  13. Systems like houses/ buildings are complex systems with large number of perspectives and granularities. For the architect to think about developing the house/ building … don't you think that the architect should be able to understand the complexity of the system… so don't you think architects would need modeling to understand the manage the complexity.
  14. For the architect to design the building the right way, the prerequisite is that he should be able to understand the system from different perspectives and different levels of granularity using different modeling techniques. This is one of the reasons he comes out with different graphical and physical models.
  15. Secondly, systems like Buildings and Houses are not developed by a single person in single day. There are multiple stake holders like the Architect, Structural designers, Contractors, Masons, Interior Designers, Governing agencies etc. The job of the architect is also to ensure that all the stakeholders have a single understanding of the target system.
  16. In Civil Engineering there are standardized graphical notations for every civil engineering artifact (like columns, beams, stair cases, walls, floors etc) that exists in the stream of civil engineering. And the architects use these standardized graphical notations in their drawings so that all the stake holders have a single understanding of the system.
  17. The same thing is true for other streams of engineering like mechanical, electrical, electronics, instrumentation etc wherein there are standardized graphical representations for various artifacts in the corresponding stream of engineering.
  18. There cannot exist a stream of systems engineering dealing with complex systems without a standardized modeling language. First in the absence of it, different stakeholders will not be able to understand the system to be developed and second different stakeholders will have different understanding of the system.
  19. Same thing should also be true for software engineering because deep down software systems are nothing but automation systems which are supposed to automate the complexity of the real world system by using the computational resources (processors), storage devices (memory, data bases) and transmission mediums to add value to the end user.
  20. For any automation system to behave as naturally as real world system being automated … the first prerequisite is that the structural and behavioral complexity of real world system [system to be automated] needs to be understood and second we should be able to replicate similar or better structural components on the automated system side.
  21. Let us understand if there was no complexity … then software systems are not needed in the first place or software systems are inherently complex.
  22. As Software systems are supposed to automate the complexity of real world systems. We know real world systems can be highly complex. This means that the software systems will be at least as complex as the real world systems.
  23. If the real world systems belonging to different streams of engineering which are highly complex needs modeling for better understanding, then it is quite obvious that even software systems which are atleast equally complex as the real world system also needs modeling.
  24. Unfortunately ... the reality is very different ....Software systems are the only kind of systems wherein huge sky scrapers are built with out any engineering drawings. And can you guess what happens to these sky scrapers? Its any ones guess one ... the building people land up creating is something which the user never wanted?
  25. It is not that we don't have a standardized modeling language for Software Systems to help us understand the complexity. There is a Standardized Modeling Language [UML] for modeling the complexity of Software systems.. but the fact is we just dont use it.
  26. UML is a standardized graphical modeling technique used for understanding the complexity of software systems from different perspectives at different levels of granularity
  27. Majority of the companies don't use UML as they don't see any value in using the same. One of the primary reasons according to me is that people don't understand why UML is needed. I have come across engineers and technical managers considering UML and UML Diagrams a waste of time saying that if systems can be created by writing codes then what is the need for drawing these diagrams?
  28. As there are two important ways of defining a system viz behavioral and structural perspective … hence UML diagrams are also classified into two types viz Structural and Behaviorial Diagrams.
  29. Behaviorial diagrams are different graphical diagrams meant for understanding the behavioral complexity of a system from different perspectives at different levels of granularity [Use cases, Use case diagrams, Sequence diagrams, Collaboration diagrams, State diagrams, Activity diagrams are different behavioral diagrams.]
  30. Structural diagrams are different graphical diagrams meant for understanding the structural complexity of a system from different perspectives at different levels of granularity [Class Diagrams, Package Diagrams, Component diagrams and Deployment diagrams are different types of structural diagrams.]
  31. UML Diagrams are needed primarily for two purpose. First the UML Diagrams are needed to understand the structural and behavioral complexity of the traget system to be automated from different perspectives at different levels of granularity. Second as there are multiple stakeholders [like analyst, architects, low level designers, project managers, engineers, testers etc] involved in the development of information systems, standardized graphical notations are used to ensure that all the stakeholders understand the system in a single way.
  32. In the absence of usage of Standardized Models / UML … one we will not be able to understand the structural and behavioral complexity of the existing real world system to be automated . This basically leads to a situation wherein companies land up creating systems which miles away from the customers expectations. In our professional lives, many times we have witnessed a situation where we deliver the first version of the system to the customer and his reaction is "this is not what I wanted". This happens because we did not completely understand what the customer exactly needed. If analysis using standardized modeling technique was not done, then it is fair to expect that we dont really understand the problem statement or requirements the right way.
  33. Also if Standardized Models / UML is not used , how do we ensure that all the stakeholders have a single understanding of the system? . Unfortunately there is no way to ensure the same. How many times it has happened to you wherein the same requirement was misinterpreted by different stakeholders ? Ask yourself why did this happen?
  34. As I have pointed out , we cannot have a stream of engineering dealing with complex systems without standardized modeling language because without understanding the complexity no complex system can be build.

Now let me pose the following questions for all of us to introspect …"Which logic in this world supports solving problems without understanding the problem? Building software systems by just writing code directly without any standardized modeling means trying to solve a problem without understanding the problem."

 
Hemant Jha
Founder - VPlanSolutions
Researcher, Trainer

www.VPlanSolutions.co.in