ABSTRACT
This paper presents a provenance-based approach for supporting undo and redo for software engineers. Writing software entails creating and reworking intricately intertwined software artifacts. After discovering a mistake in an earlier-completed task, a developer may wish to redo this task, but without undoing much of the work done since. Unfortunately, state-of-the-practice undo and redo mechanisms force the developer to manually redo the work completed since the mistake. This can cause considerable extra, often error-prone work.
We propose tracking the software engineering process provenance data, and using it to enable (1) undoing tasks by reverting the state of the process execution, (2) revisiting an old task while storing the provenance of undone tasks, and (3) automatically redoing those undone tasks that are consistent with the revision. Our case study of a developer performing a well-understood but complex refactoring demonstrates how our approach can greatly reduce the cost of mistakes made early but discovered late.
- J. E. Archer, Jr., R. Conway, and F. B. Schneider. User recovery and reversal in interactive systems. ACM TPLS, 6(1):1–19, 1984. Google ScholarDigital Library
- T. Berlage. A selective undo mechanism for graphical user interfaces based on command objects. ACM TCHI, 1(3):269–294, 1994. Google ScholarDigital Library
- M. Fowler and K. Beck. Refactoring: Improving the Design of Existing Code. Prentice Hall, 1999. Google ScholarDigital Library
- G. B. Leeman, Jr. A formal approach to undo operations in programming languages. ACM TPLS, 8(1):50–87, 1986. Google ScholarDigital Library
- B. Lerner, E. R. Boose, L. J. Osterweil, A. Ellison, and L. Clarke. Provenance and quality control in sensor networks. In EIM, 2011.Google Scholar
- J. R. Rhyne and C. G. Wolf. Tools for supporting the collaborative process. In UIST, pages 161–170, 1992. Google ScholarDigital Library
- G. Sironi. Practical PHP refactoring: Tease apart inheritance. http://css.dzone.com/articles/ practical-php-refactoring-47, 2012.Google Scholar
- A. Wise. Little-JIL 1.5 language report. Technical Report UM-CS-2006-51, U. of Massachusetts, Amherst, 2006.Google Scholar
- X. Zhao and L. J. Osterweil. An approach to modeling and supporting the rework process in refactoring. In ICSSP, pages 110–119, 2012.Google Scholar
Index Terms
- Supporting process undo and redo in software engineering decision making
Recommendations
Regional undo/redo techniques for large interactive surfaces
CHI '12: Proceedings of the SIGCHI Conference on Human Factors in Computing SystemsWhen multiple users are simultaneously sharing a workspace, it is not always clear what should happen when a user invokes an undo action. In this paper we explore different user interfaces for undo/redo for co-located collaborative workspaces, such as ...
Undo and Redo Support for Replicated Registers
PaPoC '24: Proceedings of the 11th Workshop on Principles and Practice of Consistency for Distributed DataUndo and redo functionality is ubiquitous in collaboration software. In single user settings, undo and redo are well understood. However, when multiple users edit a document, concurrency may arise, leading to a non-linear operation history. This renders ...
Supporting Undo and Redo for Replicated Registers in Collaborative Applications
Cooperative Design, Visualization, and EngineeringAbstractA collaborative application supporting eventual consistency may temporarily violate global invariant. Users may make mistakes. Undo and redo are a generic tool to restore global invariant and correct mistakes. A replicated register allows a ...
Comments