This paper discusses modularization as a method to improve system flexibility, comprehensibility, and development time. It emphasizes that the effectiveness of modularization depends on the criteria used to divide the system into modules. The paper presents a system design problem and describes both conventional and unconventional decomposition methods. It argues that unconventional decompositions offer distinct advantages for the goals outlined. The criteria used in decomposition are discussed, and it is shown that unconventional decompositions, if implemented with the conventional assumption that a module consists of one or more subroutines, may be less efficient. An alternative implementation approach is suggested.
The paper explores the criteria for decomposing systems into modules, emphasizing the importance of design decisions that can change over time. It discusses the benefits of modular programming, including reduced development time, product flexibility, and improved comprehensibility. The paper presents two modularizations of a KWIC index production system. The first is a conventional decomposition, while the second is an unconventional one that uses "information hiding" as a criterion. The second decomposition allows for more flexibility and easier changes, as it hides design decisions from other modules.
The paper compares the two modularizations, highlighting differences in their interfaces, data representations, and changeability. It argues that the second decomposition is more efficient and flexible, as it allows for independent development of modules and better comprehensibility. The paper also discusses the importance of hierarchical structure in system design, noting that it provides additional benefits such as simplification and the ability to prune parts of the system.
The paper concludes that modularization should be based on design decisions rather than flowcharts. It emphasizes that modules should hide design decisions from other modules, allowing for more efficient and flexible system development. The paper also discusses the importance of maintaining multiple representations of the program and the need for tools that facilitate the implementation of modular designs.This paper discusses modularization as a method to improve system flexibility, comprehensibility, and development time. It emphasizes that the effectiveness of modularization depends on the criteria used to divide the system into modules. The paper presents a system design problem and describes both conventional and unconventional decomposition methods. It argues that unconventional decompositions offer distinct advantages for the goals outlined. The criteria used in decomposition are discussed, and it is shown that unconventional decompositions, if implemented with the conventional assumption that a module consists of one or more subroutines, may be less efficient. An alternative implementation approach is suggested.
The paper explores the criteria for decomposing systems into modules, emphasizing the importance of design decisions that can change over time. It discusses the benefits of modular programming, including reduced development time, product flexibility, and improved comprehensibility. The paper presents two modularizations of a KWIC index production system. The first is a conventional decomposition, while the second is an unconventional one that uses "information hiding" as a criterion. The second decomposition allows for more flexibility and easier changes, as it hides design decisions from other modules.
The paper compares the two modularizations, highlighting differences in their interfaces, data representations, and changeability. It argues that the second decomposition is more efficient and flexible, as it allows for independent development of modules and better comprehensibility. The paper also discusses the importance of hierarchical structure in system design, noting that it provides additional benefits such as simplification and the ability to prune parts of the system.
The paper concludes that modularization should be based on design decisions rather than flowcharts. It emphasizes that modules should hide design decisions from other modules, allowing for more efficient and flexible system development. The paper also discusses the importance of maintaining multiple representations of the program and the need for tools that facilitate the implementation of modular designs.