Often, deployment is an afterthought in the development process that can lead to nasty, if not costly, surprises, To avoid grief in deployment scenarios, the deployment process should be planned out during the initial design stage. Any special deployment considerations – such as server capacity, desktop security, or where assemblies will be loaded from – should be built into the design from the start, resulting in a much smoother deployment process.
Another issue that must be addressed early in the development process is the environment in which to test the deployment. Whereas unit testing of application code and of deployment options can be done on the developer’s system, the deployment must be tested in an environment, that resembles the target system. This is important to eliminate the dependencies that don’t exist on a targeted computer. An example of this might be a third-party library that has been installed on the developer’s computer early in the project. The target computer might not have this library on it. It can be easy to forget to include it in the deployment package. Testing on the developer’, system would not uncover the error because the binary already exists. Documenting dependencies can help in eliminating this potential problem.
Deployment processes can be very complex for a large application. Planning for the deployment can save time and effort when the deployment process is implemented.