Supporting Process Undo and Redo in Software Engineering Decision Making
by Xiang Zhao, Yuriy Brun, Leon J. Osterweil
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.

Citation:
Xiang Zhao, Yuriy Brun, and Leon J. Osterweil, Supporting Process Undo and Redo in Software Engineering Decision Making, in Proceedings of the 8th International Conference on Software and System Process (ICSSP), 2013, pp. 56–60.
Related:
A previous version appeared as University of Massachusetts, Computer Science technical report UM-CS-2013-016
Bibtex:
@inproceedings{Zhao13ICSSP,
  author = {Xiang Zhao and Yuriy Brun and Leon J. Osterweil},
  title =
  {\href{http://people.cs.umass.edu/brun/pubs/pubs/Zhao13ICSSP.pdf}{Supporting
  Process Undo and Redo in Software Engineering Decision Making}},
  booktitle = {Proceedings of the 8th International Conference on Software and
  System Process (ICSSP)},
  venue = {ICSSP},
  address = {San Francisco, CA, USA},
  month = {May},
  date = {18--19},
  year = {2013},
  pages = {56--60},
  accept = {$\frac{6}{18} \approx 33\%$},
  doi = {10.1145/2486046.2486057},

  note = {A previous version appeared as University of Massachusetts,
  Computer Science technical report UM-CS-2013-016.
  \href{http://dx.doi.org/10.1145/2486046.2486057}{DOI:
  10.1145/2486046.2486057}},
  previous = {A previous version appeared as University of
  Massachusetts, Computer Science technical report UM-CS-2013-016},

  abstract = {<p>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.</p>
  
  <p>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.</p>},

  fundedBy = {NSF IIS-1239334, NSF CNS-1258588},
}