They are sometimes not contract deliverables, but are nonetheless critical to the support and development efforts. There is often a large amount of overlap in functionality of these tools from phase to phase. In the examples given above, the same tool could be used during both the development phase and the support phase. This tool would enable both the development team and the support team to determine the current software load of the EC system and download new software as appropriate. Thus, if a different tool was developed during both of these phases a duplication of effort would occur that was both unnecessary and costly.
Software tools are often very complex and offer a lot of different options to the user.
This is because they often have to support a myriad of specifications related to the EC system. Thus, they often take a fair amount of time for a user to learn. Also, the more complex the software tool is, the higher the probability that there are errors or bugs in its operation. While documentation of a software tool is a necessity, the most common source of learning is usually another user. The more users there are of a software tool, the higher the amount of common knowledge.