If you have a software loaded using a library (for instance Glibc), then you upgrade the Glibc package, only the file on disk is updated, and only the application newly created will use this new file.
Linux do not provide re-loading current tasks with the new libraries; during the time in between the library is upgraded and all the old users of the old library have disappered, the library file is twice is memory - and old programs will still contain bugs of the old library.
Debian seems to be good at restarting services when their dependancies are upgraded, but I am not sure they handle things like Glibc upgrade.
That is why booting from scratch is needed from times to times.