Analyzing software development as a noncooperative game

A significant number of failures of software projects are widely attributed to poor requirements gathering and making various errors in specifications, choosing an incorrect architecture, following a wrong design and development model, and incurring significant cost in the maintenance stage. While these and other reasons are correct, they are based on an assumption that everyone involved in a software project is driven to make it successful and agrees on the goals and the methods of how to achieve that success. However, each team participant views the ultimate success of the project differently in terms of his/her personal goals. These different views may result in conflicting decisions by team participants that affect the overall success of the project. In this paper we analyze software projects as noncooperative games and show how to use the tools and techniques of game theory to uncover some hidden causes of failures of software projects and we suggest ways to fix them.