Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program...
-
Upload
gwenda-delphia-carroll -
Category
Documents
-
view
219 -
download
0
Transcript of Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program...
![Page 1: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/1.jpg)
Reviewing Recent ICSE Proceedings For:
![Page 2: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/2.jpg)
Defining and Continuous Checking of Structural Program Dependencies
Automatic Inference of Structural Changes for Matching across Program Versions
SpyWare: a change-aware development toolset
An empirical study of software developers' management of dependencies and changes
Tracking Code Clones in Evolving Software
(ICSE 2008 & 2007)
![Page 3: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/3.jpg)
![Page 4: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/4.jpg)
Dependencies between program elements need to be modeled from different perspectives:• Architectural• Design• Implementation
Codify these different perspectives on the permitted dependencies in a software system
Detect violations continuously and incrementally as software evolves
![Page 5: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/5.jpg)
Proposes an approach that uses declarative queries to group source elements into overlapping ensembles
The dependencies between these ensembles are also specified as logic queries
The approach has been integrated into the incremental build process of Eclipse
Ensures continuous checking, using an engine for tabled and incremental evaluation of logic queries
![Page 6: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/6.jpg)
Constraints on structural dependencies:
• Constraints on dependencies between layers in a layered architecture (architectural level)
• Only factory classes can access constructors of product classes (design level)
• Field access only through getters and setters (implementation level)
Ensemble denotes any logical grouping of code elements affected by a structural dependency constraint to be expressed
![Page 7: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/7.jpg)
Module-centric visibility mechanisms supported by programming languages are insufficient for expressing constraints on structural dependencies
They lack two properties, that ensembles posess:• Ensembles can be defined orthogonal to the
module system of the implementation language
• Ensembles can share members
![Page 8: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/8.jpg)
![Page 9: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/9.jpg)
Motivation: change must be put in the center
SpyWare: a toolset which tracks the changes that a developer performs on a program as they happen
Stores these first-class changes in a repository
Offers the recorded information for possible productivity-enhancing IDE extensions
![Page 10: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/10.jpg)
Software must be continuously tailored to fit new or updated requirements
Historical information of software systems is useful for several applications:o CCVisu: Automatic Visual Software Decompositiono Finding common error patterns by mining software
revision historieso Mining Version Histories to Guide Software Changeso Mining Software Repositories for Traceability Links
![Page 11: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/11.jpg)
The evolutionary information mostly used suffers from several problems
SpyWare aims at capturing changes as they happen at the level of program entities
The tool chain monitors changes as they happen in the IDE to have a finer granularity of changes
Sequence of first-class change operations rather than a sequence of successive versions
![Page 12: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/12.jpg)
Features:
o Monitor developer activity as it happens in the IDE, using a monitoring plug-in
o Convert the changes of the program to first-class change operations
o Stores the changes in a repository for later useo Record higher-level changes such as refactoringso Generate part or the whole of the system at any
point in time
![Page 13: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/13.jpg)
Features:
o Access the change history of any package, class, instance variable, method, or statement defined in the system
o Show the differences between two states of the program, using color-coding to reflect the type of changes
o Measure the extent of changes using structural metrics and the type of changes that were performed
![Page 14: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/14.jpg)
Features:
o Visualize how the system was changed with metrics, graphs, and interactive visualizations
o Generalize concrete changes to the system to reusable program transformations
o Access all of its functionality from the IDE, rather than a stand-alone tool, to ease its usage
![Page 15: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/15.jpg)
Atomic
Composite
![Page 16: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/16.jpg)
o CreationCreates a node n for an entity of a given type t
o AdditionAdds a node n as a child of a given parent p
o RemovalRemoves a node n from the childs of its parent p
Atomic
![Page 17: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/17.jpg)
o Property changeChanges value v of property p of node n
o InsertionInserts node n at location m as a child of (method) parent p
o DeletionDeletes a node n from location m in the children of the given parent p
Atomic
![Page 18: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/18.jpg)
Atomic Composite
o Developer ActionA unit of change from a developer’s viewpoint
o RefactoringA behavior-preserving automatic code transformation
o Development SessionIt aggregates all changes done during a single development session
![Page 19: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/19.jpg)
View the history of a software system as the sum of change operations
Represent programs as domain specific entities rather than text files
Consider a software system as an evolving abstract syntax tree (AST)
Each AST entity has a change history containing all changes applied to it
![Page 20: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/20.jpg)
Change Operations represent the transition from one state of the evolving system to the next
They are executable: A change operation c applied to the state n of the program yields the state n+1 of the program
Atomic changes are, at the finest level, operations on the program’s AST
Atomic change operations are executable, and can be undone
![Page 21: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/21.jpg)
Representing the entire evolution of a system only by its atomic modifications is overwhelming
They abstract change operations into higher-level composite changes
Example: moving a class from package A to package B consists in removing it from A and adding it to B
The Change Repository: Changes are captured as they happen in the IDE and are stored in the repository
![Page 22: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/22.jpg)
The Launcher• The launcher allows us to load the model of a
system in the environment The Metric Graph
• It follows the evolution of one or more structural metrics on one or more projects
The Change List• Lists all the changes done to a part or the whole
system, in a hierarchy from sessions, ..., up to atomic changes
The View Browser• It shows the code of the system at a specific date
![Page 23: Reviewing Recent ICSE Proceedings For:. Defining and Continuous Checking of Structural Program Dependencies Automatic Inference of Structural Changes.](https://reader035.fdocuments.in/reader035/viewer/2022070410/56649eb35503460f94bba4e2/html5/thumbnails/23.jpg)