Software development is considered among the most complex activities carried out by man. The steady growth of software systems’ size, the increasing role software is playing in safety critical applications, and the speed at which technology and software change are some of the causes frequently mentioned to support the above claim. Although techniques and tools to build software have improved considerably in the last 60 years, a proper development process and a sound project management are and will remain the top reasons software projects fail or succeed.
Software project managers share many of the goals of project managers in other domains, namely, ensuring an appropriate quality of the end product, while, at the same time, keeping under control all the other project variables, like time and costs. Different from other domains, however, software has specific characteristics, such as invisibility, complexity, and flexibility (in its application and production means), that call for specific management techniques.
This book is an introduction to the area of software project management. After a presentation of the main definitions and concepts, the book is organized in two main parts.
The first part overviews the technical activities for developing software (Chapter 2) and techniques for managing projects (Chapter 3, Chapter 4, Chapter 5 and Chapter 6). The goal is providing the basic building blocks and the techniques to mitigate the complexity of software development and control the uncertainty of projects.
The second part of the book organizes the technical activities in a coherent process and shows how this process is customized in practice to fit common software-development scenarios (Chapter 7). An analysis of existing development and management frameworks (Chapter 8) and a discussion about how to setup a tool infrastructure to manage projects (Chapter 9) close the book.
In recent years, I have found myself mixing traditional and agile techniques more often, using traditional techniques for planning and developing some of the software components with agile methodologies and iterative processes. This book, thus, presents both techniques. It tries to do so in a manner to favor some freedom and creativity in assembling the process which best fits one’s needs.
Accompanying this text is a web site (http://www.spmbook.com) that provides teaching material for instructors and additional reference material for students.
I hope you enjoy the textbook and web site!
18.220.191.227