Difference between abstraction layers and modularisation

Click For Summary
Abstraction involves simplifying complex systems by focusing on essential features while omitting finer details, allowing for different levels of understanding. Layers of abstraction represent varying depths of knowledge where each level serves a specific function, such as the OSI model's hierarchical structure. In contrast, modularization breaks down complex systems into independent, manageable components, enabling easier development and testing. While both concepts share similarities, abstraction is a vertical approach emphasizing dependency between layers, whereas modularization is horizontal, focusing on independent modules. Understanding these distinctions is crucial for effective system design and implementation.
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!
 
Technology news 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 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 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 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?
 
  • #10
Exactly.
 
  • Like
Likes JC2000
  • #11
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 JC2000

Similar threads

Replies
65
Views
5K
Replies
10
Views
5K
Replies
1
Views
2K
Replies
2
Views
3K
  • Sticky
  • · Replies 13 ·
Replies
13
Views
7K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 9 ·
Replies
9
Views
3K