I create a GUI tool to update system, it depends on the zypper and packagekit.
It supports offline update. When your update includes hundreds packages or even thousands packages, I highly recommend you to do the offline update, it will avoid the crash maximum extent possible when updating.
When doing offline update, first system does a restart, and then installs the packages, then does another restart.
Now this tool has some limitation, it can’t handle the conflict when doing the update, like vendor change and others. You need to use other tools to update when conflict happens.