Software development can be an expensive and time consuming endeavor, for both the client and the developers. Many hours can be expended, and significant monies invested, during the course of the project. It is therefore imperative that the software development agreement clearly state the code specs and development timeline, including mileposts to adequately measure progress, and appropriate testing procedures to assess functionality and solve coding errors. A thorough and detailed agreement is essential to prevent misunderstandings as to the scope of the project, the project timeline and program specifications. The agreement may also contain provisions regarding training of client personnel on use of the software.