HOME

TheInfoList



OR:

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 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 environment, is described by its boundaries, structure and purpose and express ...
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, ''algorithmic decomposition'' breaks a process down into well-defined steps. *
Structured analysis In software engineering, structured analysis (SA) and structured design (SD) are methods for analyzing business requirements and developing specifications for converting practices into computer programs, hardware configurations, and related man ...
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", 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 ...
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 (1994). ''Object-oriented Analysis and Design'' (2nd ed.). Redwood Cita, CA: Benjamin/Cummings. pp.16-20. More generally, functional decomposition 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 (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 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 o ...
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 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 The actor model in computer science is a mathematical model of concurrent computation that treats ''actor'' as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create mor ...
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 o ...
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, structu ...
* Component-based software engineering * Dynamization * Duplicate code * Event partitioning * '' How to Solve It'' * Integrated Enterprise Modeling * Personal information management *
Readability Readability is the ease with which a reader can understand a written text. In natural language, the readability of text depends on its content (the complexity of its vocabulary and syntax) and its presentation (such as typographic aspects that ...
*
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