Scispace (Formerly Typeset)
  1. Home
  2. Conferences
  3. Source Code Analysis and Manipulation
  4. 2013
  1. Home
  2. Conferences
  3. Source Code Analysis and Manipulation
  4. 2013
Showing papers presented at "Source Code Analysis and Manipulation in 2013"
Proceedings Article•10.1109/SCAM.2013.6648192•
JSNOSE: Detecting JavaScript Code Smells

[...]

Amin Milani Fard1, Ali Mesbah1•
University of British Columbia1
28 Oct 2013
TL;DR: A metric-based approach combines static and dynamic analysis to detect smells in client-side code called JSNOSE, which can help developers to spot code that could benefit from refactoring.
Abstract: JavaScript is a powerful and flexible prototype-based scripting language that is increasingly used by developers to create interactive web applications. The language is interpreted, dynamic, weakly-typed, and has first-class functions. In addition, it interacts with other web languages such as CSS and HTML at runtime. All these characteristics make JavaScript code particularly error-prone and challenging to write and maintain. Code smells are patterns in the source code that can adversely influence program comprehension and maintainability of the program in the long term. We propose a set of 13 JavaScript code smells, collected from various developer resources. We present a JavaScript code smell detection technique called JSNOSE. Our metric-based approach combines static and dynamic analysis to detect smells in client-side code. This automated technique can help developers to spot code that could benefit from refactoring. We evaluate the smell finding capabilities of our technique through an empirical study. By analyzing 11 web applications, we investigate which smells detected by JSNOSE are more prevalent.

162 citations

Proceedings Article•10.1109/SCAM.2013.6648195•
MetricMiner: Supporting researchers in mining software repositories

[...]

Francisco Zigmund Sokol1, Maurício Aniche1, Marco Aurélio Gerosa1•
University of São Paulo1
28 Oct 2013
TL;DR: This paper presents MetricMiner, a web application aimed to support researchers in some steps of mining software repositories, such as metrics calculation, data extraction, and statistical inference, saving time and computational resources.
Abstract: Researchers use mining software repository (MSR) techniques for studying software engineering empirically, by means of analysis of artifacts, such as source code, version control systems metadata, etc. However, to conduct a study using these techniques, researchers usually spend time collecting data and developing a complex infrastructure, which demands disk space and processing time. In this paper, we present MetricMiner, a web application aimed to support researchers in some steps of mining software repositories, such as metrics calculation, data extraction, and statistical inference. The tool also contains data ready to be analyzed, saving time and computational resources.

36 citations

Proceedings Article•10.1109/SCAM.2013.6648194•
CodeMetropolis - code visualisation in MineCraft

[...]

Gergo Balogh1, Arpad Beszedes1•
University of Szeged1
28 Oct 2013
TL;DR: A conversion tool was implemented that processes the basic source code metrics as input and generates a Minecraft world with buildings, districts, and gardens and is to connect data visualisation with high end-user graphics capabilities.
Abstract: Data visualisation with high expressive power plays an important role in code comprehension. Recent visualization tools try to fulfil the expectations of the users and use various analogies. For example, in an architectural metaphor, each class is represented by a building. Buildings are grouped into districts according to the structure of the namespaces. We think that these unique ways of code representation have great potential, but in our opinion they use very simple graphical techniques (shapes, figures, low resolution) to visualize the structure of the source code.On the other hand, computer games use high quality graphic and good expressive power. A good example is Minecraft, a popular role playing game with great extensibility and interactivity from another (third party) software. It supports both high definition, photo-realistic textures and long range 3D scene displaying. Our main contribution is to connect data visualisation with high end-user graphics capabilities. To achieve this, a conversion tool was implemented. It processes the basic source code metrics as input and generates a Minecraft world with buildings, districts, and gardens. The tool is in the prototype state, but it can be used to investigate the possibilities of this kind of data visualisation.

25 citations

Proceedings Article•10.1109/SCAM.2013.6648198•
Fix-it: An extensible code auto-fix component in Review Bot

[...]

Vipin Balachandran1•
VMware1
28 Oct 2013
TL;DR: An extension to Review Bot is proposed- addition of a component called Fix-it for the auto-correction of various source code issues using Abstract Syntax Tree (AST) transformations, which uses built-in fixes to automatically fix various issues reported by theauto-reviewer component in Review Bot thereby reducing the human effort to greater extent.
Abstract: Coding standard violations, defect patterns and non-conformance to best practices are abundant in checked-in source code. This often leads to unmaintainable code and potential bugs in later stages of software life cycle. It is important to detect and correct these issues early in the development cycle, when it is less expensive to fix. Even though static analysis techniques such as tool-assisted code review are effective in addressing this problem, there is significant amount of human effort involved in identifying the source code issues and fixing it. Review Bot is a tool designed to reduce the human effort and improve the quality in code reviews by generating automatic reviews using static analysis output. In this paper, we propose an extension to Review Bot- addition of a component called Fix-it for the auto-correction of various source code issues using Abstract Syntax Tree (AST) transformations. Fix-it uses built-in fixes to automatically fix various issues reported by the auto-reviewer component in Review Bot, thereby reducing the human effort to greater extent. Fix-it is designed to be highly extensible-users can add support for the detection of new defect patterns using XPath or XQuery and provide fixes for it based on AST transformations written in a high-level programming language. It allows the user to treat the AST as a DOM tree and run XQuery UPDATE expressions to perform AST transformations as part of a fix. Fix-it also includes a designer application which enables Review Bot administrators to design new defect patterns and fixes. The developer feedback on a stand-alone prototype indicates the possibility of significant human effort reduction in code reviews using Fix-it.

23 citations

Proceedings Article•10.1109/SCAM.2013.6648183•
Empirical evidence of large-scale diversity in API usage of object-oriented software

[...]

Diego Mendez1, Benoit Baudry1, Martin Monperrus1•
university of lille1
28 Oct 2013
TL;DR: This paper presents empirical evidence that there is a significant usage diversity for many classes in object-oriented classes, defined as the different statically observable combinations of methods called on the same object.
Abstract: In this paper, we study how object-oriented classes are used across thousands of software packages. We concentrate on “usage diversity”, defined as the different statically observable combinations of methods called on the same object. We present empirical evidence that there is a significant usage diversity for many classes. For instance, we observe in our dataset that Java's String is used in 2460 manners. We discuss the reasons of this observed diversity and the consequences on software engineering knowledge and research.

21 citations

Proceedings Article•10.1109/SCAM.2013.6648197•
A Hidden Markov Model to detect coded information islands in free text

[...]

Luigi Cerulo1, Michele Ceccarelli1, Massimiliano Di Penta1, Gerardo Canfora1•
University of Sannio1
1 Sep 2013
TL;DR: This paper introduces an approach, based on Hidden Markov Models (HMMs), to extract coded information islands, such as source code, stack traces, and patches, from free text at a token level of granularity, and evaluates the approach with respect to the state of art on a set of development emails and bug reports drawn from the software repositories of well known open source systems.
Abstract: Emails and issue reports capture useful knowledge about development practices, bug fixing, and change activities. Extracting such a content is challenging, due to the mix-up of source code and natural language, unstructured text. In this paper we introduce an approach, based on Hidden Markov Models (HMMs), to extract coded information islands, such as source code, stack traces, and patches, from free text at a token level of granularity. We train a HMM for each category of information contained in the text, and adopt the Viterbi algorithm to recognize whether the sequence of tokens-e.g., words, language keywords, numbers, parentheses, punctuation marks, etc.-observed in a text switches among those HMMs. Although our implementation focuses on extracting source code from emails, the approach could be easily extended to include in principle any text-interleaved language. We evaluated our approach with respect to the state of art on a set of development emails and bug reports drawn from the software repositories of well known open source systems. Results indicate an accuracy between 82% and 99%, which is in line with existing approaches which, differently from ours, require the manual definition of regular expressions or parsers.

19 citations

Proceedings Article•10.1109/SCAM.2013.6648189•
Proteum/FL: A tool for localizing faults using mutation analysis

[...]

Mike Papadakis1, Márcio Eduardo Delamaro, Yves Le Traon1•
University of Luxembourg1
28 Oct 2013
TL;DR: Proteum/FL is presented, a mutation analysis tool for diagnosing previously detected faults that employs mutation analysis as a means of diagnosing program faults and demonstrates the effective use of mutation in supporting both testing and debugging activities.
Abstract: Fault diagnosis is the process of analyzing programs with the aim of identifying the code fragments that are faulty. It has been identified as one of the most expensive and time consuming tasks of software development. Even worst, this activity is usually accomplished based on manual analysis. To this end, automatic or semi-automatic fault diagnosis approaches are useful in assisting software developers. Hence, they can play an essential role in decreasing the overall development cost. This paper presents Proteum/FL, a mutation analysis tool for diagnosing previously detected faults. Given an ANSI-C program and a set of test cases, Proteum/FL returns a list of program statements ranked according to their likelihood of being faulty. The tool differs from the rest of the mutation analysis and fault diagnosis tools by employing mutation analysis as a means of diagnosing program faults. It therefore demonstrates the effective use of mutation in supporting both testing and debugging activities.

18 citations

Proceedings Article•10.1109/SCAM.2013.6648200•
A relational symbolic execution algorithm for constraint-based testing of database programs

[...]

Michaël Marcozzi1, Wim Vanhoof1, Jean-Luc Hainaut1•
Université de Namur1
1 Sep 2013
TL;DR: This work proposes a relational symbolic execution algorithm to be used for testing of simple Java methods, reading and writing with transactional SQL in a relational database, subject to integrity constraints.
Abstract: In constraint-based program testing, symbolic execution is a technique which allows to generate test data exercising a given execution path, selected within the program to be tested Applied to a set of paths covering a sufficient part of the code under test, this technique permits to generate automatically adequate test sets for units of code As databases are ubiquitous in software, generalizing such a technique for efficient testing of programs manipulating databases is an interesting approach to enhance the reliability of software In this work, we propose a relational symbolic execution algorithmto be used for testing of simple Java methods, reading and writing with transactional SQL in a relational database, subject to integrity constraints This algorithm considers the Java method under test as a sequence of operations over a set of constrained relational variables, modeling both the database tables and the method variables By integrating this relational model of the method and database with the classical symbolic execution process, the algorithm can generate a set of Alloy constraints for any finite path to test in the control-flow graph of the method Solutions of these constraints are data which constitute a test case, including valid content for the database, which exercises the selected path in the method A tool implementing the proposed algorithm is demonstrated over a number of examples

15 citations

Proceedings Article•10.1109/SCAM.2013.6648186•
PtrTracker: Pragmatic pointer analysis

[...]

Sebastian Biallas1, Mads Chr. Olesen2, Franck Cassez3, Ralf Huuck3•
RWTH Aachen University1, Aalborg University2, University of Wollongong3
28 Oct 2013
TL;DR: This work focuses on static program analysis for bug detection in industrial C/C++ code, where speed and precision are important, but soundness (no missed bugs) and completeness (no false positives) do not necessarily need to be guaranteed.
Abstract: Static program analysis for bug detection in industrial C/C++ code has many challenges. One of them is to analyze pointer and pointer structures efficiently. While there has been much research into various aspects of pointer analysis either for compiler optimization or for verification tasks, both classical categories are not optimized for bug detection, where speed and precision are important, but soundness (no missed bugs) and completeness (no false positives) do not necessarily need to be guaranteed.

11 citations

Proceedings Article•10.1109/SCAM.2013.6648182•
ForkSim: Generating software forks for evaluating cross-project similarity analysis tools

[...]

Jeffrey Svajlenko1, Chanchal K. Roy1, Slawomir Duszynski2•
University of Saskatchewan1, University of Navarra2
28 Oct 2013
TL;DR: ForkSim is developed, a tool for generating datasets of synthetic software forks with known similarities and differences that allows the performance of cross-project similarity tools to be measured in terms of recall and precision by comparing their output to the known properties of the generated dataset.
Abstract: Software project forking, that is copying an existing project and developing a new independent project from the copy, occurs frequently in software development. Analysing the code similarities between such software projects is useful as developers can use similarity information to merge the forked systems or migrate them towards a reuse approach. Several techniques for detecting cross-project similarities have been proposed. However, no good benchmark to measure their performance is available. We developed ForkSim, a tool for generating datasets of synthetic software forks with known similarities and differences. This allows the performance of cross-project similarity tools to be measured in terms of recall and precision by comparing their output to the known properties of the generated dataset. These datasets can also be used in controlled experiments to evaluate further aspects of the tools, such as usability or visualization concepts. As a demonstration of our tool, we evaluated the performance of the clone detector NiCad for similarity detection across software forks, which showed the high potential of ForkSim.

10 citations

Proceedings Article•10.1109/SCAM.2013.6648196•
Assembler restructuring in FermaT

[...]

Martin Ward1•
De Montfort University1
1 Sep 2013
TL;DR: Some of the many varieties of assembler subroutine structures and the techniques used by the migration engine to transform these into structured code are described.
Abstract: The FermaT transformation system has proved to be a very successful tool for migrating from assembler to high level languages, including C and COBOL. One of the more challenging aspects facing automated migration, specifically when the aim is to produce maintainable code from unstructured “spaghetti” code, is to restructure assembler subroutines into semantically equivalent high level language procedures. In this paper we describe some of the many varieties of assembler subroutine structures and the techniques used by the migration engine to transform these into structured code. These transformations require a deep analysis of both control flow and data flow in order to guarantee the correctness of the result. Two separate case studies, involving over 10,000 assembler modules from commercial systems, demonstrate that these techniques are able to restructure over 99% of hand-written assembler, with no human intervention required.
Proceedings Article•10.1109/SCAM.2013.6648179•
Characterization and assessment of the linux configuration complexity

[...]

Ahmad Jbara1, Dror G. Feitelson1•
Hebrew University of Jerusalem1
28 Oct 2013
TL;DR: A deep analysis of the configurability of the Linux kernel found significant inconsistencies between the source code and the configuration control system, and found that the code controlled by CPP is very heterogeneous and may exhibit intimate mingling with non-variable code.
Abstract: The Linux kernel is configured for specific uses by manipulations of the source code during the compilation process. These manipulations are performed by the C pre-processor (CPP), based on in-line directives. Such directives, and the interleaving of multiple versions of the code that they allow, may cause difficulties in code comprehension. To better understand the effects of CPP, we perform a deep analysis of the configurability of the Linux kernel. We found significant inconsistencies between the source code and the configuration control system. Focusing on the thousands of config options appearing in the source code, we found that their distribution is heavy-tailed, with some options having more than a thousand instances in the code. Such wide use seems to imply a massive coupling between different parts of the system. However, we argue that employing a purely syntactic analysis is insufficient. By involving semantic considerations, we find that in reality the coupling induced by the very frequent options is limited. Moreover, even at the syntactic level the adverse effects of CPP are limited, as there is little nesting and the expressions controlling conditional compilation are usually very simple. But it could be even better if the configuration system undergoes a clean up. On the other hand, we found that the code controlled by CPP is very heterogeneous and may exhibit intimate mingling with non-variable code. As a result the applicability of alternative mechanisms such as aspects is hard to envision.
Proceedings Article•10.1109/SCAM.2013.6648184•
Aspectual source code analysis with GASR

[...]

Johan Fabry1, Coen De Roover2, Viviane Jonckers2•
University of Chile1, VU University Amsterdam2
28 Oct 2013
TL;DR: This paper presents Gasr: a source code analysis tool in the tradition of logic program querying that reasons over AspectJ source code, which provides a library of predicates that can be used to query aspectual source code.
Abstract: To be able to modularize crosscutting concerns, aspects introduce new programming language features, often in a new language, with a specific syntax. These new features lead to new needs for source code analysis tools, resulting in the requirement for a general-purpose aspectual source code analysis tool. Ignoring this requirement has led to a nontrivial duplication of effort in the aspect-oriented software development community. This is because all code analysis efforts that we are aware of have either built ad-hoc analysis tools or were performed manually. In this paper we present Gasr: a source code analysis tool in the tradition of logic program querying that reasons over AspectJ source code. By hooking into the IDE plugins for AspectJ, Gasr provides a library of predicates that can be used to query aspectual source code. We demonstrate the use of Gasr by automating the recognition of a number of previously identified aspectual source code assumptions. We then detect assumption instances on two well-known case studies that were manually investigated in the earlier work. In addition to finding the already known aspect assumptions, Gasr encounters assumption instances that were overlooked before.
Journal Article•10.1016/J.SCICO.2014.09.010•
Empirical investigation of SEA-based dependence cluster properties

[...]

Arpad Beszedes1, Lajos Schrettner1, Béla Csaba1, Tamás Gergely1, Judit Jász1, Tibor Gyimóthy1 •
University of Szeged1
28 Oct 2013
TL;DR: This work identified potential linchpins inside the clusters; these are procedures that can primarily be made responsible for keeping the cluster together and found that as the size of the system increases, it is more likely that multiple procedures are jointly responsible as sets of linchpin.
Abstract: Dependence clusters are (maximal) groups of source code entities that each depend on the other according to some dependence relation. Such clusters are generally seen as detrimental to many software engineering activities, but their formation and overall structure are not well understood yet. In a set of subject programs from moderate to large sizes, we observed frequent occurrence of dependence clusters using Static Execute After (SEA) dependences (SEA is a conservative yet efficiently computable dependence relation on program procedures). We identified potential linchpins inside the clusters; these are procedures that can primarily be made responsible for keeping the cluster together. Furthermore, we found that as the size of the system increases, it is more likely that multiple procedures are jointly responsible as sets of linchpins. We also give a heuristic method based on structural metrics for locating possible linchpins as their exact identification is unfeasible in practice, and presently there are no better ways than the brute-force method. We defined novel metrics and comparison methods to be able to demonstrate clusters of different sizes in programs.
Proceedings Article•10.1109/SCAM.2013.6648199•
sql-schema-comparer: Support of multi-language refactoring with relational databases

[...]

Hagen Schink1•
Otto-von-Guericke University Magdeburg1
1 Sep 2013
TL;DR: The sql-schema-comparer library is a library to detect refactorings of database schemes and is the first step to more advanced tools supporting developers in their database refactoring efforts.
Abstract: Refactoring is a method to change a source-code's structure without modifying its semantics and was first introduced for object-oriented code. Since then refactorings were defined for relational databases too. But database refactorings must be treated differently because a database schema's structure defines semantics used by other applications to access the data in the schema. Thus, many database refactorings may break interaction with other applications if not treated appropriately. We discuss problems of database refactoring in regard to Java code and present sql-schema-comparer, a library to detect refactorings of database schemes. The sql-schema-comparer library is our first step to more advanced tools supporting developers in their database refactoring efforts.
Proceedings Article•10.1109/SCAM.2013.6648193•
Determining dynamic coupling in JavaScript using object type inference

[...]

Jens Nicolay1, Carlos Noguera1, Coen De Roover1, Wolfgang De Meuter1•
VU University Amsterdam1
1 Sep 2013
TL;DR: This work infers object types based on abstract interpretation of a program, and approximate a set of accessed types per function, and classify every access as either local or foreign.
Abstract: Coupling in an object-oriented context is often defined in terms of access to instance variables and methods of other classes. JavaScript, however, lacks static type information and classes, and instead features a flexible object system with prototypal inheritance. In order to determine coupling in JavaScript, we infer object types based on abstract interpretation of a program. Type inference depends on both structure and behavior of objects, and common patterns for expressing classes and modules are supported. We approximate a set of accessed types per function, and classify every access as either local or foreign. Examples demonstrate that our object type inference, together with some additional heuristics concerning property access, enable determining coupling in JavaScript in a meaningful way.
Proceedings Article•10.1109/SCAM.2013.6648201•
Ontological interpretation of object-oriented programming abstractions

[...]

Arvind W. Kiwelekar1, Rushikesh K. Joshi1•
Indian Institute of Technology Bombay1
1 Sep 2013
TL;DR: This paper describes an approach for ontological interpretation in which the task of interpretation is seen as a classification problem and the approach is assessed with the help of two different Java-based applications.
Abstract: Assigning ontological categories to OO programming abstractions is a task of ontological interpretation. In this paper, we describe an approach for ontological interpretation in which the task of interpretation is seen as a classification problem. The task of interpretation is performed in two stages, namely syntactic feature identification and ontological categorization. An analysis technique called Ontological Cards (Ontocard) is developed to identify ontologically relevant syntactic features from programs. The ontological card includes a set of syntactic and relational features describing the nature of program elements. A rule-based classifier system is implemented to classify programming abstractions into ontological categories. The approach is assessed with the help of two different Java-based applications. The descriptions make use of examples outlining issues and challenges involved in the approach.
Proceedings Article•10.1109/SCAM.2013.6648188•
A state alteration and inspection-based interactive debugger

[...]

Yan Wang1, Min Feng, Rajiv Gupta1, Iulian Neamtiu1•
University of California, Riverside1
28 Oct 2013
TL;DR: An interactive debugger that combines capabilities that reduce debugging effort and increase debugging speed is presented, and the experience shows that this debugger handles many kinds of real bugs effectively and efficiently.
Abstract: Despite significant advances in automated debugging, programmers still rely on traditional interactive debuggers (e.g., GDB) to find and fix bugs. While popular, these debuggers have major deficiencies: they do not guide the programmer in narrowing the source of error, and they only support a limited and low-level set of state-altering commands, hence semantic state alteration requires recompilation and reexecution. To address these shortcomings, we present an interactive debugger that combines capabilities that reduce debugging effort and increase debugging speed. The capabilities that yield these benefits include: state alteration commands for dynamically switching the directions of conditional branches and suppressing the execution of statements; state inspection commands including navigating and pruning dynamic slices; and state rollback and checkpointing commands to allow reexecution of the program from an earlier checkpoint. Our prototype is built on top of GDB using the Pin infrastructure; we also provide a GUI based on KDbg. Our experience shows that our debugger handles many kinds of real bugs effectively and efficiently.
Proceedings Article•10.1109/SCAM.2013.6648187•
Tracing with a minimal number of probes

[...]

David Baca
28 Oct 2013
TL;DR: A new algorithm for efficiently allocating probes at vertices in the control flow graph of a program in a way that makes it possible to reconstruct program traces and is compared with known algorithms to elaborate on its benefits.
Abstract: When a program execution must be observed, probes are injected to trace its execution. Probes are intrusive, causing execution overhead and modifying a program's real time properties. It is therefore desirable to place them efficiently, so that their negative effects are mitigated. This paper presents a new algorithm for efficiently allocating probes at vertices in the control flow graph of a program in a way that makes it possible to reconstruct program traces. Despite of the intractability of finding minimal vertex probe placement, a fact proven in this paper, the presented algorithm is capable of identifying a locally minimal set of vertices, which reduces the set of needed probes beyond the current state-of-the-art. First, the paper shows the advantages of placing probes at vertices, rather than edges. Next, the known methods for reducing the set of probes needed to profile execution are proven to be applicable to reduce the set needed to trace execution. Further, the new algorithm is described along with the algorithm for reconstructing the executed path from a trace file. In addition, the new algorithm is combined with methods for placing profiling probes to reduce the execution overhead even further. Finally, the new probe placement algorithm is compared with known algorithms to elaborate on its benefits.
Proceedings Article•10.1109/SCAM.2013.6648185•
Driving a sound static software analyzer with branch-and-bound

[...]

Sven Mattsen1, Pascal Cuoq, Sibylle Schupp1•
Hamburg University of Technology1
28 Oct 2013
TL;DR: SPALTER is described, a Frama-C plug-in that uses a variation of the Skelboe-Moore algorithm from the field of interval arithmetic to guide FramA-C's value analyzer towards a high-level objective set by the user.
Abstract: During the last decade, static analyzers of source code have improved greatly. Today, precise analyzers that propagate values for the program's variables, for instance with interval arithmetic, are used in the industry. The simultaneous propagation of sets of values, while computationally efficient, is a source of approximations, and ultimately of false positives. When the loss of precision is detrimental to the user's goals, a user needs to provide some kind of manual guidance. Frama-C, a framework for the static analysis of C programs, provides a sound value analyzer. This analyzer can optionally be guided by skillfully placed user annotations. This article describes SPALTER, a Frama-C plug-in that uses a variation of the Skelboe-Moore algorithm from the field of interval arithmetic to guide Frama-C's value analyzer towards a high-level objective set by the user. SPALTER reproduces the results of a case study that used Frama-C's value analysis and required extensive manual guidance. In difference, our approach with SPALTER required no guidance, except preparation of the analyzed program by slicing.
Proceedings Article•10.1109/SCAM.2013.6648181•
Code clustering workbench

[...]

K. M. Annervaz1, Vikrant Kaulgud1, Janardan Misra1, Shubhashis Sengupta1, Gary Titus1, Azmat Munshi1 •
Accenture1
28 Oct 2013
TL;DR: A highly configurable clustering workbench that allows the user to collect the various source code features and then to select the code features used for clustering, the clustering algorithm and its various parameters, and the specific contribution made in multi-dimensional feature analysis and clustering is presented.
Abstract: Source code clustering is an important technique used in software development and maintenance to understand the modular structure of code. An array of algorithms are available for clustering like simulated annealing based search. Source code have different kinds of features such as structural or textual features. The collection of these different types of source code features and computation of relevant feature metrics is a difficult task. Further, the clustering algorithms can run on metrics based on different types of source code features or their combinations. This flexibility makes it non-trivial to test effectiveness of clustering algorithms on a source code. In this paper, we present a highly configurable clustering workbench that allows the user to collect the various source code features and then to select the code features used for clustering, the clustering algorithm and its various parameters. Clustering quality metrics are computed. They allow comparison of algorithm output based on different combinations of code-features and algorithms. We also present the specific contribution made in multi-dimensional feature analysis and clustering. The tool hides the algorithm complexity from the user, thus allowing complete focus on understanding the 'effect' of the configuration choices. We have also applied this tool in real-life maintenance projects, where the users found it useful to tweak the clustering techniques for the source-code peculiarities.
Proceedings Article•10.1109/SCAM.2013.6648191•
Review efforts reduction by partitioning of static analysis warnings

[...]

Tukaram Muske, Ankit Baid, Tushar Rohidas Sanas
28 Oct 2013
TL;DR: A novel idea to reduce manual review efforts by identifying redundancy in this review process is presented and two partitioning techniques to identify redundant warnings are proposed.
Abstract: Static analysis has been successfully employed in software verification, however the number of generated warnings and cost incurred in their manual review is a major concern. In this paper we present a novel idea to reduce manual review efforts by identifying redundancy in this review process. We propose two partitioning techniques to identify redundant warnings - 1) partitioning of the warnings with each partition having one leader warning such that if the leader is a false positive, so are all the warnings in its partition which need not be reviewed and 2) further partitioning the leader warnings based on similarity of the modification points of variables referred to in their expressions. The second technique makes the review process faster by identifying further redundancies and it also makes the reviewing of a warning easier due to the associated information of modification points. Empirical results obtained with these grouping techniques indicate that, on an average, 60% of warnings are redundant in the review context and skipping their review would lead to a reduction of 50-60% in manual review efforts.
Proceedings Article•10.1109/SCAM.2013.6648180•
Criticality of defects in cyclic dependent components

[...]

Tosin Daniel Oyetoyan1, Reidar Conradi1, Daniela S. Cruzes1•
Norwegian University of Science and Technology1
28 Oct 2013
TL;DR: A segment of a system with cyclic complexity that consist almost all of the critical defects and SDCs that impact on system's reliability should be focused for increased testing and refactoring possibilities.
Abstract: (Background) Software defects that most likely will turn into system and/or business failures are termed critical by most stakeholders. Thus, having some warnings of the most probable location of such critical defects in a software system is crucial. Software complexity (e.g. coupling) has long been established to be associated with the number of defects. However, what is really challenging is not in the number but identifying the most severe defects that impact reliability. (Research Goal) Do cyclic related components account for a clear majority of the critical defects in software systems? (Approach) We have empirically evaluated two non-trivial systems. One commercial Smart Grid system developed with C# and an open source messaging and integrated pattern server developed with Java. By using cycle metrics, we mined the components into cyclic-related and non-cyclic related groups. Lastly, we evaluated the statistical significance of critical defects and severe defect-prone components (SDCs) in both groups. (Results) In these two systems, results demonstrated convincingly, that components in cyclic relationships account for a significant and the most critical defects and SDCs. (Discussion and Conclusion) We further identified a segment of a system with cyclic complexity that consist almost all of the critical defects and SDCs that impact on system's reliability. Such critical defects and the affected components should be focused for increased testing and refactoring possibilities.
Proceedings Article•10.1109/SCAM.2013.6648190•
GeCoS: A framework for prototyping custom hardware design flows

[...]

Antoine Floch, Tomofumi Yuki1, Ali Hassan El-Moussawi, Antoine Morvan, Kevin Martin, Maxime Naullet1, Mythri Alle, Ludovic L'Hours2, Nicolas Simon, Steven Derrien1, François Charot, Christophe Wolinski, Olivier Sentieys1 •
French Institute for Research in Computer Science and Automation1, Institut national des sciences Appliquées de Lyon2
28 Oct 2013
TL;DR: GeCoS is an open source framework that provide a highly productive environment for hardware design that facilitates the prototyping of hardware design flows, going beyond compiler analyses and transformations.
Abstract: GeCoS is an open source framework that provide a highly productive environment for hardware design. GeCoS primarily targets custom hardware design using High Level Synthesis, distinguishing itself from classical compiler infrastructures. Compiling for custom hardware makes use of domain specific semantics that are not considered by general purpose compilers. Finding the right balance between various performance criteria, such as area, speed, and accuracy, is the goal, contrary to the typical goal in high performance context to maximize speed. The GeCoS infrastructure facilitates the prototyping of hardware design flows, going beyond compiler analyses and transformations. Hardware designers must interact with the compiler for design space exploration, and it is important to be able to give instant feedback to the users.

Tools

SciSpace AgentBiomedical AgentSciSpace RecruitSciSpace for EnterpriseAgent GalleryChat with PDFLiterature ReviewAI WriterFind TopicsParaphraserCitation GeneratorExtract DataAI DetectorCitation Booster

Learn

ResourcesLive Workshops

SciSpace

CareersSupportBrowse PapersPricingSciSpace Affiliate ProgramCancellation & Refund PolicyTermsPrivacyData Sources

Directories

PapersTopicsJournalsAuthorsConferencesInstitutionsCitation StylesWriting templates

Extension & Apps

SciSpace Chrome ExtensionSciSpace Mobile App

Contact

support@scispace.com
SciSpace

© 2026 | PubGenius Inc. | Suite # 217 691 S Milpitas Blvd Milpitas CA 95035, USA

soc2
Secured by Delve