×

Information Flow Metrics

This metric is purely based on information. Information flow metric is different from size metric, and data structure metric as size metric is based on the final size of program and data structure metric is based on the type of structure between the module so that programming time, effort, and resources will be less used.

Information refers to the data provided by the number of components of a program. For example:

Let suppose a program S has three components, S = A+ B + C.

Information metric says "how much components are called by A, B, C and how many components call them."

Every system hascomponents; the work and structure of these components determine the complexity of the function. Information flow metric is based on two terms, i.e., Cohesion and Coupling.

Cohesion:-If a component has to do numerous discrete tasks, it is said to lack cohesion. Cohesion is defined as the degree to which a component performs a single function.

Coupling:-Coupling is the degree of linkage between one component and others. Component linked with many components is highly coupled and vice versa.

Notes: Components with a lack of cohesion and high linkage (highly coupled) are less reliable and difficult to maintain.

Information Flow Model

Information flow metric is only applied to components, not to the whole program or system directly. On each component, an information metric is applied, and then all components are sum up.

Each component has three measures:-

  1. FAN IN: It measure number of component that can call A.
  2. FAN OUT: It measure number of component that is called by A.

Information Flow (A) = [FAN IN(A) x FANOUT(A)]2

All the analysis in IF are based on the above three points, and characteristics of the information flow metric are:-

  • It can be done easily

It doesn't seem very easy to apply information metric on each component individually and sum it up in a system, but practically it can be done very quickly.

  • It can be updated easily.

It is a tremendous advantage of information metrics as changes and updation of components can be quickly done.

  • In a system, automation of information flow metrics can be possible.

It might be possible for a system to automatically find out IF or each component and then add each result for the final solution.

  • Every component is relative to a system.

Suppose a system has three components (A, B, C) and the resultant value after applying IF on each component is A= high, B= Medium, C= Low. Therefore, it isn't easy to maintain the A component compared to B and C. All these components are relative to each other within a system.

Components of two different systems are not relative to each other.

Information Flow Metrics
  • High FANIN or FAN OUT states lack cohesion or no abstraction.

A component which is called and which call many other components or involved in the various task has a lack of cohesion.

No abstraction = A single component cannot do all the work it has to call many functions.It doesn't matter how internally a task work. For example, component A is calling many functions. It can be possible that a single function can perform all the functions that state that there is no abstraction (A component doesn't matter about internal working).

  • High IF indicates that components are highly coupled.

When components have high IF, then it means they are highly linked and coupled.

  • Information flow metric is calculated in three steps
  1. IF is applied to individual component
  2. IF is applied at different levels
  3. Sum of IF at different level = System sum

Let’s see an example and find out the IF of the system.

Information Flow Metrics
  • Find FAN IN and FAN OUT of each component.

FAN IN (A), FAN-OUT (A)

FAN IN (B), FAN-OUT (B)

FAN IN (D), FAN-OUT (D)

FAN IN (E), FAN-OUT (E)

FAN IN (F), FAN-OUT (F)

FAN IN (G), FAN-OUT (G)

  • Find information flow of each level called as level sum (L).

L1 → IF(C)

L2 → IF (A) + IF (B)

L3 → IF (D) + IF (E) + IF (F) + IF (G)

Information Flow Metrics Information Flow Metrics
  • System sum

S = L1 + L2 + L3

Why is there a need to find out IF of different levels?

  • Identify nightmare component

Nightmare component refers to the component having high IF. The developer tries to remove or find an alternate for the component having high IF in the system.

  • 25% of the components with the highest score for FAN values should be investigated.

The main goal is to reduce the IF value to the lowest; therefore, 25% of components having the highest FAN IN or FAN OUT value are searched, and their value is tried to be reduced.

  • Reduce the failure rate to improve the things

Sometimes a component having high IF cannot be replaced, or there is no alternative to that component; therefore, it becomes mandatory to apply the best version of the component by testing it as much as there will be no lop hole left for failure.

  • Missed level of abstraction is indicated by a sudden increase in IF value across levels.

Information flow value increases from level 1 to level 2 due to no abstraction. Suppose, in the above diagram, IF value at level 2 > level 1 because component C has to call a different function that increases IF value of called component at level 2, which is due to no abstraction.

No component or function does all the tasks. Therefore abstraction is necessary among the components.

  • In the last system, the SUM value gives the overall complexity rate and helps to compare alternative designs.

After getting the final system sum, the developer must calculate the system sum from other design approaches and compare them. The lowest system sum will give complexity rate, more reliability, low maintenance, and help in comparing alternative designs.


Related Topics

Routing Requests through Load Balancers

Let us first understand what load balancers are Assume a system works with multiple machines or servers, and as the requests arrive, they need to be routed to any one of...

3 minutes read.

Metrics for testing

There are different types of metrics used in software testing to measure different parameters. So, for different purposes, different metrics are used by the developer. For example: The type of metrics...

3 minutes read.

RAD Model in Software Engineering

RAD Model is an incremental process model and was developed by IBM in the 1980s and described in the book of James Martin entitled Rapid Application Development. Hence, user involvement is essential from...

3 minutes read.

Umbrella Activities in Software Engineering

The various stages of software engineering are tied to one another. Various software process models have different ways of expressing or making these processes available. To manage the development, quality,...

3 minutes read.

Big-Bang Model in Software Engineering

In the Big-Bang Model, developers do not adopt any specific process. Development begins only with the necessary funds and efforts as input, and output is developed software that may or may not be...

1 minute read.

Twitter - System Design

You might have heard of Twitter, a widely used social media platform. Everybody tends to check it every few minutes. Imagine what you would do if you were asked to...

8 minutes read.

Project Management Tools

Project Management Tools Risk and uncertainty increase in the size of the project, even when the project is developed according to the prescribed methods. We use project management tools to manage project management systems properly...

3 minutes read.

Iterative Model in Software Engineering

This model consists of the same phases as the waterfall model, but with fewer restrictions. Generally, the phases occur in the same order as in the waterfall model, but these may be conducted...

2 minutes read.

Software Quality Metrics

In a software project, the software is designed to build a source code, but from time to time or step by step, checking source code is required. Check whether the work...

4 minutes read.

Project Management

Project Management What is a software project? The project is a set of tasks that need to be completed to reach a clear result. The project is also defined as the set of inputs...

2 minutes read.

Waterfall Model in Software Engineering

The most popular model is the waterfall model. This model has five phases: Requirement analysis and specification DesignImplementation & unit testing Integration and system testing phaseOperation and maintenance These phases often occur one...

3 minutes read.

Software Quality Assurance (SQA)

Software Quality Assurance (SQA) is a process that ensures the quality of software while developing software. It also ensures that all processes, procedures, and activities are monitored and properly implemented. It works along...

3 minutes read.

Software Metrics

Introduction Software metrics is the term used in software engineering. Software engineering is the detailed study of the step-by-step making of user-interactive software that fulfills users' needs. Let's discuss two terms...

4 minutes read.

Some Important Quality Metrics

Important Quality Metrics The best quality of software has to pass through various software quality measures to attain standard in quality. The quality executive should consider these metrics to monitor the...

5 minutes read.

Project management activities

Project management activities Software project management involves many activities, including project planning, software product scope, cost estimation in various terms, scheduling of tasks and events, and resource management. Project management activities may include: Project PlanningScope ManagementProject...

2 minutes read.

Software Engineering Tutorial

The software has become critical to advancement in almost all areas of human endeavor. The art of programming is no longer enough to construct large programs. There are serious problems with the...

8 minutes read.

Object Oriented Metrices in Software Engineering

Metrics are used to measure the quality of software on different parameters. It provides acomputed accurate estimation of projects that help in developing software with minimal fault. “Metric is a set...

7 minutes read.

Halstead's Software Metrics

Halstead’s software science metrics According to Halstead’s software metrics, a program is the implementation of an algorithm. These steps are considered as a number of tokens, and tokens are classified as...

6 minutes read.

Load Balancer – System Design

As software engineering students or IT enthusiasts, most of us have wondered how these huge IT applications handle the millions of simultaneous requests on their servers. The sheer hard work...

9 minutes read.

Incremental Model in Software Engineering

Incremental Model is a software development process where requirements are divided into several stand-alone software development modules. In this example, each module passes through the requirement, design, development, implementation, and testing phases. That subsequent...

2 minutes read.