"I hope that's not too gloomy a view of software."
I wrote my first program on punch cards in the late 1970's. Today I do .NET development, SQL development, and SQL Administration. In my experience, I don't think the view that our programs will have bugs or may not work entirely as intended is too gloomy. I don't think that's an excuse to be lazy either. I just think it shows the maturity that's required to realize we're not perfect.
It's delusional to arrogantly deploy a solution and then walk away thinking it's perfect and will never need to be touched again.
As soon as we have perfect humans we can then start expecting perfect programs. It may be a long wait...
Until then, I think the best approach is test-driven-development with continuous integration. Continually adding and improving test cases is not lazy. It's a lot of work and there are many places that skip test cases thinking they don't need them. That's lazy.
Test-driven-development with continuous integration acknowledges our imperfections while still trying our best to deliver the highest quality possible.