img
img
img

Press Operating Committee

Chair

Linda Shafer
former Director, Software Quality Institute
The University of Texas at Austin

Editor-in-Chief

Alan Clements
Professor
University of Teesside

Board Members

David Anderson, Principal Lecturer, University of Portsmouth
Mark J. Christensen, Independent Consultant
James Conrad, Associate Professor, UNC Charlotte
Michael G. Hinchey, Director, Software Engineering Laboratory, NASA Goddard Space Flight Center
Phillip Laplante, Associate Professor, Software Engineering, Penn State University
Richard Thayer, Professor Emeritus, California State University, Sacramento
Donald F. Shafer, Chief Technology Officer, Athens Group, Inc.
Evan Butterfield, Director of Products and Services
Kate Guillemette,Product Development Editor, CS Press

MANAGING AND LEADING SOFTWARE PROJECTS

RICHARD E. (DICK) FAIRLEY

Title Page

PREFACE

Too often those who develop and modify software and those who manage software development are like trains traveling different routes to a common destination. The managers want to arrive at the customer ‘s station with an acceptable product, on schedule and within budget. The developers want to deliver to the users a trainload of features and quality attributes; they will delay the time of arrival to do so, if allowed. Sometimes the two trains appear to be on the same schedule, but often one surges ahead only to be sidetracked by traffic of higher priority while the other chugs onward. One or both may be unexpectedly rerouted, making it difficult to rendezvous en route and at the final destination.

Managers traveling on their train often wonder why programmers cannot just write the code that needs to be written, correctly and completely, and deliver it when it is needed. Software developers traveling on their train wonder what their managers do all day. This text provides the insights, methods, tools, and techniques needed to keep both trains moving in unison through their signals and switches and, better yet, shows how they can combine their engines and freight to form a single express train running on a pair of rails, one technical, the other managerial.

By reading this text and working through the exercises, students, software developers, project managers, and prospective managers will learn why

managing a large computer programming project is like managing any other large undertaking—in more ways than most programmers believe. But in many ways it is different—in more ways than most professional managers expect.1

Readers will learn how software projects differ from other kinds of projects (i.e., construction, agricultural, manufacturing, administrative, and traditional engineering projects), and they will learn how the methods and techniques of project management must be modified and adapted for software projects.

Those who are, or will become managers of software projects, will acquire the methods, tools, and techniques needed to effectively manage software projects, both large and small. Software developers, both neophyte student and journeyman/jour- neywoman professional, will gain an increased understanding of what managers do, or should be doing all day and why managers ask them to do the things they ask/ demand. These readers will gain the knowledge they need to become project managers. Those students and software developers who have no desire to become project managers will benefit by gaining an increased understanding of what those other folks do all day and why the seemingly extraneous things they, the developers, are asked to do are important to the success of their projects.

This text is intended as a textbook for upper division undergraduates and graduate students as well as for software practitioners and current and prospective software project managers. Exercises are included in each chapter. Practical hints and guidelines are included throughout the text, thus making it suitable for industrial short courses and for self-study by practitioners and managers.

Chapters 1 through 3 provide the context for the remainder of the text: Chapter 1 provides an introduction to software project management; Chapter 2 covers process models for developing software-intensive systems; Chapter 3 is concerned with establishing the product foundations for software projects.

Chapters 4 through 10 cover the four primary activities of software project management:

Chapter 11 covers organizational issues and concludes the text with a summary of 15 guidelines for organizing and leading software engineering teams.

For each topic covered, the approach taken is to present the full scope of activities for the largest and most complex projects and to show how those activities can be tailored, adapted, and scaled to fit the needs of projects of various sizes and complexities.

Learning objectives are presented at the beginning of each chapter and each concludes with a summary of key points from the chapter. Occasional sidebars elaborate the material at hand. An appendix to each chapter relates the topics covered in that chapter to four leading sources of information concerning management of software projects:

  1. CMMI-DEV-v1.2 process framework
  2. ISO/IEC and IEEE/EIA Standards 12207
  3. IEEE/EIA Standard 1058
  4. PMI’s Body of Knowledge (PMBOK®)

The text is consistent with the guidelines contained in PMBOK and ACM/IEEE curriculum recommendations.

Presentation slides, document templates, and other supporting material for the text and for term projects are available at the following URL: computer.org/book_extras/fairley_software_projects

Terms used throughout this text are defined in the Glossary at the end of the text. Topics, schedule, and a template for term projects follow the Glossary and included are some hypothetical projects that can be used as the basis for term projects in a course or as examples that practitioners and managers can use to gain experience in preparing software project management plans. Schedule and templates for deliverables for the hypothetic projects are also provided; electronic copies of templates and some software tools are provided at the URL previously cited. Alternatively, practitioners and managers can apply the templates and tools to a past, present, or future project.

A continued example for planning and conducting a project to build the software element of an automated teller system is presented to motivate and explain the material contained in each chapter.

As is well known, one learns best by doing. I strongly recommended that the exercises at the end of each chapter be completed and that progress through the material be accompanied by an extended exercise (i.e., a term project) to develop some elements a project plan for a real or hypothetical software project. The planning exercise can be based on an actual project that the reader has been, is currently, or will be involve in; or it can be based on one of the hypotheticals at the end of the text; or it can be based on a project assigned by the instructor. A week-by-week schedule for completing the term project on a quarter or semester basis is provided. Completion of the planning exercise will result in a report that contains elements similar to those presented in IEEE/EIA Standard 1058 for software project management plans.

The material can be presented in reading/lecture/discussion format or by assigned readings followed by classroom or on-l ine discussions based on the exercises and the term project.

I am indebted to the pioneers who surveyed the terrain, prepared the roadbed, laid down the tracks, and drove the golden spike so that our project trains can proceed to their destinations. Those pioneers include Fred Brooks, the intellectual father of us all; Winston Royce, who showed us systematic approaches to software development and management of software projects; Barry Boehm, who was the first to address issues of software engineering economics, risk management, and so much more; Tom DeMarco, the master tactician of software development, project management, and peopleware; and the many others who prepared the way for this text. I accept responsibility for any misinterpretations or misstatements of their work. My apologies to those I have failed to credit in the text, either through ignorance or oversight.

Thanks to Mary Jane Fairley, Linda Shafer, and the other reviewers of the manuscript for taking the time to read it and for the many insightful comments they offered. Special thanks to the many students to whom I have presented this material and from whom I have learned as much as they have learned from me.

Teller County, Colorado

RICHARD E.(DICK) FAIRLEY