One approach to measuring and managing the complexity of software, as it evolves over time, is to exploit software metrics. Metrics have been used to estimate the complexity of the maintenance effort, to facilitate ch...
详细信息
One approach to measuring and managing the complexity of software, as it evolves over time, is to exploit software metrics. Metrics have been used to estimate the complexity of the maintenance effort, to facilitate change impact analysis, and as an indicator for automatic detection of a transformation that can improve the quality of a system. However, there has been little effort directed at applying software metrics to the maintenance of grammar-based software applications, such as compilers, editors, program comprehension tools and embedded systems. In this paper, we adapt the software metrics that are commonly used to measure program complexity and apply them to the measurement of the complexity of grammar-based software applications. Since the behaviour of a grammar-based application is typically choreographed by the grammar rules, the measure of complexity that our metrics provide can guide maintainers in locating problematic areas in grammar-based applications. Copyright (C) 2004 John Wiley Sons, Ltd.
One approach to measuring and managing the complexity of software, as it evolves over time, is to exploit software metrics. Metrics have been used to estimate the complexity of the maintenance effort, to facilitate ch...
详细信息
One approach to measuring and managing the complexity of software, as it evolves over time, is to exploit software metrics. Metrics have been used to estimate the complexity of the maintenance effort, to facilitate change impact analysis, and as an indicator for automatic detection of a transformation that can improve the quality of a system. However, there has been little effort directed at applying software metrics to the maintenance of grammar-based software applications, such as compilers, editors, program comprehension tools and embedded systems. In this paper, we adapt the software metrics that are commonly used to measure program complexity and apply them to the measurement of the complexity of grammar-based software applications. Since the behaviour of a grammar-based application is typically choreographed by the grammar rules, the measure of complexity that our metrics provide can guide maintainers in locating problematic areas in grammar-based applications. Copyright (C) 2004 John Wiley Sons, Ltd.
As systems evolve, they become harder to understand because the implementation of concepts (e.g. business rules) becomes less coherent. To preserve sourcecode comprehensibility, we need to be able to predict how this...
详细信息
ISBN:
(纸本)0769519059
As systems evolve, they become harder to understand because the implementation of concepts (e.g. business rules) becomes less coherent. To preserve sourcecode comprehensibility, we need to be able to predict how this property will change. This would allow the construction of a tool to suggest what information should be added or clarified (e.g. in comments) to maintain the code's comprehensibility. We propose a framework to characterise types of concept change during evolution. It is derived from an empirical investigation of concept changes in evolving commercial COBOL II files. The framework describes transformations in the geometry and interpretation Of regions of sourcecode. We conclude by relating our observations to the types of maintenance performed and suggest how this work could be developed to provide methods for preserving code quality based on comprehensibility.
In the last decades several tools and environments defined and introduced languages for querying, navigating and transforming abstract syntax trees. These environments were meant to support software maintenance, reeng...
详细信息
ISBN:
(纸本)0769518834
In the last decades several tools and environments defined and introduced languages for querying, navigating and transforming abstract syntax trees. These environments were meant to support software maintenance, reengineering and program comprehension activities. Instead of introducing a new language, this paper proposes to adopt the Object Constraint Language (OCL) to express queries over an object model representing the abstract syntax tree of the code to be analyzed. OCL is part of the UML lingua franca and thus several advantages can be readily obtained. Central to the idea is to shift the analysis paradigm from a tree-based to an object-oriented paradigm, and to provide a meta-model decoupling the query language from the target language. This paper presents the current status in implementing an OCL interpreter with the ability of querying an object model representing the abstract syntax tree, as well as some interesting applications, such as extracting software metrics or computing clones.
Identifying code duplication in large multi-platform software systems is a challenging problem. This is due to a variety of reasons including the presence of high-level programming languages and structures interleaved...
详细信息
Identifying code duplication in large multi-platform software systems is a challenging problem. This is due to a variety of reasons including the presence of high-level programming languages and structures interleaved with hardware-dependent low-level resources and assembler code, the use of GUI-based configuration scripts generating commands to compile the system, and the extremely high number of possible different configurations. This paper studies the extent and the evolution of code duplications in the Linux kernel. Linux is a large, multi-platform software system;it is based on the Open source concept, and so there are no obstacles in discussing its implementation. In addition, it is decidedly too large to be examined manually: the current Linux kernel release (2.4.18) is about three million LOCs. Nineteen releases, from 2.4.0 to 2.4.18, were processed and analyzed, identifying code duplication among Linux subsystems by means of a metric-based approach. The obtained results support the hypothesis that the Linux system does not contain a relevant fraction of code duplication. Furthermore, code duplication tends to remain stable across releases, thus suggesting a fairly stable structure, evolving smoothly without any evidence of degradation. (C) 2002 Elsevier Science B.V. All rights reserved.
In this paper, we propose a formal model and a platform for software change management. The model is based on graphs rewriting, and deal with both multi-language sourcecodes and heterogeneous database schemas. These ...
详细信息
ISBN:
(纸本)0769511899;0769511902
In this paper, we propose a formal model and a platform for software change management. The model is based on graphs rewriting, and deal with both multi-language sourcecodes and heterogeneous database schemas. These are represented by software components linked by meaningful relationships. The change impact analysis is done, using a Knowledge-Based System, that includes impact propagation rules preserving the software consistency. This is implemented by an integrated platform including a multi-language parsing tool, and a software change management module,
Large multi-platform software systems are likely to encompass hardware-dependent code or sub-systems. However, analysing multi-platform sourcecode is challenging, due to the variety of supported configurations. Often...
详细信息
ISBN:
(纸本)0769513875
Large multi-platform software systems are likely to encompass hardware-dependent code or sub-systems. However, analysing multi-platform sourcecode is challenging, due to the variety of supported configurations. Often, the system was originally developed for a single platform, and then new target platforms were added. This practice promotes the presence of duplicated code, also said "cloned" code. This paper presents the clone percentage of a multi-platform/multi-million lines of code, Linux kernel version 2.4.0, detected with a metric-based approach. After a brief description of the procedure followed for codeanalysis and clone identification, the obtained results are commented.
To find out what kind of design structures programmers really use, we need to examine a wide variety of programs. Unfortunately most program sourcecode is proprietary and is unavailable for analysis. The World Wide W...
详细信息
ISBN:
(纸本)0769513875
To find out what kind of design structures programmers really use, we need to examine a wide variety of programs. Unfortunately most program sourcecode is proprietary and is unavailable for analysis. The World Wide Web (Web) potentially can provide a rich source of programs for study. The freely available code on the Web, if in sufficient quality and quantity, can provide a window into software design as it is practiced today. In a preliminary study of sourcecode availability on the Web, we estimate that 4% of URLs contain object-oriented sourcecode, and 9% of URLs contain executable code - either binary or class files. This represents an enormous resource for program analysis. We can, with some risk of inaccuracy, conservatively project our sampling results to the entire Web. Our estimate is that the Web contains at least 3.4 million files containing either Java, C++, or Perl sourcecode, 20.3 million files containing C sourcecode, and 8.7 million files containing executable code.
Recently, many software visualization (SV) techniques and tools have become available. There is ample anecdotal evidence that appropriate visualization can significantly reduce the effort spent on system comprehension...
详细信息
ISBN:
(纸本)0769511317
Recently, many software visualization (SV) techniques and tools have become available. There is ample anecdotal evidence that appropriate visualization can significantly reduce the effort spent on system comprehension and maintenance, yet we are not aware of any quantitative investigation and survey of SV tools. This paper reports on a survey on SV tools which was conducted in spring 2000 with more than 100 participants. it addresses various functional, practical, cognitive as well as codeanalysis aspects that users may be looking for in SV tools. The participants of the survey rated the usefulness and importance of these aspects, and came up with aspects of their own. The participants were in general quire pleased with the SV tool they were using and mentioned various benefits. Nevertheless, a big gap between desired aspects and the features of current SV tools was identified In addition, a list of improvements that should be done to current tools was assembled. Finally, the collected data tends to suggest that in general, codeanalysis aspects were not highly supported by the tools.
In this paper, we propose a formal model and a platform to deal with distributed multi-language software analysis. These provide a graph representation of the software codes (sourcecodes and byte-codes), a change pro...
详细信息
ISBN:
(纸本)0769513875
In this paper, we propose a formal model and a platform to deal with distributed multi-language software analysis. These provide a graph representation of the software codes (sourcecodes and byte-codes), a change propagation process based on graphs rewriting, and an automatic profiling tool to measure the contribution of any component to the global performance of the software. The program codes are structured by a multi-graph in which the nodes represent the software components linked by edges representing the meaningful relationships. The software components and their relationships are extracted from the byte-code files, using mocha decompiler tool, and from the sourcecodes files, using Javacc tool. Javacc allows to generate parsers, based on grammars specifications files, which include features to produce an XML (eXtensible Markup Language) representation of the software components. Furthermore, a graph of the software components is constructed on the top of the XML files, providing programs analysis. This is implemented by an integrated platform including the mocha decompiler, a multi-language parsing tool, a software change management module, and a profiling tool.
暂无评论