Building next generation systems that can not be stopped is an interesting challenge for industry.
Indded, when we need to replace current software for an upgrade or a bug fix, it is mandatory to stop the old running version, make the change and then restart the new version.
However, there are situations where a such process is either impossible or at least undesirable because of the costs resulting from a shutdown (e.g production line, robot on mars, ...).
We believe that software built with from the beginning the property to work indefinetly, will be by construction more robust to change, intrinsicly capable of evolution and more agile than traditional software.
Dynamic languages such as CLOS, Ruby, Python, and Pharo provide a support for updates that only involve code change.
Even if they are more advanced compared to other languages, their solutions ar mainly ad hoc and deserve being rethought.
We believe it is important to have a mechanism and an infrastructure that allow adaptive and safe software updates.
By "safe" we mean that this solution should support different conditions, such as a series of updates performed in the wrong sequence.
In such situations, instances of changed classes should migrate in a satisfactory fashion.
Safety also means verifying loaded changes.
This means that changes should be checked and possibly rejected if they make the system instable or if they introduce errors.
The questions we would like to target in this PhD are the following:
- What is a good inftrastructure to support a dynamic and reliable code update? Do we need to analyse changes?
- Does an infrastructure based on isolated environments is enough to ensure update safety? What atomicity level is required?
- Which meta-object protocol is required to migrate objets?
- Would it be interesting to have different version of a given class or package for the same software?
.D. Duggan. Type-based hot swapping of running modules. In Intl. Conf. on Functional Programming, pages 62–73, 2001.
. M. Denker, T. Gîrba, A. Lienhard, O. Nierstrasz, L. Renggli, and P. Zumkehr. Encapsulating and exploiting change with Changeboxes. In Proc. Int. Conference on Dynamic Languages, pages 25–49. ACM Digital Lib., 2007.
.M. Dmitriev. Safe Class and Data Evolution in Large and Long-Lived Java Applications. PhD thesis, University of Glasgow, 2001.
.M. Hicks and S. Nettles. Dynamic software updating. ACM Transactions on Programming Languages and Systems, 27(6):1049–1096, nov 2005.
.J. Kephart. Research challenges of autonomic computing. In ICSE 2005, pages 15–22, may 2005.
.G. Kniesel. Type-safe delegation for run-time component adaptation. In R. Guerraoui, editor, Proceedings ECOOP ’99, volume 1628 of LNCS, pages 351–366, Lisbon, Portugal, June 1999. Springer-Verlag.
.I. Neamtiu, M. W. Hicks, G. Stoyle, and M. Oriol. Practical dynamic software updating for c. In PLDI, pages 72–83, 2006.
.G Polito, Stéphane Ducasse, N Bouraqadi, L Fabresse, M Mattone. Virtualization Support for Dynamic Core Library Update. Onward!, Oct 2015, Pittsburg, USA.
. X. Ren, F. Shah, F. Tip, B. Ryder, and O. Chesley. Chianti: A tool for change impact analysis of Java programs. In Proceedings of OOPSLA 2004), pages 432–448, 2004.
You received this message because you are subscribed to the Google Groups "Smalltalk Research" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.