If the system is having hierarchical architecture, the program structure can easily be partitioned both horizontally and vertically, figure (a), represents this view.
In given figure (a), horizontal division defines the individual branches of the modular hierarchy for every major program function. Control modular (shown by rectangles) are used to coordinate communication between tasks. The three partitions are done in simple horizontal partitions i.e., input, data transformation (processing) and output.
The following benefits are provided by horizontal partitioning –
- Software, that can easily be tested.
- Software, that can easily be maintained.
- Propagation of fewer side effects.
- Software, that can easily be extended.
On the other hand, vertical segmentation, also known as “factoring”, states that control and function must be distributed across the program structure, top to bottom. The top-level modules have to carry out control functions and perform fewer modules in the structure are laborious, performing all input, processing and output tasks.
Figure (b), represents vertical partitioning. Due to the nature of changes in program structures, vertical segmentation is required. Observing the figure (b), it can be said that a change in the control module would make its subordinates more likely to cause the spread of side effects. Generally, changes are- changes to input, computation or transformation, and output.
The basic behavior of the program is much less likely to change. That is why, vertically partitioned structures are less susceptible to side effects due to changes and thus be more maintainable, which is its key quality factor.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.