International Journal of Information System Modeling and Design
Architecture recovery techniques study dependencies in source code and reconstruct architecture. ... more Architecture recovery techniques study dependencies in source code and reconstruct architecture. Most techniques either use structural or semantic dependencies and it is observed that the use of directory information helps in improving architecture recovery. The research carried out to date has focused on using the semantic information in a very limited manner, and directory information in a trivial manner without considering directory hierarchy. Further, all three (structural, semantic, and directory-structure) are reported to be very useful in architecture recovery but have not been used in a combined manner at all. So, this paper proposes a new scheme for architecture recovery using a weighted combination of all three dependencies. A new approach is designed to effectively mine semantic dependencies and extract directory dependencies. Finally, different dependency schemes are evaluated with four clustering algorithms on three open-source projects. The obtained results show that t...
Feature-based critical components identification in multimedia software
Multimedia Tools and Applications, 2022
Software maintenance is a necessary and frequently occurring activity in software engineering. Ho... more Software maintenance is a necessary and frequently occurring activity in software engineering. However, different factors such as inadequate documentation, project size, complex dependencies, and hard to understand architecture cause software maintenance to consume a large part of project resources. Therefore, it is important to assist the newcomers by providing program comprehension facilities that can reveal important information about the software system and can speed up the maintenance tasks. This important information about software includes knowledge about the core part (classes, components, design, etc.) of the system that mainly controls its whole functionality. In literature, different researches attempted to determine core part of the software using various structural, dynamic, and network metrics and termed them as key or critical classes. These approaches have an open scope for modeling coupling relations among different elements of software and most of these approaches need human expertise to identify key classes of the software. Moreover, multimedia software systems are generally interface driven and thus many micro level classes collectively constitute macro level units called as multimedia components. Therefore, this paper focuses to identify key critical units of the multimedia software at component level. The proposed approach in this paper consists of three main phases. In the first phase, different features of a class are identified and assigned a coupling based functional score that represents its significance in the overall functionality of the class. In the second phase, different independent components present in the multimedia software are identified by modeling the system as a dependency graph at the class level. Finally, key critical components of the multimedia software are identified by performing hierarchical agglomerative clustering based on the dependency strength among different identified components. The proposed approach is empirically evaluated on open-source multimedia software of different sizes and the obtained results support the feasibility and usability of the proposed approach of this paper.
Software Remodularization by Estimating Structural and Conceptual Relations Among Classes and Using Hierarchical Clustering
Communications in Computer and Information Science, 2017
In this paper, we have presented a technique of software remodularization by estimating conceptua... more In this paper, we have presented a technique of software remodularization by estimating conceptual similarity among software elements (Classes). The proposed technique makes use of both structural and semantic coupling measurements together to get much more accurate coupling measures. In particular, the proposed approach makes use of lexical information extracted from six main parts of the source code of a class, namely comments, class names, attribute names, method signatures, parameter names and method source code statements zone. Simultaneously, it also makes use of counting of other class’s member functions used by a given class as a structural coupling measure among classes. Structural coupling among software elements (classes) are measured using information-flow based coupling metric (ICP) and conceptual coupling is measured by tokenizing source code and calculating Cosine Similarity. Clustering is performed by performing Hierarchical Agglomerate Clustering (HAC). The proposed technique is tested on three standard open source Java software’s. The obtained results encourage remodularization by showing higher accuracy against the corresponding software gold standard.
During various phases of software development lifecycle, the internal structure of the software d... more During various phases of software development lifecycle, the internal structure of the software degrades which finally results in increased maintenance efforts and hence cost. One quick solution to this problem is software remodularization in which restructuring of different software elements such as classes/ packages/ methods is done (without changing their original meaning and functionality). Several researchers have proposed different techniques for software remodularization. Each technique considers two points of view: dependency measurement among software elements (based on structural, conceptual and/or change history based relations) and performing clustering using different algorithms. So, in this paper, first of all, an empirical evaluation is carried out in order to test the role of different dependency relations in modeling dependency among different software elements. From an empirical evaluation, it is observed that the change history of a software system plays a major r...
A doctoral thesis is summarized in this paper that focuses on strengthening the Component-Based S... more A doctoral thesis is summarized in this paper that focuses on strengthening the Component-Based Software Development (CBSD) approach by proposing an efficient approach for extracting and evaluating reusable software components from an Object Oriented (OO) software by utilizing its various artifacts. The carried out research work mainly consists of two main steps: (1) extracting a possible set of components by utilizing optimal software artifacts and clustering techniques; (2) identifying reusable components by evaluating the quality of different components using the proposed reusability metric suite. The carried out research work significantly helps in identifying and extracting the reusable components for the CBSD environment and the proposed metric suite helps in evaluating the quality of all components. Povzetek: Predstavljen je povzetek doktorata na temo obdelovanja programskih komponent pri objektnem programiranju.
Software reuse focuses on developing software using reusability principles. Component Based Softw... more Software reuse focuses on developing software using reusability principles. Component Based Software Engineering (CBSE) is one of the approaches that support software reuse by utilizing reusable software components. Many approaches have been proposed in the literature to mine reusable components from existing object-oriented software. But, almost all of these approaches are dependent on the selection of third-party application software as clients. Therefore, this paper proposes a reusable component identification approach from the source-code of a singular object-oriented software system especially related to multimedia tools. The proposed approach is based on making use of two kinds of dependency relations among different software elements namely structural and lexical relations. These relations, help us to measure cohesion at the component level using two proposed cohesion metrics. The cohesion values are further used as objective functions in the multi-objective search-based evolutionary algorithm, namely NSGA-III to identify the set of reusable components as different clusters. The proposed approach is validated by applying it to six open source Java applications of different sizes and belonging to multimedia domains.
Fast and competitive software industry demands rapid development using Component Based Software D... more Fast and competitive software industry demands rapid development using Component Based Software Development (CBSD). CBSD is dependent on the availability of the high-quality reusable component libraries. Recently, evolutionary multi-objective optimization algorithms have been used to identify sets of reusable software components from the source-code of Object Oriented (OO) software, using different quality indicators (e.g. cohesion, coupling, etc.). Sometimes, these used quality indicators are quite sensitive towards the small variations in their values, although they should not be. Therefore, this paper analyzes the sensitivity of the evolutionary technique for three quality indicators used during the identification: Frequent Usage Pattern (FUP), Semantic and evolutionary coupling. The sensitivity analysis is performed on three widely used open-source OO software. The experimentation is performed by mutating the system to different degrees. Results of the empirical analysis indica...
Component-based-software-development (CBSD) is one of the most recent trends in the software deve... more Component-based-software-development (CBSD) is one of the most recent trends in the software development industry and its success majorly depends on the quality of the software components. Good quality software components are those components, which are internally strongly cohesive and are independent of others. Use of such components helps in faster development of a software and reduces the maintenance efforts in future. Such components can be identified from different software repositories and can be reused whenever needed. Hence, proper identification of such reusable components is a promising area of research, and the same has been targeted in this paper. This paper model Reusable Software Component Identification (RSCI) problem as a search-based multi-objective problem in order to identify optimized reusable software components from the object-oriented (OO) source code of a software system. For OO software paradigm, we consider the component as an individual class or group of connected classes which can be reused with least modifications. To identify this, three types of relationship are proposed in this paper, namely 1) Frequent Usage Pattern (FUP) based cohesion 2) semantic relatedness based cohesion and 3) co-change based coupling. The proposed approach optimizes by simultaneously maximizing both types of cohesion and minimizing the coupling of a given component. The FUP based cohesion maximization is based on the newly proposed cohesion metric called PatternCohesion which is computed using FUP information extracted from
Improving Cohesion of a Software System by Performing Usage Pattern Based Clustering
Procedia Computer Science, 2018
Abstract Increasing the software design quality is a key research challenge in object-oriented so... more Abstract Increasing the software design quality is a key research challenge in object-oriented software development system. Cohesion is one of the key spect that helps to evaluate the quality and modularity of a software system at the design level. It helps to create software components that are directly reusable to the industry because of their less dependence on other components. In this paper, a new cohesion metric for object-oriented software, named as Usage Pattern Based Cohesion (UPBC), is proposed which is computed at the module level. This paper considers class as a module initially and subsequently group of classes (i.e. a package) is considered as a module with an aim of improving overall cohesion. This metric utilizes the Frequent Usage Patterns (FUP) extracted from different member functions interactions to capture the cohesiveness of the module. Further, the measured cohesion value is used to perform clustering of modules in order to increase cohesion and decrease coupling among modules simultaneously. The clustering is performed by using a newly proposed clustering algorithm called FUPClust (Frequent Usage Pattern based Clustering) based on FUP interactions among modules. The proposed approach is applied to two Java software systems and the results obtained show a significant improvement in the cohesiveness of the software system.
Due to wide adoption of object-oriented programming in software development, there is always a re... more Due to wide adoption of object-oriented programming in software development, there is always a requirement to produce well-designed software systems, so that the overall software maintenance cost is reduced and reusability of the component is increased. But, due to prolonged maintenance activities, the internal structure of software system deteriorates. In this situation, restructuring is a widely used solution to improve the overall internal structure of the system without changing its external behavior. As, it is known that, one technique to perform restructuring is to use refactoring on the existing source code to alter its internal structure without modifying its external functionality. However, the refactoring solely depends on our ability to identify various code smells present in the system. Refactoring aims at improving cohesion and reducing coupling in the software system. So, in this paper, a restructuring approach based on refactoring is proposed through improvement in co...
International Journal of Computer Applications, 2016
Wireless Sensor Network (WSN) is the current research field in computer science & has growing use... more Wireless Sensor Network (WSN) is the current research field in computer science & has growing use in day to day life. As a new technology, it has several research challenges and vast opportunities for the researchers. This paper highlights WSN, its architecture, challenges, applications and classification of various protocols concerning it. It also classifies various security protocols to make WSN a secure network.
Uploads
Papers by AMIT RATHEE