210 research outputs found
Parsing of Adaptive Star Grammars
In a recent paper, adaptive star grammars have been proposed as an
extension of node and hyperedge replacement grammars. A
rule in an adaptive star grammar is actually a rule schema which, via the
so-called cloning operation, yields a potentially infinite number of
concrete rules. Adaptive star grammars are motivated by application areas
such as modeling and refactoring object-oriented programs, and they are more
powerful than node and hyperedge replacement grammars by this mechanism. It
has been shown that the membership problem is decidable for a reasonably
large subclass of adaptive star grammars, however no parser has been
proposed. This paper describes such a parser for this subclass motivated by
the well-known string parser by Cocke, Younger, and
Kasami
Refactoring of UML models using AGG
Model refactoring is an emerging research topic that is heavily inspired
by refactoring of object-oriented programs. Current-day UML modeling environments provide poor support for evolving UML models and applying refactoring techniques at model level. As UML models are intrinsically graph-based in nature we propose to use graph transformations to specify and apply model refactoring. More in particular, we use a specific graph transformation tool, AGG, and provide recommendations of how AGG may be improved to better support model refactoring. These recommendations are based on a small experiment that we have carried out with refactoring of UML class diagrams and state machines
A Query Language With the Star Operator
Model pattern matching is an important operation in model transformation and therefore in model-driven development tools. In this paper we present a pattern based approach that includes a star operator that can be used to represent recursive or hierarchical structures in models. We also present a matching algorithm, motivating examples and we discuss its implementation in a modeling tool
PROGRAM INSPECTION AND TESTING TECHNIQUES FOR CODE CLONES AND REFACTORINGS IN EVOLVING SOFTWARE
Developers often perform copy-and-paste activities. This practice causes the similar code fragment (aka code clones) to be scattered throughout a code base. Refactoring for clone removal is beneficial, preventing clones from having negative effects on software quality, such as hidden bug propagation and unintentional inconsistent changes. However, recent research has provided evidence that factoring out clones does not always reduce the risk of introducing defects, and it is often difficult or impossible to remove clones using standard refactoring techniques. To investigate which or how clones can be refactored, developers typically spend a significant amount of their time managing individual clone instances or clone groups scattered across a large code base.
To address the problem, this research proposes two techniques to inspect and validate refactoring changes. First, we propose a technique for managing clone refactorings, Pattern-based clone Refactoring Inspection (PRI), using refactoring pattern templates. By matching the refactoring pattern templates against a code base, it summarizes refactoring changes of clones, and detects the clone instances not consistently factored out as potential anomalies. Second, we propose Refactoring Investigation and Testing technique, called RIT. RIT improves the testing efficiency for validating refactoring changes. RIT uses PRI to identify refactorings by analyzing original and edited versions of a program. It then uses the semantic impact of a set of identified refactoring changes to detect tests whose behavior may have been affected and modified by refactoring edits. Given each failed asserts, RIT helps developers focus their attention on logically related program statements by applying program slicing for minimizing each test. For debugging purposes, RIT determines specific failure-inducing refactoring edits, separating from other changes that only affect other asserts or tests
30 Years of Software Refactoring Research: A Systematic Literature Review
Peer Reviewedhttps://deepblue.lib.umich.edu/bitstream/2027.42/155872/4/30YRefactoring.pd
30 Years of Software Refactoring Research:A Systematic Literature Review
Due to the growing complexity of software systems, there has been a dramatic
increase and industry demand for tools and techniques on software refactoring
in the last ten years, defined traditionally as a set of program
transformations intended to improve the system design while preserving the
behavior. Refactoring studies are expanded beyond code-level restructuring to
be applied at different levels (architecture, model, requirements, etc.),
adopted in many domains beyond the object-oriented paradigm (cloud computing,
mobile, web, etc.), used in industrial settings and considered objectives
beyond improving the design to include other non-functional requirements (e.g.,
improve performance, security, etc.). Thus, challenges to be addressed by
refactoring work are, nowadays, beyond code transformation to include, but not
limited to, scheduling the opportune time to carry refactoring, recommendations
of specific refactoring activities, detection of refactoring opportunities, and
testing the correctness of applied refactorings. Therefore, the refactoring
research efforts are fragmented over several research communities, various
domains, and objectives. To structure the field and existing research results,
this paper provides a systematic literature review and analyzes the results of
3183 research papers on refactoring covering the last three decades to offer
the most scalable and comprehensive literature review of existing refactoring
research studies. Based on this survey, we created a taxonomy to classify the
existing research, identified research trends, and highlighted gaps in the
literature and avenues for further research.Comment: 23 page
Recommended from our members
Rewriting the genome of Escherichia coli
Our recently acquired ability to synthesize DNA at large scale is opening the door to writing entire genomes; this constitutes a powerful approach to address fundamental biological questions, and may enable the creation of designer organisms with useful properties.
One interesting avenue for investigation is the creation of recoded genomes, where codons are substituted by their synonyms. Compression of synonymous codon boxes may provide blank spaces in the quasi-universal genetic code, and these may be amenable for reassignment into unnatural amino acids, in synergy with parallel efforts to engineer the protein translation machinery. Recoding genomes is subject to both biological and technical challenges. First, synonymous codon choice genome-wide is not trivial, and identifying suitable synonymous replacements is challenging. Second, synthetic DNA pieces need to be assembled into fragments of increasing size, and ultimately implemented inside a target host.
Here, recently reported strategies for genome engineering in E. coli (REXER and GENESIS) are extended and used to create a synthetic, recoded E. coli genome. Chapter 2 describes a strategy for assembling large natural genomic DNA pieces into BACs that are substrates for genome replacement. Experiments with these BACs serve to validate and improve REXER and GENESIS, and lay out a strategy for genome replacement. Chapter 3 employs these strategies for the synthesis and assembly of a recoded E. coli genome where all annotated instances of serine codons TCG and TCA, and stop codon TAG, are systematically replaced by their synonyms. The resulting strain, Syn61, provides a unique platform for exploring sense codon reassignment in vivo, and reassignment of the TCG codon to both natural and unnatural amino acids is demonstrated. Finally, Chapter 4 extends the toolkit for genome engineering in E. coli, and provides technologies for splitting the genome into pairs of chromosomes, as well as performing precise inversions and translocations. These technologies are used to precisely combine synthetic sections from distinct strains into a single genome. Together, these technologies may provide a foundation for future genome synthesis endeavours
- …