#Smalltalk and other #ImageBased #ComputerLanguages have a reputation for making software developed in them hard to upgrade. As far as I know, this has never been satisfactorily solved.
#Erlang, on the other hand, lets you upgrade modules "live", though they need to be made for it.
The persistent #LPMud implementation #DGD had hot code reloading built in: IIRC if you upgraded a class there was a command you could call to upgrade each instance of that class to use the new code.