'''''Description''''' A decomposition paradigm is a style of structuring ''programs'' into parts. As such it specifies what types of parts a program should be composed of and what kind of structural relationships they should have. DecompositionParadigms are unrelated to ModelsOfComputation, which are about how to express computations, not how to structure the program that arises from the computation. However, some decomposition paradigms are easier and more efficient in some models of computation than others, and viceversa. A decomposition paradigm may be related to and recommended by a method[ology], which is a collection of principles meant to guide guidance on how to construct a program. '''''Examples of decomposition paradigms''''' BjarneStroustrup published a useful paper in which he listed the principal decomposition paradigms. Some of the most common are: procedural: programs are structured as collections of procedures which are related by invocations among them. modular: programs are composed of visibility scopes called modules, which may contain several types or procedures, and are related by usage patterns of types and procedures from one module to another. object-oriented: modules that contain exactly one type and ''all'' and ''only'' the procedures that can access or manipulate its internal representation. '''''Purpose''''' The main purpose of a decomposition paradigm is to offer guidance as to making the task of creating and maintaining a complex program easier. Most decomposition paradigms are based on the idea that this can be achieved by minimizing the dependencies among program parts and maximizing the cohesiveness of each part. ObjectOriented decomposition for example is based on the assumption that cohesion and dependencies are optimized by hiding in a module the representation of a type, because usually there is strong cohesion among the procedures that maintain its representation, and few dependencies with the modules for other types. '''''Pointers''''' * BjarneStroustrup's revised article on decomposition paradigms: http://www.cl.cam.ac.uk/Teaching/2001/CompProgLangs/bjarne.pdf ---- -- Blissex 050405