RCS—a system for version control
Software—Practice & Experience
Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Gandalf: software development environments
IEEE Transactions on Software Engineering
On merging software extensions
Acta Informatica
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural slicing using dependence graphs
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
The synthesizer generator: a system for constructing language-based editors
The synthesizer generator: a system for constructing language-based editors
Integrating non-intering versions of programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the adequacy of program dependence graphs for representing programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependence analysis for pointer variables
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An axiomatic basis for computer programming
Communications of the ACM
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
A Discipline of Programming
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Semantics of Program Slicing and Program Integration
TAPSOFT '89 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 2: Advanced Seminar on Foundations of Innovative Software Development II and Colloquium on Current Issues in Programming Languages
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The program dependence graph in a software development environment
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Speedup of ordinary programs
Dependence analysis for subscripted variables and its application to program transformations
Dependence analysis for subscripted variables and its application to program transformations
Optimizing supercompilers for supercomputers
Optimizing supercompilers for supercomputers
Illustrating interference in interfering versions of programs
SCM '89 Proceedings of the 2nd International Workshop on Software configuration management
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimizing programs over the constructive reals
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Identifying the semantic and textual differences between two versions of a program
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A program integration algorithm that accommodates semantics-preserving transformations
SDE 4 Proceedings of the fourth ACM SIGSOFT symposium on Software development environments
Coordinating concurrent development
CSCW '90 Proceedings of the 1990 ACM conference on Computer-supported cooperative work
A Graph Model for Software Evolution
IEEE Transactions on Software Engineering
Models of Software Development Environments
IEEE Transactions on Software Engineering
Structure-oriented merging of revisions of software documents
SCM '91 Proceedings of the 3rd international workshop on Software configuration management
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Techniques for debugging parallel programs with flowback analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamic slicing in the presence of unconstrained pointers
TAV4 Proceedings of the symposium on Testing, analysis, and verification
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
A program integration algorithm that accommodates semantics-preserving transformations
ACM Transactions on Software Engineering and Methodology (TOSEM)
Automatic partitioning of a program dependence graph into parallel tasks
IBM Journal of Research and Development
Combination of inheritance hierarchies
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
The use of program dependence graphs in software engineering
ICSE '92 Proceedings of the 14th international conference on Software engineering
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
Developing and integrating ProDAG in the Arcadia environment
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
ACM Transactions on Software Engineering and Methodology (TOSEM)
Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Incremental program testing using program dependence graphs
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fine-grained revision control for collaborative software development
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
ACM Letters on Programming Languages and Systems (LOPLAS)
Precise executable interprocedural slices
ACM Letters on Programming Languages and Systems (LOPLAS)
On slicing programs with jump statements
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Static slicing in the presence of goto statements
ACM Transactions on Programming Languages and Systems (TOPLAS)
TAOS: Testing with Analysis and Oracle Support
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
A flexible object merging framework
CSCW '94 Proceedings of the 1994 ACM conference on Computer supported cooperative work
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Single-pass generation of static single-assignment form for structured languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software merge: semantics of combining changes to programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program integration for languages with procedure calls
ACM Transactions on Software Engineering and Methodology (TOSEM)
Architectural Tradeoffs for a Meaning-Preserving Program Restructuring Tool
IEEE Transactions on Software Engineering - Special issue on software architecture
Precise interprocedural chopping
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Beyond traditional program slicing
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Program decomposition for pointer aliasing: a step toward practical analyses
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Reverse engineering and system renovation—an annotated bibliography
ACM SIGSOFT Software Engineering Notes
A mechanism for automatically and dynamically changing software components
Proceedings of the 1997 symposium on Software reusability
Semantics Guided Regression Test Cost Reduction
IEEE Transactions on Software Engineering
An integrated approach to version control management in computer supported collaborative writing
ACM-SE 36 Proceedings of the 36th annual Southeast regional conference
Version models for software configuration management
ACM Computing Surveys (CSUR)
Computing amorphous program slices using dependence graphs
Proceedings of the 1999 ACM symposium on Applied computing
A representation model for procedural program maintenance
Proceedings of the 1999 ACM symposium on Applied computing
Parallel changes in large scale software development: an observational case study
Proceedings of the 20th international conference on Software engineering
System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow
Proceedings of the 21st international conference on Software engineering
Inter-class def-use analysis with partial class representations
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 2
Guest Editors' Introduction: Next Generation Software Reuse
IEEE Transactions on Software Engineering
An Automatic Class Generation Mechanism by Using Method Integration
IEEE Transactions on Software Engineering
Interprocedural control dependence
ACM Transactions on Software Engineering and Methodology (TOSEM)
Parallel changes in large-scale software development: an observational case study
ACM Transactions on Software Engineering and Methodology (TOSEM)
A State-of-the-Art Survey on Software Merging
IEEE Transactions on Software Engineering
ACM SIGSOFT Software Engineering Notes
Empirical Studies of Control Dependence Graph Size forC Programs
Empirical Software Engineering
Correct Program Slicing of Database Operations
IEEE Software
A New Approach to Version Control
IEEE Transactions on Software Engineering
Using Transformations in Specification-Based Prototyping
IEEE Transactions on Software Engineering
Comments on "Language Design for Program Manipulation"
IEEE Transactions on Software Engineering
Interprocedural Def-Use Associations for C Systems with Single Level Pointers
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
Region Analysis: A Parallel Elimination Method for Data Flow Analysis
IEEE Transactions on Software Engineering
Equivalence of conservative, free, linear program schemas is decidable
Theoretical Computer Science
Computational Divided Differencing and Divided-Difference Arithmetics
Higher-Order and Symbolic Computation
Program Slicing of Hardware Description Languages
CHARME '99 Proceedings of the 10th IFIP WG 10.5 Advanced Research Working Conference on Correct Hardware Design and Verification Methods
Software Configuration Management: State of the Art, State of the Practice
SCM-9 Proceedings of the 9th International Symposium on System Configuration Management
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
An Implementation of and Experiment with Semantic Differencing
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
A New Class Generation Mechanism by Method Integration
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Requirements interaction management
ACM Computing Surveys (CSUR)
XML three-way merge as a reconciliation engine for mobile data
Proceedings of the 3rd ACM international workshop on Data engineering for wireless and mobile access
Non-Standard Semantics for Program Slicing
Higher-Order and Symbolic Computation
Journal of Systems and Software
Guaranteed inconsistency avoidance during software evolution
Journal of Software Maintenance: Research and Practice
A three-way merge for XML documents
Proceedings of the 2004 ACM symposium on Document engineering
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
The Efficiency of Critical Slicing in Fault Localization
Software Quality Control
ConSUS: a light-weight program conditioner
Journal of Systems and Software - Special issue: Software reverse engineering
Impact of software engineering research on the practice of software configuration management
ACM Transactions on Software Engineering and Methodology (TOSEM)
Revision control system using delta script of syntax tree
Proceedings of the 12th international workshop on Software configuration management
Aristotle: a system for development of program analysis based tools
ACM-SE 33 Proceedings of the 33rd annual on Southeast regional conference
Proceedings of the 2006 international workshop on Global integrated model management
J&: nested intersection for scalable software composition
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
A formalisation of the relationship between forms of program slicing
Science of Computer Programming - Special issue on source code analysis and manipulation (SCAM 2005)
Theoretical foundations of dynamic program slicing
Theoretical Computer Science
Interprocedural slicing of multithreaded programs with applications to Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
An empirical study of static program slice size
ACM Transactions on Software Engineering and Methodology (TOSEM)
Equivalence of linear, free, liberal, structured program schemas is decidable in polynomial time
Theoretical Computer Science
Interprocedural definition-use chains of dynamic pointer-linked data structures
Scientific Programming
An update calculus for expressing type-safe program updates
Science of Computer Programming
Change-Merging Of Psdl Abstract Data Types
Journal of Integrated Design & Process Science
Empirical study of optimization techniques for massive slicing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data dependencies and program slicing: from syntax to abstract semantics
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Using computing-all-slices algorithm in measuring functional cohesion
SE'07 Proceedings of the 25th conference on IASTED International Multi-Conference: Software Engineering
An efficient algorithm for computing all program static slices
SEPADS'05 Proceedings of the 4th WSEAS International Conference on Software Engineering, Parallel & Distributed Systems
Merging Hierarchically-Structured Documents in Workflow Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Customization change impact analysis for erp professionals via program slicing
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Locating dependence structures using search-based slicing
Information and Software Technology
Dimensions of tools for detecting software conflicts
Proceedings of the 2008 international workshop on Recommendation systems for software engineering
SCA: a semantic conflict analyzer for parallel changes
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Dependence clusters in source code
ACM Transactions on Programming Languages and Systems (TOPLAS)
Slicing-based test case generation from UML activity diagrams
ACM SIGSOFT Software Engineering Notes
Slicing for architectural analysis
Science of Computer Programming
Dependence condition graph for semantics-based abstract program slicing
Proceedings of the Tenth Workshop on Language Descriptions, Tools and Applications
Field-sensitive program dependence analysis
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Proactive detection of collaboration conflicts
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Crystal: precise and unobtrusive conflict warnings
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Weak Alphabet Merging of Partial Behavior Models
ACM Transactions on Software Engineering and Methodology (TOSEM)
A fast static analysis approach to detect exploit code inside network flows
RAID'05 Proceedings of the 8th international conference on Recent Advances in Intrusion Detection
Properties of behavioural model merging
FM'06 Proceedings of the 14th international conference on Formal Methods
Extracting client-side web application code
Proceedings of the 21st international conference on World Wide Web
Efficient and flexible GUI test execution via test merging
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Analyzing program dependencies for malware detection
Proceedings of ACM SIGPLAN on Program Protection and Reverse Engineering Workshop 2014
Hi-index | 0.00 |
The need to integrate several versions of a program into a common one arises frequently, but it is a tedious and time consuming task to integrate programs by hand. To date, the only available tools for assisting with program integration are variants of text-based differential file comparators; these are of limited utility because one has no guarantees about how the program that is the product of an integration behaves compared to the programs that were integrated.This paper concerns the design of a semantics-based tool for automatically integrating program versions. The main contribution of the paper is an algorithm that takes as input three programs A, B, and Base, where A and B are two variants of Base. Whenever the changes made to Base to create A and B do not “interfere” (in a sense defined in the paper), the algorithm produces a program M that integrates A and B. The algorithm is predicated on the assumption that differences in the behavior of the variant programs from that of Base, rather than differences in the text, are significant and must be preserved in M. Although it is undecidable whether a program modification actually leads to such a difference, it is possible to determine a safe approximation by comparing each of the variants with Base. To determine this information, the integration algorithm employs a program representation that is similar (although not identical) to the dependence graphs that have been used previously in vectorizing and parallelizing compilers. The algorithm also makes use of the notion of a program slice to find just those statements of a program that determine the values of potentially affected variables.The program-integration problem has not been formalized previously. It should be noted, however, that the integration problem examined here is a greatly simplified one; in particular, we assume that expressions contain only scalar variables and constants, and that the only statements used in programs are assignment statements, conditional statements, and while-loops.