Introduction to the Team Software Process
The Team Software Process (TSP) details methods to guide the formation of software development teams, to motivate their work, and to enhance their productivity.
The book describes an introductory version of TSP, ideal for smaller projects but also useful for learning basic techniques and procedures that apply to other development projects.
Review By: Rozan C. Brown
09/11/2002
Watts Humphrey’s book provides a comprehensive overview of the software development process from an effective team perspective. As Humphrey states in the preface, the purpose of the book is “to provide a framework for using sound engineering methods while developing software” (p. xi). This textbook is designed for use as a one- or two-semester team course, with the Personal Software Process (PSP) considered a prerequisite. It is obvious that this book can be a useful tool in many different environments (team training, entry level software engineer work groups, a refresher course for anyone developing quality software products).
The structure of this text enables a reader to learn about particular topics (e.g., Designing with Teams, Quality/Process Manager Role, Being on a Team), but apparently provides the most value when worked in a series of learning situations as a team. Part 1 of the book includes an overview of the Team Software Process and a discussion about the importance of teaming. Part 2 is a series of eight chapters, each focused on one phase of a software development project (Launching a Team Project, The Development Strategy, The Development Plan, Defining the Requirements, Designing with Teams, Product Implementation, Integration and System Testing, The Postmortem). Each chapter includes entry criteria, a description of activities/processes, and exit criteria. Part 3 describes the major team roles, Part 4 includes suggestions for making good use of the TSPi. The seven appendices include an excellent variety of scripts, templates, and procedure descriptions.
The book brings together many of the concepts, good practices, and quality approaches that characterize a truly mature software development process and team. Experience indicates, however, that many teams do not effectively utilize these processes in real-world development shops. The concept of a structured learning exercise that balances accomplishment of tasks with the “softer” skills of teamwork is a powerful one, especially if used as new engineers begin to build a career-long perspective to software development. Many managers have anecdotal evidence to support Humphrey’s claim that most engineers learn to develop programs individually, with team interaction as a new paradigm for entry-level engineers. This text can provide a very useful approach to encouraging and developing strong teaming skills.
Although Humphrey considers the PSP a prerequisite for the course and seems to indicate that the best use would be in a structured course environment, this book could also be used effectively with existing teams as structured processes are introduced in a commercial environment. It also provides an excellent review of foundational concepts, brings focus to the critical aspect of planning, and provides detailed scripts that could be useful for experienced team members.
The text is very readable. It encourages self-assessment of the individual’s commitment to personal excellence, self-awareness, and the importance of group accomplishment in an effective teamwork environment. Balancing that focus is the more statistical, measurement-oriented TSPi framework