Difference between abstraction layers and modularisation

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
10 replies · 2K views
JC2000
Messages
186
Reaction score
16
TL;DR
I am having trouble understanding why the OSI model for networks is an example of abstraction levels and not an application of modularisation. This course (https://www.coursera.org/learn/iot/lecture/3JfWa/lecture-2-2-protocols) referred to OSI as 'layers of abstraction', so did the wikipedia page on 'abstraction layer'.
I understand abstraction to be the process of representing a system, concept or process in simple terms, leaving out finer details which may obfuscate the bigger picture.

My understanding of layers of abstraction is that it refers to different depths of understanding of a concept where each 'level' of understanding helps in performing a specific task. For instance, knowing that meaning of the play and pause button in a video player application is enough for the purpose of playing a video. Whereas an understanding of how video is stored in terms of digital signals would be required if one had to design a program to compress a video.

My understanding of modularisation is that it is a concept used to break a complex process/ system into simpler chunks which can be understood and developed independently. So a software application can be split into various modules such as the GUI, data storage, plugins etc. This allows each different module to be coded separately and makes the development process simpler.

Thus, it seems to me that breaking network protocols into different parts (parts for routing, flow control, arbitration etc) is an instance of modularisation. However it seems this is not the case. I would be grateful if you could tell me where my understanding of modularisation and abstraction goes off the rails.

Thank you for your time!
 
on Phys.org
JC2000 said:
My understanding of modularisation is that it is a concept used to break a complex process/ system into simpler chunks which can be understood and developed independently.
Yes.
JC2000 said:
Thus, it seems to me that breaking network protocols into different parts (parts for routing, flow control, arbitration etc) is an instance of modularisation.
The seven layers of the OSI model aren't separate chunks that are independent of each other. From the lowest layer, Physical Layer 1, on up to the highest layer, Application Layer 7, each level higher is an increased abstraction. Each layer at a given level serves the layer above it, and is served by the layer below it.

See https://en.wikipedia.org/wiki/OSI_model.
 
  • Like
  • Informative
Likes   Reactions: hmmm27, JC2000 and berkeman
To cite Andrew Tanenbaum: The OSI model is excellent for explaining the concept of network layers, but is almost impossible to implement. The TCP/IP model is useless for explaining the concept of network layers, but it is simple to implement.

Another comment, also from Tanenbaum: The seven layers were a sort of a political compromise. Some of the layers were so complex that they had to be split into sublayers (e.g. the Data Link layer was usually designed with the upper link layer on top of the MAC layer) and some were mostly empty (e.g the Presentation Layer)
 
  • Like
Likes   Reactions: JC2000
Personally I am not a big fan of this kind of fancy definitions, I think it is much more important to understand why the layers exist and what is their role in the communication.
But I would tend to agree that it is an "abstraction" concept. For example transport layer doesn't need to care about routing of packets through the network. It relies on network layer to take care of it and doesn't need to know the underlying details. The network connectivity is abstracted to transport layer (e.g. TCP) by network layer (e.g. IP). In general, each layer is abstracting some mechanism to the upper layer, all together making a stack.
 
Svein said:
The TCP/IP model is useless for explaining the concept of network layers
I think "useless" is too strong word. TCP/IP just merges the three uppermost layers into single application layer, which totally make sense for most typical network applications.
 
Mark44 said:
The seven layers of the OSI model aren't separate chunks that are independent of each other. From the lowest layer, Physical Layer 1, on up to the highest layer, Application Layer 7, each level higher is an increased abstraction. Each layer at a given level serves the layer above it, and is served by the layer below it.

See https://en.wikipedia.org/wiki/OSI_model.

I see! Makes sense now! Thanks!
 
  • Like
Likes   Reactions: berkeman
JC2000 said:
Thus, it seems to me that breaking network protocols into different parts (parts for routing, flow control, arbitration etc) is an instance of modularisation. However it seems this is not the case. I would be grateful if you could tell me where my understanding of modularisation and abstraction goes off the rails.
Indeed, there are some similarities, but abstraction is kind of a vertical, while modularisation is rather a horizontal approach.
 
Rive said:
Indeed, there are some similarities, but abstraction is kind of a vertical, while modularisation is rather a horizontal approach.

You mean abstraction is vertical in the sense that a single concept can be understood at different depths and modularisation is horizontal in the sense that a system can be sliced into different parts, each independent of the other?
 
When software is modularized, is in broken into several independently compiled and testable modules. Each module has a defined interface that describes how it is used by other modules. This is primarily a detailed software design and implementation method.

"Abstraction" implies a vertical organization - with higher levels being critically dependent on the functionality of the lower levels. "Abstraction" also implies that some or all layers have multiple implementations. Abstraction is a system design and implementation method. It is not limited to software - and in some cases, there may be a choice as to whether a layer is implemented in software or hardware.

Modularization would be a way (the way) to implement the software abstraction layers. The normal expectation in implementing software abstraction layers is have no modules that support more than one layer. In fact, when a single SW module implements more than one layer, it is commonly described as "not implementing a layer".
 
  • Like
Likes   Reactions: JC2000