Software systems - Automating the complexity of the real world

In this article I will be discussing about the most fundamental aspect of software systems. The definition or understanding of software systems itself.

My experience of training software professionals between (1-20 years) show that most of the software professionals have a very narrow understanding or vision wrt understanding software systems.

To exemplify I will be posing in front of you is: "What is a Software System?"

I feel most of the readers of the book are in the business of developing Software Systems.

When I ask this question to my participants, I get a lot of answers like....

"A software system is a system which processes information and delivers information."
"A software system is a system which takes in Input and gives an Output"
"A software system is a system which takes data processes the same and gives it in the form of knowledge or information", etc.

I am sure you all will we thinking on these lines as well. According to me all these activities defined in these descriptions are definitely done within in a Software System but probably this is only a small aspect of actual capabilities of an Software System.

Let me give you my view of a Software System.

According to me a Software System is a particular type of system which is meant to automate the complexity of real world systems by using the processing capability (of the processor), the storage capability (of the memory) and the transmission capability of the hardware available to us today, there by adding a value to its end users.

Almost majority of the software systems are automating the complexities of the real world while there are only a few software systems wherein we create something which is not existence in this real world.

Let me explain this definition to you by giving the example of some successful software systems,
Lets talk about Google.. One of the most successful Software Systems.

What is Google?

Its an Internet based search engine which facilitates searching of information on the basis of keywords.

Now think about it , was searching as a concept invented by Google or were the different searching techniques invented by Google?

I hope you all will agree with me on this.. Searching as a concept and searching techniques has been there for ages, Google didn't invent the same, then what is Google doing?

Google as a Software System has automated the real world concept of searching and searching techniques by using the processing capabilities of the processing hardware (processors), storage capability of the storage hard wares and the communication capabilities of the Internet.

Let me put you into a room stacked with 10000 files and ask you to search for a particular file in that room, I am sure the techniques which each one of us will apply will be nearly the way google does it, but as Human beings we have limitations with respect to processing, storage and communication and hence we only search a limited number of files.

What do you think about your desktops and laptops?

In our human body we have the processor which is our brain, similarly the computer also has a processor the only difference been we have limited processing capabilities while the computer has unlimited processing capability.

In our human body we have memory for storage ,similarly the computer also has a storage hardware the only difference been we have limited storage capability while the computer has unlimited storage capability.

In our human body we have communication capability ,similarly the computer also has a communication hardware the only difference been we have limited communication capability while the computer has unlimited communication capability.

Software as a system has evolved and developed only after the progress and development in the hardware industry wherein the computational, storage and communication become more economical and accessible.

Let us consider the next very successful software system like SAP.

SAP has been the world biggest developers of Enterprise Systems like Enterprise Resource Planning.

Now was ERP as a concept invented by SAP or were enterprises not planned before SAP developed ERP software was launched by SAP.

Enterprise resources were planned even before the development of these ERP Software's but was done manually by human beings and humans have limitations wrt processing, storage and transmission planning was severely limited by these limitations.

What did ERP Systems like SAP do?

These ERP Systems automated the Enterprise Resource Planning of an complex enterprises by harnessing the unlimited processing, storage and transmission capabilities of the hardware thereby adding value to the business users in terms of managing scale and the speed of doing the same.

Like ERP Systems, was Customer Relationship a concept invented by these companies developing CRM Systems or were customer relationships not managed before the invention of these CRM Systems.

If the customer relationships are managed manually, there is a limit on the scale upto which they can be managed manually.

Again the CRM systems are supposed to automate the Customer Relationships of an enterprise by harnessing the unlimited processing, storage and transmission capabilities of the hardware thereby adding value to the business users in terms of managing scale and the speed of doing the same.

What do you think about the Text Editors like MS Word, Textpad, WordPad etc?

Did these Text Editors invent the natural languages like English and its associated concepts, I feel the same reasoning applies to these systems as well.

All these systems and processes were existent even before the evolution of Information Systems but were done manually and physically and hence had its own limitations.

With the progress in the development of computational resources e hardware, a lot of things which were done manually can be automated, there by delivering business value to the businesses.

There are numerous examples of Software Systems which are automating various real world complexities and business using this hardware in the most natural form.

If you are still not convinced then let me give you one more reasoning for the same.

Why are UML diagrams classified as Structural , Behavioral and Interaction Diagrams?

Why not some other diagrams?

As we know Software Systems can automate any real world system which can belong to any domain (Finance, Healthcare, Insurance, Global Energies, Telecom, Banking etc).

Is it possible to think about a standardized graphical modeling technique which can have a standardized unique graphical representation for every concept belonging to every domain in this world?

I hope you will agree its is not technically possible.

As the real world system could represent any system in this world, the only thing common across all the systems belonging to every domain is that every system will have structure and behavior.

This is the reason why UML diagrams are classified as structural and behavioral diagrams.

Also as we know that component interaction is the cause behind implementation of behavior, one would also want to model and understand as to how components interact with each other for which we have Interaction Diagrams like sequence diagrams and collaboration diagram.

Probably the facts described in the previous section will also help you understand this definition that Software System are supposed to automate the complexity of any real world system using the hardware available.

As Software System is also an automation system like a human robot.. the rules and the problems faced by software system are also nearly the same.

As we know for Software System to behave as naturally as the real world system the prerequisites are

  • The structural and behavioral complexity of the real world system should be understood and know.
  • Once we are through by step number 1 , we will should be able to mimic or represent similar or better structural components in the automated system.
  • Once we have replicated the structural components or structural complexity within the Software System, then we harnessing the processing, storage and the transmission capability of the hardware so at to add value to the end user.

The right understanding of software systems is extremely critical to the success of software systems.

Remember if a client is asking for a software system, it means the client is having a complex system which can no longer be handled or scaled manually.

This means almost all of the software systems will be dealing with real world systems which are highly complex or complexity is the intrinsic nature of software systems.

Is it important for the systems to take care of Natural Modeling?

Remember as most of the real world systems are already existing, there are users who are used to use the manual system.

Hemant Jha
Founder - VPlanSolutions
Researcher, Trainer