HOME

TheInfoList



OR:

Decomposition in
computer science Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, also known as factoring, is breaking a complex
problem Problem solving is the process of achieving a goal by overcoming obstacles, a frequent part of most activities. Problems in need of solutions range from simple personal tasks (e.g. how to turn on an appliance) to complex issues in business an ...
or
system A system is a group of interacting or interrelated elements that act according to a set of rules to form a unified whole. A system, surrounded and influenced by its open system (systems theory), environment, is described by its boundaries, str ...
into parts that are easier to conceive, understand, program, and maintain.


Overview

Different types of decomposition are 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 specific disciplined use of the structured control flow constructs of selection ( if/then/else) and repet ...
, ''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. * ''
Object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
decomposition'' breaks a large system down into progressively smaller classes or objects that are responsible for 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 (1994). ''Object-oriented Analysis and Design'' (2nd ed.). Redwood Cita, CA: Benjamin/Cummings. pp.16-20. More generally,
functional decomposition In engineering, 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. This process of decompo ...
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 Function (engineering), functions (Activity diagram, activities, Task analysis, actions, wikt:process, pr ...
of a system is thereby replaced by a series of functional models of subsystems. Jan Dietz (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 usually implies a specific way to organize a program text. Typically the aim of using a decomposition paradigm is to optimize some metric related to program complexity, for example a program's modularity or its maintainability. Most decomposition paradigms suggest breaking down a program into parts to minimize the static dependencies between those parts, and to maximize each part's
cohesiveness Group cohesiveness, also called group cohesion, social harmony or social cohesion, is the degree or strength of bonds linking members of a social group to one another and to the group as a whole. Although cohesion is a multi-faceted process, it ...
. Popular decomposition paradigms include the procedural, modules,
abstract data type In computer science, an abstract data type (ADT) is a mathematical model for data types, defined by its behavior (semantics) from the point of view of a '' user'' of the data, specifically in terms of possible values, possible operations on data ...
, and
object oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
paradigms. Though the concept of decomposition paradigm is entirely distinct 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 ...
, they are often confused. For example, the
functional model In systems engineering, software engineering, and computer science, a function model or functional model is a structured representation of the Function (engineering), functions (Activity diagram, activities, Task analysis, actions, wikt:process, pr ...
of computation is often confused with procedural decomposition, and the
actor model The actor model in computer science is a mathematical model of concurrent computation that treats an ''actor'' as the basic building block of concurrent computation. In response to a message it receives, an actor can: make local decisions, create ...
of computation is often confused with
object oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
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 source code—changing the '' factoring''—without changing its external behavior. Refactoring is intended to improve the design, structure, ...
*
Component-based software engineering Component-based software engineering (CBSE), also called component-based development (CBD), is a style of software engineering that aims to construct a software system from software component, components that are loosely-Coupling (computer program ...
* Dynamization *
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 Code smell, undesira ...
* Event partitioning * ''
How to Solve It ''How to Solve It'' (1945) is a small volume by mathematician George Pólya, describing methods of problem solving. This book has remained in print continually since 1945. Four principles ''How to Solve It'' suggests the following steps ...
'' * Integrated Enterprise Modeling *
Personal information management Personal information management (PIM) is the study and implementation of the activities that people perform in order to acquire or create, store, organize, maintain, retrieve, and use informational items such as documents (paper-based and digital ...
* Readability *
Subroutine In computer programming, a function (also procedure, method, subroutine, routine, or subprogram) is a callable unit of software logic that has a well-defined interface and behavior and can be invoked multiple times. Callable units provide a ...


References


External links

{{Commons category, Decomposition (computer science) diagrams
Object Oriented Analysis and Design


Software design Decomposition methods