As well as documenting your software, don't forget to test it!
There are various ways of testing software. In many development processes unit testing is part of the development tasks. Unit testing allows new software functionality to be tested while it is in the development phase. This makes it much easier to release software updates since many of the common bugs will hopefully have been ironed out at the unit testing stage. To get the most out of unit testing, it is better to use development tools that allow software to be constructed in a modular basis. Development environments such as Visual Studio and the .NET Framework are especially good at this since they allow class based development so that software can be broken down into individual components.
Real human testers are often used when testing software. Software developers and programmers usually hate testing software, so it's usually better to have a separate testing team. This testing team will also be able to do the kind of testing processes that developers who are familiar with the software may overlook. As well as in house testing teams, it is quite usual to outsource software testing to a a third party software testing business.