What are Information Flow Metrics?
Information flow metrics are an essential aspect of software engineering that measures the flow of information in a software system. Information flow metrics assess how information is exchanged between the different components and modules of the software system, and how it affects system performance, reliability, and maintainability. In today’s ever-evolving technological landscape, software systems are becoming increasingly complex, making it vital to develop tools and techniques to analyze and evaluate information flow metrics. By using these metrics, software engineers can identify weaknesses and bottlenecks in a system and make necessary improvements, leading to better software quality and efficient development processes. This article will explore the concept of information flow metrics and their significance in software engineering.
This metric is given by Henry and Kafura, hence commonly referred to as Henry and Kafura’s Metric. These metrics are based on the fundamental concept that a system’s complexity is determined by its components, and how they are organized and interrelated. The metrics developed by Henry and Kafura measure the work performed by the system’s components and how they are integrated to determine system complexity.
The definitions used in information flow are as follows:
- Component: Refers to any element that is identified by decomposing a software system into its constituent parts.
- Cohesion: Describes the degree to which a component performs a single function.
- Coupling: Refers to the degree of linkage between one component and others in the same system.
This metric evaluates the information flow between system modules and is sensitive to the complexity resulting from interconnections among system components. The measure includes the complexity of a software module, which is defined as the sum of the complexities of the procedures contained within it.
- A procedure contributes to complexity due to two factors: the complexity of the procedure code itself and the complexity arising from the procedure’s connections to its environment.
- The LOC (Line Of Code) measure is used to incorporate the effect of the first factor. To quantify the second factor, Henry and Kafura introduced two terms, FAN-IN and FAN-OUT.
FAN-IN: Refers to the number of local flows into a procedure and the number of data structures from which the procedure retrieves information.
FAN-OUT: Refers to the number of local flows from a procedure and the number of data structures that the procedure updates.
To derive the information flow index of component A (IF(A)), the first two components are used, with the following formula:
IF(A) = [ FAN-IN(A) * FAN-OUT(A) ]^2
To derive the most simple IF Metrics, follow these steps:
- Determine each component’s level in the system model.
- Calculate the FAN-IN for each component, i.e., the number of calls. Components at the highest level should have a FAN-IN of zero. However, some organizations may allow more than one component to be at the highest level, so FAN-IN of one is assigned to them. It’s important to note that a simple FAN-IN model may penalize reused components.
- Count the number of calls from each component to other components. For a component that does not call any other component, assign a FAN-OUT value of one.
- Use the above formula to evaluate the IF value for each component.
- Add the IF value for all components within each level. This is known as the level sum.
- Add the IF values for the entire system design. This is called the system sum.
- Rank the components according to their FAN-IN, FAN-OUT, and IF values for each level. Prepare three histograms or lines for each level.
- Plot the level sum values for each level using a histogram or line plot.
Keep checking our site @ tutorials.freshersnow.com to get the latest information or updates about the Information Flow Metrics in Software Engineering.