Abstraction and Decomposition in Software Engineering

Abstraction:

It refers to the construction of a simpler version of a problem by ignoring the details. The principle of constructing an abstraction is popularly known as modeling .

It is the simplification of a problem by focusing on only one aspect of the problem while omitting all other aspects. When using the principle of abstraction to understand a complex problem, we focus our attention on only one or two specific aspects of the problem and ignore the rest.

Whenever we omit some details of a problem to construct an abstraction, we construct a model of the problem. In everyday life, we use the principle of abstraction frequently to understand a problem or to assess a situation.

Abstraction and Decomposition in Software Engineering

Decomposition:

Decomposition is a process of breaking down. It will be breaking down functions into smaller parts. It is another important principle of software engineering to handle problem complexity. This principle is profusely made use of by several software engineering techniques to contain the exponential growth of the perceived problem complexity. The decomposition principle is popularly is says the divide and conquer principle.

Functional Decomposition:

It is a term that engineers use to describe a set of steps in which they break down the overall function of a device, system, or process into its smaller parts.

Steps for the Functional Decomposition:

1. Find the most general function

2. Find the closest sub-functions

3. Find the next levels of sub-functions