# Functional Decomposition

The advent of programming began somewhere in the 1940's with differential engines, punched cards etc. Programmers then used to write assembly codes which was difficult, required a lot of brain work and also prone to errors. This factor eventually paved the way for high level programming languages. A high level programming language involved breaking a program into functions. A program was thus composed of a set of functions to give it a meaning. Structural programming includes - ALGOL, FORTRAN, C, PASCAL etc. Gradually we came up with object-oriented programming which has the concept of classes. Object oriented programming can thus be classified as something in which we break a program into different class, with each class having its own functionality.

Hence we have functions.Functional decomposition can thus be referred to as the process of breaking down the functions into smaller sections. Functions basically represent the logic flow of a program. Decomposing the functions into sub functions help us to modularise the whole structure of our program which provides a simplified approach of handling the program.

## Purpose of Functional Decomposition:

• Generally when our project is in the analysis phase, that is at the time of gathering client requirement.
• It is done by conducting meeting with business analysts who have expert knowledge on the subject.
• Start from the higher level, and go down the lower levels.
• Review whether the functionalities have been fairly broken down in the right way.

## Flowchart:

This flowchart describes the systematic flow of a library system. Library is the major component which is broken down into sub components. Let's understand the steps as follows :

• A reader comes to the library and searches for a book. So the book process will enumerate all the books available at the library. The reader chooses a book based on its availability.
• Transaction is done when when a reader issues or returns a book.
• Update is the component that tells use that status of book report, whether a book has been returned by the user or not and what all books are available, by peeking into the database.
• Reports represent the scenario where it is decided whether a reader has exceeded the book return date and applies a requisite fine, if no discrepancy remains, then the book is finally issued.

## Anatomy of functional decomposition:

The major idea behind decomposing is to check , as to what extent are the functions dependant on each other. This brings into focus the terms very common in the context of software - cohesion and coupling.

Cohesion - It is a technique of monitoring how far are the processes intra dependant. That is, how strongly are they associated with each other within a function. Highly cohesive functions are efficient and good because they accomplish one well-defined task as a whole.

Coupling - It is a measure to identify the interdependency among two functions. Lesser the dependency better it is. Loosely coupled functions are good because changes made in one function will have less impact on the other function. When coupling is high it may sometimes become difficult to assess the results.

• Functional decomposing certainly offers ease of understanding as it involves breaking a whole component into sub parts.
• Errors are definitely minimised as there is a very clear depiction of the various components. In case of any error one can refer to the specification and identify the faults easily.

## Issues in a Poor Functional Decomposition:

• If the functions aren't properly broken down, it may lead to complexities. It becomes difficult to understand the entire structure.
• Poor structuring may result in unnecessary time consumption and repetitive working on preparing DFD's , Use cases etc.

## Conclusion:

Everything needs a planning. Planning involves correct analysis of a situation under purview. Therefore in the case of functional decomposition an analysts job is to absorb the information correctly and decompose the components effectively for a clear understanding.