Abstract
Programmers make many changes to the program to eventually find a good solution for a given task. In this course of change, every intermediate development state can of value, when, for example, a promising ideas suddenly turn out inappropriate or the interplay of objects turns out more complex than initially expected before making changes. Programmers would benefit from tool support that provides immediate access to source code and run-time of previous development states of interest. We present IDE extensions, implemented for Squeak/Smalltalk, to preserve, retrieve, and work with this information. With such tool support, programmers can work without worries because they can rely on tools that help them with whatever their explorations will reveal. They no longer have to follow certain best practices only to avoid undesired consequences of hanging code.
- Apache2003SVN Best Practice. Subversion best practices, 2009. URL http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html.Google Scholar
- C. Beck, Kent and. Andres. Extreme Programming Explained: Embrace Change. Addison-Wesley Longman, 2004. ISBN 978-0321278654. Google Scholar
Digital Library
- M. Denker, T. G1rba, A. Lienhard, O. Nierstrasz, L. Renggli, and P. Zumkehr. Encapsulating and exploiting change with Changeboxes. In ICDL'07: International Conference on Dynamic Languages, 2007. ISBN 978-1-60558-084-5. doi: 10.1145/1352678.1352681. Google Scholar
Digital Library
- P. Ebraert, J. Vallejos, P. Costanza, E. Van Paesschen, and T. D'Hondt. Change-oriented software engineering. In Proceedings of the 2007 International Conference on Dynamic languages: In Conjunction with the 15th International Smalltalk Joint Conference 2007, pages 3--24. ACM, 2007. Google Scholar
Digital Library
- M. Fowler. Refactoring: improving the design of existing code. Addison-Wesley Professional, 1999. Google Scholar
Digital Library
- M. Fowler. Continuous integration, 2006. URL http://www.martinfowler.com/articles/continuousIntegration.html.Google Scholar
- G. Goldschmidt. The dialectics of sketching. Creativity Research Journal, 4(2), 1991.Google Scholar
Cross Ref
- B. Hartmann, L. Yu, A. Allison, Y. Yang, and S. R. Klemmer. Design as exploration: creating interface alternatives through parallel authoring and runtime tuning. In Symposium on User interface software and technology, 2008. Google Scholar
Digital Library
- L. Hattori, M. D'Ambros, M. Lanza, and M. Lungu. Software evolution comprehension: Replay to the rescue. In ICPC 2011: Proceedings of the 1th IEEE International Conference on Program Comprehension, pages 161--170. IEEE Computer Society, 2011. Google Scholar
Digital Library
- D. Kirsh. Thinking with external representations. Ai & Society, 25(4): 441--454, 2010. Google Scholar
Digital Library
- J. Laval, S. Denier, S. Ducasse, and J.-R. Falleri. Supporting simul-taneous versions for software evolution assessment. Science of Computer Programming, 2010. Google Scholar
Digital Library
- Y.-K. Lim, E. Stolterman, and J. Tenenberg. The anatomy of pro-totypes: Prototypes as filters, prototypes as manifestations of design ideas. ACM Transactions on Computer-Human Interaction (TOCHI), 15(2), 2008. Google Scholar
Digital Library
- C. Okasaki. Purely functional data structures. Cambridge University Press, New York, NY, USA, 1998. ISBN 0-521-63124-6. Google Scholar
Digital Library
- J. Pelrine, A. Knight, and A. Cho. Mastering ENVY/Developer. Cambridge University Press, New York, NY, USA, 2001. ISBN 0-521-66650-3. Google Scholar
Digital Library
- R. Robbes and M. Lanza. A change-based approach to software evolution. Electronic Notes in Theoretical Computer Science, 166: 93--109, 2007. Google Scholar
Digital Library
- R. Robbes and R. Lanza. Characterizing and understanding development sessions. In ICPC 2007: Proceedings of the 15th IEEE International Conference on Program Comprehension}, pages 155--166. IEEE Computer Society, 2007 Google Scholar
Digital Library
- D. Saff and M. D. Ernst. Reducing wasted development time via continuous testing. In ISSRE'03: International Symposium on Software Reliability Engineering, 2003. Google Scholar
Digital Library
- B. Shneiderman and C. Plaisant. Designing the user interface: strategies for effective human-computer interaction. Pearson Addison Wesley, 5 edition, 2009. ISBN 978-0321601483.Google Scholar
- M. Suwa and B. Tversky. External representations contribute to the dynamic construction of ideas. In Diagrammatic Representation and Inference, volume 2317. Springer Berlin / Heidelberg, 2002. ISBN 978-3-540-43561-7. Google Scholar
Digital Library
- D. Thomas and K. Johnson. Orwell -- A configuration management system for team programming. In OOPSLA'88: International Conference on Object-Oriented Programming, Systems, Languages, and Applications, New York, NY, USA, 1988. ISBN 0--89791--284--5. Google Scholar
Digital Library
- A. Warth, Y. Ohshima, T. Kaehler, and A. Kay. Worlds: Controlling the scope of side effects. In ECOOP'11: Proceedings of the 25th European Conference on Object-Oriented Programming, pages 179--203, Lancaster, UK, 2011. Springer. 10.1007/978--3--642--22655--7_9. Google Scholar
Digital Library
Index Terms
CoExist: overcoming aversion to change
Recommendations
CoExist: overcoming aversion to change
DLS '12: Proceedings of the 8th symposium on Dynamic languagesProgrammers make many changes to the program to eventually find a good solution for a given task. In this course of change, every intermediate development state can of value, when, for example, a promising ideas suddenly turn out inappropriate or the ...
Opportunistic Programming: Writing Code to Prototype, Ideate, and Discover
Programmers often write code to prototype, ideate, and discover. To do this, they work opportunistically, emphasizing speed and ease of development over code robustness and maintainability. How do opportunistic programmers make these trade-offs, and how ...
F3: fault localization for field failures
ISSTA 2013: Proceedings of the 2013 International Symposium on Software Testing and AnalysisReproducing and debugging field failures--failures that occur on user machines after release--are challenging tasks for developers. To help the first task, in previous work we have proposed BugRedux, a technique for reproducing, in-house, failures ...







Comments