Results 1 - 10
of
45
A Survey of Formal Concept Analysis Support for Software Engineering Activities
- In Gerd Stumme, editor, Proceedings of the First International Conference on Formal Concept Analysis - ICFCA’03
, 2003
"... Abstract. Formal Concept Analysis (FCA) has typically been applied in the field of software engineering to support software maintenance and object-oriented class identification tasks. This paper presents a broader overview by describing and classifying academic papers that report the application of ..."
Abstract
-
Cited by 53 (6 self)
- Add to MetaCart
(Show Context)
Abstract. Formal Concept Analysis (FCA) has typically been applied in the field of software engineering to support software maintenance and object-oriented class identification tasks. This paper presents a broader overview by describing and classifying academic papers that report the application of FCA to software engineering. The papers are classified using a framework based on the activities defined in the ISO12207 Software Engineering standard. Two alternate classification schemes based on the programming language under analysis and target application size are also discussed. In addition, the authors work to support agile methods and formal specification via FCA is introduced. 1
Snelting “Refactoring class hierarchies with KABA” in
- Proc. of OOPSLA
, 2004
"... KABA is an innovative system for refactoring Java class hierar-chies. It uses the Snelting/Tip algorithm [13] in order to determine a behavior-preserving refactoring which is optimal with respect to a given set of client programs. KABA can be based on dynamic as well as static program analysis. The ..."
Abstract
-
Cited by 33 (2 self)
- Add to MetaCart
(Show Context)
KABA is an innovative system for refactoring Java class hierar-chies. It uses the Snelting/Tip algorithm [13] in order to determine a behavior-preserving refactoring which is optimal with respect to a given set of client programs. KABA can be based on dynamic as well as static program analysis. The static variant will preserve program behavior for all possible input values; the dynamic version guarantees preservation of behavior for all runs in a given test suite. KABA offers automatic refactoring as well as manual refactoring using a dedicated editor. In this contribution, we recapitulate the Snelting/Tip algorithm, present the new dynamic version, and explain new extensions which allow to handle full Java. We then present five case studies which discuss the KABA refactoring proposals for programs such as javac and antlr. KABA proved that javac does not need refactoring, but generated semantics-based refactoring proposals for antlr. 1.
Refactoring using type constraints
- ACM Trans. Program. Lang. Syst
, 2011
"... Abstract. Type constraints express subtype-relationships between the types of program expressions that are required for type-correctness, and were originally proposed as a convenient framework for solving type checking and type inference problems. In this paper, we show how type constraints can be ..."
Abstract
-
Cited by 24 (6 self)
- Add to MetaCart
(Show Context)
Abstract. Type constraints express subtype-relationships between the types of program expressions that are required for type-correctness, and were originally proposed as a convenient framework for solving type checking and type inference problems. In this paper, we show how type constraints can be used as the basis for practical refactoring tools. In our approach, a set of type constraints is derived from a type-correct program P . The main insight behind our work is the fact that P constitutes just one solution to this constraint system, and that alternative solutions may exist that correspond to refactored versions of P . We show how a number of refactorings for manipulating types and class hierarchies can be expressed naturally using type constraints. Several refactorings in the standard distribution of Eclipse are based on our results.
Semantics-based Composition of Class Hierarchies
- In ECOOP
, 2002
"... Abstract. Class hierarchy composition aims at constructing software systems by composing a set of class hierarchies into an executable system. Current composition algorithms cannot provide semantic guarantees. We present a composition algorithm, together with an interference criterion and its correc ..."
Abstract
-
Cited by 20 (3 self)
- Add to MetaCart
(Show Context)
Abstract. Class hierarchy composition aims at constructing software systems by composing a set of class hierarchies into an executable system. Current composition algorithms cannot provide semantic guarantees. We present a composition algorithm, together with an interference criterion and its correctness proof, which guarantees that behavior of the original hierarchies is preserved for interference-free compositions. In case of interference, an impact analysis can determine the consequences of integration. The method is based on existing program analysis technology and is illustrated by various examples. 1
Points-To for Java: A General Framework and an Empirical Comparison
, 2000
"... Points-to analysis for Java is different from points-to for C or even C++. We present a framework which generalizes popular points-to algorithms and generates set constraints from full Java bytecode. The framework exploits previously computed points-to sets in a fixpoint iteration for precise resolu ..."
Abstract
-
Cited by 20 (0 self)
- Add to MetaCart
(Show Context)
Points-to analysis for Java is different from points-to for C or even C++. We present a framework which generalizes popular points-to algorithms and generates set constraints from full Java bytecode. The framework exploits previously computed points-to sets in a fixpoint iteration for precise resolution of dynamic binding. We then compare implementations of this framework for unification-based and subset-based analysis. It turns out that -- in contrast to the C situation -- both approaches have about the same running time, while the subset-based algorithm is still more precise. The unifiation-based method is slowed down because its inherent imprecision accumulates during fixpoint iteration.
RASCAL: A Recommender Agent for Agile Reuse
- Artificial Intelligence Review
, 2005
"... Abstract. As software organisations mature, their repositories of reusable software components from previous projects will also grow considerably. Remaining conversant with all components in such a repository presents a significant challenge to developers. Indeed the retrieval of a particular compon ..."
Abstract
-
Cited by 19 (1 self)
- Add to MetaCart
(Show Context)
Abstract. As software organisations mature, their repositories of reusable software components from previous projects will also grow considerably. Remaining conversant with all components in such a repository presents a significant challenge to developers. Indeed the retrieval of a particular component in this large search space may prove problematic. Further to this, the reuse of components developed in an Agile environment is likely to be hampered by the existence of little or no support materials. We propose to infer the need for a component and proactively recommend that component to the developer using a technique which is consistent with the principles of Agile methodologies. Our RASCAL recommender agent tracks usage histories of a group of developers to recommend to an individual developer components that are expected to be needed by that developer. Unlike many traditional recommender systems, we may recommend items that the developer has actually employed previously. We introduce a content-based filtering technique for ordering the set of recommended software components and present a comparative analysis of applying this technique to a number of collaborative filtering algorithms. We also investigate the relationship between the number of usage histories collected and recommendation accuracy. Our overall results indicate that RASCAL is a very promising tool for allowing developers discover reusable components at no additional cost.
The feature signatures of evolving programs
- Automated Software Engineering
, 2003
"... As programs evolve, their code increasingly becomes tangled by programmers and requirements. This mosaic quality complicates program comprehension and maintenance. Many of these activities can benefit from viewing the program as a collection of features. We introduce an inexpensive and easily compre ..."
Abstract
-
Cited by 17 (0 self)
- Add to MetaCart
(Show Context)
As programs evolve, their code increasingly becomes tangled by programmers and requirements. This mosaic quality complicates program comprehension and maintenance. Many of these activities can benefit from viewing the program as a collection of features. We introduce an inexpensive and easily comprehensible summary of program changes called the feature signature and investigate its properties. We find a remarkable similarity in the nature of feature signatures across multiple non-trivial programs, developers and magnitudes of changes. This indicates that feature signatures are a meaningful notion worth studying. We then show numerous applications of feature signatures, establishing their utility. 1
Obfuscation of design intent in object-oriented applications
- In DRM ’03: Proceedings of the 3rd ACM workshop on Digital rights management
, 2003
"... Protection of digital data from unauthorized access is of paramount importance. In the past several years, much research has concentrated on protecting data from the standpoint of confidentiality, integrity and availability. Software is a form of data with unique properties and its protection poses ..."
Abstract
-
Cited by 16 (0 self)
- Add to MetaCart
(Show Context)
Protection of digital data from unauthorized access is of paramount importance. In the past several years, much research has concentrated on protecting data from the standpoint of confidentiality, integrity and availability. Software is a form of data with unique properties and its protection poses unique challenges. First, software can be reverse engineered, which may result in stolen intellectual property. Second, software can be altered with the intent of performing operations this software must not be allowed to perform. With commercial software increasingly distributed in forms from which source code can be easily extracted, such as Java bytecodes, reverse engineering has become easier than ever. Obfuscation techniques have been proposed to impede illegal reverse engineers. Obfuscations are program transformations that preserve the program functionality while obscuring the code, thereby protecting the program against reverse engineering. Unfortunately, the existing obfuscation techniques are limited to obscuring variable names, transformations of local control flow, and obscuring expressions using variables of primitive types. In this paper, we propose obfuscations of design of object-oriented programs. We describe three techniques for obfuscation of program design. The class coalescing obfuscation replaces several classes with a single class. The class splitting obfuscation replaces a single class with multiple classes, each responsible for a part of the functionality of the original class. The type hiding obfuscation uses the mechanism of interfaces in Java to obscure the types of objects manipulated by the program. We show the results of our initial experiments with a prototype implementation of these techniques.
Decoupling Classes with Inferred Interfaces
- Proceedings of the 2006 ACM Symposium on Applied Computing, P.No:1404
"... Using small, context-specific interfaces in variable declarations serves the decoupling of classes and increases a program’s flexi-bility. To minimize its interface, a thorough analysis of the proto-col needed from a variable is required. Currently available refac-torings for the extraction of inter ..."
Abstract
-
Cited by 12 (2 self)
- Add to MetaCart
(Show Context)
Using small, context-specific interfaces in variable declarations serves the decoupling of classes and increases a program’s flexi-bility. To minimize its interface, a thorough analysis of the proto-col needed from a variable is required. Currently available refac-torings for the extraction of interfaces leave the programmer alone with the decision which methods to include or, more problemati-cally, which to omit: they let him choose manually from the pro-tocol of an existing type, and only then offer to use the new inter-face where (if) possible. To aid the programmer in defining a new interface, we have developed a new refactoring that infers it from a variable’s declaration and automatically inserts it into the code.
Improving Generalization Level in UML Models: Iterative Cross Generalization in Practice
- Proceedings of the 12th Intl. Conference on Conceptual Structures (ICCS’04), volume 3127 of Lecture Notes in Computer Science
, 2004
"... Abstract. FCA has been successfully applied to software engineering tasks such as source code analysis and class hierarchy re-organization. Most notably, FCA puts mathematics behind the mechanism of abstracting from a set of concrete software artifacts. A key limitation of current FCA-based methods ..."
Abstract
-
Cited by 11 (8 self)
- Add to MetaCart
(Show Context)
Abstract. FCA has been successfully applied to software engineering tasks such as source code analysis and class hierarchy re-organization. Most notably, FCA puts mathematics behind the mechanism of abstracting from a set of concrete software artifacts. A key limitation of current FCA-based methods is the lack of support for relational information (e.g., associations between classes of a hierarchy): the focus is exclusively on artifact properties whereas inter-artifact relationships may encode crucial information. Consequently, feeding-in relations into the abstraction process may substantially improve its precision and thus open the access to qualitatively new generalizations. In this paper, we elaborate on ICG, an FCA-based methodology for extracting generic parts out of software models that are described as UML class diagrams. The components of ICG are located within the wider map of an FCA framework for relational data. A few experimental results drawn from an industrial project are also reflected on. 1