On the criteria to be used in decomposing systems into modules

  title={On the criteria to be used in decomposing systems into modules},
  author={David Lorge Parnas},
  journal={Commun. ACM},
  • D. Parnas
  • Published 1 December 1972
  • Economics
  • Commun. ACM
This paper discusses modularization as a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time. [] Key Method It is shown that the unconventional decompositions have distinct advantages for the goals outlined. The criteria used in arriving at the decompositions are discussed.
Improving Design Decomposition
This work presents an analytical approach that enables reasoning about early exploration of decomposition alternatives, and describes a visual notation for diagramming the composition of subsystems, and an automatic technique for suggesting good decompositions.
Criteria for Decomposing Systems Into Components in Modeling and Simulation: Lessons Learned with Military Simulations
The common criteria for decomposition in software design, information hiding, and “object picking” are sometimes inappropriate for model decomposition because they neglect the importance of so-called hidden assumptions of model abstraction and idealization, which are paramount to the modeling of every complex system.
Decoupling change from design
This paper shows how sub module components can be used to address the issue of change and demonstrates how the ability to address change with submodule components is, to a large extent, independent of the design level modularization.
The influence of software structure on reliability
It is argued that reliability and correctness are not synonyms and the differences suggest techniques by which the reliability of software can be improved even while the production of correct software remains beyond the authors' reach.
An Automated Approach to Information Systems Decomposition
The decomposition method has been implemented as a set of experimental computerized systems analysis tools and applied to a standard problem for which other designs already exist, and the results are encouraging, in that decompositions generated using other methodologies map easily into those suggested by the computerized tools.
Architecture-driven problem decomposition
This work shows how these two views can be reconciled and demonstrate how a choice of architecture can facilitate problem analysis, decomposition and subsequent recomposition, within the problem frames framework.
Optimising Flexibility In System Architectures Qualifying
It is hoped that by firstly making analysis more systematic and then automating it, the impact of changes and specifically how changes ripple through a system can be better understood for even complex systems.
Automated aspect-oriented decomposition of process-control systems for ultra-high dependability assurance
This decomposition method is applied to a case study specified by the High-Integrity Systems group at Sandia National Labs, which involves the control of a future version of the Bay Area Rapid Transit (BART) system.
Component-based Implementation of Cyberattack Simulation Models
This research focuses on the identification of components specific to Petri Nets with Players, Strategies, and Cost (PNPSC) which are used to model cyberattack patterns and proposes the granularity at two levels.
A program decomposition scheme with applications to software modification and testing
  • J. Lyle, K. Gallagher
  • Mathematics
    [1989] Proceedings of the Twenty-Second Annual Hawaii International Conference on System Sciences. Volume II: Software Track
  • 1989
The authors use M. Weisers (1984) technique, to approximate the notion of direct-sum decomposition for the flowgraph representation of a program and characterize those projections that give a nontrivial decomposition and demonstrate how to extend any given projection to a maximal component with respect to the decomposition.


A paradigm for software module specification with examples
A paradigm for module specification which has proven moderately successful in a number of test situations is reported on and is illustrated by means of a variety of examples from a tutorial system.
Some conclusions from an experiment in software engineering techniques
  • D. Parnas
  • Computer Science
    AFIPS '72 (Fall, part I)
  • 1972
The results are a drastic improvement over the state of the art and the programmers generally inexperienced and poor, and the programming system used was not designed for the task.
A technique for software module specification with examples
This paper presents an approach to writing specifications for parts of software systems sufficiently precise and complete that other pieces of software can be written to interact with the piece specified without additional information.
Information Distribution Aspects of Design Methodology
The role of documentation in the design and implementation of complex systems is explored, resulting in suggestions in sharp contrast with current practice, and the thesis that such information "broadcasting is harmful, that it is helpful if most system information is hidden from most programmers, is supported.
Dataless programming
  • R. Balzer
  • Computer Science
    AFIPS '67 (Fall)
  • 1967
A programmer using existing programming languages typically codes a problem by (1) defining it, then (2) analyzing the processing requirements, and (3) on the basis of these requirements, choosing a
The structure of the “THE”-multiprogramming system
A multiprogramming system is described in which all activities are divided over a number of sequential processes, in each of which one or more independent abstractions have been implemented.
On a 'Buzzword': Hierarchical Structure
This paper discusses the use of the term "hierarchically structured" to describe the design of operating systems and attempts to provide an understanding of the different meanings of this term.
BLISS: a language for systems programming
A language, BLISS, is described. This language is designed so as to be especially suitable for use in writing production software systems for a specific machine (the PDP-10): compilers, operating
A View Of Programming Languages
Abstract : The book, suitable for a second course in computer programming at the graduate level, is for undergraduates as well as graduates interested in the design of programming languages and in
SIMULA: an ALGOL-based simulation language
This paper is an introduction to SIMULA, a programming language designed to provide a systems analyst with unified concepts which facilitate the concise description of discrete event systems. A