Decomposition in
computer science
Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
, also known as factoring, is breaking a complex
problem or
system into parts that are easier to conceive, understand, program, and maintain.
Overview
There are different types of decomposition defined in computer sciences:
* In
structured programming
Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection ( if/then/else) and repetition ( ...
, ''algorithmic decomposition'' breaks a process down into well-defined steps.
*
Structured analysis breaks down a software system from the system context level to system functions and data entities as described by
Tom DeMarco
Tom DeMarco (born August 20, 1940) is an American software engineer, author, and consultant on software engineering topics. He was an early developer of structured analysis in the 1970s.
Early life and education
Tom DeMarco was born in Hazle ...
.
* ''
Object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of p ...
decomposition'', on the other hand, breaks a large system down into progressively smaller classes or objects that are responsible for some part of the problem domain.
* According to
Booch, algorithmic decomposition is a necessary part of object-oriented analysis and design, but object-oriented systems start with and emphasize decomposition into objects.
Grady Booch
Grady Booch (born February 27, 1955) is an American software engineer, best known for developing the Unified Modeling Language (UML) with Ivar Jacobson and James Rumbaugh. He is recognized internationally for his innovative work in software archi ...
(1994). ''Object-oriented Analysis and Design'' (2nd ed.). Redwood Cita, CA: Benjamin/Cummings. pp.16-20.
More generally,
functional decomposition
In mathematics, functional decomposition is the process of resolving a functional relationship into its constituent parts in such a way that the original function can be reconstructed (i.e., recomposed) from those parts by function composition.
...
in computer science is a technique for mastering the complexity of the function of a model. A
functional model In systems engineering, software engineering, and computer science, a function model or functional model is a structured representation of the functions ( activities, actions, processes, operations) within the modeled system or subject area. of a system is thereby replaced by a series of functional models of subsystems.
Jan Dietz
Jean Leonardus Gerardus (Jan) Dietz (born 20 June 1945) is a Dutch Information systems researcher, Emeritus Professor of Information Systems Design, and part-time Professor of Enterprise Engineering at the Delft University of Technology, known for ...
(2006). ''Enterprise Ontology - Theory and Methodology''. Springer-Verlag Berlin Heidelberg.
Decomposition topics
Decomposition paradigm
A decomposition paradigm in computer programming is a strategy for organizing a program as a number of parts, and it usually implies a specific way to organize a program text. Usually the aim of using a decomposition paradigm is to optimize some metric related to program complexity, for example the modularity of the program or its maintainability.
Most decomposition paradigms suggest breaking down a program into parts so as to minimize the static dependencies among those parts, and to maximize the
cohesiveness
Group cohesiveness (also called group cohesion and social cohesion) arises when bonds link members of a social group to one another and to the group as a whole. Although cohesion is a multi-faceted process, it can be broken down into four main co ...
of each part. Some popular decomposition paradigms are the procedural, modules,
abstract data type
In computer science, an abstract data type (ADT) is a mathematical model for data types. An abstract data type is defined by its behavior (semantics) from the point of view of a ''user'', of the data, specifically in terms of possible values, pos ...
and
object oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
ones.
The concept of decomposition paradigm is entirely independent and different from that of
model of computation
In computer science, and more specifically in computability theory and computational complexity theory, a model of computation is a model which describes how an output of a mathematical function is computed given an input. A model describes how ...
, but the two are often confused, most often in the cases of the
functional model In systems engineering, software engineering, and computer science, a function model or functional model is a structured representation of the functions ( activities, actions, processes, operations) within the modeled system or subject area. of computation being confused with procedural decomposition, and of the
actor model of computation being confused with
object oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
decomposition.
Decomposition diagram
Image:6 Decomposition Structure.svg, Decomposition Structure
Image:21 Negative Node-Numbered Context.svg, Negative Node-Numbered Context
Image:Static, Dynamic, and Requirements Models for Sys Partition.jpg, Static, Dynamic, and Requirements Models for Systems Partition
Image:Functions and Use Scenarios Mapping to Requirements and Goals.jpg, Functions and Use Scenarios Mapping to Requirements and Goals
A decomposition diagram shows a complex, process, organization, data subject area, or other type of object broken down into lower level, more detailed components. For example, decomposition diagrams may represent organizational structure or functional decomposition into processes. Decomposition diagrams provide a logical hierarchical decomposition of a system.
See also
*
Code refactoring
In computer programming and software design, code refactoring is the process of restructuring existing computer code—changing the '' factoring''—without changing its external behavior. Refactoring is intended to improve the design, structur ...
*
Component-based software engineering
*
Dynamization
In computer science, dynamization is the process of transforming a static data structure into a dynamic one. Although static data structures may provide very good functionality and fast queries, their utility is limited because of their inability t ...
*
Duplicate code In computer programming, duplicate code is a sequence of source code that occurs more than once, either within a program or across different programs owned or maintained by the same entity. Duplicate code is generally considered undesirable for a n ...
*
Event partitioning
Event partitioning is an easy-to-apply systems analysis technique that helps the analyst organize requirements for large systems into a collection of smaller, simpler, minimally-connected, easier-to-understand "mini systems" / use cases.
Overview ...
* ''
How to Solve It
''How to Solve It'' (1945) is a small volume by mathematician George Pólya describing methods of problem solving.
Four principles
''How to Solve It'' suggests the following steps when solving a mathematical problem:
# First, you have to ''und ...
''
*
Integrated Enterprise Modeling
*
Personal information management
Personal information management (PIM) is the study of the activities people perform in order to acquire or create, store, organize, maintain, retrieve, and use information items such as documents (paper-based and digital), web pages, and email mes ...
*
Readability
*
Subroutine
In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Functions may ...
References
External links
{{Commons category, Decomposition (computer science) diagrams
Object Oriented Analysis and Design
Software design
Decomposition methods