.. .. Transactional-changes,

.. .. Implementing-ptm,

, Using PTm to safely apply changes

, 101 7.5.2 Validation 2: Detection of Custom Migration Needing, p.102

.. .. Conclusion,

.. .. Transactional-changes,

.. .. Implementing-ptm,

, Using PTm to safely apply changes

.. .. Conclusion,

S. Adam and U. Schultz, Towards interactive, incremental programming of ros nodes, 2014.

. Atom, , p.26

J. Buisson, E. Calvacante, F. Dagnat, E. Leroux, and S. Martinez, Coqcots & pycots: Nonstopping components for safe dynamic reconfiguration, Proceedings of the 17th International ACM Sigsoft Symposium on Component-based Software Engineering, CBSE '14, p.27, 2014.

G. Bavota, A. D. Lucia, M. Di-penta, R. Oliveto, and F. Palomba, An experimental investigation on the innate relationship between quality and refactoring, Journal of Systems and Software, vol.107, pp.1-14, 2015.

A. P. Black, S. Ducasse, O. Nierstrasz, D. Pollet, D. Cassou et al., Pharo by Example. Square Bracket Associates, 2009.

A. Bergel, S. Ducasse, O. Nierstrasz, and R. Wuyts, Stateful traits, Advances in Smalltalk -Proceedings of 14th International Smalltalk Conference (ISC'06), vol.4406, p.57, 2007.
DOI : 10.1007/978-3-540-71836-9_4

URL : https://hal.archives-ouvertes.fr/hal-02109190

S. Burckhardt, M. Fahndrich, S. Peli-de-halleux, M. Mcdirmid, N. Moskal et al., It's alive! continuous feedback in ui programming, In ACM SIGPLAN Notices, vol.48, issue.2, pp.95-104, 2013.

S. Bragagnolo, . Fabresse, P. Laval, N. Estefó, and . Bouraqadi, Pharos: a ros client for the pharo language, 2014.

G. Bracha, On the interaction of method lookup and scope with inheritance and nesting, 3rd ECOOP Workshop on Dynamic Languages and Applications, p.72, 2007.

G. Bracha, Newspeak programming language draft specification version 0.06, p.72, 2010.

M. Campusano and J. Fabry, Live robot programming: The language, its implementation, and robot api independence, Science of Computer Programming, vol.133, pp.1-19, 2017.

W. Cazzola and M. Jalili, Dodging unsafe update points in java dynamic software updating systems, Software Reliability Engineering (ISSRE), p.27, 2016.

A. Chi?, O. Nierstrasz, A. Syrel, and T. Gîrba, The moldable inspector, 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!), Onward! 2015, pp.44-60, 2015.

G. Casaccio, D. Pollet, M. Denker, and S. Ducasse, Object spaces for safe image surgery, Proceedings of ESUG International Workshop on Smalltalk Technologies (IWST'09), vol.92, pp.77-81, 2009.
URL : https://hal.archives-ouvertes.fr/inria-00531046

F. David and . Javascript, The Definitive Guide. O'Reilly Media, Inc, 2006.

M. Dias, D. Cassou, and S. Ducasse, Representing code history with development environment events, IWST'13: International Workshop on Smalltalk Technologies, p.36, 2013.
URL : https://hal.archives-ouvertes.fr/hal-00862626

S. Demeyer, S. Ducasse, and O. Nierstrasz, Object-Oriented Reengineering Patterns, 2002.

M. Denker, T. Gîrba, A. Lienhard, O. Nierstrasz, L. Renggli et al., Encapsulating and exploiting change with Changeboxes, Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), vol.92, pp.25-49, 2007.
DOI : 10.1145/1352678.1352681

URL : https://hal.archives-ouvertes.fr/inria-00555780

C. Dony and . Huchard, Automatic hierarchies reorganization: an algorithm and case studies with overloadBibliography 119

, Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, S, pp.151-176, 1996.

D. Dig and R. Johnson, The role of refactorings in API evolution, Proceedings of 21st International Conference on Software Maintenance (ICSM 2005), pp.389-398, 2005.

S. Demeyer, F. Van-rysselberghe, T. Gîrba, J. Ratzinger, R. Marinescu et al., The LAN-simulation: A research and teaching example for refactoring, Proceedings of IWPSE 2005 (8th International Workshop on Principles of Software Evolution), pp.123-131, 2005.

. Firebug,

M. Fowler, Refactoring: improving the design of existing code, 1999.

A. Raundahl-gregersen, B. N. Jørgensen, and K. Koskimies, Javeleon: An integrated platform for dynamic software updating and its application in self-* systems, Engineering and Technology (S-CET), 2012 Spring Congress on, p.22, 2012.

A. Goldberg and D. Robson, Smalltalk 80: the Language and its Implementation, 1983.

C. Hancock, Real-time programming and the big ideas of computational literacy, Massachusetts Institute of Technology, 2003.

M. Hicks and S. Nettles, Dynamic software updating, ACM Transactions on Programming Languages and Systems, vol.27, issue.6, pp.1049-1096, 2005.

M. Christopher, I. Hayden, and . Neamtiu,

, ACM SIGOPS Operating Systems Review, vol.46, issue.1, p.13, 2012.

G. Kiczales, J. Des-rivières, and D. G. Bobrow, The Art of the Metaobject Protocol, 1991.

J. Koskinen, H. Lahtonen, and T. Tilus, Software maintenance cost estimation and modernization support, ELTIS-project, 2003.

J. Kramer and J. Magee, Dynamic configuration for distributed systems, IEEE Trans. Softw. Eng, vol.11, issue.4, p.28, 1985.

G. Kiczales and L. Rodriguez, Efficient method dispatch in pcl, Proceedings of ACM conference on Lisp and Functional Programming, p.24, 1990.

M. Kim, T. Zimmermann, and N. Nagappan, A field study of refactoring challenges and benefits, Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, vol.77, p.50, 2012.

M. Kim, T. Zimmermann, and N. Nagappan, An empirical study of refactoringchallenges and benefits at microsoft, IEEE Transactions on Software Engineering, vol.40, issue.7, pp.633-649, 2014.

M. Lehman and L. Belady, Program Evolution: Processes of Software Change, 1985.

J. Lincke and R. Hirschfeld, Scoping changes in selfsupporting development environments using context-oriented programming, Proceedings of the International Workshop on Context-Oriented Programming, vol.92, 2012.

J. Lim, Live programming for robotic fabrication, Journal of Professional Communication, vol.3, issue.2, 2014.

P. Maes, Concepts and experiments in computational reflection, Proceedings OOPSLA '87, vol.22, pp.147-155, 1987.

K. Makris, A. Rida, and . Bazzi, Immediate multi-threaded dynamic software updates using stack reconstruction, USENIX Annual Technical Conference, p.27, 2009.

E. Miranda and C. Béra, A partial read barrier for efficient support of live object-oriented programming, International Symposium on Memory Management (ISMM '15), vol.64, pp.93-104, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01152610

S. Mcdirmid, Living it up with a live programming language, SIGPLAN Not, vol.42, issue.10, pp.623-638, 2007.

S. Martinez, D. Fabien, and J. Buisson, Pymoult : On-Line Updates for Python Programs, ICSEA 2015 : 10th International Conference on Software Engineering Advances, pp.80-85, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01247603

J. Malenfant, C. Dony, and P. Cointe, Behavioral Reflection in a prototype-based language, Proceedings of Int'l Workshop on Reflection and Meta-Level Architectures, pp.143-153, 1992.

E. Murphy-hill, C. Parnin, and A. Black, How we refactor, and how we know it, IEEE Transactions on Software Engineering, vol.38, issue.1, p.77, 2012.

S. Magill, M. Hicks, S. Subramanian, and K. S. Mckinley, Automating object transformations for dynamic software updating, Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '12, p.27, 2012.

J. Malenfant, M. Jacques, and F. Demers, A tutorial on behavioral reflection and its implementation, Proceedings of Reflection, pp.1-20, 1996.

E. Miedes, D. Francesc, and . Munoz-esco?, Dynamic software update, vol.49, 2012.

T. Mattis, P. Rein, and R. Hirschfeld, Edit transactions: Dynamically scoped change sets for controlled updates Bibliography in live programming. The Art, Science, and Engineering of Programming, vol.1, 2017.

T. Mens and T. Tourwé, A survey of software refactoring, IEEE Transaction on Software Engineering, vol.30, issue.2, pp.126-139, 2004.

S. Negara, N. Chen, M. Vakilian, and E. Ralph, Johnson, and Danny Dig. A comparative study of manual and automated refactorings, 27th European Conference on ObjectOriented Programming, p.77, 2013.

I. Neamtiu and M. Hicks, Safe and timely updates to multi-threaded programs, Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '09, vol.46, pp.13-24, 2009.

. Nodemon,

P. Oreizy, N. Medvidovic, and R. N. Taylor, Architecture-based runtime software evolution, Proceedings of the 20th International Conference on Software Engineering, ICSE '98, p.28, 1998.

A. Orso, A. Rao, and M. J. Harrold, A technique for dynamic updating of java software, Proceedings. International Conference on, p.20, 2002.

F. Plasil, D. Balek, and R. Janecek, Sofa/dcup: architecture for component trading and dynamic updating, Proceedings. Fourth International Conference on Configurable Distributed Systems (Cat. No.98EX159), p.28, 1998.

L. Pina and J. Cachopo, Dust'm-dynamic upgrades using software transactional memory, p.21, 2011.

G. Polito, S. Ducasse, L. Fabresse, N. Bouraqadi, and B. Van-ryseghem, Bootstrapping reflective systems: The case of pharo. Science of Computer Programming, p.72, 2014.
URL : https://hal.archives-ouvertes.fr/hal-00903724

G. Polito, S. Ducasse, L. Fabresse, N. Bouraqadi, and M. Mattone, Virtualization support for dyBibliography 123

, namic core library update, Onward! 2015, 2015.

G. Polito, S. Ducasse, L. Fabresse, and N. Bouraqadi, A bootstrapping infrastructure to build and extend pharo-like languages, vol.72, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01185812

L. Pina and M. Hicks, Rubah: Efficient, generalpurpose dynamic software updating for java, HotSWUp, 2013

L. Pina and M. Hicks, Tedsuto: A general framework for testing dynamic software updates, Software Testing, Verification and Validation, p.28, 2016.

M. Pukall, C. Kästner, W. Cazzola, S. Götz, A. Grebhahn et al., Javadaptor-flexible runtime updates of java applications. Software: Practice and Experience, vol.43, pp.153-185, 2013.

D. , J. Penney, and J. Stein, Class modification in the gemstone object-oriented DBMS, Proceedings OOPSLA '87, vol.22, pp.111-117, 1987.

D. Roberts, J. Brant, and R. E. Johnson, A refactoring tool for Smalltalk, Theory and Practice of Object Systems (TAPOS), vol.3, issue.4, pp.253-263, 1997.

D. Roberts, J. Brant, R. E. Johnson, and B. Opdyke, An automated refactoring tool, Proceedings of ICAST '96, 1996.

J. Ressia, T. Gîrba, O. Nierstrasz, F. Perin, and L. Renggli, Talents: an environment for dynamically composing units of reuse. Software: Practice and Experience, p.57, 2012.

F. Rivard, Pour un lien d'instanciation dynamique dans les langages à classes, JFLA96. INRIA -collection didactique, 1996.

F. Rivard, Smalltalk: a reflective language, Proceedings of REFLECTION '96, p.24, 1996.

D. Bradley-roberts, Practical Analysis for Refactoring, 1999.

H. Seifzadeh, H. Abolhassani, and M. Moshkenani, A survey of dynamic software updating, Journal of Software: Evolution and Process, vol.25, issue.5, p.19, 2013.

E. Sandewall, Programming in an interactive environment: The "lisp, experience. ACM Comput. Surv, vol.10, issue.1, pp.35-71, 1978.

S. Subramanian, M. Hicks, and K. S. Mckinley, Dynamic software updates: A vm-centric approach, SIGPLAN Not, vol.44, issue.6, pp.1-12, 2009.

B. Shneiderman, Direct manipulation: A step beyond programming languages, Computer, vol.16, issue.8, pp.57-69, 1983.

L. Guy and . Steele, Common Lisp The Language, 1990.

, The strongtalk type system for smalltalk, p.72

L. Steven and . Tanimoto, Viva: A visual language for image processing, Journal of Visual Languages & Computing, vol.1, issue.2, pp.127-139, 1990.

L. Tokuda and D. Batory, Evolving object-oriented designs with refactorings, Automated Software Engineering, vol.8, issue.1, p.72, 2001.

P. Tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse, Instance migration in dynamic software update, Workshop on Meta-Programming Techniques and Reflection, vol.94, 2016.
URL : https://hal.archives-ouvertes.fr/hal-01611600

[. Tpf-+-18a]-pablo-tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse, Implementing Modular Class-based Reuse Mechanisms on Top of a Single Inheritance VM, SAC 2018: Symposium on Applied Computing, p.57, 2018.

[. Tpf-+-18b]-pablo-tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse, Ptm: State-aware transactional live programming, IWST'18: International Workshop on Smalltalk Technologies, vol.114, 2018.

P. Tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse, Atomic dynamic software update for live programming environments, Journal of Object Technology, 2017.

[. Tpf-+-edb]-pablo-tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse, Preserving instance state during refactorings in live environments. Future Generation Computer Systems, vol.113, 2017.

D. Ungar and R. B. Smith, Self: The power of simplicity, Proceedings OOPSLA '87, vol.22, p.72, 1987.

M. Vakilian, N. Chen, S. Negara, B. P. Balaji-ambresh-rajkumar, R. E. Bailey et al., Use, disuse, and misuse of automated refactorings, Proceedings of the 34th International Conference on Software Engineering, ICSE '12, p.77, 2012.

E. Wernli, M. Lungu, and O. Nierstrasz, Incremental dynamic updates with first-class contexts, Journal of Object Technology, vol.12, issue.3, pp.1-1, 2013.

T. Würthinger, C. Wimmer, and L. Stadler, Dynamic code evolution for java, Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java, PPPJ '10, pp.10-19, 2010.

Z. Xing and E. Stroulia, Refactoring practice: How it is and how it should be supported-an eclipse case study, Software Maintenance, 2006. ICSM'06. 22nd IEEE International Conference on, pp.458-468, 2006.

]. [zer12 and . Zeroturnaround, What developers want: The end of application redeployes

P. Tesone, G. Polito, L. Fabresse, and N. Bouraqadi, Stéphane Ducasse. Accepted, The Journal of Object Technology, Special Issue META'16, 2018.

, Under Revision) Preserving Instance State during Refactorings in Live Environments

P. Tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse, Future Generation Computer Systems

, Conferences Implementing Modular Class-based Reuse Mechanisms on Top of a Single Inheritance VM

P. Tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse, Wollok: Language + IDE for a gentle and industry-aware introduction to OOP Nicolás Passerini, Twelfth Latin American Conference on Learning Technologies, p.2017, 2018.

G. Tesone, L. Polito, N. Fabresse, S. Bouraqadi, and . Ducasse, Instance Migration in Dynamic Software Update Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane 128 Appendix A, A.3 Workshops PTm: State-aware Transactional Live Programming Pablo, 2016.

, Wollok -Relearning How To Teach Object-Oriented Programming

J. Fernandes, N. Passerini, and P. Tesone, Congreso Nacional Argentino de Ingeniería Informática y Sistemas de Información, p.2015

, An extensible constraint-based type inference algorithm for object-oriented dynamic languages supporting blocks and generic types

N. Passerini, P. Tesone, S. Ducasse, J. Fernandes, R. D. Jesus et al., Enhancing Binding-based User Interfaces with Transaction Support Nicolás Passerini, International Workshops on Foundations of Object-Oriented Languages (FOOL 2013), 2013.

B. Listing, 3: Browsing Code and Instances

, For Validation 1, listing B.4 shows the code to apply and revert the application update. Once the application is updated (or reverted) the changes are seen in the instance inspectors and in the source code browser

B. Listing, Updating the Bench Application Even more, vol.4

, For Validation 2, listing B.5 shows the code to apply and revert the update

B. Listing, Updating the DSU itself, vol.5

, For Validation 3, listing B.6 shows the code to apply and revert the update in the OrderedCollection class, and in the class builder

B. Appendix, Instructions to Reproduce Validations and Benchmarks "Update Kernel libraries" ChatUpdate new updateKernel, Revert Kernel Libraries" ChatUpdate new revertUpdateKernel

B. Listing, to: 7) collect:[:e | 10 * * e]) collect:[:q | Stdio stdout << q asString. Stdio stdout << (q ?> (ChatUpdateMeter new testWith:q)) asString. Stdio stdout crlf, vol.6

. Smalltalk,

, ChatUpdateMeter >> testWith: numberOfInstances | user room duration | ChUser initialize

, ChUser registerUser: 'username' firstName: 'firstName' lastName: 'lastName'. room := ChRoom addRoom: 'roomName'. instances := OrderedCollection new: numberOfInstances. 1 to:numberOfInstances do:[:i | instances add:(i % 2 = 0 ifTrue

, The garbage collector runs many times to force the instances to move to the old space, self assert: instances size = numberOfInstances. duration := [ChatUpdate new updateV1ToV2] timeToRun