What you're describing is trivially done on any *nix system with a mature package manager, if it isn't doing this already:
1. Do the upgrade, this changes the files.
2. You have a log of what packages got upgraded.
3. Run the package system's introspection commands to see what files belonged to that package before & after
4. Run the package system's introspection commands to see what reverse depends on those packages, or use the lsof trick mentioned upthread.
5. For each of those things restart any running instance of the application / daemon.
Even if something didn't implement this already (most mature systems to) this is at most a rather trivial 30 line shellscript.