Decomposition is an important part of information systems analysis and design and is manifested as the breakdown of the system to elements such as subsystems, modules, activities, processes, entities, and objects. Good decomposition is considered a major requirement for a good system design. However, there is no comprehensive theory of information systems decomposition and no single dominant decomposition approach exists. Consequently, software decomposition relies on "guidelines" and designer's experience. In this article, we propose a foundation for a theory of good decomposition based on two principles: 1) the decomposition of an information system should reflect the nature of the real world system represented by it, and 2) static and dynamic aspects of systems cannot be separated and hence good decomposition should be based on both. The model enables the analysis of concepts such as good software modules, normalized relations, objects, and entities as special cases of one generalized construct.