Seminar Topics & Project Ideas On Computer Science Electronics Electrical Mechanical Engineering Civil MBA Medicine Nursing Science Physics Mathematics Chemistry ppt pdf doc presentation downloads and Abstract

Full Version: Survey based Framework Proposed for Comparative evaluation of reusability and maintai
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Survey based Framework Proposed for Comparative evaluation of reusability and maintainability for OOPs and AOP



[attachment=74697]


Abstract

Aspect-oriented software development (AOSD) is gaining wide attention both in research as well as corporate world. Aspect oriented programming aims at achieving better modularization for a system’s crosscutting concerns in order to improve its key quality attributes, such as extensibility and reusability. An aspect-oriented software system incorporates different software engineering abstractions and different complexity proportions. However, this requires unique assessment frameworks specifically designed to measure the reusability and maintainability degrees of object oriented programs (OOP) and aspect-oriented systems (AOP). This paper presents an assessment framework for both, which is composed of a suite of metrics and a proposed model. These are based on few prevailing metrics and doctrines in order to escape the regenerate of well-established results. The proposed model has been evaluated in the context of different observed studies with different characteristics, diverse areas, variable control levels and changed difficulty marks. The benefits and downsides of the framework workings are deliberated on practical and quantitative analysis ground.




Introduction

Software maintenance and software reusability are the essential characteristics feature of modularity in any software system. These features interact with each other showing dependencies in a system.There are many literatures of software quality models, proposed by researchers which are suggested to estimate external software qualities such as maintainability, and reusability.The reuse of software plays important role in its maintenance which is one of the essential demands for any software system. It enhances the results with modifications to fit in for new applications; hence this extensibility inter-relates reusability and maintainability.

Software Reusability is animportant software quality considered by many researchers, Software reuse is the process of implementing or updating software systems using existing software components. This tends software development effort to be potentially reused whether partial, modified or complete. Some commonly used reusable components like DLL (dynamic link libraries), web service, functions, plugins etc. these can be software products, from requirements and proposals to specifications and designs, even to user manuals and test suites. Reusable codes allow software development to cut costs, reduce effort, and maximize profits supporting accelerated development. Software reusability is the measure of the ease of using the formerly acquired concepts and objects in new contexts [2,4,5,6,35,36]. This ease of reuse depends on certain attributes and factors that influence the reusability of a software component. Loose coupling, modularity, high cohesion, separation of concerns, ease of understanding, proper documentation Certain activities such as management of reusable component, design or function, encourage production or development of reusable modules, and the utilization of reusable modules can thus enhance productivity.
Maintainability is considered as a quality that plays a significant role in software quality level introducingthe ease for corrections analysis,modifications,upgradability andtesting for any developer. These changes may be required for the correction of errors, analysis for flexibility, portability, alteration of the system to a meet a new requirement, addition or removal of functionality when causing limitations for desired output. The less effort or cost the software maintenance cycle requires, the higher is the software’s quality level. Modern software development methods, techniques, and tools often aim to minimize future costs in the maintenance process. Maintainability thus promotes flexibility, portability and transferability and is important for information system to remain responsive to the required demands of industries.
AOP languages such as CeaserJ, AspectJ, HyperJ, Springs AOP framework, JBoss AOP, AspectC, AspectC++ and AspectXML etc came into light when it was found belter in handling some situations like cross-cutting, code scattering and tangling where OOPs although being a powerful language could not help much, to improve the ability of developers to modularize concerns. Concerns that are scattered in multiple modules (classes) are known as crosscutting concerns these include logging, synchronising, tracing, sharing, caching, etc. Such concerns are hindrances for clarity, reuse and maintenance of software programs. Aspect Mining is that process, which identifies the scattered (extrinsic implementation) and tangled (highly coupled) code, through techniques such as clustering of aspects. Similar to reverse engineering process, aspect mining is specialized process that identifies crosscutting concerns such as exception handling, debugging, authorization, synchronization and logging as these have negative impact on the maintainability and reusability of software. We took AspectJ for our objective for this paper, the aspects which is considered as a unit of modularity for crosscutting concerns is elaborated into Pointcuts, Advice, Introduction, Joinpoint etc which acts as aspect oriented construct. Aspects may contain fields or methods like classes in Java. Pointcuts, specify the places in the code to be affected with values, Advice is a method-like abstraction that defines code to be executed when a join-point is reached which implement the additional behaviour before, after, or instead of the captured join point that are well-defined place in the program execution, most often method calls , field sets or executions. Pointcuts and advice dynamically affect program flow;inter-type declarations, which enable introduction of new members into types, as well as introduction of compilation warnings and errors. These Introductions define how AspectJ modifies a program's static structure namely, the members of its classes and the relationship between classes. Introduction statically affects a program's class hierarchy.Some other terminologies commonly used are before(The code declared is executed before the join point). after: The code declared is executed after the join point. around: The code declared is executed instead of the one in the join point. Inter-type declaration: This mechanism allows the developer to crosscut concerns in a static way. It permits alterations to classes and inheritance hierarchies from outside the original class definition.The abstractions like classes and aspects, methods and advices related to AOSD and OOPs are emphasised more to study the software quality aspect.


Software Metrics can be used to estimate software quality and hence leads to improve software productivity and quality. These serve as measures of software products for the purpose of comparison, error prediction, anticipating, budget decisions throughout the life cycle, to determining about the software quality improvement policies.
The requirement today is to find how different metrics can collectively determine the various qualities such as reusability and maintainability of the software component. The aim of such evaluation of object oriented based software components is to predict the quality of these components in terms of reusability and maintainability [1].In recent years there have been made some attempts to construct models for reusability and maintainability evaluation of software components. Different techniques and approaches have been used to evaluate these two qualities of software components by different authors. The metrics already available to measure these qualities are use as per the type of the architecture of the software paradigm. E.g. Procedure Oriented, Object-Oriented programming (OOP) and Aspect-Oriented programming (AOP). Though while designing the metrics the internal attributes like coupling, cohesion, inheritance, encapsulation, abstraction, complexity, LOC and loops etc. in the software program is to be taken into consideration, as high complexity leads to lower quality like reusability and maintainability.

Related Work

There are many literatures working on reusability or maintainability of software for different coding patterns like procedure based, object oriented, component based etc. but very few work has been done for the combined effort of reusability and maintainability and comparative analysis of OOPs and AOP.The Reusable aspects of any software project a can be its templates, interfaces, architecture, design, requirements, data, documentations, test cases and source code. To estimate the reusability from such aspects it is required to the values of certain attributes using metrics. Methods per class, Inheritance dependencies, Degree of coupling between objects, Degree of cohesion of objects, Object library effectiveness, Factoring effectiveness, Degree of reuse of inheritance methods, granularity and Average method complexity. Caldiera and Basili (1991) propose a framework for measuring the reusability of software components. The attributes are determined by factors, which can be directly or indirectly measured using four software metrics, viz. McCabe’s Cyclomatic Complexity, Halstead'sVolume metrics, Regularity, and Reuse Frequency.
The ISO/IEC 9126 standard [1-4], [ISO (the International Organisation for Standardisation) and IEC (International Electro technical Commission) form the specialised system for world-wide standardisation. It describes a model for software product quality that dissects the overall notion of quality into 6 main characteristics1: functionality, reliability, usability, efficiency, maintainability, and portability. These characteristics are further subdivided into 27 sub-characteristics. ISO quality model provides a useful frame of reference and standardized terminology which facilitates communication concerning software quality.
A complexity measure can be used to predict critical information about reliability, maintainability and reusability of software systems from automatic analysis of source code. As with library or toolkit reuse, often the implementation of the framework can be reused as well. Moreover the reusability has a great impact on the maintenance as the characteristic feature of a reusable component is systematic documentations, well tested and properly designed, and such features simplify maintenance. AL-Badareen et al, (2010); Hristov et al. (2012) and Ilyas & Abbas, 2013 and others proposed reusability assessment framework for systematic reuse and for component-based software development. Many researchers described the impact of OO metrics on software maintainability for example Li and Henry [5], Chidamber and Kemerer [6], Basili, Briand and Melo [7], Binkley and Schach [8] etc Allen, Hudepohl and Aud [15] predicted software quality by using the neural networks as a tool. Also discussed in [5- Anupama] the five algorithms of Fletcher–Reeves Update Conjugate Gradient (FRUCG) algorithm, Polak–Ribiere Update Conjugate Gradient (PRUCG) algorithm, PowellBeale Restarts Conjugate Gradient (PBRCG) algorithm, Scaled Conjugate Gradient (SCG) algorithm, Self-Organizing/network algorithms based Neural Network experimented to develop the reusability evaluation model for function oriented software systems and the results are recorded in terms of Accuracy, Mean Absolute Error (MAE) and Root Mean Square Error (RMSE).Further the generation of AOP code from Java there has been few work in literatures [][][][] like Jhawk, There has also been extensive work in approaches for validation of model transformation algorithms for AOP and properties of correctness in algorithms. Full proofs of correctness for the algorithms suggested in this approach are reserved for future workNarayanan and Karsai, in [43], extend the validation of correctness of a model transformation to semantic correctness.They observe that, although the model transformation is syntactically correct, additional validation is necessary to show that the transformation results in the desired target model. This is achieved by verifying that structural correspondence conditions between the source model and target model are met.



Reusability and Maintainability Assessment in OOPs


We are using fuzzy logic for the two software quality estimation. Fuzzy logic is basically if-then rules syntactically. They will provide logical capabilities as well as learning capabilities for decision making. Logically decision that is Fuzzy Inference System (FIS) and learning capability based decision making that is Adaptive Neuro Fuzzy Inference System (ANFIS). In this paper we are using Fuzzy Inference System (FIS) for reusability estimation of component based software system. Fuzzy Inference System: A Fuzzy Inference System (FIS) is a way of mapping an input space to an output space using fuzzy logic. The framework is displayed at fig. 1. FIS uses a collection of fuzzy membership functions and rules, instead of binary logic, to reason about data. The rules in FIS (sometimes may be called as fuzzy expert system) are fuzzy production rules of the form [19] [25] [26]: if I then J, where I and J are fuzzy statements. For example, in a fuzzy rule if P is low and Q is high then R is medium. Here P is low; Q is high; R is medium are fuzzy statements; P and Q are input variables; R is an output variable, low, high, and medium are fuzzy sets.
According to software Evolutionary mode, reusability of any package (RP) is calculating as

RP = [0.2*Understandability+0.2*Variability+0.2*Portability+0.2*Maintainability + 0.2*Flexibility]

While for maintainability (testability, modifiability and understand-ability) is an indirect and derived measure which needs to predict using the other direct measures.

Apart from fuzzy logic technique, other soft computing techniques such as Artificial Neural Network (ANN), Adaptive Neuro-Fuzzy Inference System (ANFIS) and Support Vector Machine (SVM) can also be taken into consideration for the assessment of software reusability.

Few Neural Network based approaches already experimented by authors [12,14,16,18] werewas studied to propose the reusabilityor maintainability evaluation model for object oriented software systems. Metric based approach is used for structural analysis of software. McCabe’s Complexity Measure for Complexity measurement, Regularity Metric, Halstead Software Science Indicator for Volume indication, Reuse Frequency metric and Coupling Metric are also considered. After the systematic study of few algorithms it was found that Fletcher–Reeves Update Conjugate Gradient (FRUCG) algorithm is the best fulfils the requirements to test for the reusability and maintainability hence it was used for the training functions to propose a framework.



The AJaTS plug-in integrates AJaTS features and functionalities to Eclipse IDE. It allows the user to create, store, apply and reuse transformation in any Eclipse project,whether object or aspect-oriented. The AJaTS Plug-in is composed by two main parts: EclipseAdapter and AJaTSController. EclipseAdapter is the plug-in itself. It is responsible for preparing and organizing a transformation, since gathering user input data and accessing AJaTS engine, until storing the transformed code in the workbench. FileServices is the module responsible for file manipulation within Eclipse. In order to obtain better integrationwith Eclipse IDE, views and menus were extended.The resulting AspectJ is checked for conformance to the AspectJ meta-model through compilation of the code generation from the tool. The mapping of variables in the target model to variables in the source model can also be validated for the test cases. Similar diagrams can be generated for nested variables.
Reusability and Maintainability Assessment AOP Software Systems

It is a proven fact that Aspect-Oriented Programs (AOP), which is an extension for OOPs, helps to overcome the limitation of incompetent way of handling crosscutting concerns of OOPs [Santana,et al]. It does this with the help of encapsulation of crosscutting concerns into logical units. In aspect oriented software development such concerns are removed and are separately implemented as aspects. The aspects are designed with the library of codes to invoke at a suitable aspect at suitable place, time and manner. Further the working system is formed after weaving the aspects with the core modules by aspect oriented software system. This process enhances the reusability and maintainability by reducing code tangling and scattering and removing crosscutting concerns.

As stated previously, maintainability and reusability are the quality focus of our assessment framework. Reusability is the ability of software elements to serve for construction of different elements in the same software system or across different ones [28]. In our model, we are also interested in evaluating the reusability of elements of design and code of aspect-oriented systems. Maintenance activities are classified into four categories [15, 31]: corrective maintenance, perfective maintenance, adaptive maintenance and evolution. Our quality model emphasizes that similar factors are useful for the promotion of maintainability as well as reusability. This similarity is related to the fact the reuse and maintenance activities encompass common cognitive tasks. Modifiability and Clarity are the central factors for promoting reuse and maintainability, which is supported by software abstraction, which is related to the attributes such as LOC, CC(coupling-low & cohesion-high), and SoC(separation of concerns). As when the system’s concerns are not scattered and tangled, rather localized in a single module the maintenance and reuse activities are flexibly restricted to this isolated module.

Metrics for aspect-orientation is needed to ensure that AO really accomplishes its objective of enhancing software design and providing better software designs. Several object oriented metrics have been proposed but these metrics are not adequate to capture all the features of aspect-oriented software as mentioned in many papers [7,8,9]. AOSD introduces new abstractions and complexity dimensions to software engineering. As a consequence, new metrics that can account aspects features must be developed to assess aspect system functionalities. Our framework for Aspect Oriented quality measure has been inspired from the projection by [Sant’Anna et al[18], Singh et al. [50]] for the estimating the two main features of software quality. For the designing purpose of metrics for aspect-oriented system to measure the directly measurable internal characteristics such as size, cohesion, coupling, separation of concern and complexity, the external quality characteristics such as maintainability and reusability which are indirect measurable characteristics are derived through metrics for internal characteristics. There exists relation between SoC (Separation of Concern) with metrics CDC, CDO and CDLOC, and Coupling is related with metrics CBC and DIT for AO system. [], we require the parameters like variables, objects, methods, classes, exceptions etc., which is taken as concern diffusion for components, operations and size for total number of constructors, methods, lines etc. we took the following metrics for our objective.




The main strength of neuro-fuzzy systems is that they are universal approximates with the ability to solicit interpretable IF-THEN rules. The strength of neuro-fuzzy systems involves two contradictory requirements in fuzzy modelling: interpretability verses accuracy.For evaluation projects were clustered into 3 types mentioned below
• LOW Reuse < 25%
• MEDIUM Reuse >=25%
• HIGH Reuse >=60%
This clustering was adopted to provide for effective and efficient training to neural network to understand the dynamics of reusability.

Although there are many metrics now available to measure different qualities of software, Software quality can be measured with various attributes like error estimate, modifications or rework, reusability and maintainability etc. such process of estimation are module level, class level, method-level metrics etc. Methods used are machine learning, statistical method and expert estimation because but machine learning method is best method for finding the software qualities asNeural network is a machine learning approach and made up of number of artificial neurons. Each neuron in Neural Network receives a number of inputs and produces only one output. Also the concept of hidden layer is used to train any neural network. BR technique minimizes a combination of squared errors and weights, and then determines the correct combination so as to produce an efficient network.Bayesian Regularization (BR) technique is machine learning technique. The BR technique has already been used in cost estimation in the field of software Engineering but has not been much explored in software quality prediction. The main advantage of the BR technique is that it consumes less memory space and provides better accuracy. When we train any neural network, we can measure the performance and regression of the neural network. Training of the neural network stops when any of these situations occurs:
• The maximum number of epochs is reached.
• The maximum amount of time is exceeded

Conclusion

In this paper a Neuro-fuzzy hybrid algorithm is proposed for the component classification. In such data search application the design and developed Neuro-fuzzy model has shown its superiority because it includes the advantages of fuzzy as well as neural network. On one hand fuzzy provides a robust inference mechanism with no learning and adaptability while on the other hand the neural algorithms provide learning and adaptability. Neuro-fuzzy algorithm is definitely superior to fuzzy algorithm as it inherits adaptability and learning. From the simulation and the resultsreviewed in this paper has shown that the percentage average error is less in the case of neuro-fuzzy algorithms.

In this paper fuzzy logic approach is used to access the reusability of AO software. It is proved that application of fuzzy logic approach has shown their applicability other than traditional statistical techniques. The input variables in fuzzy model are software design metrics that derived from literature review.
Fuzzy logic offers a particularly convenient way to generate a mapping between input and output spaces by using natural expressions [2]. In direct contrast to neural networks, which take training data and generate opaque models, fuzzy logic is based on if-then rules, which are designed by considering the opinion of experts from that domain. It has been found that the most accurate prediction models are based on analogy and experts opinion. Expertbased estimation was also found to be better than all regression-based models [3]. Henceforth the use of fuzzy logic in reusability prediction is desirable since expert knowledge can be incorporated into the fuzzy reusability prediction models.
It is hardlyreliant onold data and is found suitable as Fuzzy logic models can be constructed without any data or with little data [4] [5]. The four main metrics have been discovered from literature[] namely separation of concern (SoC), cohesion, coupling, size and complexity. After experimental researchmany rules are designed for different input variables. Thus it offers better option for the developers to select the best quality of software in terms of reusability among AO software.

The reusability and maintainability of the software when written in Java and the samewhentransformedinto AspectJ with some modifications, was found better from 0.112% to 24.39 % in 78% casestested. It was found that few aspects increase code size more than others, due to factors such as the number of join points and features such as templates, which result in additional generated code at each join point.

Limitations

In object-oriented approach, each kind of data and related operations are collected into a single system entity. Therefore, even though the traditional software metrics are modified to assess object-oriented software system, they are inadequate to cover all the new and unique aspects of object-orientation. Thus, new metrics which reflect the characteristics of object oriented paradigm must be defined. The reuse of software holds the promise of increased quality and productivity in software development and maintenance. Software reuse reduces the amount of software that needs to be produced from scratch and thus allows greater focus on quality. Moreover, the reuse of well tested software should result in greater reliability and maintainability.
Syntactic and semantic correctness are not addressed completely for the model transformation of aspect-oriented models. Portions of the syntactic correctness checks are performed on the test cases in the validation of the algorithm implementation. The generation of AspectJ code is a one-time/one-way generation, possible future extensions could support two way engineering including reverse engineering for aspect mining.

Future Work

In future we will prefer to extend our work to hybrid Metrics designed to measure and compare codes for OOPs and AOPsoftware quality. For this we need to experiment more existing metrics modifications and Neuro-fuzzy algorithms and design appropriatemodel for the assessment as per static and dynamic metrics for different software qualities andevaluate various internal and external attributes for OOPs and AOP based software quality components. This will enable to perform analytic comparison between individual parameters and dependent variable that is constructive test to analyse better understanding and use of AOPsoftware.