Software contracting is a multi-faceted issue that involves legal, economic, managerial, and technological considerations. To better understand the economic aspect of software contracting, this paper provides a summary review of software development contracts, followed by a game-theoretic model developed to incorporate incentive and information issues associated with software contracting. In the model, an outside contractor is hired to develop a software system over multiple periods. Due to the uncertainties about costs or technology, the developer faces the risk of having to abandon the project at an intermediate phase. The user is better informed of the benefit of the system, while the developer privately discovers the development costs as the project advances. Given the limited information, the contracting parties make decisions in their own interest, leaving each party vulnerable to the other’s opportunistic behavior. In this setting, we construct a viable contract that aligns the incentives of the contracting parties and produces the same equilibrium outcome as in in-house development. We also relate the implications of the model to the actual contract cases.