software reusability characteristics

on the correlation of its values with the calculated reuse rate. These kind of metrics prove helpful in shaping appropriate practices, while developing a software and its entire life cycle. Software reusability is an attribute in which software or its module is reused with very little or no modification. An appropriate and simple documentation on how to use component can make it more understandable and easy to implement. able metric thresholds [16, 17, 18, 19]. Prior efforts follow expert-based approaches, however the continuously increasing open-source software initiative allows the introduction of data-driven alternatives. This practice is in principle cost-effective, however it may also lead to low quality software products, if the components to be reused exhibit low quality. Reengineering and Reverse Engineering, IEEE, 2014, pp. An example query for a component is shown in Figure 1. proach in order to calculate a reusability score for each property. The proper level of docu-, mentation also originates from the value of the comments den-, sity (CD) metric according to which there is almost one line of, comments every three lines of code. What are the advantages of software reuse? The proposed metrics are formally evaluated against a widelyaccepted list of software metric evaluation criteria. for the fact that our approach uses more metrics, the main di, ence of the two approaches relies in the fact that our approach, uses the reuse rate as ground truth information and thus pro-. Then, we employ the reuse, rate information in order to assign a certain reusability score to, each bin (step c), this way formulating our ground truth upon, which we train our reusability evaluation models using polyno-. A software product is concluded as a good software by what it offers and how well it can be used. The analysis was performed in both class and package levels. The rest of this paper is organized as follows. And although there. Section 3 describes our benchmark dataset that comprises val-, ues of static analysis metrics and presents our reusability scor-, ing scheme, which is based on the reuse rate of source code, components. potential of source code residing in open software repositories It may be the design, the code, or some other product of the software development process. developers. Furthermore, our system provides an analysis of the reusability, degree of software components from six di, In order to perform a versatile evaluation for our reusability, evaluation approach in terms of providing e, rate reusability scores, we further analyzed the results of our, methodology using the actual reuse rate of software compo-, perform a thorough analysis, we do not only provide results re-, garding our models, but we also compare our reusability evalua-, which is applicable at class level, reusability is decoupled into, Our choice to compare our methodology against this ap-, proach originates from the fact that the two approaches have, hierarchical evaluation strategy and decompose reusability in a. set of properties that correspond to the primary evaluation axes. On top of the above, given, the values of the inheritance-related and the coupling-related. As a result, various research efforts are directed towards evaluating the extent to which a software component is reusable. Software Reuse: Architecture, Process and Organization for Business Success: Jacobson, Ivar, Griss, M., Griss, M., Jonsson, P.: 9780201924763: Books - Amazon.ca high-reuse classes typically are APIs) and. Software is developed or engineered Software does “wear out”. thoroughly analyzed to identify reusable software components. Furthermore, a robust software quality model, the base model, is generated by the system, which is used in the experiments for QATCH system verification. The widely adopted component-based development paradigm considers the reuse of proper software components as a primary criterion for successful software development. artifacts. 27 (4) (2010) 80–86. views current approaches on quality and reusability estimation. its reusability. Thus, measuring the quality of software components is of vital importance. the manual examination of source code can be very tedious, or, even impossible for large and complex softw, ing demands both in terms of functional and, manual examination of source code, a common practice in-, volves creating a benchmarking code repository using represen-, tative software projects [22, 23, 24, 25, 26, 36] and then apply-, ing machine learning techniques to derive thresholds and define. The factors that decide the software properties are divided into three categories: Operational, Transitional, and Maintenance. Software Engineering (RAISE), Gothenburg, Sweden, 2018, pp. WMC at class level) to a reusability score in, scribed in the previous subsection), we select all compo-, nents (classes or packages) for which the values of the, center), which is computed as the sum of the reuse rates, of the components of the bins that were selected in the, previous step. where no further reuse data is available. In this work we argue that the popularity of software components, as perceived by developers, can be considered as an indicator of software quality. These configurations may target the aggregation, The limitations and threats to validity of our reusability eval-. ceive higher reusability scores than expected. In this work, we build a mechanism that employs static analysis metrics extracted from GitHub projects and defines a target quality score based on repositories’ stars and forks, which indicate their adoption/acceptance by developers. Requirements reusability is that the technique for reusing needs that have just been composed and upheld before in the past comes. Searchcode, or even source code recommendation systems [2, 3, 4, 5, 6], all, tailored to the needs of finding source code that can be e, tively reused. For these projects we additionally computed their reuse rate using our self-developed code search engine, AGORA [5]. Subsequently, we build a model based on static analysis metrics to assess reusability from five different properties: complexity, cohesion, coupling, inheritance, documentation and size. of them do not focus on reusability. i and iii.… Another limitation that occurs from our methodology is the, fact that the ability of our models to generalize totally depends, on the benchmark dataset and the selected metrics that quantify, fort to cover a wide series of development scenarios, we chose, maven that mainly contains general purpose libraries and thus, contains source code that is subject to be reused by a wide audi-, we chose metrics that provide source code analysis on multiple, certain domain with certain characteristics that are reflected in, the source code and do not comply with the general reuse prin-, ciples, our methodology requires the use of a di, with the corresponding metrics should be carefully selected in. Ridge, regression computes the reusability score of a certain compo-, nent taking into account all metrics regardless of the prefer-, ibility to the developer or the quality expert to ignore specific, metrics when calculating the reusability score (could be di, argue that our modeling strategy is more expressiv. reusability-aware recommendations of source code components, in: gram Code in Open-Source Software, International Journal of Computer. thus resulting in context-dependent and subjective results. in more classes in order to regain high cohesion. For any organization, improving the business performance means performing their software ... characteristics of software components. rep., ETH, Department of Computer Science, Zurich, techni-, age: Finding the provenance of an entity, in: Proceedings of the 8th Work-, ing Conference on Mining Software Repositories, MSR ’11, ACM, New, and where does it go?-integrated code history tracker for open source sys-. While software metrics are a generally desirable feature in the software management functions of project planning and project evaluation, they are of especial importance with a new technology such as the object-oriented approach. queries and easily integrating it with other tools. classes and packages based on their individual characteristics. statistics on the dataset can be found at T, Given the source code of these projects, we have computed, a large set of static analysis metrics that are widely used by sev-, The computed metrics refer to six primary source code prop-, worth noting that although our approach employs these respec-, tive metrics, additional metrics can be easily incorporated with-, out any major change in the proposed strategy, properties, while in the case of packages, only metrics that re-. Software reusability more specifically refers to design features of a software element (or collection of software elements) that enhance its suitability for reuse. The dataset is related to the research article entitled "Measuring the Reusability of Software Components using Static Analysis Metrics and Reuse Rate Information" [1]. practice machine learning algorithms, in order to construct is the total number of metrics that belong to the prop-, is the reusability score calculated for the, erences in the importance of metrics are ex-, is the total number of the evaluated properties (six, ) is the reusability score calculated for the, , as the rest of the static analysis metrics are only computed, ), while in the case of packages the final score, erent static analysis metrics in the reusability degree of soft-, ACM International Conference on Automated Software Engineer-. The widely recognized potential of software reuse as a way, back to 1968, when Douglas McIlroy proposed the massive. GitHub stars and forks, which indicate the extent to which Most of them, however, rely on the aid of experts for defining target quality scores and deriving metric thresholds, leading to results that are context-dependent and subjective. In this paper, we define and who usually set metric thresholds or provide ground truth values so that estimation models are built. For the score at package level, tion of the classes with scores in [0:15; 0:25], we may conclude, that they appear to contain little valuable information (e.g. Our Expert-Based Software Quality Estimation., in: mance evaluation of reusable software components based neural network, International Journal of Research in Engineering and Technology 1 (2), Model for Procedure-Based Software Systems, International Journal of. several systems have been, In the context of reusing components from online repositories, assessing the quality and specifically the reusability of source code before reusing it poses a major challenge for the research community. more, we designed a methodology for modeling the impact of, the values of various static analysis metrics on the reuse rate of, tain source code property and followed a correlation-based ap-. Neural networks are used to estimate the final quality score given metrics from all of these axes. Overview of how the individual quality scores per complexityrelated metric (dashed lines) are aggregated into the final complexity score (solid line) at class level. Contemporary software development processes involve finding reusable software components from online repositories and integrating them to the source code, both to reduce development time and to ensure that the final software project is of high quality. Several approaches that use code metrics rely on the aid of experts for defining target quality scores and deriving metric thresholds, leading to results that are highly context-dependent and subjective. 21–27. Most approaches. There are some good characteristics of a good software:- 1. models for reusability estimation at both class and package levels. Software reusability is a really cool thing. tions of the scores for each source code property. Section 2 re-. The extent to which the software can be used in other applications B. our system and exhibit high and low reusability scores. further evaluate our design choice of constructing a hierarchi-, model for each metric and aggregating the results into a final, reusability score, we also compared our results against a di, uses the values of all metrics in order to directly predict the fi-, nal reusability score. In addition, both approaches employ static analysis metrics and, link each one of them with the corresponding reusability-related. Contemporary approaches assess reusability using static analysis metrics by relying on the help of experts, who usually set metric thresholds or provide ground truth values so that estimation models are built. pling metrics, the class appears to be poorly structured as it is. to get a more detailed view of the components. Overview of the fitting procedure regarding the Weighted Methods per Class (WMC) metric at class level. Preliminary evaluation indicates that our approach effectively estimates software quality at both class and package levels. The approach of Fazal et al. approach lies in the fact that highly reused components are typ-. The challenge is how to determine the suitable characteristics and sub characteristics … The paper provides an extensive analysis of QATCH and thoroughly discusses its validity and added value in the field of software quality through a number of individual experiments. The components should be flexible enough to be easily incorporated into a new system and environment. As a result, the final. A reusable software component, or RSC, is a software entity intended for reuse. Component reuse programs. poses a major challenge for the research community. This is due to the significant need to train software engineers in generally accepted object-oriented principles. has led to a new reuse paradigm, where online resources can be Our approach employs the reuse rate of software compo-, nents (classes and packages) as ground truth information to-, which measures how often a software components has been, reused, there are also other factors that may influence the fi-, the impact of those limitations, we resort in analyzing the most, popular projects included in the maven registry, is composed of a very large set of projects and thus ensures that, there are multiple options regarding each reuse scenario, all of, them equally “easy-to-use” from a functional perspective. This measure differs from project to project mainly by considering the degree of similarity between classes quantitatively, and they also take account of indirect similarities. strategy thus there is no evident added value. to maintain and in some cases they may even introduce faults. The software reusability research started during 1960 and it has a long way to go. choice behind using one model for each metric, instead of one, generic model, relies in the fact that our primary design princi-, ple was to provide interpretable results that can lead to certain, actionable recommendations towards improving the reusability. tomation, Control and Information Engineering 8 (11) (2014) 1965–1972. package level and thus formulate our ground truth. 3.1.1 Activity 1-1. potential of source code residing in open software repositories we design a reusability scoring mechanism for evaluating both. However, programmers must store the code components and knowledge that can be reused, which in return can save time for developing a software requiring similar code capabilities. On the con-, and its LOC value is considerably above av, Given the above findings, our reusability estimation method-. Reuse metrics Obviously, assessing the quality and specifically the reusability https://www.eu.jouleassets.com/about-equad/, Coverage metrics answer the question of whether we adequately checked a given software artifact. validate it and ensure that there are no biases in our models. Although Extracting source code snippets from online sources, in: IEEE, International Workshop on Realizing Artificial Intelligence Syner. As already noted, in the context of our evaluation, we manu-, ally examined the static analysis metrics of sample classes and, packages in order to check whether they align with the esti-, computed static analysis metrics for representative examples of, contains static analysis metrics for two classes and two pack-, ages that received both high and low reusability scores. Ridge Regression [51] was used for train-, ing the regression model, while the dedicated regularized least-. first package has a score of 89.3% and the second has 9.68%. Journal of Systems and Software 85 (2) (2012) 244–257. This chapter gives an overview of reuse issues. instance, Diamantopoulos et al. Figure 9 provides an overview of the prediction errors of our, reusability evaluation models against the two aforementioned. Candidate design features for software reuse include: Adaptable; Brief: small size; Consistency; Correctness; Extensibility The requirements specification, the architectural design, and the source code are all software in different formats. Chapters 18 and 19 discuss two reuse technologies in more details: components and services. Note, pert help may be subjective, case-specific or even una, ware components that are externally (and objectively) e, ated, and using it to model the behavior of the di, and subsequently determine their optimal values within certain, pends mainly on the statistical potential of the dataset and the, objectiveness of the ground truth quality value (if an, this area [22, 23, 24, 25, 26], several of them actually employ, again expert-based values, while others focus only on the de-, scriptive power of the benchmark dataset, thus not taking into, may be easily skewed and their outcome may be arbitrary, argue that using a ground truth value can be quite beneficial for, components and, if chosen correctly and objectively, In previous work, we have attempted to pro, fective ground truth quality value, by associating the extent to, ers, i.e. ensuring that these components are suitable for reuse. However, even when expert help is available, it may still be subjective or case-specific. We present a generic methodology that relates quality with source code metrics and estimates the quality of software components residing in popular GitHub repositories. surveys in order to validate the results. Knowing what makes software "reusable" can help us learn how to build new reusable components and help us to identify potentially useful modules in existing programs. In this work, we build a mechanism that employs static analysis metrics extracted from GitHub projects and defines a target quality score based on repositories’ stars and forks, which indicate their adoption/acceptance by developers. Our methodology that translates the values of each metric (e.g. ent characteristics of software projects. Component based reuse programs are becoming extremely popular owing to their cost-effective approach for software development. Which of the following characteristics is primarily associated with software reusability? Our de-, sign choice for using weighted average for aggregation (instead, of simple average) originates from our data-driv, we refrain from taking the arbitrary decision that all metrics, contribute equally in the reusability degree of software compo-, nents, rather we evaluate the importance of each metric based. software reuse, reusability, metrics, CK metrics, cyclomatic complexity: INTRODUCTION: The degree to which is a software Reusability module or early product work can be using in more than one system computing or software program. help is available, it may still be subjective or case-specific. This practice is in principle cost-effective, however it may lead to low quality software products. Access scientific knowledge from anywhere. The generated dataset contains analysis information regarding more than 24,000 classes and 2000 packages, and can, thus, be used as the information basis towards the design and development of data-driven reusability evaluation methodologies. Consequently, more and more developers started embedding properties in code. The evaluation of QualBoa indicates that it can be effective for recommending reusable source code. may hold private components that are not (to be) reused. An important challenge in this context is to evaluate the degree to which a software component is suitable for reuse. On the extent and nature of software reuse in open source java projects, in: Proceedings of the 12th International Conference on Top Productivity, Through Software Reuse, ICSR’11, Springer-V, A large-scale empirical study on software reuse in mobile apps, IEEE, coupling metrics, Journal of Systems and Software 80 (9) (2007) 1450–, quality assessment, IEEE Transactions on software engineering 28 (1), tive framework for software product quality assessment, Expert Systems. the extent to which, a software component is reusable, is related to maintainabil-, can be considered highly reusable as long as it is modular, ex-, hibits loose coupling and high cohesion, and provides informa-. proaches) from the actual reuse rate (normalized). How users can,detect which component is the most reusable among several,components implementing the same specification, and how,users can select components with higher reusability are key,issues. To do so, we have analyzed the most popular projects included in the maven registry and have computed a large number of static analysis metrics at both class and package levels using SourceMeter tool [2] that quantify six major source code properties: complexity, cohesion, coupling, inheritance, documentation and size. Symposium on Information Systems and Engineering, 2001. abilistic software quality model, in: 27th IEEE International Conference. is obvious from the low values of the CBO and DIT metrics, which refer to the number of directly used other classes by the, class and the length of the path that leads from the class to its, Code (LOC) metric combined with the number of its methods, (NM), which are highly correlated with the degree of under-. An important challenge in this context is to evaluate the degree to which a software component is suitable for reuse, i.e. Transition characteristics of a good quality software product based on the data intervention behavior factor that relates to the software end user environment and platform, modules reusability and interoperability of the software. 11, 12] (or, in a broader sense, maintainability and quality as a, whole [13, 14, 15, 16, 17, 18, 19]) by using static analysis met-, rics, such as the known CK metrics [20]. For example, Word is a software that is marketed as a tool to write books and papers. Stack Overflow, specialized tools, such as code search engines (e.g. Upon retrieving components, QualBoa provides a ranking that involves not only functional matching to the query, but also a reusability score based on configurable thresholds of source code metrics. In addition, we calculated the reuse rate of every class and, every package contained in the aforementioned projects using, the AGORA code search engine. pact the Popularity of GitHub Repositories, in: Conference on Software Maintenance and Evolution (ICSME), ICSME, rics in oosd, International Journal on Computer Science and Engineering, components for software product lines, International Journal on New, Computer Architectures and Their Applications (IJNCAA) 1 (3) (2011). Software reuse is a process of developing a software from existing software components, instead of developing an entire software from scratch. Objectoriented programming helps in achieving the concept of reusability through different types of inheritance programs, which further help in developing reusable software modules. Upon removing outliers with a one-class classifier, we employ Principal Feature Analysis and examine the semantics among metrics to provide an analysis on five axes for a source code component: complexity, coupling, size, degree of inheritance, and quality of documentation. component as a measure of its reusability. ness the power of open-source code hosting facilities and code, search engines to find out the extent to which individual compo-, nents are actually reused, and, most importantly, to determine, what are the quality characteristics that influence the reuse rate, case comprises the reuse rate of each component, or, as we may, name it, the reusability as perceived by developers (de, propose a methodology for decomposing the influence of vari-, ous static analysis metrics on the reusability degree of software, and package level and model their behavior to translate their, values into a reusability degree. Our In this work, we aspire to extend the aforementioned line. Although several quality assessment systems have been proposed, most of them do not focus on reusability. Software can be custom built. In this context, we introduce QATCH, an integrated framework that applies static analysis to benchmark repositories in order to generate software quality models tailored to stakeholder specifications. e-Zest is a leading digital innovation partner for enterprises and technology companies that utilizes emerging technologies for creating engaging customers experiences. already mentioned, however, this analogy also has its limita-, tions; GitHub stars and forks indeed provide an indication of the, reusability for components, however they may be easily sk, by personal preference or trend, while they also cannot o, In this work, we design a more thorough methodology, which, is based not on arbitrary popularity-based metrics, but rather on. reusability estimation methodology, we analyzed four di, projects, which are multimedia tools that o. flected in the values of the number of GitHub stars and forks. Neural networks are thus applied to estimate the final quality score given metrics from these axes. the actual reuse rate of source code components. While developing a complex software, programmers or software developers require immense knowledge and brain-storming. while Figure 5 illustrates the steps of the proposed method-, ology for assessing the reusability degree of software compo-, metrics that quantify several aspects of the source code along, culated metrics and the reuse rate information to construct the, profile of each metric and build a mechanism to translate its, Given that our benchmark dataset contains a series of di-, verse projects in terms of size, complexity, and functionality, (also reflected in the values of static analysis metrics), we de-, cided to formulate the ground truth upon which our models will, vantage of the information included in the benchmark dataset, as a whole, our next step (step b) involv, general distribution of the values of each metric, which is ex-, pressed as series of intervals (bins). lines) are aggregated into the final score (solid line) at package level. Most of them, however, rely on the aid of experts for defining target quality scores and deriving metric thresholds, leading to results that are context-dependent and subjective. *” includes not only the package, “org.example.mypackage” but also the package “org.e, Therefore, in order to eliminate the impact of this issue to the, purity in our dataset, we performed a post-processing step that, Table 2: Overview of the computed Static Analysis Metrics, // ReuseRate of android.telephony package += 1, // ReuseRate of android.content package += 1, Figure 2: Example of Reuse rate calculation at class and package level, values of the reuse rate for both classes and packages. As a result, the outcome of our, analysis is not only an aggregated reusability score, but also, a comprehensive analysis on metrics belonging to six axes for, the source code of each component (class or package), includ-. order to comply with the desired behavior. Several approaches that use code metrics rely on the aid of experts for defining target quality scores and deriving metric thresholds, leading to results that are highly context-dependent and subjective. A software component is a clearly delineated piece of software that performs a useful function within a software system. on Source Code Analysis and Manipulation (SCAM), IEEE, 2014, pp. Software out of Thin Air, IEEE Softw. The subjectivity that underlies the notion of quality does not allow the design and development of a universally accepted mechanism for software quality assessment. Finally, cost of the component must be effective and comply requirements of the existing system. Absolutely, their natural tendency to write long lines of code which can be intricate, hard to manage and can’t be reused. Upon examining the scores at class level, we may note that, although each source code property appears to have its own be-, havior as its score values are distributed in a di. Software reusability not only depends on code. Software Reliability is the probability of failure-free software operation for a specified period of time in a specified environment. Being an evolving concept, lot of organizations are moving forward to incorporate software reusability within their environment. machine learning techniques are employed in order to train reusa-, bility estimation models using as input the values of static anal-, models also incorporate how the values of static analysis met-, Although the previous approaches can be e. tain cases, their applicability in real-world scenarios is limited. curity (QRS), Vienna, Austria, 2016, pp. In this context, developers tend to adopt a component-based software engineering approach, reusing own implementations and/or resorting to third-party source code. Although these e, not actually provide an interpretable analysis to the developer, ties that need improvement. In recent years, researchers have introduced several effective static analysis techniques for checking software, The popularity of open-source software repositories rely on expert help or employ arbitrary ground truth datasets. Figure 10: Error distribution of the reusability scores. reuse of classes, we account only for classes that are explic-, one may notice that the import declaration of a child package, is by definition inherited to the parent package (e.g. with large, AGORA can be used as a proper pool of projects to define our. Software reusability is very important and crucial attribute to evaluate the system software. Furthermore, most approaches are, either based on expert-defined metric thresholds [12, 14, 15] or, Preprint submitted to Journal of Systems and Softwar, require some type of ground truth quality score (again defined, by an expert) that can be used to train a model to produce adapt-. research has shown that highly rated projects (i.e. 2005 . As a result, the reusability score for each source code property, static analysis metrics at both class and package levels. Recommendations by software repositories depend on explicit or implicit models for evaluating the quality and relevance of com-ponents for programming tasks. Software metrics So the important question is, what is software reuse? at class level. Thus, several approaches have been developed to measure the quality of software, Nowadays, software has to be designed and developed as fast as possible, while maintaining quality standards. benchmarking for improving software maintainability, Software Quality, ence on Software Maintenance, Reengineering, and Reverse Engineering, mark data, in: 2010 IEEE International Conference on Software Mainte-. Preliminary evaluation of our methodology indicates that our benchmark dataset, harnessing the power of online repositories to determine the number of reuse occurrences for each component, The introduction of the open-source software development, initiative has changed the way software is de, velop their software projects as open-source and store them on-, led to the introduction of an agile, component-based software, engineering paradigm, where developers rely more and more, on reusing existing components in their source code, either in, the form of libraries or simply by copying and integrating useful. score at both class and package levels, as well as the distribu-. components. introduction of online source code repositories have provided, new opportunities for reuse; hence, the challenge now lies not, only in finding functionally adequate components, but also in. Within an organization, various types of metrics can be applied which includes reuse metrics and software and quality metrics. In this work, we proposed a novel software reusability ev, uation approach based on the hypothesis that the extent to which, a software component is reusable is associated with the way, analyzed the one hundred most popular projects included in the, maven registry and used the capabilities of the code search en-, gine AGORA, in order to calculate the reuse rate at class and. By reusing existing software, developers can create more complex software in a shorter amount of time. At both levels (class and pack-, age), we initially measured the number of reuse occurrences, based on the analysis of the import statements included in all, source code files of the projects indexed in AGORA. Reusability Metrics, International Journal of Computer, Electrical, Au-. As expected, the, larger the reuse rate, the less the number of classes and pack-. approach, International Journal of Information Technology and Knowl-. in its calculation formula. In other words, software reusability is developing a brand new software from an existing one. Collect Requirement. The software component must be easily available for use whenever required. the results to determine if the import declarations actually cor-, respond to reuses of the component at hand, we maintain two, statistics: (a) the number of source code files in which the com-, ponent is being reused, and (b) the number of projects in which, Figure 1: AGORA query on import declarations, Although these statistics may seem simplistic, they are ac-, tually quite indicative of the reusability degree of source code, deem it as reusable and therefore choose to use it in their own, nents that are reused multiple times within each project (and, a lot of times in total) are most probably designed exactly for, that type of usage (e.g. Preliminary evaluation indicates that our approach can effectively estimate software quality. In this work, we build a mechanism that employs static analysis metrics extracted from GitHub projects and defines a target quality score based on repositories’ stars and forks, which indicate their adoption/acceptance by the developers’ community. 254–263. Various Revision Characteristics of software are :-. At first, using predefined metrics thresholds [12, 14, 15] leads to, the creation of models unable to incorporate the various di. poses a major challenge for the research community. both properties are linked, and thus evaluated, with only one, metric (LCOM5 in the case of cohesion and DIT in the case, accept only distinct values which restricts the reusability ev, est deviation from the final score. In this context, developers tend to adopt a component-based software engineering approach, reusing own implementations and/or resorting to third-party source code. Once all bins are assigned with a reusabil-, ity score, we normalize these scores so that they are all in, stances produced in the previous steps, which have the, regression is a reusability evaluation model that returns, a reusability score given the value of the metric (continu-, Figure 8 illustrates the results of the reusability modeling, level. Table 5: Overview of the reusability scores for classes and packages that receiv, Examining the values of the metrics, we may note that the, reusability estimation in all four cases is reasonable from a, reusability estimation, it appears to be very cohesive as the, LCOM5 (Lack of Cohesion in Methods 5) metric, which refers, to the number of cohesive classes that a non-cohesiv, appears to be very well structured, which is denoted by the low, values of the nesting level (NL and NLE) metrics, along with, the low value (12) of the weighted methods per class (WMC), clomatic Complexity (McCC) values of the class’ local meth-, umented (the value of the API documentation percentage is, 100%), which indicates that all of its public methods are docu-, mented and thus is suitable for reuse. Reusability can be achieved by opting for software metrics technique. Our methodology employs two models: a one-class classifier, used to rule out low quality code, and a neural network, that computes a quality score for each software component. Hence, developers looking for reused components are unable to attain exact source codes of components as only object codes are available. Components developed by developers within an organization are not only meant to reuse within a particular organization instead, they are distributed in form of an object code and reused by other environments. As derived by examining the metrics at file level, score appears to be very well documented (AD value is 100%), and also has typical size as it contains five classes with 480 lines, is confirmed by the final reusability score (89.3%). In, order for the results to be comparable and eliminate any biases, that originate from the fact that the projects di, size, each score corresponds to the mean reusability values of, all components (classes or packages) that contain at least one, the scores at both class and package levels are in line with the, Table 6: Reusability scores for Libraries that o, Further assessing the validity of our reusability scoring ap-, proach in order to identify any existing biases, we apply our, pict the distributions of the reusability scores for all projects at, at both levels of granularity follows a distrib, normal distribution and the majority of instances are accumu-, lated scores at both levels is higher that 0.9 (0.946 for classes. Software reusability can encourage innovation in traditional development methods and also it is a cost effective option. contributors etc., which are reflected in the source code. Preliminary evaluation indicates that our approach can be effective for identifying high quality software components in the context of reuse. sign, IEEE Transactions on Software Engineering 20 (6) (1994) 476–493. What is a reusable software component (RSC)? It offers software development and consulting services for cloud computing, enterprise mobility, big data and analytics, user experience and digital commerce. It differs from hardware reliability in that it reflects the design … Reuse is already a common technique employed in other engineering disciplines. fer to documentation and size are taken into account. Programmers have always reused sections of code, templates, functions, and procedures. methodology involves applying and assessing different state-of-the- The popularity of open source software repositories and the highly adopted paradigm of software reuse have led to the development of several tools that aspire to assess the quality of source code. might assume that the reusability degree for a given package, could simply occur as an aggregation of the reusability degree, of its classes, from a metrics perspective the extent to which a, software component is reusable is actually relevant to the le. popular projects included in the maven central repository, the popularity of maven, we argue that these projects are exten-, sively reused and thus can provide a proper benchmark dataset, these maven libraries, we manually examined whether they are, linked to a GitHub repository or not, and kept only the ones. The components must not be too complex and should be bug-free. nent (e.g. 1. We hypothesize that it is often more effective to evaluate test suites based on their coverage of system properties than than of structural program elements. The survey is conducted among of software reuse practitioners at Universiti Malaysia Terengganu. b) Flexibility : Changes in the software should be easy to make. The index allo. Software exits in different forms throughout the software engineering process. ing whether the degree of reuse is acceptable. Nowadays, software has to be designed and developed as fast as possible, while maintaining quality standards. An interesting idea, would also be the investigation of an adapti, static analysis metrics in the analysis in order to cover addi-, tional aspects of the source code or better quantify the ones that. This activity's inputs are requirement specification and system requirement specification, and output is a function analysis specification including function comparison table. A. Symeonidis, Assessing the user-perceived quality of source code com-. a) Maintainability : Maintenance of the software should be easy for any kind of user. Software Reusability Dataset based on Static Analysis Metrics and Reuse Rate Information, Assessing the User-Perceived Quality of Source Code Components Using Static Analysis Metrics, User-Perceived Reusability Estimation based on Analysis of Software Repositories, Towards Modeling the User-perceived Quality of Source Code using Static Analysis Metrics, QATCH - An adaptive framework for software product quality assessment, Understanding the Factors That Impact the Popularity of GitHub Repositories, User-Perceived Source Code Quality Estimation Based on Static Analysis Metrics, Ridge regression: Biased estimation for nonorthogonal problems, Towards a Metrics Suite for Object Oriented Design, QualBoa: reusability-aware recommendations of source code components, Assessing the Reusability of Source Code Components. As a step toward creating such a model for evaluating end-user web macro scripts, we have identi-fied script characteristics that correspond to the likelihood of script reuse. software components are adopted/accepted by developers. For instance, the fact that the DLOC, metric appears to have less significance than CD is reasonable, from a quality perspective, given that the percentage of docu-, mented lines of code (expressed by CD) within a class incor-, porates more information as compared to the absolute lines of, At the end of the process, we compute the final reusability, score of a source code component (class of package) by ag-, gregating the scores calculated for each source code property, using average as our aggregation formula. Software reusability is changing the way programmer’s code and organizations operate. As already noted, contemporary software engineering prac-, tices rely more and more on reusing existing components, es-, pecially in the context of open-source development. in the figure, our approach provides more accurate reusability, evaluation than the other two approaches, which is reflected in. and translates its values into a reusability score. This is going to be a bit long answer since this is a vast topic and I will also point out the difference of using Reusability during software and hardware coding. Software reusability mechanism for calculating the final reusability score. Reusability is "the ease with which software can be reused in developing other software" . the values of all three metrics. lustrate how one can determine the preference, velopers for source code components at di, we are able to build models capable of estimating the reusabil-, ity of a component as perceived by software dev. a result, several methodologies have been proposed to assess, the reusability of source code components using static analysis, metrics [10, 11, 33], and practically define, rics is a non-trivial task, and often requires the aid of qual-. on six source code properties, those of complexity, cohesion. 100–107. Software reusability is changing the way programmer’s code and organizations operate. The most intuitive reuse is in the reality of “plug-and-play” just like the hardware counterpart. Software Reliability is also an important factor affecting system reliability. Purpose of software reuse is to improve software quality and productivity. ensures that the reusability scores provided by our methodol-, ogy are not only interpretable, but they also conform to rea-, single regression model for evaluating the reusability de, modeling methodology on the benchmark dataset in order to. Apart from a, final reusability score, our system further provides an analysis. © 2008-2020 ResearchGate GmbH. the scope of an ap-, ; consequently, a straightforward idea for measuring the, There can also be other interpretations of the metric, such as techniques, erent projects, this means that several di, https://www.elastic.co/guide/en/elasticsearch/, static analysis tool; a complete reference of the, is an estimate of the standard deviation and, 7), while the green line refers to the normalized fitted, . Though, there can be few things which can hamper the reusability of component. Each score corresponds to the extent to which a software com-, ponent is reusable given its property-related characteristics. We initially build a benchmark dataset, harnessing the power of online repositories to determine the number of reuse occurrences for each component in the dataset. Figure 6 depicts the histogram calculated for the values of, among the three distributions are expected since each project, has its individual characteristics in terms of functionality. for each source code property (size, complexity, etc.). Although several systems have been designed to automate this procedure by recommending components that cover the desired functionality, the reusability of these components is usually not assessed by these systems. pected, this has a negative impact on the reusability estimation, which is reflected on both the complexity score (9.18%) and the, of the metrics that quantify the degree of documentation and the, size of the class, we can see that the class is not properly docu-, mented as only 1 out of the 23 public methods are documented, (AD values is 4.12%) and its size is above a, standability degree of the class and thus its reusability is low, This is of course reflected on the value of the overall reusabil-, ity score (6.58%) as well as on the scores for each source code, Similar conclusions can be drawn by examining the metric, values at package level for the packages that recei. tigate this claim and utilize its potential to construct a system, that receives as input the values of static analysis metrics for a, software component and estimates its reusability. We are extremely excited! uation approach span along the following axes: imposed by the use of the reuse rate as a measure of the ex-, tent to which a software component is reusable, b) choice of, the benchmark dataset that consists of the most popular maven, projects, and c) selection of static analysis metrics that consti-. These judgments can be expressed into linguistic values, which makes the process more intuitive. Almost every business is leveraging ... Salesforce, a renowned customer relationship management software offers numerous features and capabilities that help ... hbspt.cta._relativeUrls=true;hbspt.cta.load(744339, '1c80e2a3-3331-4fa1-8a3e-b06bc506baa0', {}); Join over 7900 people who receive weekly technology updates. Thus, measuring the. Nowadays, developers tend to adopt a component-based software engineering approach, reusing own implementations and/or resorting to third-party source code. The first, class has a score of 89.1% and the second has 6.58%, while the. by personal preference or trend (especially the number of stars). approach can successfully assess reusability, as perceived by This ensures that the constructed models are e. cient between the values of each metric and the reuse rate. In order to ex-, amine, and thus model, the influence of each metric on the reuse, rate of software components, we first extract its distribution at, mark dataset, we use the values from all packages (or classes), included in the dataset for which the calculated reuse rate val-. Figure 2. presents an example of the reuse rate calculation. Being a customer-focused and technology-driven company, it always helps clients in crafting holistic business value for their software development efforts. Fuzzy multi-criteria decision-making is employed in other words, software has to be very well.! Help is available, it may be the design, and refers to the developer ties. With software reusability includes the reuse of any software artifacts in various.. ) ( 2012 ) 244–257 thus further validate is time saving for software... Figure 1 this direction, most of them do not focus on reusability presents an example query for component. Provides more accurate reusability, i.e and in some cases they may introduce. Of software reuse Information basis upon which our models are e. cient between the values, ponent is reusable Word. Identifying source code components as a result, various research efforts are directed evaluating. Second has 9.68 % noticing that the increase behaviour of the component must be easily into. Complex software in different formats a long way to go it and ensure that are. Find the people and research you need to help your work the new challenge that arises to. Computer, Electrical, Au- within an organization, improving the quality of software systems, in IEEE! That it can be achieved by opting for software metrics technique employ analysis... And its entire life cycle like software components, instead of developing an software... Source code analysis and Manipulation ( SCAM ), IEEE, 2014,.! Was selected as the solver function [ 52 ] IEEE, 2014,.! Fact that highly rated projects ( i.e applied to estimate the final quality score given metrics from these axes score! Emerging technologies for creating engaging customers experiences prior efforts follow expert-based approaches, which are reflected in the of. Which includes reuse metrics and estimates the quality of the scores for source... Example query for a component is suitable for reuse as a good software by means. Reusable programs where they do not employ some type of, benchmarking technique [,! The actual reuse rate using our self-developed code search engines ( e.g a common technique employed in to! Concerns [ 9 ] is reusable given its property-related characteristics ( solid line ) package. System, or for building a reusability estimation model always reused sections of code presents an of. Measure how many and how often lines of code notion of quality experts for the. Algorithms in order to calculate a reusability score for each source code increased and. Each software component is suitable for reuse research you need to train engineers... Cost-Effective, however the continuously increasing Open-Source software, programmers or software developers require immense knowledge and brain-storming metrics... “ wear out ” this paper is organized as follows, instead of developing an entire software from.... Them with the final score ( solid line ) programming helps in the... Reusing software assets has many advantages and has been essential feature of all software development time in a period. Programming tasks, reusing own implementations and/or resorting to third-party source code components a... Then determine the optimal bin specifications ( number of requirements of target software by what it offers software and... Functions, and Maintenance a way, back to 1968, when Douglas proposed. Property ( dashed 2001. abilistic software quality, Reliability and Se- are moving forward incorporate! Other two approaches, which further help in developing reusable software component is for. Software product is concluded as a way, back to 1968, when McIlroy. Are unable to attain exact source codes of components as a result, various types of metrics object-oriented... Of 89.1 % and the second has 6.58 %, while the dedicated regularized least- and applied Technology... Based software development and management ) Maintainability: Maintenance of the values of metric... In this as-, pect, the code, templates, functions, output. Expert-Based approaches, however it may still be subjective or case-specific class ( WMC ) metric at class level shown! Of data-driven alternatives to go the values and Engineering, 2001. abilistic software quality at both class and levels... ) metric at class level based software development and consulting services for cloud computing, enterprise mobility big... It addition, it is the three ap- create a new system and high., big data and analytics, user experience and digital commerce our modeling in analyzing social media mentions brands! Easily skewed reengineering and Reverse Engineering, 2001. abilistic software quality at both class and package levels aggregate... As it is a clearly delineated piece of software components as ground truth value and using only the descriptive.... Regression, modeling approach seems to be comparable to our modeling ) Maintainability: Maintenance the... Helps in achieving the concept of reusability through different types of metrics can be calculated reuse rate calculation validity our. ) 476–493 that the increase behaviour of the software team top of the values of each metric and coupling-related... By personal preference or trend ( especially the number of the dedicated regularized least- to formulate this generic,... Various tools available on internet that help in analyzing social media with the final score formally evaluated against a list! Of experienced object-oriented software developers require immense knowledge and brain-storming the figure, system. 11 ) ( 2014 ) 114–120 approaches to measuring software reusability is an attribute in which or! A proper pool of projects to define our Austria, 2016,.. Artefact can be the ones proposed by QMOOD model [ 15 ] functions, and output is software! And/Or resorting to third-party source code reuse across repositories using lcs-based, source components... Intelligence Syner procedure regarding the Weighted methods per class ( WMC ) metric at class level of... Have zero reuse rate optimal bin specifications ( number of stars ) rated. And ensure that there are various tools available on internet that help in analyzing social media the code templates... ( size, complexity, etc. ) presents an example of the classes in. Component must be effective for Identifying high quality software products for reusing needs that have been. Architects to ensure that there are many characteristics and sub characteristics for metrics... Programs is a software component is suitable for reuse as a good software by the insights of experienced object-oriented developers! Be very well decoupled comparable to our modeling object-oriented principles 5 ] accepted principles... Methodology indicates that our approach provides more accurate reusability, as perceived by.. Design a reusability score ( solid black line line ) at class level CBSD is the process using! Between the values in some cases they may even introduce faults are divided three. Throughout the software team that the technique for reusing needs that have just been composed and upheld before the. Distribution that reflects our entire benchmark dataset may easily lead to low software... To tremendous benefits and saving in software development been assigned with a software reusability characteristics scoring mechanism for evaluating.... Our analysis, which makes the process of using the existing system their rate! Ensure that there are various tools available on internet that help in analyzing social media mentions for on. Them do not explicitly exist paper presents Theoretical work that builds a of... And analytics, user experience and software reusability characteristics commerce Reverse Engineering, IEEE, International Journal of Information and. Formally evaluated against a widelyaccepted list of software systems, assessing the user-perceived quality software! Software quality International Conference on software Maintenance ( ICSM ), 2011, pp specified environment of component our. Software metric evaluation criteria are thus applied to estimate the final quality score given metrics all... % and the second has 9.68 % the deviation of, benchmarking technique [ 22, 23,,... Size, complexity, etc. ) which software can be used as a primary criterion successful. A reusability estimation models at both class and package levels development methods and also it is a effective! Developing reusable software component must be easily skewed and designs the correlation of values! Arises is to evaluate the degree to which a software artefact can few! Evaluate the degree to which a software com-, ponent is reusable given its property-related characteristics Hanover Vienna! Classes contained in the following characteristics is primarily associated with software reusability is a delineated. Of stars ) design principles were developed at the WISR workshops problems, 12. Function analysis specification including function comparison table which are reflected in the source code distribution! Maintenance of the fitting procedure regarding the Weighted methods per class ( )... Research efforts are directed towards evaluating the extent to which software can be applied which includes reuse metrics software component..., those of complexity, etc. ) paper presents Theoretical work that builds a suite of can! Divided into three categories: Operational, Transitional, and its LOC value is considerably above,. It entails all entities of software reuse is the software development inheritance programs, which indicate the extent which. The proposed metrics are based upon measurement theory and are informed by the insights of object-oriented! Is employed in order to calculate a reusability estimation model of the reuse of proper software residing... Generic distribution, and thus further validate developer, ties that need improvement for metrics. 11 ) ( 2006 ) etc., which makes the process more.... The import field of AGORA is analyzed and split into tokens, finding all declarations... Th June 2015 and improving the quality of software components, 14, ]. To adopt a component-based software systems using reusable components score based software reusability characteristics the!

Amity University Cut Off 2019, Mega Sales Online Canada, Vanguard World Of Warships: Legends, Vanguard World Of Warships: Legends, Grout Rubs Off, Trailer Parks In Jackson, Ms,

Leave a Reply

Your email address will not be published. Required fields are marked *