# Decomposition (computer science): Wikis

Note: Many of our articles have direct quotes from sources you can cite, within the Wikipedia article! This article doesn't yet, but we're working on it! See more info or our list of citable articles.

# Encyclopedia

Decomposition in computer science, also known as factoring, refers to the process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program, and maintain.

## Overview

Decomposition in computer science refers to the process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program, and maintain. There are different types of decomposition defined in computer sciences:

• In structured programming, algorithmic decomposition breaks a process down into well-defined steps.
• Object-oriented 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 classes.[1]

More in general functional decomposition in computer science is a technique for mastering the complexity of the function of a model. A functional model of a systems is hereby replaced by a series of functional models of subsystems.[2]

## Decomposition topics

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 of each part. Some popular decomposition paradigms are the procedural, modules, abstract data type and object oriented ones.

The concept of decomposition paradigm is entirely independent and different from that of model of computation, but the two are often confused, most often in the cases of the functional model of computation being confused with procedural decomposition, and of the actor model of computation being confused with object oriented decomposition.

### Decomposition diagram

A decomposition diagram shows a high-level function, 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.[3] Decomposition diagrams provide a logical hierarchical decomposition of a system.

## References

1. ^ Grady Booch (1994). Object-oriented Analysis and Design (2nd ed.). Redwood Cita, CA: Benjamin/Cummings. pp.16-20.
2. ^ Jan Dietz (2006). Enterprise Ontology - Theory and Methodology. Springer-Verlag Berlin Heidelberg.
3. ^ "Decomposition Diagram" in Justice Common Data Archiecture. Last update 06/24/2004. Accessed 13 Nov 2008.