Recently I was investigating Systems Modeling and stumbled across the Archimate language for enterprise architectures. Archimate is a classic case of defining a lexicon (language) for modeling System of Systems.
An Enterprise Architecture is a Systems of Systems which has Business, Application, Architecture, Technology and Physical aspects to it amongst many other aspects. These are all full systems in themselves and are integrated together to provide one larger system.
Wikipedia relates the following on System of Systems:
Current research into effective approaches to system of systems problems includes:
- Establishment of an effective frame of reference
- Crafting of a unifying lexicon (language)
- Developing effective methodologies to visualize and communicate complex systems
- Formal modelling language with integrated tools platform
Archimate does all of the above. It provides an effective frame of reference calling it views and viewpoints. It provides a unifying lexicon with all of its terminologies as listed in it specification. It is a formal modeling language and provides effective methods to visualize and communicate complex systems. There are also tools and software based on the archimate language to define and display architectures. Therefore Archimate is effectively a System of Systems implementation language for the domain of Enterprise IT systems.
It’s specification is linked below and is very intuitive. It makes a good read for someone experienced.
In Computer Science the notion of Abstraction Layers is very common. A simple explanation of this is that Electronics is an abstraction layer below RAM and above RAM is the layer of a C++ memory read. In between the C++ Memory Read and RAM there are many layers upon layers of software and hardware structures.
It is observed that these abstraction sayers are not wholesomely tracked. A lack of tracking these is very sad because while we have at our fingertips the maps of the world down to the streets and houses but not a map of abstraction layers.
There are terms in different fields such as:
OSAL: Operating Systems Abstraction Layer.
HAL (software): Hardware Abstraction Layer in Unix.
DBAL: Database Abstraction Layer
NAL: Network Abstraction Layer
It’s clear that there are abstraction layers everywhere in computer science. In hardware, in software, in networks, in databases etc.
In the interest of the advancement of computer science I believe an Abstraction Layers Foundation should be established. A body which would analyse the breadth and depth of abstraction layers. A body which would analyse the interaction amongst abstraction layers.
I think that with the advancement of computing systems there exists the space for a new discipline called Complex Systems Abstraction Layer Engineering which should cover abstraction layers tracking and interactions.
I justify this concept based on the increase in interdisciplinary skill set requirement. For example it is observed that whereas earlier there was Front-End Engineer and Back-End Engineer there now exists an entity called Full Stack Engineer capable of both front end and back end. Similarly it has been observed that whereas earlier there were System Administrators and Network Administrators there is a push in the industry to break these isolated entities here too. Similar stuff must be going on with databases and storage.
It is observed very clearly that one of the distinguishing factors between an experienced engineer and a new one is the knowledge of abstraction layers of the existing system. It appears experience in IT goes hand in hand with identifying the interaction of the abstraction layer you are working in with other layers. For example when a software engineer does software development he writes a piece of software for one component in a larger picture. Over time this software engineer becomes an enterprise architect based on a thing called experience. I feel that much of this thing called experience is abstraction layer knowledge. With experience using time this software engineer identified the relationship between his code and his application and the larger system. Using time he gained knowledge of the multiple layers in the system and how they are interacting. This knowledge of multiple layers and their interactions and dependancies is then used by the later enterprise architect to formulate the architecture of a different system. This is experience but it is also abstraction layers scale knowledge.
I feel that one big distinguishing factor between an Architect and an Engineer is abstraction layers knowledge. The architect has knowledge of the different layers in the system and the interactions amongst them. The engineer doesn’t.
I feel that an Abstraction Layer Foundation would help to identify and track the multiple abstraction layers that exist. It would then help link systems scale knowledge.
We are heading towards extremely complex systems and systems upon systems in IT. I feel tracking the breadth of the multiple abstraction layers in the entire computing domain under one body with the goal of identifying relationships will help the advancement of computer science.
One thing that is extremely important is that this foundations work should be model based and not document based. There is a new field called Model Based Systems Engineering.
” Model-based systems engineering (MBSE), according to INCOSE, is the formalized application of modeling to support system requirements, design, analysis, verification and validation activities beginning in the conceptual design phase and continuing throughout development and later life cycle phases.
It is a systems engineering methodology that focuses on creating and exploiting domain models as the primary means of information exchange, rather than on document-based information exchange.
MBSE methodology commonly used in industries such as aerospace, defense, rail, automotive, industrial, etc” Wikipedia
To track something complex documents are not used. Text documents have their limits. Software structure based models are being used to track complex systems under the field of Model Based Systems Engineering – MBSE. The same should be done by the Abstraction Layers Foundation for complex IT systems. To develop correlated linked models of IT systems.