![Page 1: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/1.jpg)
1
On the Criteria To Be Used in Decomposing Systems into Modules
by D.L.Parnas Dec. 1972
presented by Yuanhua Qu
for spring 2003 CS5391
![Page 2: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/2.jpg)
2
On the Criteria To Be Used in Decomposing Systems into Modules
• Overview
• Benefits of modular programming
• Modularization
• KWIC Index Production System
• KWIC Modularization1
• KWIC Modularization2
• Comparison of the Two Modularizations
• The Criteria of Decomposition
• Hierarchical Structure
• Conclusion
![Page 3: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/3.jpg)
3
Overview
• Modularization – a mechanism for improving the flexibility and
comprehensibility of a system while allowing the shortening of its development time.
– Its effectiveness is dependent upon the criteria used in dividing the system into modules.
![Page 4: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/4.jpg)
4
Overview
• Decomposition– Conventional decomposition– Unconventional decomposition
• have distinct advantages for the goals outlined.
• Will be less efficient in most cases if implemented with the conventional assumption that a module consists of one or more subroutines
![Page 5: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/5.jpg)
5
Benefits of modular programming
• Managerial– Development time should be shortened
because separate groups would work on each module with little need for communication.
• Product flexibility– It should be possible to make drastic
changes to one module without a need to change others.
![Page 6: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/6.jpg)
6
Benefits of modular programming (continued)
• Comprehensibility– It should be possible to study the system
one module at a time. – The whole system can therefore be
better designed because it is better understood.
![Page 7: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/7.jpg)
7
Modularization
• The modularizations include the design decisions which must be made before the work on independent modules can begin.
• In this context "module" is considered to be a responsibility assignment rather than a subprogram.
![Page 8: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/8.jpg)
8
KWIC Index Production System
• System accepts an ordered set of lines• Each line is an ordered set of words• Each word is an ordered set of characters• Any line may be circularly shifted by
repeatedly removing the first word and appending it at the end of the line.
• System outputs a listing of all circular shifts of all lines in alphabetical order.
![Page 9: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/9.jpg)
9
KWIC
• Two ways to modularize a program that generates KWIC indices.– Modularization 1
• Based on the sequence of steps to perform
– Modularization 2• Based on the principle of “information
hiding”
![Page 10: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/10.jpg)
10
KWIC Modularization1
Master control
Input medium Output medium
Characters IndexAlphabetized
Index
Input Circular Shift Alphabetizer Output
![Page 11: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/11.jpg)
11
KWIC Modularization 2
Master control
Input medium Output medium
Input Output
Lines
SE
TC
(r,w
,c,d
)
CH
AR
(r,w
,c)
WO
RD
S(r
)
Circular Shifter
CSC
HA
R(r
,w,c
)
WO
RD
S(r
)
CS
SE
TU
P
Alphabetizer
AL
PH
ITH
(i)
![Page 12: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/12.jpg)
12
Comparison of the Two Modularizations
• General– Both might share the same
• data structures • algorithms• runnable representation (after assembly)
– Differences are in the way they are divided into work assignments and interfaces between modules.
![Page 13: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/13.jpg)
13
Comparison of the Two Modularizations(continued)
• General (continued)
– Systems are substantially different even if identical in the runnable representation
• runnable representation is used only for running
• Other representations are used for– Changing– Documenting– Understanding , etc.
![Page 14: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/14.jpg)
14
Comparison of the Two Modularizations(continued)
• Changeability Design decisions that may change
1 Input format2 All lines stored in memory3 Pack characters 4 to a word4 Make an index for circular shifts rather than
store them
5 Alphabetize once, rather than either– Search for each item as needed– Partially alphabetize, partially search
![Page 15: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/15.jpg)
15
Comparison of the Two Modularizations(continued)
• Changeability(continued)
–Modules:•modularization1: 1. Input 2. Circular Shift 3.Alphabetizing
4. Output 5. Master Control •modularization2: 1. Line Storage 2. Input. 3. Circular Shift 4.Alphabetizing 5. Output 6. Master ControlX shows changes that needed in those modules corresponding to each kind
of change.
Modularization1 Modularization2Change 1 2 3 4 5 1 2 3 4 5 6
1 X X2 X X X X X X3 X X X X X X4 X X X X5 X X X
![Page 16: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/16.jpg)
16
Comparison of the Two Modularizations(continued)
• Independent Development– Modularization 1
• interfaces between modules are fairly complex.
– Modulariztion 2• interfaces are relatively simple. Therefore
independent development of modules should begin much earlier.
![Page 17: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/17.jpg)
17
Comparison of the Two Modularizations(continued)
• Comprehensibility– Modularization 1
• The system will only be comprehensible as a whole.
– Modularization 2• more comprehensible, better than modularization 1.
![Page 18: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/18.jpg)
18
The Criteria of Decomposition
• Modularization 1– Each major step in the processing was a module
• Modularization 2– Information hiding
• Each module is characterized by its knowledge of design decisions which it hides from all others.
• Its interface or definition reveal as little as possible about its innter working.
![Page 19: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/19.jpg)
19
Hierarchical Structure
• The existence of the hierarchical structure assures us that we can "prune" off the upper levels of the tree and start a new tree on the old trunk.
• If we had designed a system in which the "low level" modules made some use of the "high level" modules, we would not have the hierarchy, we would find it much harder to remove portions of the system, and "level" would not have much meaning in the system.
![Page 20: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/20.jpg)
20
Hierarchical Structure(continued)
• we must conclude that hierarchical structure and "clean" decomposition are two desirable but independent properties of a system structure.
![Page 21: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/21.jpg)
21
Conclusion
• It is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart.
• We propose instead that one begins with a list of difficult design decisions or design decisions which are likely to change. Each module is then designed to hide such a decision from the others.
![Page 22: On the Criteria To Be Used in Decomposing Systems into Modules](https://reader035.vdocuments.us/reader035/viewer/2022062408/56813c5e550346895da5e1e7/html5/thumbnails/22.jpg)
22
Conclusion(continued)
• To achieve an efficient implementation we must abandon the assumption that a module is one or more subroutines, and instead allow subroutines and programs to be assembled collections of code from various modules.
The end.