Software reusability is very important and crucial attribute to evaluate the system software. Due to incremental growth of software development which leads to increase in complexity of software, so software reusability is an important criteria to quality of system software. Software reusability reduces the development time, cost and effort of software product. Software reusability define the depth to which a module (function) can be reused again with very little or no modification. This paper describes software reusability of Aspect-Oriented (AO) software systems.
Aspect oriented programming (AOP), Aspect Oriented software development (ASOD), Software Reusability, SoC Metrics, Coupling Metrics, Cohesion Metrics and Size Metrics.
Software reusability is software quality attribute in which software or its module is reused with very little and no modification. Software reuse is the process of implementing or updating software systems using existing software components. The goals of software reusability is to provide higher quality products, less development time, higher scheduling accuracy and Reliability
Aspect Oriented Software Development
Aspect Oriented Software Development (ASOD) is reasonably forthcoming approach which combines concerns that crosscut the modularity of traditional programming approaches such as Module Oriented Approach (MOA) and Object Oriented Approach (OOA) , .
Module oriented approach (MOA) is very dominant approach to develop the software. MOA is based on the concept of procedure call. Procedure is also known as subroutine, method and function. It is appropriate choice than simple sequential or unstructured languages which involves complexity and requires significant amount of reusability.
A few significant characteristics and restrictions of Module Oriented Approach are listed below:
It provides reusability of code.
An efficient way to determine the program flow than a collection of 'go to' or 'jump' statements
MOA is robustly modular than structure.
Any development is done by writing or replaces the code.
Inability to provide data binding with operations.
To remove these limitations of MOA, Object Oriented Approach (OOA) is introduced. OOA is applicable for real world problems. OOA decompose problem into objects that abstract behavior and data into a single unit. It introduces the concept of modularity, encapsulation, inheritance and polymorphism (Rumbaugh et al., 1991; Jacobson et al., 1992).
A few significant characteristics and restrictions of Object Oriented Approach are listed below:
OOA approach mainly prominence on data relatively than procedure.
Allows message passing and functions through interaction of objects.
It provides the concept of classes, encapsulation and hides implementation details.
New data and functions can be easily added whenever necessary.
Ability to provide polymorphism and inheritances.
In practice with larger projects, it is showed that OOP/OOA has difficulty to clear separate concerns such as readability, security, modifiability, etc. To overcome on these limitations of object oriented approach (OOA), Aspect oriented approach is introduced.
AspectJ is an extension of java programming language which support following characteristics such as joint-points, pointcuts, advice and introduction , . It defines new constructor, support for modular implementation of crosscutting concerns. It provides synchronization, consistency checking, protocol management and others.
The concern that crosscuts the modularity of traditional programming is known as cross-cutting concerns for examples cross-cutting includes logging, tracing, resource pooling, etc. There are many languages that belongs to family aspect oriented systems such as AspectJ (Java Extension), AspectC (C Extension), AspectC++ (C++ Extension), AspectXML (XML Extension), CaserJ and HyperJ (used by IBM) ,. An ASOD provides a technique to weave the aspect with core module to form a working system.
The paper splits into introduction followed by describing the software reusability as per various Models given by famous researcher. The next section of this paper unfolds the previous work related to software reusability by various researchers. The last section of this paper evaluates the software reusability by using fuzzy logic approach followed by conclusion and future aspects.
ISO developed a quality model that was further known as ISO/IEC 9126 Model . According to ISO, quality of software is consisted into six attributes namely functionality, reliability, usability, efficiency, maintainability, portability. This model is an extension of previous work given by McCall, Bohem, and FURPS.
Dromey's Quality Model integrates reusability and process maturity as characteristics in ISO/IEC 1926 quality model .
Kumar et al. Proposed first quality model known as Aspect-Oriented Software Quality Model (AOSQUAMO) . This model is an extension of ISO/IEC 9126 Quality Model. In this model four sub characteristics that are Reusability, Complexity, Code-Reducibility and Modularity are integrated under different characteristics of ISO/IEC 9126 Model.
Castillo et al. proposed a conceptual quality model to elucidate the ASOD evolving technologies like aspect, composition concern, and quality requirement for software product . This model is known as REASQ Model which integrates ISO/IEC 9126 Model and ISO/IEC 25030 model and expressed in UML
Kumar Pankaj introduced new attribute to AOSQUAMO Model i.e. Evolvability . The sub- characteristics of Evolvability is extensibility, sustainability, Design Stability and Configurability. This model is known as AOSQ Model.
Now-a-days, real world systems evolve so fast that they can able to meet challenges between the user requirement and operational environment. Design of software concern is well modularized to meet all the non- functional requirement of a system. ASOD still faces several problems, quantitative assessment of some important characteristics like modularity, complexity, etc. and the overall quality of aspect oriented technology is fairly unexploded.
Now the related work will discussed which is done so far by many researchers in the area of object oriented approach for assessing software reusability  has discussed below:
Price et al. offered a new dimension for assessing the reusability measurements . This dimension facilitates the large scale object oriented structure reuse. The researcher must have good understanding of application domain and type of system that they expect to devlop in future.
Barnard et al. projected a new reusability metric for OO software which is based on empirical evidence taken from well used accepted programming libraries in classes are assumed to be highly reusable .
Dandashi et al. projected a measurement in support of reusability of C++ (OOA) code by actions of non-functional quality attributes like Completeness, Understandability, Adaptability and Maintainability .
Many researchers are worked on software reusability but there is no complete assessment or framework which completes all the features of aspect oriented system . In this section of paper, the related work has been discussed which is done by various researchers in the area of software reusability. The list of following done so far has discussed below.
Sant'Anna et al. have proposed a framework for assessing the software reusability and maintainability . This model is incomplete. They established a relationship between reusability and maintainability internal metrics such as coupling, cohesion, crosscutting concern and size.
Cunha et al. discussed the high level concurrency patterns and mechanisms coded in AspectJ . They explored some advantages of reusability, modularity and understandability. They accomplished that above mentioned characteristics will progress the AO approach while applying with java program.
Zhang et al. proposed AO approach with connectors in reusable design and implementation of connectors . They uncover the affect of crosscutting concerns in reusability of connectors.
Aljasseret et al. proposed the extension of AspectJ programming languages knownas ParaAJ . This language has ability to parameterize aspects. This language is upcoming step to modularize aspects and enhancement in reusability.
This section will discuss the related work done so far that affect the software reusability by various metrics as follow:
Zhao proposed a coupling metrics which is based on no. of dependencies between aspect and classes like attribute-class, module-class, module-method and aspect-inheritance dependencies . They mainly focused only on dependencies between aspect and classes, and did not consider dependencies between aspects or between classes into account.
Ceccato and Tonella defined a coupling metrics for Aspect Oriented Programming languages . This framework presents classes and aspects as module and term operation as class methods and aspect advices/introductions. They defined six different coupling metrics such as Coupling on Advice Execution (CAE)., Coupling on Intercepted Module (CIM) , Coupling on Method Calls (CMC), Coupling on Field Access (CFA) , Response for a Module (RFM), Crosscutting Degree of an Aspect (CDA).
Bortsch and Harison extended the framework form OO systems (Briand et al.). In their extended framework they contain a specifc definition of six different coupling schemes such as types of connection, locus of impact, granularity, stability of server, direct or indirect connections, inheritance and instantiation.
Bartolomei et al. proposed a unified coupling framework for AO system . They extended their work from the existing framework of Briand's frameworks (Briand et al. ; Arisholm et al. ). They considered two AOP languages, AspectJ and CaesarJ and showed that the how these two languages can be instantiated on java. In their work they haven't proposed new metrics.
kumar et al. proposed a new framework of coupling metrics by extending the work of Bartolomei et al., Briand et al. and Arisholm et al.  frameworks . They recognized the six various types of connections which cause coupling in AO systems which are namely given as: Coupling on Attribute Type (CoAT), Coupling on Parameter Type (CoPT), Coupling on Attribute Reference (CoAR), Coupling on Operation Invocation (CoOI), Coupling on Inheritance (CoI) and Coupling on High Level Association (CoHA).
Sant'Anna et al. also proposed a new metrics for concern-driven architecture . This metrics suite is used for measuring cohesion, coupling and complexity for AO system and non-AO systems. This metrics provides a very useful framework for assessing the internal software quality attributes such as cohesion and coupling at architecture level.
Zhao and Xu proposed a cohesion measure which is based on a dependency model for AO system that consists of a group of dependency graphs . They proposed the two ways for measuring aspect cohesion based on inter module and module-attribute dependencies. The second way for cohesion measurement is every surface can be integrated as entire parameters.
Gelinas et al. define a metrics to measure the cohesion in AO system . This metrics is known as 'ACoh Metrics'. They defined this metric using two aspect cohesion criteria, Modules-Data Connection Criterion and Modules-Modules Connection Criterion.
Kumar et al. defined the cohesion metric for generic/unified AO system . This framework is provided for java, AspectJ and CaesarJ languages. In 2010, they extended their work and correlate cohesion metric value with changeability metric for unified AO system but this concluded that cohesion metrics can't be used as an indicator for assessing changeability in AO system.
Factor affecting software reusability and their metrics.
In this section of paper the various metrics are discussed that affects the software reusability of aspect-oriented systems.
The Metrics Suite: In this context various metrics will present that affects software reusability. There are mainly four metrics that majorly depends and affects the software reusability as follow:
SoC Metrics: SoC Metrics stands for Separation of Concern. It makes available the capability to identify, encapsulate and manipulate relevant particular concern . The following metrics of SoC are given below:
Concern Diffusion over Components (CDC): The CDO metric counts the no. of primary components, formal parameter, return types, throws declarations and local variables, or call their method.
Concern Diffusion over Operations (CDO): The CDO metric counts the no. of primary operations to contribute to implementation of concern. It also counts no. method as well as constructor.
Concern Diffusion over LOC (CDLOC): The CDLOC metrics counts no. of transition points for each concern through the lines of code .
Coupling Metrics: The coupling is process of defining the strength of interconnection between the modules in a system. Software. High coupling means high interconnection between program modules that depends on each other .
There are following coupling metric that mainly affects software reusability of aspect oriented system is given below:
Coupling between Components (CBC): this metrics counts the no. of classes that use in attribute declaration. It also counts no. of components declared in formal parameter, return types, throws declaration and local variable.
Depth of Inheritance Tree (DIT): This metric defines maximum length from node to the root of the tree . It defines hierarchy of aspect or class.
Cohesion Metrics: This metric defines the closeness of the relationship between the internal modules of program .
There are following cohesion metric that mainly affects software reusability of aspect oriented system is given below:
Lack of Cohesion in Operations (LCOO): LCOO defines the lack of cohesion of module. Sant'Anna et al.  proposed LCOO metric. It is an extension of Lack of Cohesion in Methods (LCOM) metric which is developed by Chidamber and Kemerer .
Size Metrics: The size metrics physically measures the size of a software system. The following size metrics are given below :
Vocabulary Size (VS). VS count no. of classes and aspects into a system. In VS metric component instances are not counted.
Lines of Code (LOC): LOC is conventional measure that calculates the size of software. It counts the number of code lines. LOC excludes blank lines and comments.
Number of Attributes (NOA): NOA counts no. of attributes for each class and aspect. NOA exclude the inherited attribute.
Weighted Operations per Component (WOC): The WOC metric measure the complexity of a module in terms of operation.
Proposed Fuzzy Model
In this section of paper, the fuzzy logic approach has been discussed for the assessment of software reusability for aspect oriented system.
Fuzzy Inference System :
Fuzzy inference system is proficient with map inputs during input membership functions and associated parameters. The parameters associated with the membership functions and corresponding associated output parameters are used to understand the final output of fuzzy system. The FIS structure was generated from the Matlab Fuzzy logic Toolbox .
Determine the input and output for model to determine reusability: According to above mention proposed metrics for reusability assessment, four metrics are proposed that majorly affects the reusability is, SoC Metrics, Coupling Metrics, Cohesion Metrics, and Size Metrics.
Measurement values of all metrics always normalized between number 0 and 1. The result for all metrics will be use as an input to the fuzzy inference system (FIS) for measuring the reusability of aspect oriented system. Mamdani fuzzy system is commonly used that evaluate software reusability as follows in figure 1:
Figure 1: FIS Structure: Reusability Model
After the fuzzification process, the fuzzy set for every output variable will set for defuzzifications. The input for the defuzzification process is a fuzzy set output fuzzy and the output is singleton number. The most popular method of defuzzification is the centroid calculations, which returns the center of area under curve .
Linguistic variables are frequently used to ease the appearance of convention and facts. A linguistic variable such as age may have a value such as young or its opposite old. However, the great utility of linguistic variables is that they can be modified via linguistic hedges applied to primary terms.
In fuzzy logic applications, non-numeric linguistic variables are frequently used instead of the mathematical values that are familiar with from mathematics. Linguistic Variables are variables expressed in simple speech and statements.
Membership Functions: Membership function allows users to display and edit all the membership functions are associated with all of the input and output variables for the entire fuzzy inference system.
In this work, the scale of membership functions for input as low, medium and high. The output variable is scaled into very low, low, medium, high, very high.
Knowledge Base for Model
The following figure 2 shows the knowledge base model for fuzzy inference system. This knowledge model is known as rule editor. It constructs the rule using graphical Rule Editor Interface. In this paper, it has four measurement parameters and used three scales. So, total no. of rules is 34 which are 81 rules. Hence from this combination it has eighty one if-then rules that constructed and inserted in Rule Editor.
The triangular (trimf) membership functions are scaled for input as low (0-0.33), for medium (0.33-0.66) and for high (0.66-1.0). The output variable is scaled into very low (0-0.2), low (0.2-0.4), medium (0.4-0.6), high (0.6-0.8), and very high (0.8-0.1).
Some of the sample rules are given below for the assessment of reusability as follow:
If SoC is medium, cohesion is high, coupling is low and size and complexity is low then reusability is high.
If SoC is high, cohesion is low, coupling is high and size and complexity is high then reusability is very low.
If SoC is low, cohesion is low, coupling is high and size and complexity is medium then reusability is medium.
If SoC is medium, cohesion is high, coupling is high and size and complexity is high then reusability is low.
If SoC is high, cohesion is medium, coupling is medium and size and complexity is low then reusability is high.
Figure 2: Rule Editor
The following 3 shows the rule viewer for proposed fuzzy logic model. every rule is a row of plots, and each column is a variable that is used. The first four columns of plots show the membership functions of input variable and the if part of each rule. The fifth column of plots shows the membership functions of output variable and the then part of each rule. The last plot in the fifth column of plots represents the aggregate weighted decision for the proposed fuzzy inference system. The defuzzified output is displayed as a bold vertical line on this plot. It allows users to interpret the entire fuzzy inference process at once and shows how the shape of certain membership functions influences the overall result. It also shows one calculation at a time and in great detail. In this sense, it presents a sort of micro view of the fuzzy inference system. This Surface viewer is the last basic Fuzzy Logic Toolbox GUI tools.
Figure 3: Rule viewer
The following figure 4 shows Surface Viewer for proposed fuzzy model. To obtain the entire output of developed system the entire span of the output set based on the entire span of the input set.
In the Surface Viewer users can generate a three-dimensional (3D) output surface for any two of the inputs. Figure 6 shows a three-dimensional output surface for two metrics (Separation of Concern and Cohesion) for reusability evaluation.
Figure 5: Surface Viewer for Separation of Concern and Cohesion.
Figure 6: Surface Viewer for Coupling and Separation of Concern.
Figure 7: Surface Viewer for coupling and Size and complexity.
Suppose the following crisp value inputs to the model: Separation_of_concern = 0.5, Cohesion= 0.5, Coupling= 0.5 and Size & Complexity = 0.5. These inputs are fed to the fuzzification module and after fuzzification of the given values it is concluded that reusability of proposed metrics are evaluated as follow in table 1:
Separation_of_concern Cohesion Coupling Size & Complexity Reusability
(Medium) 0.885 (high) 0.0682 (low) 0.0692
Table 1: Software Reusability calculation for a given Input Set
Defuzzification is a mapping process from a space of fuzzy control actions defined over an output universe of discourse into a space of crisp (nonfuzzy) control actions.
This method is also known as center-of-mass, center-of-area, or center-of-gravity method. It is the most commonly used defuzzification method. The defuzzified output x* is defined as
x^(* )=(''??_c (x).xdx)/(''??_(c ) (x)dx)
Where, the symbol ?? denotes an algebraic integration.
Conclusion and Future aspects
Application of fuzzy logic approach has shown their applicability other than traditional statistical techniques. This paper aims to evaluate the reusability of aspect oriented systems. In this context various metrics have been studied, on basis of that, four main metrics are selected that mainly affects the reusability of software.
This paper aims to evaluate the software reusability of aspect oriented system based on static metrics. The dynamic metrics can also be calculated by using fuzzy logic approach. Apart from that other soft computing techniques such as artificial neural network, adaptive neuro fuzzy inference system, support vector machine, etc can be applied for assessment of software reusability.
The other software quality attribute such as maintainability, testability, complexity, etc can also be evaluated using fuzzy logic approach or any other soft computing techniques.