Practical Software Process Improvement
DISCLAIMER OF WARRANTY The technical descriptions, procedures, and computer programs in this book have been developed with the greatest of care and they have been useful to the author in a broad range of applications; however, they are provided as is, without warranty of any kind. Artech House, Inc., and the author and editors of the book titled Practical Software Process Improvement make no warranties, expressed or implied, that the equations, programs, and procedures in this book or its associated software are free of error, or are consistent with any particular standard of merchantability, or will meet your requirements for any particular application. They should not be relied upon for solving a problem whose incorrect solution could result in injury to a person or loss of property. Any use of the programs or procedures in such a manner is at the user’s own risk. The editors, author, and publisher disclaim all liability for direct, incidental, or consequent damages resulting from use of the programs or procedures in this book or the associated software.
For a listing of recent titles in the Artech House Computer Library, turn to the back of this book.
Practical Software Process Improvement Robert Fantina
artechhouse.com
Library of Congress Cataloging-in-Publication Data A catalog record for this book is available from the U.S. Library of Congress.
British Library Cataloguing in Publication Data Fantina, Robert Practical software process improvement.—(Artech House computing library) 1. Computer software—Development—Management I. Title 005.1’068 ISBN 1-58053-959-9 Cover design by Igor Valdman
© 2005 ARTECH HOUSE, INC. 685 Canton Street Norwood, MA 02062 International Standard Book Number: 1-58053-959-9
10 9 8 7 6 5 4 3 2 1
To Edwina and Travis
Contents
1 Introduction. . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Beginning . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Format and Use of this Book . . . . . . . . . . . . . . . . 4 1.3 The Assessment . . . . . . . . . . . . . . . . . . . . . . 8 Reference 11
2 Software Requirements Management/Requirements Management. . . . . . . . . . . . . . . . . . . . . . 13 2.1 Gap Analysis for Requirements Management . . . . . . . 2.1.1 Responsibility for Requirements Is Assigned . . . . . . 2.1.2 Requirements Are Created on a Standard Template for Ease of Documentation . . . . . . . . . . . . . . . 2.1.3 The Requirements Document Is Baselined . . . . . . . 2.1.4 Changes to the Requirements Document Are Reviewed and Incorporated into the Software Project . . . . . . . . . 2.2 Requirements Management Flowchart . . . . . . . . . .
. . 14 . . 17 . . 18 . . 19 . . 19 . . 22
vii
viii
Practical Software Process Improvement
2.3 Software Requirements Management/Requirements Management Checklist . . . . . . . . . . . . . . . . . . 22 Selected Bibliography 24 References 25
3 Software Project Planning/Project Planning . . . . . . 27 3.1 Gap Analysis for Software Project Planning/Project Planning . . 3.1.1 A Documented Procedure for Assigning Project Planning Responsibility Is Established . . . . . . . . . . . . . . . 3.1.2 A Standard, Tailorable Format for All Project Plans Is Established and Documented . . . . . . . . . . . . . . 3.1.3 Schedule Estimates Are Made as Part of Project Planning, According to a Documented Procedure . . . . . . . . . . 3.1.4 Cost Estimates Are Made as Part of Project Planning, According to a Documented Procedure . . . . . . . . . . 3.1.5 The Project Plan Is Baselined According to a Documented Procedure . . . . . . . . . . . . . . . . . . . . . . 3.1.6 Change Requests Must Undergo Impact Analysis and Approval of any Budget or Schedule Adjustments, According to a Documented Procedure . . . . . . . . . . . . . . . . . 3.2 Software Project Planning/Project Planning Flowchart . . . . . 3.3 Software Project Planning/Project Planning Checklist . . . . . Selected Bibliography References
29 32 33 36 38 39
40 43 44 46 46
4 Software Project Tracking and Oversight/Project Monitoring and Control . . . . . . . . . . . . . . . . 47 4.1 Gap Analysis for Project Tracking and Oversight/Project Monitoring and Control . . . . . . . . . . . . . . 4.1.1 The Project Plan Is Used for Tracking . . . . . . . 4.1.2 Formal Reviews Are Held . . . . . . . . . . . . 4.1.3 Budget Actuals Are Tracked . . . . . . . . . . . 4.1.4 Schedule Actuals Are Tracked . . . . . . . . . . 4.1.5 Identified Risks Are Tracked . . . . . . . . . . . 4.1.6 Changes to the Project Plan Are Made According to a Documented Procedure . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
48 52 53 54 56 57
. . . . 58
Contents
ix
4.2 Project Tracking and Oversight/Planning, Monitoring, and Control Flowchart . . . . . . . . . . . . . . . . . . . . 61 4.3 Software Project Tracking and Oversight/Project Monitoring and Control Checklist . . . . . . . . . . . . . . . . . . . 61 References 63
5 Software Subcontract Management/Supplier Agreement Management . . . . . . . . . . . . . . . 65 5.1 Gap Analysis for Software Subcontractor Management/Supplier Agreement Management; Part 1: Subcontractor Selection . . . . 5.2 Software Subcontractor Management/Supplier Agreement Management; Part 1: Selecting the Subcontractor . . . . . . . 5.2.1 Project Outsourcing Decisions Are Made According to a Documented Procedure . . . . . . . . . . . . . . . . . 5.2.2 Candidate Vendors Are Selected Based on a Documented Procedure . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Proposals Are Received from All Subcontractors Under Consideration . . . . . . . . . . . . . . . . . . . . 5.2.4 The Subcontractors Under Consideration Have the Resources— Personnel and Facilities—to Perform the Work . . . . . . . 5.2.5 Either the Work to be Performed or Management Is Located Sufficiently Convenient to the Prime Contractor for Face-toFace Meetings As May Be Necessary . . . . . . . . . . . 5.2.6 The Subcontractor Provides Adequate References from Satisfied Customers . . . . . . . . . . . . . . . . . . . . . . 5.3 Software Subcontractor Management/Supplier Agreement Management; Part 2: Monitoring the Work of the Subcontractor. 5.4 Gap Analysis for Software Subcontractor Management/Supplier Agreement Management; Part 2: Subcontractor Management . . 5.4.1 The Subcontractor Works from a Project Plan That Is Submitted to the Prime Contractor . . . . . . . . . . . . 5.4.2 The Prime Contractor’s Project Manager Monitors the Subcontractor’s Project Plan to Assure That the Project Is Being Performed as Agreed . . . . . . . . . . . . . . . 5.4.3 The Prime Contractor’s Project Manager Facilitates Periodic Technical Reviews with the Subcontractor . . . . . . . . .
68 71 72 72 73 74
75 75 75 76 79
80 81
x
Practical Software Process Improvement 5.4.4 The Prime Contractor’s Quality Assurance Personnel (Frequently the Project Manager) Monitor Processes and Interim Work Products of the Subcontractor . . . . . . . . 5.4.5 The Subcontractor Takes an Active Role in Acceptance Testing . 5.5 Software Subcontract Management/Supplier Agreement Management Flowchart . . . . . . . . . . . . . . . . . . 5.6 Software Subcontract Management/Supplier Agreement Management Checklist . . . . . . . . . . . . . . . . . . References
81 82 84 84 86
6 Software Quality Assurance/Process and Product Quality Assurance . . . . . . . . . . . . . . . . . . . 89 6.1 Gap Analysis for Software Quality Assurance/Process and Product Quality Assurance . . . . . . . . . . . . . . . . . 91 6.1.1 A Person Responsible for Quality Assurance Oversight Is Identified . . . . . . . . . . . . . . . . . . . . . . 95 6.1.2 An SQA Plan That Includes Specific SQA Steps Is Included As Part of the Project Plan . . . . . . . . . . . . . . . 96 6.1.3 Regular Reporting to Key Management Stakeholders Is Performed As Stated in the Project Plan . . . . . . . . . . 97 6.1.4 A Method of Dealing with Variations from Approved Quality Levels Is Identified and Followed . . . . . . . . . . . . . 98 6.2 SQA/Process and Product Quality Assurance Flowchart . . . . 103 6.3 SQA/Process and Product Quality Assurance Checklist . . . . 104 References 105
7 Software Configuration Management/Configuration Management . . . . . . . . . . . . . . . . . . . . . 107 7.1 Gap Analysis for Software Configuration Management/ Configuration Management . . . . . . . . . . . . . . 7.1.1 An SCM Plan Is Created for Each Project . . . . . . . 7.1.2 A Configuration Management Library Is Established As a Repository for Work Products Under Configuration Management . . . . . . . . . . . . . . . . . . 7.1.3 The Work Products That Will Be Under Configuration Management Are Identified at the Start of the Project . .
. . 110 . . 113
. . 114 . . 114
Contents 7.1.4 A Formal Procedure for Change Requests to Baselined Work Products Is Documented and Followed . . . . . . . . . 7.1.5 Changes to Baselined Work Products Are Made Only After the Change Request Process Has Been Followed and All Stakeholders Are Notified of the Change . . . . . . . . 7.2 SCM/Configuration Management Flowchart . . . . . . . . 7.3 SCM/Configuration Management Checklist . . . . . . . . Selected Bibliography References
xi
. 114
. 115 . 117 . 117 119 119
8 Process Documentation . . . . . . . . . . . . . . . 121 9 Obtaining Buy In . . . . . . . . . . . . . . . . . . . 139 9.1 Team Members . . . . . . . . . . . . . . . . . . . . 9.1.1 Issue: Self Interest . . . . . . . . . . . . . . . . . 9.1.2 Maintaining Influence . . . . . . . . . . . . . . . 9.1.3 Increased Accountability . . . . . . . . . . . . . . . 9.1.4 Lack of Confidence . . . . . . . . . . . . . . . . . 9.2 Issues . . . . . . . . . . . . . . . . . . . . . . . . 9.2.1 Process Causes More Work . . . . . . . . . . . . . . 9.2.2 Process Is the Latest Management Fad; Here Today, Gone Tomorrow . . . . . . . . . . . . . . . . . . . . 9.2.3 Management Only Cares About the Bottom Line; No One Is Interested in All of This Documentation . . . . . . . 9.2.4 I Can’t Work Effectively with Someone Watching my Every Move . . . . . . . . . . . . . . . . . . . . 9.3 Manager Resistance . . . . . . . . . . . . . . . . . . 9.3.1 Loss of Power and Control . . . . . . . . . . . . . . 9.3.2 Overload of Current Tasks, Pressures of Daily Activities, and Limited Resources . . . . . . . . . . . . . . . . . 9.3.3 Lack of Skills and Experience Needed to Manage the Change Effectively . . . . . . . . . . . . . . . . . 9.3.4 Disagreement with the New Way . . . . . . . . . . . 9.4 Management Personnel . . . . . . . . . . . . . . . . . 9.4.1 Requirements Management . . . . . . . . . . . . .
. . . . . . .
140 140 142 144 145 146 146
. 147 . 148 . 148 . 149 . 149 . 150 . . . .
151 151 152 153
xii
Practical Software Process Improvement 9.4.2 Software Project Planning/Project Planning . . . . . . . 9.4.3 Software Project Tracking and Oversight/Project Monitoring and Control . . . . . . . . . . . . . . . . . . . . 9.4.4 Software Subcontractor Management/Supplier Agreement Management . . . . . . . . . . . . . . . . . . . 9.4.5 SQA/Process and Product Quality Assurance . . . . . . 9.4.6 SCM/Configuration Management . . . . . . . . . . . Selected Bibliography References
. 159 . 161 . 164 . 167 . 169 171 171
10 Training . . . . . . . . . . . . . . . . . . . . . . . 173 10.1 10.2 10.3 10.4
Formal Training Overview . Formal Training—Detailed. Informal Training . . . . Mentoring . . . . . . . . Reference
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
174 186 198 207 209
11 Process Implementation . . . . . . . . . . . . . . 211 11.1 11.2 11.3 11.4 11.5 11.6 11.7
Work with the Team . . . . . . . . . . . . . Gap Analysis and Prioritization . . . . . . . . . Walk Through the Process . . . . . . . . . . . Act As Liaison Between Business and Development Provide Feedback . . . . . . . . . . . . . . . Implementing the Process Flowchart. . . . . . . Process Implementation Checklist . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
212 213 217 220 224 227 227
12 Monitoring and Revising the Process . . . . . . . . 229 12.1 Making Adjustments . . . . . . . . . . . . . . . . . . 12.2 Gap Analysis for Monitoring and Revising the Process . . . . 12.2.1 Requirements Are Well Documented, Baselined, and Only Changed Following Change Control Procedures . . . . . . 12.2.2 A Detailed Project Plan Is Created, Reviewed, and Baselined 12.2.3 The Project Is Tracked from the Plan . . . . . . . . . . 12.2.4 Subcontract Management . . . . . . . . . . . . . . . 12.2.5 SQA Steps Are Part of the Project Plan . . . . . . . . .
230 230 235 236 238 238 239
Contents
xiii
12.2.6 Configuration Management Is Performed According to a Document Procedure. . . . . . . . . . . . . . . . 240 12.3 Increasing the Rigor of the Processes. . . . . . . . . . . . 240 12.4 Process Improvement Checklist . . . . . . . . . . . . . . 250 Reference 250
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . 251 About the Author . . . . . . . . . . . . . . . . . . . . 255 Index. . . . . . . . . . . . . . . . . . . . . . . . . . . 257
1 Introduction
1.1 Beginning Making better products, on time and within budget, is what software process improvement is all about. “You want it when?” “That’s not a bug; you said that’s what you wanted.” “You never told me you needed that functionality.” “Sure we can deliver it a week early; we’ll just cut back on testing.”
These are typical issues encountered by software managers and developers: unrealistic schedules, unclear or changing requirements, and time constraints. Add to that a lack of planning and you have a recipe for disaster. There is no scarcity of books available to tell organizations how to implement process improvements. Unfortunately, many process improvement manuals are more theoretical than practical. They discuss in abstract terms things like assessing current practices, gaining consensus, and improvement implementation. This book is significantly different. Drawing on my experience, I provide a practical, step-by-step approach to process improvement, based on wide experience in both large
1
2
Practical Software Process Improvement
and small organizations. Here you will learn how to perform a meaningful gap analysis to determine your areas of greatest need, gain upper management buy in, overcome the problems of resistant cultures, create and implement new procedures, and provide training to the staff that must actually use them. I show how to accomplish significant improvements in a matter of months, not years. There is no magic formula for improving the software development process. But there is a formula, and by following it any organization can achieve dramatic improvements in a short time. As the basis for process improvements, I utilize the Capability Maturity Model (CMM®), and the Capability Maturity Model Integration (CMMI®). According to the Software Engineering Institute at Carnegie Mellon University [1]: Continuous process improvement is based on many small, evolutionary steps rather than revolutionary innovations. The CMM® provides a framework for organizing these evolutionary steps into five maturity levels that lay successive foundations for continuous process improvement. A maturity level is a well-defined evolutionary plateau toward achieving a mature software process.
If you are not planning to have a formal CMM/CMMI® assessment, for the purpose of being certified at a certain CMM/CMMI® level, it isn’t necessary to implement all of the areas covered by the CMM® and CMMI®. The goal of process improvement should not be achieving a particular level; the goal should be better products and services, produced on time and within budget. However, because this methodology has gained widespread acceptance, it is only reasonable to use it as the foundation for process improvement. The instructions and guidelines in this book are designed to assist in your process improvement efforts; they are not intended as a guarantee to achieving any CMM/CMMI® level. Stripping away all of the confusing rhetoric that is common to many “how to” books, I provide you with practical, workable steps to achieve your process improvement goals. In addition to the steps, several templates are provided as appendix items and are described in detail throughout the book. Instructions include not only how to use them, but also how to tailor them to meet the different needs of very different organizations. Each is available on the CD-ROM that accompanies this book.
Introduction
3
By following the practical, clear steps detailed here, any company interested in improving its processes will be able to accomplish the following: ◆
Evaluate its current processes;
◆
Identify the key areas for improvement;
◆
Obtain buy in from the stakeholders;
◆
Create, document, and implement the new processes;
◆
Train the personnel who will use the new processes;
◆
Monitor progress;
◆
Revise processes on an ongoing basis, as needed.
For example, by standardizing requirements, the process will ensure that all stakeholders, including the business side (e.g., marketing and sales) and the development side (e.g., designers, developers, and testers) agree to what the final product is supposed to be. “If you don’t invest the time to achieve this shared understanding—this common vision of the intended product—the likely outcomes are rework, dissatisfaction, and shelfware” [2]. For many organizations this is a key problem, and it is one that can be minimized with a workable, tailored process. This book will assist you in determining if it is a significant problem in your organization and, if so, in resolving it. A second example regards planning. Many organizations lack adequate project planning; projects have no formal schedule, and tasks are only loosely assigned. The old cliché “If you fail to plan, plan to fail” is proven true again and again in software development. How should your organization handle planning? What is right for one organization is not necessarily right for another. I will assist you in determining what planning steps will work best for your particular environment. Many organizational cultures, while struggling with these and other problems, still resist implementing the steps to alleviate them. Overcoming this resistance can be done. Tailoring change to suit the organizational culture will greatly assist in gaining acceptance. Although that statement is obvious, the steps required to do it are not. Contained in these pages are clear, practical, workable steps to get past the resistance that is typical in any organization.
4
Practical Software Process Improvement
Process improvement has become a major part of strategic planning, as increasing numbers of companies find that they must produce more products and services with less time and resources. But the steps to improve processes are not so sufficiently intuitive that they can be accomplished without guidance. This book bridges the gap for the vast majority of organizations that want to improve their processes but are unable to make major expenditures to do so. Here are the instructions and templates, along with detailed information on their use and tailoring. In addition, the practical examples from my experiences help make the steps clear. Creating and implementing new and efficient processes are not accomplished overnight. It takes dedication and know-how. If your organization has the dedication, take advantage of my know-how. The result will be a greatly improved record of “on time, within budget, highquality” products and services.
1.2 Format and Use of this Book The chapters of this book are organized as follows. Chapter 1 consists of a beginning, an introduction, and an assessment. The beginning provides a high-level overview of process improvement, why it’s needed, and some of the challenges related to implementing it. The introduction explains the purpose of the book and how to use it. The assessment (gap analysis) explains and introduces the purpose of the assessment and details how Chapters 2–7 will be used for the assessment and the process improvement effort. Chapters 2–7 explain the key process areas (KPAs) associated with CMM/CMMI® level 2 and describe how to use each of them for assessing strengths and weaknesses and overcoming weaknesses. Chapter 8 discusses the need and advantages of process documentation. Sample processes templates which are included on the CDROM that accompanies this book. Chapter 9 discusses obtaining buy in. Both management and team personnel will need to embrace the new processes, at least to a limited degree. This chapter has two main sections: ◆
Resistance. This section details common reasons for resistance and provides assistance in addressing them. Additional advice on overcoming resistance is embedded in each chapter, indicated with the words Resistance Statement.
Introduction
◆
5
Buy in. This section clarifies how to persuade stakeholders of the advantages of process improvement and to accept the investment of time that process improvement takes.
Chapter 10 covers training the personnel who will use the new processes. Process improvement initiatives will impact the way technical team members and business-side personnel perform certain tasks. This chapter details how best to train personnel in the use of the new processes in a manner best suited to assist with their compliance. Chapter 11 is about process implementation. It discusses the importance of working with the team and getting team members’ input. It also includes instructions on prioritizing needs to address the most serious difficulties and thus achieve early successes. Chapter 12 covers monitoring progress and revising processes on an ongoing basis. It describes how to assure that your organization is making the right changes and how to adapt them as necessary for greater success. The appendixes on the included CD-ROM contain the following information to assist in your process improvement initiative: ◆
Appendix A: Gap analysis templates;
◆
Appendix B: Requirements template;
◆
Appendix C: Change control procedure;
◆
Appendix D: Checklists;
◆
Appendix E: Risk assessment;
◆
Appendix F: Delphi;
◆
Appendix G: Tables;
◆
Appendix H: International Standards Organization (ISO)-CMM® comparison;
◆
Appendix I: Process Template;
◆
Glossary.
Throughout these chapters, you will see many similarities in format; this mirrors the format of the CMM® as described in [1] and allows for greater ease of understanding and use. Understanding the KPAs is vital to your initiative, so we will discuss them in some detail here. Chapters 2–7 are divided into six key areas,
6
Practical Software Process Improvement
referred to as KPAs. Each KPA represents one aspect of CMM® level 2 and CMMI® level 2. They are shown in the Table 1.1. Note the addition of measurement and analysis in CMMI®. In CMM®, measurement and analysis are part of each KPA, and that is how I will discuss them. This in no way minimizes the importance of measurement and analysis. But for ease of use, I will detail the measurement and analysis of each KPA in the chapter covering that particular KPA. For each KPA, I will recommend a series of questions to ask stakeholders (I also suggest who “stakeholders” are). These questions are not exhaustive, but rather serve as a starting point for your process improvement efforts. You probably know some of what to ask, and as you ask questions more will come to mind. Following these sample questions I show a sample gap analysis for each KPA. The gap analysis that you create will serve as the core for your process improvement efforts. This will enable to you clearly see where your organization is now in terms of process, where it needs to be, and how to get there. Templates for a gap analysis for each KPA can be found on the accompanying CD-ROM. Each template shows the basic items needed for CMM/CMMI® compliance. You will complete the areas indicating what your organization currently does and what needs to change. The gap analysis will probably show several items for each KPA; you will need to prioritize based on your findings. You cannot realistically expect to address all areas of concerns at once. Pick those that are causing the most difficulty in your organization and work on them first. Once you know which processes (however informal they may be) are followed at your organization, you will use the information provided in Table 1.1 KPA Table CMM®
CMMI®
Requirements management
Requirements management
Software project planning
Project planning
Software project tracking and oversight
Project monitoring and control
Software subcontract management
Supplier agreement management
Software quality assurance
Process and product quality assurance
Software configuration management
Configuration management Measurement and analysis
Introduction
7
each chapter to determine what you need to do to bridge the gap from where you are now to where you want to be. Several key points for each KPA will be listed and discussed; these are the things you need to achieve. Perhaps you are already fulfilling some of them; if so, you can focus on other areas of that KPA on which your organization may be weak. As previously stated, for each KPA I recommend various templates and include examples within the chapter and a sample template in the Appendix on the CD-ROM. Uniformity of process implies the consistent use of templates, and you will find your work is much more efficient by taking advantage of them. Remember to tailor them to the specific needs of your organization. In each chapter I will discuss how to tailor these documents. Throughout the book you will see examples that address specific common resistance points as shown in the following example: Resistance statement 7: Many team members will feel that management either is constraining them by requiring statuses or is looking to place blame. It will be bad for morale. Response: Certainly nobody likes management looking over their shoulders, but if task reporting is integrated into every plan, it will be seen as routine. A corporate culture will be fostered where problem identification is valued more than problem avoidance. Avoiding a problem, with the hope that it will somehow be resolved without becoming known to management, usually only leads to more serious problems. This is because the problem was not resolved when it was first identified—when resolving it has the least impact.
These resistance statements are typical of what process improvement professionals frequently encounter. By being aware of the specific resistance to expect with each area, you will be better prepared to respond to and overcome it. The responses shown will assist you in accomplishing this. In Chapter 8, I provide a sample process for each KPA. If you simply pull those out and try to implement them, you will fail. They are generic and made to be tailored. The processes you write will probably be detailed, so each KPA has a corresponding checklist. One way of advancing acceptance of the new process is to provide these checklists (tailored to suit your organization) to all stakeholders. They then know what their responsibilities are related to requirements management or project planning or other phase. If questions arise, they can refer to the detailed process document.
8
Practical Software Process Improvement
A key to effective, efficient processes is having them documented. This way there is uniformity in project implementation. The way one project is managed will be basically the same as other, similar projects within the organization. This removes the guesswork, allowing project team members to become familiar with methods, procedures, templates, and forms that are used across projects. It also greatly facilitates the incorporation of new personnel into the project team. It’s also important to note that while the topics are divided into separate chapters, there is a tremendous amount of overlap in each. For example, software project planning/project planning is closely associated with software project tracking and oversight/project monitoring and control. Software configuration management/configuration management is closely related to software project planning/project planning, software project tracking, and oversight/project monitoring and control and software requirements management/requirements management. These topics are discussed as separate entities, but it must be remembered that they are closely associated. When an organization focuses on one process area, it must by necessity include at least parts of some of the other process areas. While the optimum model for process improvement provides for at least one person to have process improvement as his sole responsibility, that is often not the case. Frequently, the project manager or development leader is charged with taking on this initiative in addition to his other duties. If that is the case, prioritization of process improvement target areas becomes even more important. Focus on the area or areas with the most problems and start there. You will see success quickly, and success builds on itself.
1.3 The Assessment To start any process improvement initiative, it is necessary to perform an initial assessment. Be aware that process improvement is not free. There is an initial expense in terms of time, but the long-term benefits will more than pay for this initial investment. This assessment is necessary to determine the areas where your organization has the most difficulties and where initial improvement efforts will provide the highest benefit. Generally a consulting company is engaged to perform the assessment, but many organizations lack the time or budget to engage one. Therefore, a selfassessment can be performed.
Introduction
9
Resistance statement 1: Process improvement is expensive. We can’t take time from actual project work to do these assessment activities. Response: It is less expensive than deploying defective products, which requires expensive rework and loses customers. It is also less expensive than discovering defects late in the life cycle, where the cost of fixing them increases exponentially from the requirements stage.
Let’s look once again at the six KPAs for CMM® Level 2 and the seven KPAs for CMMI® level 2 listed in Table 1.2. They will provide the basis for your assessment and corresponding process improvement efforts. (As stated earlier, note the addition of measurement and analysis in CMMI®. In CMM®, measurement and analysis are part of each KPA and that is how I will discuss them.) If you are leading a process improvement effort, you may have a good idea regarding what areas are most problematic for your organization. If you are new to the organization or this role, you will need to determine what they are. Either way, once you know the problems you will need to prioritize them; it is counterproductive to attempt to fix all of the problems at once. See which one or two are causing the most problems in terms of cost, quality, and time for your organization. In many organizations, requirements management and project planning and tracking are persistent problems. We will look at all the areas to assist you in your gap analysis and prioritization. For your self-assessment, you will need to look at three aspects of each KPA; the terms in parenthesis at the end of the three statements are those we will use as column headings in the gap analysis tables: Table 1.2 KPA Table CMM®
CMMI®
Software requirements management
Requirements management
Software project planning
Project planning
Software project tracking and oversight
Project monitoring and control
Software subcontract management
Supplier agreement management
Software quality assurance
Process and product quality assurance
Software configuration management
Configuration management Measurement and analysis
10
Practical Software Process Improvement
1. What your organization does now in terms of that KPA (current practice); 2. What CMM®/CMMI® says is the ideal for that KPA (CMM®/ CMMI®); 3. What your organization needs to change to achieve the desired improvement in that KPA (change needed). Remember, it is not necessary to comply with each aspect of CMM® or CMMI® if you are not planning a formal CMM®/CMMI® assessment to be certified at a certain level. As indicated by these three statements, the purpose of the gap analysis is to show where you are, where you need to be, and what you need to do to get there. Before you begin asking these questions, you need to know whom to ask. All stakeholders should have input into both the identification of the problems within the organization and the solutions that you will create. The following are some of the typical stakeholders. Remember that this list is not exhaustive; look within your own organization to identify whom you need to speak with. ◆
Project managers;
◆
Developers;
◆
Testers;
◆
Business analysts;
◆
Sales personnel;
◆
Marketing personnel;
◆
Higher level executives.
The key to success in doing a self-assessment is asking the people who have input into the tasks you are assessing (e.g., requirements, project planning). While having input from higher level executives is helpful, it is generally the people who are doing the actual work—writing the requirements, coding, and testing—who have the clearest view of the problems they encounter. The executives often see the result of the problem more than the cause.
Introduction
11
In the following chapters you will find examples to help you start your own gap analysis. Remember that these are only examples; your findings within your own organization will probably be different. See Appendix A on the enclosed CD-ROM for gap analysis templates for each KPA.
References [1]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998, p. 15.
[2]
Weigers, Karl, Software Requirements, Redmond, WA: Microsoft Press, 1999, p. 110.
2 Software Requirements Management/Requirements Management
With CMM®, “the purpose of Requirements Management is to establish a common understanding between the customer and the software project of the customer’s requirements that will be addressed by the software project” [1]. With CMMI®, “the purpose of Requirements Management is to manage the requirements of the project’s products and product components and to identify inconsistencies between those requirements and the project’s plans and work products” [2]. As can be seen, CMMI® expands the meaning and purpose of requirements management. Clear, concise, well-written software requirements are key to project success, but a requirements document alone is not sufficient. Problems related to requirements management are often one of the areas most troublesome in an organization.
13
14
Practical Software Process Improvement
In order to begin, there is much information that will need to be gathered. As stated earlier, much of this information can be obtained in conversations with the following people: ◆
Project managers;
◆
Developers;
◆
Testers;
◆
Business analysts;
◆
Sales personnel;
◆
Marketing personnel;
◆
Higher level executives.
Ask yourself, and these other key people in your organization, the following questions: Are requirements documented? If so, is a common template used? If a template is used, is it helpful? If requirements are not documented, how are they conveyed to developers and testers? Whether documented or not, are requirements complete? How do you know if and when they are complete? Do all stakeholders (i.e., sales, marketing, development, test) agree on what is to be produced? How are changes to requirements handled? Are risks assessed when changes are requested? Is there a means of communicating all changes to all stakeholders? Does someone with authority approve budget and schedule increases? Determine what your organization usually does in terms of requirements. It’s likely that different procedures, however informal, are performed project to project.
2.1 Gap Analysis for Requirements Management Table 2.1, which uses the gap analysis template for requirements management from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are common in many organizations, they may not be relevant to yours. These are simply examples to assist you in completing your own gap analysis.
Software Requirements Management/Requirements Management
15
Table 2.1 Gap Analysis for Software Requirements Management/Requirements Management Current Practice
CMM/CMMI®
Change Needed
1 Requirements come from Responsibility for requirements is a variety of sources and assigned. are not coordinated.
Determine a method of selecting a team member to be responsible for requirements.
2 A series of emails Requirements are constitutes requirements. created on a standard template for ease of documentation.
Select and implement a workable template. Customize if necessary.
The requirements Schedule baseline meetings to 3 Code begins as soon as some of the requirements document is baselined. finalize requirements. have been identified.
4 Changes are initiated and mandated by the user requesting the service or product.
During the project life cycle, changes to the requirements are reviewed and incorporated into the software project.
Notify all stakeholders of change requests; determine impacts (time, cost, quality); obtain approval.
As with all of the KPAs, we will use the CMM/CMMI® as the foundation, because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization. As with all of the gap analysis templates, the CMM/CMMI® column is already populated. This column shows the basic standards of the KPA to which the template refers. In Table 2.1, the items in the other two columns, Current Practice and Change Needed are only examples for illustrative purposes.1 1. Please note that these are not all inclusive; the purpose is to provide you with the basics of process improvement. For more detailed information, please see [1].
16
Practical Software Process Improvement
Note that while there are four items listed in the CMM/CMMI® column, there are also three blanks cells for each item in the corresponding columns “Current Practice” and “Change Needed.” Depending on the individual organization, for each CMM/CMMI® standard, there may be several Current Practice items and several Change Needed items. These should be used as needed. It is not necessary to have each cell completed; conversely, if there are more than three corresponding items, additional rows of cells can be added. Note that in the first column are pertinent findings. In this example, stakeholders have advised the person responsible for the process improvement initiative that in the Current Process, requirements are documented via a series of emails. As indicated on the template, to achieve CMM/CMMI® compliance, a standard, tailorable format for all requirements documents is necessary. In this example, the Change Needed is that a standard template must be selected and implemented. Although this example is oversimplified, it provides a basis for your work in your own organization. Once you’ve finished your interviews, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you need; remember, Table 2.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. This template shows four critical items in the CMM/CMMI® column. The problems that you identify regarding requirements will probably fall into one of those four categories. You may, however, have more than one issue for one or more of the categories. Include as many as you find; you will prioritize from that list. Having spoken with several people in the organization, you will probably find many commonalities. For example, developers and testers may say that without documented requirements, they have to guess at what to code and how to best create test plans. The project manager may say that without documented requirements, she is unable to allocate resources properly, create an accurate schedule, or derive reasonable cost estimates. The marketing group may say that developers never seem to understand what they want. These common problems can all be resolved with a requirements process. Resistance statement 2: This oversimplifies the problems in our organization. They are complex and diverse.
Software Requirements Management/Requirements Management
17
Response: Each organization is different. You will need to determine which areas are causing the most problems for your organization and prioritize accordingly.
Now you are ready to look at solutions. Again, we will use the CMM/CMMI® as the foundation, because it is based on industry best practices. Do not be constrained by it, however; remember that it is customizable to suit the particular needs of your organization. The following is a summary of the abilities and activities that are associated with the requirements KPA for CMM/CMMI®. 1. Responsibility for requirements is assigned; 2. Requirements are created on a standard template for ease of documentation; 3. The requirements document is baselined; 4. During the project life cycle, changes to the requirements document are reviewed and incorporated into the software project. The following discussion can be used as the basis for your process. Remember always to tailor it to the needs of your organization. The first area mentioned is as follows: 2.1.1 Responsibility for Requirements Is Assigned During your interviews, you probably discovered who is generally responsible for requirements. This must be viewed clearly: we are not referring to the requestor, the individual, or group who has asked for a new product, service, or functionality. Often that is personnel from the marketing group, who will probably not document their requirements. The person responsible for requirements may be a business analyst, an individual who is responsible for meeting with marketing (in this example); clarifying the functionality, service, or product being requested; and documenting that into something from which a design can be created, code can be written, and test cases can be fashioned. However, in some organizations, this responsibility is not assigned to anyone; development receives an email and is expected to begin coding. In order to alleviate the problems associated with requirements, someone needs to be responsible for them. If there is no business analyst in your
18
Practical Software Process Improvement
organization, there must be someone else. Often, this falls to the project manager. He can delegate some aspects of this, but someone needs to be ultimately responsible, and there needs to be a procedure for assigning that responsibility. The primary responsibility of this person will be to document the requirements, the second major point for this KPA. 2.1.2 Requirements Are Created on a Standard Template for Ease of Documentation The person responsible for documenting the requirements will meet with the requestor, obtain sufficient detail to complete the requirements template (see the sample in Appendix B on the enclosed CD-ROM), and then schedule a review meeting. The purpose of this meeting is to assure that all stakeholders have a clear, mutual understanding of the product or service to be built and that everyone who will work on the project throughout the life cycle agrees that the requirements are sufficient for their needs. For example, even though the testers will not be actively involved in project work until close to the end of the life cycle (assuming a traditional waterfall life cycle), they need to review the draft at this first meeting to assure testability. In order to maximize the efficiency of this meeting and minimize the time spent, the person responsible for the requirements document should provide a draft of it at least two working days prior to the meeting. Participants should have already read the document prior to the meeting. At the meeting, it is best if someone other than the person who wrote the document facilitates; sometimes an element of defensiveness can be part of any review meeting. However, the reality is that often the person who wrote the requirements must facilitate. It’s important to stress at the start of this meeting that the point is to list areas that are unclear or incorrect but not to correct them. The person who wrote the requirements will do that. And remember that after an hour, any meeting generally reaches the point of diminishing returns. If you cannot complete the review in an hour or slightly longer, schedule a follow-up meeting. Often if the participants know in advance that the meeting will be limited to one hour, they will make the effort to complete the review within that timeframe. If the changes to the document are minor, there can be conditional acceptance and baselining. Conditional acceptance means that the
Software Requirements Management/Requirements Management
19
document needs only minor revisions; they can be made by the person responsible for requirements, who will then forward the revised document to all participants. A second review meeting is not needed if the changes to the document are minor. Baselining is explained next. 2.1.3 The Requirements Document Is Baselined Baselining refers to the formal approval and finalization of any work product. When all stakeholders have given their approval, the work product can be baselined. From that point, all stakeholders can use it with confidence that all other stakeholders are working from the same version. If conditional acceptance has been given, the person responsible for requirements should advise all the participants, when he/she sends the revised document, that they need to respond within two business days; nonresponse will be assumed to be acceptance of the revised document. Once baselining has occurred, plans (i.e., project plans and updates), work products (i.e., any interim deliverables or code) and other activities (i.e., test planning) can move forward based on the baselined document. This means that everyone with project responsibilities is working from the same document. For example, the person responsible for design is creating the design based on the exact same document that the testers are using to create preliminary test plans. They can all know with confidence that what they are creating is what the requestor agreed to. (Note: in reality, it’s likely that some other activities are already in progress prior to baselining; this in no way minimizes the need to baseline the requirements document as early as possible. It actually increases the importance of baselining, so work that has already begun that may not conform to the finalized requirements can be corrected as early as possible.) Finally, we come to the fourth, vitally important factor of requirements management. 2.1.4 Changes to the Requirements Document Are Reviewed and Incorporated into the Software Project A common problem on many projects is scope creep, the tendency for the requestor to ask for additional functionality once the project is already underway, coupled with the development team’s motivation to provide whatever is requested. Some scope creep is inevitable, but it can cause serious problems if the requirements change and the entire team is not made aware of it. For example, if the test team (or individual tester in smaller
20
Practical Software Process Improvement
organizations) has a version of the requirements from which test procedures are being created, a change in requirements may significantly change the work that needs to be done by the test team. A formal change control procedure is a necessity. Because changes occur to project plans, design, code modules, and test procedures—and not just requirements—a change control procedure is described in Appendix C on the enclosed CD-ROM. Change requests are discussed in more detail in Chapter 7. Author’s experience: When working at a small financial services organization, the author attended a meeting about a proposed new project. One of the meeting participants asked about the status of the requirements. The development lead advised that they were complete. The author then asked where the document was so he could review it. There was, in fact, no document, but rather a series of emails that built on some hallway conversations. The problems: Without documented requirements, no one can be sure what is being requested. In this case, the development team had an idea of what the requestor (marketing) wanted, but marketing itself wasn’t entirely sure what they wanted. In the past in this organization, it was reported to the author that this situation—no documented requirements—was common. The result included the following: ◆
Criticism of the development team when it didn’t deliver what the requestor wanted;
◆
Costly rework;
◆
Dissatisfied customers when a promised feature was not available to them on time;
◆
Schedule delays on other projects when resources that were expected to be available to work on them had to spend additional time on rework.
The solution: The author introduced a tailored version of a requirements template (see Appendix B on the enclosed CD-ROM for a template). This document was reviewed by the marketing and development teams and some further alterations were made. A process was implemented in which a business analyst completed the template, and it was then reviewed by development. Then marketing and development met to discuss it to assure mutual understanding. A representative from testing also attended this meeting, to assure that the requirements were testable. Once there
Software Requirements Management/Requirements Management
21
was mutual agreement, the document was baselined and placed under change control (see Chapter 7). Although there was resistance when implemented (both business and technical personnel said the document and the process were too time consuming), the benefits of it were clear before the end of the first project on which it was used. Somewhat grudgingly, it eventually became institutionalized.
Measurement and Analysis Once you have established and begun implementation of processes, you need to assure that they are being adhered to and are effective for your organization. For requirements management, this generally involves two areas: 1. Status of each allocated requirement; 2. Information pertaining to change requests. 2.1.4.1 Status of Allocated Requirements You will need to determine if each individual requirement is being or has been satisfied during the project life cycle. If not, then you can make adjustments going forward, in future projects, to assure that nothing is left out. Table 2.2 is an example of one method of tracking the status of allocated requirements. In the Status/Comments column, note if the individual requirement was fully satisfied, partially satisfied, or unsatisfied. If not fully satisfied, note the reason. 2.1.4.2 Information Pertaining to Change Requests It is imperative that change requests follow the process, in order to assure that the requirements document remains current and that all stakeholders have access to the most current information. Tracking this process in vital. Table 2.3 is one method of tracking information pertaining to change requests. This is the basis of a requirements management process. On the following pages, you will find a flowchart for requirements management and a checklist. See Chapter 8 for a sample requirements management process and Appendix I for a process template.
22
Practical Software Process Improvement Table 2.2 Status of Allocated Requirements
Requirements Tracking Log Summary Summary of Individual Requirement
Status/Comments
1 2 3 … N
Table 2.3 Change Request Log Summary Change Request Log Summary Summary of Change Request
Status (Open, Approved, Disapproved) Project Plan Adjusted?
1 2 3 … N
2.2 Requirements Management Flowchart The requirements management flowchart shown in Figure 2.1 provides an overview of this discussion. Note the vital areas of baseline requirements and change request received. As stated, these comprise the foundation of an effective requirements management process.
2.3 Software Requirements Management/Requirements Management Checklist The requirements management checklist shown in Table 2.4 can be used by both the person responsible for process improvement and the team. While it is the person responsible for process improvement who has ultimate
Software Requirements Management/Requirements Management
23
Project approved Project manager assigned Requirements draft completed
Review meeting scheduled
Review meeting held
Requirements approved?
Yes
No
Draft revised
Yes
Second review needed? No Draft revised
Request sent to all stakeholders
Yes
Change request received?
Requirements available to all stakeholders
Baseline requirements
No
Impact analysis meeting held No Change approved?
Continue to project deployment
Yes Related plans adjusted
Stakeholders notified
Figure 2.1 Software requirements management/requirements management flowchart.
responsibility to assure that these steps are performed, other team members can refer to the checklist so they will know what is expected in the performance of requirements management.
24
Practical Software Process Improvement Table 2.4 Software Requirements Management/Requirements Management Checklist Item
1
Responsibility for requirements is delegated.
2
Review meeting is scheduled.
3
Review meeting is held.
4
Is follow up needed?
5
Is follow up held?
6
Requirements are baselined.
7
Requirements are publicly available.
8
Test cases are traceable to requirements.
9
Design is consistent with requirements.
10
Code modules impacted are reflected in design.
11
Change request form is available publicly.
12
Change request form is used.
13
Stakeholders are notified of change requests.
14
Impact analysis is held.
15
Changes requests are approved/disapproved.
Status
The templates used in this process are: ◆
Gap analysis template (see Appendix A on the enclosed CD-ROM);
◆
Sample requirements template (see Appendix B on the enclosed CD-ROM);
◆
Change request process (see Appendix C on the enclosed CD-ROM);
◆
Requirements management checklist (see Appendix D on the enclosed CD-ROM).
Selected Bibliography Wiegers, Karl E., Software Requirements, Redmond, WA: Microsoft Press, 1999.
Software Requirements Management/Requirements Management
25
The Capability Maturity Model, Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, Reading, MA: Addison Wesley, 1995, Section 7.1.
References [1]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998.
[2]
The Capability Maturity Model, Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, Reading, MA: Addison Wesley, 1995, p. 126.
3 Software Project Planning/Project Planning
With CMM®, “the purpose of Software Project Planning is to establish reasonable plans for performing the software engineering and for managing the software project” [1]. With CMMI®, “the purpose of Project Planning is to establish and maintain plans that define project activities” [2]. Although formal project planning is vital to the success of any project, many organizations do not take the time to create a plan. There are several issues that arise on projects as a result of poor planning, including the following: ◆
Inability to predict when the project will be finished;
◆
Poor (or no) estimate of cost;
◆
Uncertainty about what specific actions need to be taken to produce the product or service of the project;
◆
Inability to rely on individuals from outside groups to maintain or fulfill their commitments.
27
28
Practical Software Process Improvement
Ask yourself, and other key people in your organization, the following questions: 1. Is a project plan created and documented for every project? If so, does it include the following? ◆
Charter;
◆
Statement of work;
◆
Schedule estimates—if so, how are they determined?
◆
Cost estimates—if so, how are they determined?
◆
Risks—if so, how are they determined?
◆
Dependencies.
2. If a project plan is created, is a common template used? If so, is it helpful? Who is responsible for creating and maintaining the plan? 3. If a project plan is not created, how are tasks and responsibilities conveyed to developers and testers? 4. If a documented plan exists, is it followed? 5. If a documented plan does not exist, how does work proceed? How are task start dates established? How do you know if or when tasks are complete? Do all stakeholders (i.e., sales, marketing, development, and test) agree on their responsibilities? How are the assignments of resources with responsibilities on multiple projects scheduled? 6. How are changes to the plan, whether the plan is documented or not, handled? Are risks assessed when changes are requested? Is there a means of communicating all changes to all stakeholders? Does someone with authority approve budget or schedule increases? Determine what your organization usually does in terms of project planning. It’s likely that different procedures, however informal, are performed differently from project to project.
Software Project Planning/Project Planning
29
3.1 Gap Analysis for Software Project Planning/Project Planning Table 3.1, which uses the gap analysis template for software project planning/project planning from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are common in many organizations, they may not be relevant to yours; these are simply examples to assist you in completing your own gap analysis. As with all the KPAs, we will use the CMM/CMMI® as the foundation, because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization. As with all of the gap analysis templates, the CMM/CMMI® column is already populated. This column shows the basic standards of the KPA to which the template refers. In Table 3.1, the items in the other two columns, Current Practice and Change Needed are only examples for illustrative purposes.1 Note that while there are six items listed in the CMM/CMMI® column, there are also three blanks cells for each item in the corresponding columns Current Practice and Change Needed. Depending on the individual organization, for each CMM/CMMI® standard there may be several Current Practice items, and several Change Needed items. These should be used as needed. It is not necessary to have each cell completed; conversely, if there are more than three corresponding items, additional rows of cells can be added. Note that some pertinent findings are in the first column. In this example, project planning is done very informally, with no one ultimately responsible for planning, and no method of establishing a reasonable plan. The components of a project plan—cost and schedule estimates, statement of work, charter, and risks—are not formalized in any way. A standard, tailorable format for all project plans is necessary. Like the example in Requirements Management in Chapter 2, this example is oversimplified, but it provides a basis for your work in your own organization. Once you’ve finished your interviews, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you 1. Please note that these are not all of the activities and abilities associated with this KPA, but they are the key areas that are frequently most lacking in many organizations.
30
Practical Software Process Improvement Table 3.1 Gap Analysis for Software Project Planning/Project Planning CMM/CMMI®
Change Needed
1 The business analyst, project manager or person requesting the new product, service, or functionality generally plans the project in an informal manner.
Current Practice
A documented procedure for assigning project planning responsibility is established.
Determine and document a method of selecting a team member to be responsible for project planning.
2 The project plan consists of emails and the knowledge of the project manager; it is not documented in any formal manner.
A standard, tailorable format for all project plans is established and documented.
Select and implement a workable template; select and provide training on a scheduling tool.
3 Schedule estimates are based on the opinion of experienced personnel.
Schedule estimates are made as part of project planning, according to a documented procedure.
Establish and document a method of scheduling work.
Cost estimates are 4 Cost estimates are not made; a high-level budget is made as part of project established for each project. planning, according to a documented procedure.
Determine and document a method of estimating costs (e.g., historical or statistical).
5 The plan may change at any The project plan is time, without notice. baselined according to a documented procedure.
A procedure for baselining the plan must be established and documented.
6 Changes are initiated and mandated by the user requesting the service or product.
Change requests must undergo an impact analysis and approval of any budget or schedule adjustments, according to a documented procedure.
Establish and document a means of notifying all stakeholders of change requests, determining impacts (time, cost, and quality) and obtaining approval.
Software Project Planning/Project Planning
31
need; remember, Table 3.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. This template shows six critical items in the CMM/CMMI® column. The problems that you identify regarding project planning will probably fall into one of those six categories. You may, however, have more than one issue for one or more of the categories. Include as many as you find; you will prioritize from that list. Having spoken with several people in the organization, you will probably find many commonalities. For example, testers may say that without a formal plan, they have no idea when they can expect code from development. Developers may have responsibilities on other projects and not know what their availability will be for them. The project manager will struggle to allocate resources properly and will be unable to provide upper management with any kind of cost estimates. The marketing group members may say that they can never be certain when they can announce a new product launch. These common problems can all be resolved with a project plan. Resistance statement 3: This will involve extensive time commitments from several people. It is impractical in our organization. Response: A review of common, persistent problems on projects in your organization, and an explanation of how planning will alleviate many of them, will help to obtain the necessary investment of time in planning a project.
Now you are ready to look at solutions. As with requirements management and all of the areas we will address, we will use the CMM/CMMI® as the foundation, because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization. The following is a summary of the abilities and activities that are associated with the project planning KPA for CMM/CMMI®:2 1. A documented procedure for assigning project planning responsibility is established. 2. A standard, tailorable format for all project plans is established and documented. 2. Please note that these are not all inclusive; the purpose is to provide you with the basics of process improvement. For more detailed information, please see [3].
32
Practical Software Process Improvement
3. Schedule estimates are made as part of project planning, according to a documented procedure. 4. Cost estimates are made as part of project planning, according to a documented procedure. 5. The project plan is baselined, according to a documented procedure. 6. Changes requests must have an impact analysis, and approval of any budget or schedule adjustments must be made according to a documented procedure. The items shown in the gap analysis will assist the organization in satisfying these areas. The following discussion can be used as the basis for your process. Remember always to tailor it to the needs of your organization. The first area mentioned is as follows: 3.1.1 A Documented Procedure for Assigning Project Planning Responsibility Is Established During your interviews, you probably learned that someone is generally responsible for the overall planning of the project, although it probably varies from project to project. Remember we are discussing the role, not the individual. For example, on some projects a business analyst may be responsible for the plan; on others, a project manager. Depending on the project, it might be a company director or vice president, the chief technical officer, or the head of marketing. This leads to confusion within projects and from one project to another. Personnel from other projects that are affected by the first project may not know whom to contact regarding issues that arise. A person must be designated as project manager. Even if a person is a business analyst, if he is to be responsible for the plan of the project, for that project he is the project manager. Your organization must have a documented method of designating this person. It could be something as simple as the following: “The Chief Technical Officer, (CTO) will designate a project manager from the organization’s team. That person will then have ultimate responsibility for creating and maintaining the project plan.” Resistance statement 4: We’re not budgeted for project management.
Software Project Planning/Project Planning
33
Response: Adding this expense to the budget will prove to be a cost savings in the long run. There will be better customer liaison, more confidence by the requestor, and improved teamwork.
Obviously, this is less than ideal; generally, project management is a full-time job. If a person with another role is assigned as project manager in addition to his other role, both roles will suffer. How will that be handled in your organization? If, for example, the assigned project manager is the lead developer, he must have backup for his development activities; he will simply not have time to do both effectively, and both are vital to project success. The solution to this conflict must be determined according to the needs of your organization. We now move to the second item in the list. 3.1.2 A Standard, Tailorable Format for All Project Plans Is Established and Documented Many people think of a project schedule as a project plan. A project schedule is only a component of a project plan. The following is a list of typical project plan components: ◆
Charter: “A document issued by senior management that provides the project manager with the authority to apply organizational resources to project activities” [4]. This is notice from senior management authorizing the project.
◆
Project’s purpose: What is being produced?
◆
Scope: This should clearly state what the final product will and will not include.
◆
Goals and objectives: What will the product accomplish? How will it accomplish it?
◆
Software life cycle to be used: Waterfall? Iterative? Other?
◆
Work products to be developed: Many interim work products that are not the end product the customer will see, but are necessary to the creation of the end product, usually must be produced. The plan should state what these are.
34
Practical Software Process Improvement
◆
Size estimates of tasks: This is typically broken down to durations of not less than one week, through the use of work breakdown structures (WBSs). Historical information—basing estimates for new project work on what is known from previous projects—is entirely valid.
◆
Cost estimates: These are usually based on the WBS and include any other costs associated with the project, such as tools that must be purchased for the project.
◆
Milestones: When will certain milestones, such as interim deliverables, be ready? This is vital for tracking and monitoring the project, the next KPA we will examine.
◆
Reviews: How often will the plan be reviewed? Like requirements, the plan is going to change during the life cycle of the project; some tasks will not take as long as estimated, others will take longer. If requirements change (and you can generally be sure that they will), the plan will have to be altered to match that change (e.g., completion date may be delayed, additional tasks may be required).
◆
Risks: What are the known unknowns? What is the contingency plan for dealing with the known unknowns as well as the unknown unknowns? (Many organizations do not routinely perform risk assessments, often thinking they are aware of the risks on some level. See Appendix E on the enclosed CD-ROM for an overview on how to perform a risk assessment).
Resistance statement 5: Isn’t some of this very obvious and intuitive? Response: To some people, yes. In fact, it may be obvious to everyone involved in the project, but the assumptions each person makes could be very different. So what is obvious to two people can be interpreted very differently by each of them. Documenting it removes this problem.
This may appear overwhelming; remember that this does not need to be, nor should it be, a lengthy document. The following example that demonstrates that the plan does not need to be long. ◆
Charter: Email from chief information officer authorizing the budget to enhance the current payroll system.
◆
Purpose: Automate the payroll system.
Software Project Planning/Project Planning
35
◆
Scope: This will allow automatic reporting of wages and withholdings as required by the federal and state government. As agreed upon by all parties, automatic mailing of paychecks will not be included in this project. That topic remains under discussion as a possible enhancement at a later date.
◆
Goals and objectives: The goal is to provide the government with required reporting on time, thus eliminating fines received in the past. This will be done by the automatic generation and sending of the reports at the close of each pay period.
◆
Software life cycle: As requirements are well defined, the waterfall life cycle will be used.
◆
Work products to be developed: The state has agreed to accept a mock report the week of April 17, 200x. As a result, a prototype with only basic functionality will be ready by that date.
◆
Size estimates of tasks: Please refer to Attachment A, which shows the WBS and corresponding schedule.
◆
Cost estimates: The total estimate for this project is $1,323,455.00. This is based on a payroll upgrade performed in 2003, which generated payroll-related reports to the main office. Specific information regarding this estimate can be found in Attachment B.
◆
Milestones: The following milestones are established: 1. Ability to send a mock report to the main office by February 1, 200x; 2.Demo available to directors on March 10, 200x; 3. Mock reports to state on April 17, 200x; 4. Full deployment on June 15, 200x.
◆
Reviews: The plan will be reviewed by all team members every Wednesday. Depending on where in the life cycle the plan is, and the amount of changes during the previous week, not all team members may be required to attend. For example, if the project is in development and no changes have been requested, the business analyst will be excused from the meeting. The project manager will decide who needs to attend.
◆
Risks: There are two main risks:
36
Practical Software Process Improvement
1. The volume of records will be difficult to test with our current test tools. 2. Reporting when the end of a pay period falls on a holiday may cause unforeseen issues. As mentioned, this is an oversimplified example, but it does demonstrate that a great amount of detail is not required. The schedule, however, which in this example would be shown as an attachment, will be more detailed. An important part of the plan is schedule estimates. 3.1.3 Schedule Estimates Are Made as Part of Project Planning, According to a Documented Procedure How a schedule is estimated depends on a wide variety of factors. An organization that is beginning to implement a project planning discipline may rely heavily on historical information. Estimates for a current project are based on actual information from previous similar projects. Another related method is the Delphi method3, wherein estimates are derived separately from each team member and then coordinated by the project manager. Before a reasonable estimate can be made, the project must be broken down into tasks, and each task must be further broken down into workable components. This is the WBS; “… the WBS is a systematic approach to ensuring that all of the project work is recognized and defined so that it can be developed into a viable work plan…Therefore, the WBS elements must be described in enough detail to not only ensure that all of the work has been identified, but to eliminate duplication and overlap…” [5]. A WBS can be depicted similar to an organization chart. Figure 3.1 is a very high-level example. In this example, one of the subtasks for Create Requirements has been shown. In an actual WBS, each task immediately below the project name (Payroll Project, in this example) would have several subtasks beneath it. The subtasks may then have subtasks. The depth of a WBS depends on the individual project, but the general rule is that it should be broken down into tasks of approximately one week’s duration.
3. See Appendix F on the enclosed CD-ROM for a description of the Delphi Method.
Software Project Planning/Project Planning
37
Payroll project
Task 2
Create requirements
Task 3
Task N
Assign business analyst
Meet with requestor
Sub task 2
Sub task N
Prepare preliminary draft
Figure 3.1 WBS.
As indicated in Figure 3.1, the work of the business analyst can be broken into orderly, chronological tasks. These tasks would then be inserted into the scheduler, with the appropriate start and finish dates and dependencies included. As shown, each task from the original chart (Figure 3.1) is placed in order on the scheduler (Figure 3.2). Note also that task 5, Prepare Preliminary Draft, is dependent on task 4, Meet with Requestor. If all meetings with the requestor are not completed by the scheduled date (March 21,
Figure 3.2 WBS converted to scheduler.
38
Practical Software Process Improvement
2004, in this example), the preliminary draft completion date will also slip. That is one reason that it is important to include all tasks that have at least a one-week duration. The documented procedure for estimating task durations should include any assumptions you made when determining the estimate. This will be helpful for improving your estimating for future projects. Resistance statement 6: Why do it twice? Why not just the organization chart style or the scheduler style? Response: The organization chart style is not something from which you can monitor the plan. Many organizations put their tasks directly into the scheduler; that is fine. The organization chart style is included here mainly for illustration purposes. If it is helpful to do it that way first, fine. If it’s not necessary, enter the tasks into the scheduler directly.
Once the WBS is completed, you can begin the next major area of project planning, cost estimating. 3.1.4 Cost Estimates Are Made as Part of Project Planning, According to a Documented Procedure The most significant cost in most projects is human resources. Once you have the WBS completed, you will know how long the project will take. You will also know how much time each resource will spend on the project. By inserting the rates of those resources into the scheduler, you can automatically determine the budget. It is important to remember that this cost estimate is still just that—an estimate. As you move through each stage of the life cycle—from requirements to design, and then to code—you will know more about the current and subsequent life cycles. This will require changes in the project plan, and this will affect the schedule and thus project costs. The documented procedure for cost estimates should include any assumptions you made when determining the estimate. This will be helpful for risk assessment and for improving your estimating for future projects. Once you have the plan components in place, you are ready to baseline the plan.
Software Project Planning/Project Planning
39
3.1.5 The Project Plan Is Baselined According to a Documented Procedure As noted in Chapter 2, baselining refers to the formal approval and finalization of any work product. This involves a meeting to review and discuss the project plan. In the case of larger projects, there may be separate meetings over a period of time to review different components of the plan. For example, the risk assessment (see Appendix E on the enclosed CD-ROM) will involve all stakeholders, or their designees, to identify risks. (Many organizations seldom perform risk assessments, but they are definitely worth the time it takes to do them). The project manager will then collect the information gathered and put it in a concise format, and that document will be reviewed. When all stakeholders have given their approval, the work product can be baselined. From that point, all stakeholders can use it with confidence that all other stakeholders are working from the same version. If conditional acceptance has been given, the person responsible for the plan should advise all of the participants, when she sends the revised document, that they need to respond within two business days; nonresponse will be assumed to be acceptance of the revised document. Once the plan is baselined, it should be available to all stakeholders as a read-only document on a shared drive. Because the project plan involves several components, there may be several separate documents on the shared drive. They should all be in one folder marked with the name of the project. Once baselining has occurred, creation of work products (i.e., any interim deliverables, code) and other activities (i.e., test planning) can move forward based on the plan. All team members, and personnel from other areas who have project responsibilities, know what is expected of them and when it is needed. Those people working on multiple projects know when they must fulfill their responsibilities on this project and when they are available for other assignments. As stated earlier, in reality it is likely that project activities are already in progress prior to baselining; often requirements are being written while project planning is still in the early stages. While this is “the real world,” it in no way minimizes the need to baseline the project plan as early as possible. Again as in requirements management, the next area for project planning concerns change requests.
40
Practical Software Process Improvement
3.1.6 Change Requests Must Undergo Impact Analysis and Approval of any Budget or Schedule Adjustments, According to a Documented Procedure Regardless of how good the plan is, it will prove useless without change control procedures. As previously mentioned, as the project proceeds, more information about each succeeding phase will be known. It may be that during design, the team members realize that more code modules will be affected than they initially thought. This will change the tasks and task durations of the development phase. Correspondingly, the test team will need to perform additional testing, and that will increase their tasks and task durations. These adjustments need to be made to the project plan so resources can be allocated properly and upper management can be advised in a timely manner of any projected budget overruns or schedule delays. In general, these adjustments will be made at the weekly project status meeting. As team members relay completions of tasks or known delays, the project manger makes the adjustments manually on the schedule or notes other aspects of the plan that need to change (i.e., a previously unforeseen risk has been identified). He notes any schedule impact, and the team approves the needed change. Then the project manager makes the change and notifies the team, by email, that the revised document(s) is/are available on the shared drive. See Appendix C on the enclosed CD-ROM for a change request procedure. You will note that this is no different from the change request procedure discussed in Chapter 2. Changes come from a variety of sources, not just requirements. For example, if code modules being created are far more complex than originally anticipated, or testing takes longer, the plan must be adjusted. When changes occur, it is important to evaluate them for cost, quality, and schedule impact wherever they come from. In order to organize this information in a manner that will be useful, a scheduler must be used. While this may seem obvious, many organizations attempt to create project plans without one. Author’s experience: When working at a small financial services organization, the author attended a project initiation meeting. The project manager had listed the tasks and dates on a spreadsheet, and they were reviewed from that spreadsheet. The problems: Using a spreadsheet instead of a scheduler limits the project manager’s ability in a variety of ways:
Software Project Planning/Project Planning
41
◆
A change of the date of one task will not automatically alter all tasks for which the task is a predecessor. This must be done manually.
◆
There is no way to show completion percentage of summary tasks; there is no roll up.
◆
No filters are available. Filters are extremely useful to view overdue tasks, tasks assigned to certain team members, and tasks that are scheduled to start or complete on certain dates.
◆
A Gantt chart cannot be automatically produced. Gantt charts are extremely helpful for reporting status to upper management.
◆
Budgeting is extremely cumbersome and requires the entry of several formulas. A scheduler does this automatically.
◆
Resource conflicts (i.e., overloads) cannot be seen.
◆
Earned value cannot be determined.
◆
Estimate at completion cannot be determined.
The solution: Although the project manager opposed it, the author introduced a commonly used scheduler and provided training and mentoring. Overcoming the opposition and convincing the project manager to actually use the tool was not accomplished overnight. However, with upper management mandating its use, the project manager began to use its basic features, however grudgingly. With time he was able to see the advantages, and eventually began using it more fully, taking advantage of many of its features. The results included more accurate schedules, better and more accurate estimates and budgets, and clearer reporting to upper management.
Measurement and Analysis For each project there are a number of areas to measure. A documented procedure needs to be created so the same information is collected for each project. This enables reasonable comparisons and triggers additional process improvements. The plan should allow for exceptions; the exact same things may not be valid to be measured on each project. The following are the key areas to measure: 1. Completion of milestones; 2. Effort expended; 3. Budget (costs).
42
Practical Software Process Improvement
3.1.6.1 Completion of Milestones The project plan should include various milestones (e.g., project initiation, appointment of project manager, completion of WBS). What the milestones are depends on the individual project. Record when they were completed, so this information can be used on future projects (see Table 3.2). 3.1.6.2 Effort Expended Time spent in planning is vital, so it should be measured and tracked. The effort of planning the project (e.g., creating a charter, defining the scope in general terms) takes time. Recording this time helps to achieve an accurate record of the effort expended in process activities. Many organizations do not formally create a charter; measure the project plan components that you are implementing in your organization (see Table 3.3). 3.1.6.3 Budget (Costs) How much did it cost to plan the project? To gain an accurate picture of project expenses, the costs of planning must be included (see Table 3.4). Use the scheduler to insert tasks, roles, and salaries, if you know them. If you do not have salaries, and many project managers do not have access to upper management salaries, ask for a range. If that is denied, include the roles and advise management that the costs do not include their salaries. They can make the adjustments for that cost. Table 3.2 Milestone Tracking Table 1
Milestone
Planned Date
Actual Date
Project manager assigned
August 10, 200x
August 29, 200x
2 N
Table 3.3 Effort Expended Table Task
Actual Effort
1 Preliminary meeting with requestor 1 day 2 Meeting with team leads to determine resource availability N
3 days
Software Project Planning/Project Planning
43
Table 3.4 Budget Tracking Table 1
Phase
Roles
Actual Cost
Meeting with requestor
Business analyst, marketing director, development lead
$xx,xxx.00
2 N
This is the basis of a project planning process. On the following pages, you will find a flowchart for project planning; note that this is only the project planning flowchart and does not include any activities that may be occurring in parallel (i.e., requirements gathering and documentation). Following the flowchart is a project planning checklist. The project manager might keep this handy to maintain a very high-level view of steps needing to be accomplished. Chapter 8 includes an example of a project planning process. A template for creating your own is found in Appendix I on the CD-ROM that accompanies this book.
3.2 Software Project Planning/Project Planning Flowchart The software project planning/project planning flowchart shown in Figure 3.3 provides an overview of this discussion. Note the vital areas of Baseline Requirements and Change Request Received. Be aware that some aspects of the project plan will evolve over time, and a formal change request will not be received; these changes will result from the following causes, among others: ◆
Phases or tasks in phases taking longer or not as long to accomplish as planned;
◆
Occurrence of unforeseen risk events.
When these causes occur, schedule dates and possibly budgets may change. However, for a request to change the scope or charter, for example, a formal request must be made.
44
Practical Software Process Improvement Project approved Project manager assigned Project plan draft completed
Review meeting scheduled
Review meeting held
Project plan approved?
Yes
No
Draft revised
Yes
Second review needed? No Draft revised
Request sent to all stakeholders
Yes
Change request received?
Project plan available to all stakeholders
Baseline project plan
No
Impact analysis meeting held No Change approved?
Continue to project deployment
Yes Related plans adjusted
Stakeholders notified
Figure 3.3 Software project planning/project planning flowchart.
3.3 Software Project Planning/Project Planning Checklist The project planning checklist (see Table 3.5) can be used by both the person responsible for process improvement and the team. While the person responsible for process improvement has the ultimate responsibility to
Software Project Planning/Project Planning
45
Table 3.5 Software Project Planning/Project Planning Checklist Item
Status
1 Responsibility for project plan is delegated 2 Draft with all components is available: Charter Project’s purpose. Scope Goals and objectives Software life cycle to be used Work products to be developed Size estimates of tasks Cost estimates Milestones Reviews Risks 3 Review meeting is scheduled 4 Review meeting is held 5 Project plan is baselined 6 Project plan is publicly available 7 Change request form is available publicly 8 Change request form is used 9 Stakeholders are notified of change requests 10 Impact analysis is held 11 Changes requests are approved/disapproved
assure that these steps are performed, other team members can refer to the checklist so they will know what is expected in the performance of project planning. The templates used in this process are: ◆
Software project planning/project planning gap analysis template (see Appendix A on the enclosed CD-ROM);
◆
Change request procedure (see Appendix C on the enclosed CD-ROM);
46
Practical Software Process Improvement
◆
Software project planning/project planning document template (see Appendix I on the enclosed CD-ROM).
Other information used in this prcocess comes from: ◆
Risk assessment (see Appendix E on the enclosed CD-ROM);
◆
Delphi estimating instructions (see Appendix F on the enclosed CD-ROM).
Selected Bibliography A Guide to the Project Management Body of Knowledge, Project Management Institute, 1996. Kerzner, Harold, Project Management: A Systems Approach to Planning, Scheduling, and Controlling, New York: John Wiley and Sons, 2001. Kemps, Robert R., Project Performance Measurement, San Diego: San Diego Publishing Company, 1992.
References [1]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, Reading, MA: Addison Wesley, 1995, p. 133.
[2]
Ahern, Dennis M., Aaron Clouse, and Richard Turner, CMMI Distilled, New York: Addison Wesley, 2003, p. 116.
[3]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, Reading, MA: Addison Wesley, 1995.
[4]
A Guide to the Project Management Body of Knowledge, Project Management Institute, 1996, p. 167.
[5]
Kemps, Robert R., Project Performance Measurement, San Diego, CA: San Diego Publishing Company, 1992, p. 9.
4 Software Project Tracking and Oversight/Project Monitoring and Control
With CMM®, “the purpose of Software Project Tracking and Oversight is to provide adequate visibility into actual progress so that management can take effective actions when the software project’s performance deviates significantly from the software plans” [1]. With CMMI®, “the purpose of Project Monitoring and Control is to provide an understanding of the project’s progress so that appropriate corrective actions can be taken when the project’s performance deviates significantly from the plan” [2]. Having a plan will benefit the organization very little if the work of the plan is not monitored. Failure to monitor the project based on the plan results in a wide variety of difficulties. Several, but not all, are mentioned here: ◆
Failure to predict, and therefore control, potential delays;
◆
Inability to predict, and therefore control, potential cost overruns;
47
48
Practical Software Process Improvement
◆
No viable method of advising the requestor, or anyone else, about the true status of the project;
◆
Loss of control over when certain roles will be needed.
In order to begin creating a process for project tracking, there is much information that will need to be gathered. As stated in Section 3 of Chapter 1, much of this information can be obtained in conversations with the following people: ◆
Project managers;
◆
Developers;
◆
Testers;
◆
Business analysts;
◆
Sales personnel;
◆
Marketing personnel;
◆
Higher level executives.
Ask yourself, and these other key people in your organization, the following questions: How is the project tracked? Are weekly status meetings held? Is there any documented plan that is monitored and altered as needed? Who is responsible for monitoring the project? What tool(s) does he use to monitor it? How do the project manager and other stakeholders know the status of the project? What reporting is required by upper management? What information is contained in that reporting, and how is it obtained? Determine what your organization usually does in terms of project tracking. It’s likely that different procedures, however informal, are performed differently from project to project.
4.1 Gap Analysis for Project Tracking and Oversight/Project Monitoring and Control Table 4.1, which uses the gap analysis template for Project Tracking and Oversight/Project Monitoring and Control from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are
Software Project Tracking and Oversight
49
Table 4.1 Gap Analysis for Software Project Tracking and Oversight/ Project Monitoring and Control Current Practice
CMM/CMMI®
Change Needed
1
Establish and document a The plan is used for No formal tracking is tracking project activities means of basing all project performed. The plan is activities on the plan. not used after it is created. (e.g., tasks).
2
Project status is given sporadically by team members when requested by the project manager or requestor.
Formal status reviews are held.
Document a means of formal status reviews for every project (e.g., what will be reviewed and how often).
3
The project expenditures are based loosely on approximate staff hours multiplied by average salaries.
Budget actuals are tracked.
Implement a method of tracking actual expenses against estimates.
4
No phase or task schedule Schedule actuals are tracking is done; the tracked. completion/deployment date is the focus.
Document a method of tracking the actual schedule (task, phase, and other milestone completion) against the estimate.
5
Risk assessments are not performed.
Identified risks are tracked.
Document a method of performing a risk assessment and periodically updating it.
6
Changes to the plan are made informally, to accommodate the realities of the work.
Changes to the project plan are made according to a documented procedure.
Establish and document a means of reviewing changes to commitments and obtaining buy in.
50
Practical Software Process Improvement
common in many organizations, they may not be relevant to yours; these are simply examples to assist you in completing your own gap analysis. As with all of the KPAs, we will use the CMM/CMMI® as the foundation because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization. As with all of the gap analysis templates, the CMM/CMMI® column is already populated. This column shows the basic standards of the KPA to which the template refers. In Table 4.1, the items in the other two columns, Current Practice and Change Needed, are only examples for illustrative purposes.1 Note that while there are six items listed in the CMM/CMMI® column, there are also three blanks cells for each item in the corresponding columns, Current Practice and Change Needed. Depending on the individual organization, for each CMM/CMMI® standard there may be several Current Practice items and several Change Needed items. These should be used as needed. It is not necessary to have each cell completed; conversely, if there are more than three corresponding items, additional rows of cells can be added. Note that in the first column are examples of pertinent findings. In this example, no tracking against the plan is performed; the plan may be created to satisfy a customer and for no other reason. Status reporting is done on an as needed basis, which leaves the project manager with little information with which to evaluate the project status and make changes as might be necessary on an ongoing basis. Project expenditures are unknown, as are phase and task schedules. Without risk assessments, it is impossible for the project manager to prepare for the known unknowns, making the unknown unknowns even more of a threat to project success. As a result of this lack of information, corrective actions can only be taken when problems arise. There is no possibility of taking corrective actions at the first hint of a problem, when resolving it will be far easier, because the problem is not seen until it is major. With this information, customer impact—as well as schedule and budget impacts—will be minimized. Finally, in this example, commitments made by various team members change only when a problem arises. For example, the test team may be scheduled to work on the project for a certain 60-day timeframe. If development encounters problems and its schedule is delayed, this could affect 1. Please note that these are not all the activities and abilities associated with this KPA, but are the key areas that are frequently most lacking in many organizations.
Software Project Tracking and Oversight
51
the test team’s availability. The test team may be scheduled to start another project immediately at the end of that 60-day window. These changing commitments must be discussed and agreed to with all stakeholders. Resistance statement 7: Many team members will feel that management is constraining them by requiring statuses or is looking to place blame. It will be bad for morale. Response: Certainly nobody likes management looking over their shoulder, but if task reporting is integrated into every plan, it will be seen as routine. A corporate culture will be fostered where problem identification is valued more than problem avoidance. Avoiding a problem, with the hope that it will somehow be resolved without becoming known to management, usually only leads to more serious problems. This is because when the problem was first identified, it was not resolved when doing so would have the least impact.
Like the examples in the previous chapters, this example is oversimplified, but it provides a basis for your work in your own organization. Once you’ve finished your interviews, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you need; remember, Table 4.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. Having spoken with several people in the organization, you will probably find many commonalities. For example, the requestor may complain that he never knows about a delay in delivery until the last minute. The project manager may say that when upper management requests a status, she has to guess and has no viable backup to provide. In addition, she does not know how to allocate resources for the next, or simultaneous, project, because she never knows when team members are finished, or nearly finished, with their assigned tasks. Testers may say that they await delivery of code on the date specified in the plan, and when it doesn’t arrive then it disrupts their scheduled work on other projects. Now you are ready to look at solutions. The following is a summary of the abilities and activities that are associated with the software project tracking and oversight/project monitoring and control KPA for CMM/CMMI®:2 2. Please note that these are not all inclusive; the purpose is to provide you with the basics of process improvement. For more detailed information, please see [3].
52
Practical Software Process Improvement
1. The plan is used for tracking project activities (e.g., tasks); 2. Formal status reviews are held; 3. Budget actuals are tracked; 4. Schedule actuals are tracked; 5. Identified risks are tracked; 6. Changes to the project plan are made according to a documented procedure. Resolving the items shown in the gap analysis, which was developed after interviews with stakeholders, will assist the organization in satisfying these areas. The following discussion can be used as the basis for your process. Remember always to tailor it to the needs of your organization. The first area mentioned is as follows. 4.1.1 The Project Plan Is Used for Tracking The project plan is the basis for all project activities. All work products, both interim and final, should be planned for and included in a formal project plan. Author’s experience: At a large telecommunications company, the author was involved in introducing project-tracking discipline. Some team members were not comfortable in providing statuses, saying simply that they would advise the team when their tasks were completed. The problems: Without following the project plan that was baselined, the following situations cannot be addressed: ◆
Assuring that project resources will be able to move to their next projects as scheduled;
◆
Advising customers well in advance of when the product or service will be available;
◆
Providing upper management with accurate budget reports;
◆
Coordination of work with outside venders;
◆
Assuring timely availability of necessary hardware.
Software Project Tracking and Oversight
53
The solution: The opposition was overcome when those resisting the tracking tasks recognized how their role in the project affected the work of their coworkers. One developer who was extremely resistant to providing any status was shown how a certain tester was scheduled to move to a different project when she completed testing the code the developer was creating. If the project manager did not know if the code development was behind schedule, he would be faced with the situation of either not releasing the tester as agreed, thus delaying delivery of the second project, or releasing her as agreed and thus delaying delivery of the first project. If the project manager knew in advance of a possible delay, there may be sufficient time to discuss the problem with the manager of the second project, speak with customers well in advance, and seek an additional testing resource. Acceptance of this did not occur quickly, but it did finally occur.
Having a plan that is used for tracking enables the project manager to keep all stakeholders up to date on project progress. The need for this is demonstrated in the following several activities. 4.1.2 Formal Reviews Are Held In order for the project manager to adequately adjust the project plan, he must be aware of the status of all tasks. Weekly project meetings are the most effective means of providing that information. They also have the added benefit of bringing together the entire team—whether in the same physical location or via telecommunications—so the contribution of each to the project is reinforced. “Team meetings must be effective…It is the responsibility of the project manager to ensure that meetings are valuable and necessary for the exchange of information. The following are general guides for conducting a more effective meeting: ◆
Start on time. If you wait for people, you reward tardy behavior.
◆
Develop agenda objectives.
◆
Conduct one piece of business at a time.
◆
Allow each member to contribute in his/her own way.
◆
Seek opinions.
◆
Assign roles and responsibilities.
54
Practical Software Process Improvement
◆
Agree on follow-up or accountability dates.
◆
Set the time and place for the next meeting.
◆
End on time” [1].
At the status meeting, the project manager should provide a hard copy of the schedule for all participants. This copy need not include the entire schedule; the current phase and the next one or two, depending on whether the current phase is just starting or almost completed, is often sufficient. Planning in any detail beyond the next phase or two is very difficult. By using part of the schedule, the team members with current responsibilities can report on their progress and any difficulties that may have arisen, thus enabling other team members, including the project manager, to know if schedule changes in subsequent phases are required. Generally, each team member in sequence refers to the hard copy of the schedule and briefly describes their progress with the assigned tasks that should already have been started. If any work has been started in advance of their scheduled start date, this information is also included. tatus meetings are not the forums in which to resolve all problems. Issues that arise at status meetings are frequently best addressed outside of the meeting, particularly when the issue affects only a subset of the participants. Resistance statement 8: This sounds very time consuming. It will delay schedules. Response: There will be some investment in time. But you need to accept these items as necessary parts of the project, not as something extraneous to the project. They will help you to keep on track and within budget and produce a product or service at optimum quality.
By implementing these meeting guidelines, team members will become accustomed to the idea of meetings starting and ending on time, following an agenda, and being a productive use of their time. 4.1.3 Budget Actuals Are Tracked At various points throughout the project life cycle, it is necessary to ascertain if the project is within budget. This can seldom reasonably be done on
Software Project Tracking and Oversight
55
a day-to-day basis, but setting certain milestones, such as the end of each phase (e.g., requirements, design) or at the start and midpoint of each phase, will enable the project manager to know as early as possible if a cost overrun is projected. If expenditures are beyond what was planned at any given point in the project life cycle, the project manager can make whatever adjustments may be necessary. If that requires requesting additional funding, it is better done earlier, when the project can be brought back on schedule, than later, when there is little chance of regaining control of the schedule. Correlated to this is the fact that tracking from the plan also enables the project manager to notify upper management and the customer of any projected budget overruns at the earliest possible time. In order to effectively track the budget, periodic status meetings must be held (see Section 4.1.2). Each team member will report on their progress, advising the project manager and other team members of whether or not they are on schedule. In this way, the project manager will know if a certain task or series of tasks will take longer than planned, thus costing more money. On some occasions, tasks may be completed ahead of schedule, allowing the project manager to divert funding to areas where there may be delays. The project manager will record the amount expended at each predetermined milestone. This will assist her in better estimating future projects. It will also assist in justifying cost overruns when seeking additional funding to complete the project. Please note that budget tracking is closely associated with the next item to be discussed, schedule tracking. Table 4.2 can be used for budget tracking. This table provides the project sponsor or other members of upper management an at-a-glance view of project expenses to date. Alternately, for more detail, Table 4.3 can be used.
Table 4.2 Budget Tracking Phase (Milestone)
Planned
Actual
Deviation (Total) Deviation (%)
Requirements
$XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
Development
$XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
Phase 3
$XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
Phase N
$XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
56
Practical Software Process Improvement Table 4.3 Detailed Budget Tracking
Phase
Planned
Actual
Deviation (Total)
Deviation (%)
Requirements $XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
Task 1
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Task N
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Development
$XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
Module 1
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Module 2
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Module N
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Phase 3
$XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
Task 1
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Task N
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Phase N
$XXX,XXX.00
$XXX,XXX.00
–$XX,XXX.00
XX%
Task 1
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
Task N
$XX,XXX.00
$XX,XXX.00
$XX,XXX.00
XX%
See Appendix G on the enclosed CD-ROM for templates of these tables. 4.1.4 Schedule Actuals Are Tracked Closely associated with budget tracking is schedule tracking. As mentioned earlier, at periodic status meetings (weekly is strongly recommended), each team member will report on their progress, thus enabling the project manager to make schedule adjustments as early as possible. This is imperative in order to assure that needed resources are available when their work is scheduled. For example, once the project plan is baselined, the test team members may be scheduled to perform their work on the project in months six and seven. If a delay in coding means that the code will not be ready until month eight, at which point the test team may have a commitment on a different project, the earlier the project manager knows about this the better able she will be to make the necessary adjustments. That may mean a change in the schedule of the other project, depending on project priorities, or hiring outside consultants to do the testing. Other options may also be available to the project manager. Whatever course of action she
Software Project Tracking and Oversight
57
chooses, having the greatest lead time will benefit the project and prevent or mitigate additional delays. Schedule tracking relies on the best estimate of each team member. It is difficult, if not impossible, to determine exactly what percent of a task is complete. Each team member must make a judgment on his percentage of task complete, for each task, based on his own expertise. Most scheduling tools provide the option for showing current and baselined start and completion dates for all tasks. This can be filtered to eliminate subtasks for reporting to the project sponsor; alternately, all tasks could be reported, depending on the needs of the particular project and the wishes of the project sponsor. The report can be generated by line items or as a GANTT chart. 4.1.5 Identified Risks Are Tracked An often overlooked but vital aspect of software project tracking and oversight/project monitoring and control is risk assessment and risk tracking. As stated earlier (see Chapter 2), a risk assessment is part of the project plan. One of the inherent characteristics of risks is that they are unknown; when a new project begins, it is impossible to foresee everything that could possibly affect the project. But what can be foreseen should be documented in the project plan. As the project progresses and more information is gained about it—tools needed that were not originally considered, the problems with code modules that are found to be more or less complex than first thought—additional risks may be identified. Conversely, items that were thought to be risks may be seen to be not as problematic as first suspected, or the project life cycle may simply have moved past some points where risks were projected to exist. These changes must be documented so that all stakeholders are aware of new risks that have been identified and previously known risks that have now passed. Updating the risk assessment should not be as time consuming as its original creation but should still involve all project stakeholders. Remember that as knowledgeable as any one person on the project team may be, he is seldom an expert on all aspects of the project. Risk assessment updates can be made a part of the regular project status review meetings. “Project risks include cost, funding, schedule, contract relationships, and political risks. Some degree of risk always exists in project, technical, test, logistics, production, and engineering areas” [1].
58
Practical Software Process Improvement
See Appendix E on the enclosed CD-ROM for instructions on performing a risk assessment. 4.1.6 Changes to the Project Plan Are Made According to a Documented Procedure. Part of tracking, monitoring, and controlling the project involves incorporating the inevitable changes into the project plan. As the project proceeds through each successive phase of the life cycle, more information is gained about the current and future phases. This will necessitate adjustments of time assigned to tasks and schedule of tasks dependent on the completion of other tasks, and it may require changed human resources and tools. As with requirements, it is vital that all stakeholders have input into changes or, when the change is externally caused and cannot be avoided, are made aware of it and have input into determining the impacts. For example, a schedule change may be required in order to maintain a competitive advantage; the product or service being created or enhanced may need to be introduced earlier than anticipated. This is not a change that stakeholders can decide to make or not; the organization’s survival may depend on it. However, the development team, or a subset of it, knows how long the coding will take. They must have input into the amount of overtime required, the advantages of hiring consultants, as well as other factors. This is done by performing an impact analysis. This consists of a meeting to discuss the change. As with requirements, the project manager notifies all stakeholders of the requested (or required) change at least two business days in advance of the meeting. The stakeholders should review the change request and determine if and how it will affect their work. Their reviews should be completed before they arrive at the meeting, although this is not always the case and the project manager needs to be aware of that fact. (If stakeholders arrive unprepared, the meeting will take longer and a second meeting may be necessary). These impacts are then discussed at the meeting. Once the impact analysis has been completed, the project manager determines how the project plan—schedule, cost, and resource allocation in particular—must be adjusted to accommodate the change. He then needs to get approval from the project sponsor, the person who authorized the expenditure for the project. If the project sponsor does not approve any additional funding needed, the change is rejected, even if the other stakeholders have approved it. In this case, the project manager will document the issues related to the requested change, so they can be resubmitted as a separate project at a later date. Once the changes have been agreed to and
Software Project Tracking and Oversight
59
authorized, the project plan is adjusted by the project manager, and all stakeholders are notified of the revised plan. Change requests may come from many different sources at any time during the project life cycle. When they occur, the same procedure must be followed for each of them. Measurement and Analysis For each project, there are a number of areas to measure. A documented procedure needs to be created so the same information is collected for each project. This enables reasonable comparisons and drives additional process improvements. The plan should allow for exceptions; the exact same things may not be valid to be measured on each project. The following are some key areas to measure: ◆
Completion of milestones;
◆
Effort expended;
◆
Budget (costs).
4.1.6.1 Completion of Milestones The project plan should include various milestones (e.g., completion of key code modules, completion of test, and availability of demo). What the milestones are depends on the individual project. Record when they were completed, so this can be compared to when the plan initially stated they were to be completed. If there are major discrepancies, you may need to obtain training for some personnel or readjust how you determined the dates originally. Table 4.4 is one example of a method of tracking milestones. 4.1.6.2 Effort Expended The WBS, and then the schedule, indicate durations. Refer back to Figure 3.2 and see the start and completion dates (most schedulers provide the option of inserting a column for duration). While duration is not the same as effort expended (e.g., Task A starts on Monday and is completed on Friday, but the person responsible only worked on it on Monday, Thursday, and Friday—the duration was five days, but the effort expended was only three), it is a useful measure. Was the duration close (+/–10%) to the estimate? If not, what needs to be fixed on future projects? Was the estimate off, or did other factors affect it?
60
Practical Software Process Improvement Table 4.4 Milestone Tracking Table 1
Milestone
Planned Date
Actual Date
Code completed.
August 10, 200x
August 29, 200x
2 N
Depending on the project, you may want to measure this only in phases, not in individual tasks. For smaller projects, or projects where the technology is familiar and the risks are low, measuring at the phase level may be sufficient (see Figure 4.5). For larger projects, or projects using new and untried technology, or where there are many unknown unknowns, measuring at the task level will provide you with information that will be extremely useful on future large projects, or those with new technology or many risk factors (see Figure 4.6). 4.1.6.3 Budget (Costs) How much did the project cost? Using the scheduler, determine the cost of each phase (see Table 4.7). This is done by entering the salaries of team members and then looking at total cost. Ask the same questions: Was the
Table 4.5 Effort Tracking Table—Phase Level Phase
Planned Effort
Actual Effort
Discrepancy
1
Phase 1
16 person days
21 person days
+5 days
2
Phase 2
8 person days
6 person days
–2 days
N
Phase N
Table 4.6 Effort Tracking Table—Task Level Task
Planned Effort
Actual Effort
1
Code module xyz-1
16 person days
21 person days +5 days
2
Code module wxy-2 8 person days
N
6 person days
Discrepancy –2 days
Software Project Tracking and Oversight
61
Table 4.7 Budget Tracking Table Phase
Planned Cost
Actual Cost
Discrepancy
1
Planning
$xxx,xxx.00
$xxx,xxx.00
–$xx,xxx.00
2
Requirements
$xx,xxx.00
$xx,xxx.00
+$xx,xxx.00
N
budget expended close (+/–10%) to the estimate? If not, what needs to be fixed? Was the estimate off, or did other factors impact? This is the basis of a software project tracking and oversight/project monitoring and control process. On the following pages you will find a flowchart for software project tracking and oversight/project monitoring and control and a checklist. There is also a flowchart for a change control procedure. Chapter 8 has a sample software project tracking and oversight/project monitoring and control process. Appendix I has a template to use in developing your own.
4.2 Project Tracking and Oversight/Planning, Monitoring, and Control Flowchart The project tracking and oversight/planning, monitoring, and control flowchart shown in Figure 4.1 provides an overview of this discussion. Note that unlike other processes, this one is ongoing; the starting point is the same task—status review meeting held—as the ending point.
4.3 Software Project Tracking and Oversight/Project Monitoring and Control Checklist The software project tracking and oversight/project monitoring and control checklist can be used by both the person responsible for process improvement and the team. While the person responsible for process improvement has ultimate responsibility to assure that these steps are performed, other team members can refer to the checklist so they will know what is expected in the performance of project planning. Table 4.8 is a checklist for software project tracking and oversight/project monitoring and control.
62
Practical Software Process Improvement
Status review meeting held
Yes
Project on schedule?
Project within budget
No Notify project sponsor
Significant risk changes?
Yes
Yes
No Notify project sponsor
No
Notify project sponsor Take necessary remediation measures
Figure 4.1 Software project tracking and oversight/planning, monitoring, and control flowchart.
Table 4.8 Software Project Tracking and Oversight/Project Monitoring and Control Checklist Item 1 The baselined project plan is the basis for all status reporting. 2 Status review meetings are held as described in the plan. 3 Issues are escalated as described in the plan. 4 Expenditures are tracked. 5 Budget reporting is provided to project sponsor as indicated in the plan. 6 The schedule is tracked. 7 Schedule reporting is provided to project sponsor as indicated in the procedure. 8 Risks are updated. 9 Risk reporting is performed as described. 10 Change requests are made formally. 11 Impact analysis meetings are held. 12 Changes to the project that affect cost, schedule, or quality are made only with the approval of the project sponsor. 13 When an approved change alters any project plan document(s), the project manager updates the document(s) and notifies all stakeholders where the updated document(s) can be found.
Status
Software Project Tracking and Oversight
63
Other information in this chapter comes from risk assessment instructions (see Appendix E on the enclosed CD-ROM).
References [1]
Kerzner, Harold, Project Management: A Systems Approach to Planning, Scheduling, and Controlling, John Wiley and Sons, 2001.
[2]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, Reading, MA: Addison Wesley, 1995, p. 148.
[3]
Ahern, Dennis M., Aaron Clouse, and Richard Turner, CMMI Distilled, New York: Addison Wesley, 2003, p. 121.
[4]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, Reading, MA: Addison Wesley, 1995.
5 Software Subcontract Management/Supplier Agreement Management
With CMM®, “the purpose of Software Subcontract Management is to select qualified software subcontractors and manage them effectively” [1]. With CMMI®, “the purpose of Supplier Agreement Management is to manage the acquisition of products from suppliers for which there exists a formal agreement” [2]. Effective vendor selection and management are key to any project outsourcing. Organizations that do not carefully and effectively select and manage subcontractors increase the risk of serious project difficulties. Several, but not all, are mentioned here: ◆
Paying far beyond what the work is worth;
◆
Difficulties in integrating code created by the subcontractor with in-house systems;
◆
Schedule delays as milestones are missed or were not defined during initial planning;
◆
Budget overruns; 65
66
Practical Software Process Improvement
◆
Unacceptable quality, requiring time- and cost-consuming rework;
◆
Inability to obtain ongoing support.
Author experience: While consulting at a large financial services company, the author interviewed several people with responsibility for subcontract management. He learned that sometime earlier, a vendor had called the company and reached a developer. The vendor introduced his company’s services, and the developer said that his organization was, in fact, considering outsourcing some work. The problem: Conversations continued until the vendor felt he had a verbal contract to perform the work. When his company was not awarded the contract, the company sued, and the decision was made in favor of the vendor. The solution: The author implemented a policy by which all contract negotiations were handled by the legal department in conjunction with the project manager responsible for the work to be outsourced. Any calls received by other personnel from vendors were to be immediately referred to the project manager. She had been trained on what minimal information could be disclosed.
In a smaller organization without a legal department, this responsibility would be given to one person who would serve as point of contact and who would be the only person authorized to enter into a contractual agreement. In order to begin, much information will need to be gathered. As stated in previous chapters, much of this information can be obtained in conversations with the following people: ◆
Project managers;
◆
Developers;
◆
Testers;
◆
Business analysts;
◆
Sales personnel;
◆
Marketing personnel;
◆
Higher level executives.
Software Subcontract Management 67
Ask yourself, and these other key people in your organization, the following questions (note that the term prime contractor refers to the hiring organization): ◆
How are projects selected for outsourcing?
◆
How are vendors selected?
◆
What is the request for proposal (RFP) process?
◆
Who has input into vendor selection?
◆
Does the organization have a preferred vendors list?
◆
What criteria are involved in vendor selection?
◆
Are references requested and checked?
◆
Do the candidate subcontractors have experience with projects similar to the one currently being undertaken?
◆
Is the subcontractor’s financial position verified for stability?
◆
Are there subcontractor employees located in sufficiently close proximity for periodic face-to-face meetings?
◆
Is upper management easily accessible to the prime contractor?
◆
Are subcontractors required to provide detailed project plans?
◆
Does the prime contractor assign a project manager to monitor the work of the subcontractor?
◆
Does the contract require periodic reporting or demos as appropriate for the particular project?
◆
Does the contract provide penalties for delays?
◆
Is there a method provided in the contract for periodically evaluating the subcontractor?
◆
How is the project tracked?
Determine what your organization usually does in terms of selecting and monitoring subcontractors. Although these two topics are closely related, they are sufficiently different to require individual attention. Therefore, that is how they will be described in this chapter. The first area to be covered will be subcontractor selection.
68
Practical Software Process Improvement
Author experience: At a financial services company, the author interviewed several people with responsibility for subcontracting work. Contracts were generally awarded based on personal acquaintance with a contractor or, if a search for a contractor was performed, it was generally pointless because upper management had already determined what company was to be hired. The problem: Without a thorough investigation of potential subcontractors, there is no way of knowing the following: ◆
Is a fair price being charged?
◆
Is there a reasonable expectation that the product or service to be created by the contractor will be produced and delivered on time?
◆
Will the requisite quality exist?
The solution: Although management resisted these steps, the evidence (i.e., budget and schedule overruns, poor quality, and difficulty with integration into existing systems) was sufficiently persuasive to eventually cause acceptance of the new processes. By implementing the steps outlined in this chapter, the organization was able to greatly improve the performance of subcontracted work in terms of budget, schedule, and quality.
5.1 Gap Analysis for Software Subcontractor Management/Supplier Agreement Management; Part 1: Subcontractor Selection Table 5.1, which uses the gap analysis template for software subcontractor management/supplier agreement management, part 1: subcontractor selection, from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are common in many organizations, they may not be relevant to yours; these are simply examples to assist you in completing your own gap analysis. As with all of the gap analysis templates in the appendix, the CMM/CMMI® column is already populated. This column shows the basic standards of the KPA to which the template refers. In Table 5.1, the items in the other two columns, Current Practice and Change Needed, are only examples for illustrative purposes.1 1. Please note that these are not all of the activities and abilities associated with this KPA but are the key areas that are frequently most lacking in many organizations.
Software Subcontract Management
69
Table 5.1 Gap Analysis for Software Subcontractor Managment/ Supplier Agreement Management: Part I: Subcontractor Section Current Practice
CM/CMM®
1 Outsourcing decisions are Project outsourcing decisions generally made when are made according to a emergency situations documented procedure. arise.
Change Needed Establish criteria upon which outsourcing decisions will be made.
There is little consistency between outsourcing decisions from one project to another.
2 Subcontractors are usually selected based on the referral of a project team member.
Establish criteria upon Candidate vendors are selected based on documented which a short list of vendors will be explored criteria. for individual projects.
3 There are no proposals.
Proposals are received from all Establish a method to obtain and review subcontractors under proposals. consideration.
Email information from the subcontractor is sufficient.
4 This is not verified in advance of contract signing.
The subcontractors under consideration have the resources—personnel and facilities—to perform the work.
Assure that the subcontractor has the facilities to perform the work prior to contract signing.
5 Offshore subcontracting is common; the prime contractor often sees only a sales representative.
Either the work to be performed or management is located sufficiently convenient to the prime contractor for face-to-face meetings as may be necessary.
Assure easy and convenient access to management for all subcontracted work.
70
Practical Software Process Improvement
Table 5.1 (continued) Current Practice
CM/CMM®
6 References are not The subcontractor provides required; the adequate references from subcontractor’s assurance satisfied customers. that they have the capability to perform the work is sufficient.
Change Needed Establish minimum criteria for acceptable references.
There are six items listed in the CMM/CMMI® column; there are also three blanks cells for each of the corresponding columns, Current Practice and Change Needed. Depending on the individual organization, for each CMM/CMMI® standard there may be several Current Practice items, and several Change Needed items. These should be used as needed. It is not necessary to have each cell completed; conversely, if there are more than three corresponding items, additional rows of cells can be added. In the first column are examples of pertinent findings. In this example, project outsourcing is done on an emergency basis (e.g., when a project schedule begins to slip, part of the project may be subcontracted). Operating in this emergency mode is courting disaster; there will be insufficient time to either plan what aspects of the project are best subcontracted or to pick the best possible subcontractor. This emergency situation will encourage the second current practice in this example, using subcontractors based on a reference by a team member. While personal knowledge of a subcontractor’s work is highly beneficial, it is insufficient by itself to drive a decision to utilize the services of that particular subcontractor. The other areas listed, while only examples, are typical in many organizations and are sources of problems in most of the organizations that operate in this way. Like the examples in the previous chapters, this example is oversimplified, but it provides a basis for your work in your own organization. Once you’ve finished your interviews, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you need; remember Table 5.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. This template shows six critical items in the CMM/CMMI® column. The problems that you identify regarding subcontractor selection will probably fall into one of those six categories. You may, however, have more
Software Subcontract Management
71
than one issue for one or more of the categories. Include as many as you find; you will prioritize from that list. Having spoken with several people in the organization, you will probably find many commonalities. For example, the requestor may complain that he never knows what the outsourcing will cost until the final invoice is delivered. He may also feel that, regardless of the final price, it was too expensive. Without having reviewed a variety of proposals received from several candidate subcontractors, the project manager will be unable to justify the expense. In the event that a major problem occurs, possibly incompatibility of the subcontracted project with other internal systems, the project manager and others will be unable to justify why they selected that particular subcontractor. Often, an unsuccessful subcontracted project within an organization closes off opportunities for future outsourcing; this is unfortunate because outsourcing in many cases is highly beneficial to the organization. Resistance statement 10: This seems like a lot of work just to pick a subcontractor. This wastes time that could be used on actual project work. Response: It is a lot of work, but like most aspects of process improvement, the upfront expenditure of time and effort pays great dividends later in the project life cycle. Subcontractor selection is a vital part of project work.
Now you are ready to look at solutions. As with all the KPAs we will use the CMM/CMMI® as the foundation because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization.
5.2 Software Subcontractor Management/Supplier Agreement Management; Part 1: Selecting the Subcontractor Resolving the items shown in the gap analysis that was developed after interviews with stakeholders will assist the organization in satisfying these areas. The following discussion can be used as the basis for your process. Remember always to tailor it to the needs of your organization. The first area mentioned is as follows:
72
Practical Software Process Improvement
5.2.1 Project Outsourcing Decisions Are Made According to a Documented Procedure In order to assure that the best qualified contractor is assigned the work, the project manager and all other personnel with responsibility for subcontractor selection (sometimes the project sponsor or other management personnel) must know clearly what the project is meant to accomplish and what aspects will be outsourced to a subcontractor. In some cases the entire project is outsourced; in others, only certain aspects of it are. Regardless, in order to assure that the finished product is what is required, it must be clearly defined. If a portion of the project is being performed in house and some aspects are being performed by a subcontractor, integration issues must be identified prior to the start of the subcontracting effort. The project manager must know that the code coming from the subcontractor can be easily integrated. If there are going to be challenges with integration, she needs to know that from the start. In some events, a project is underway when the decision is made to subcontract part of it. Although time will be a constraint, careful defining of the aspect being outsourced is no less vital. Integration and other issues will be the same, regardless of when the decision to subcontract is made. If the entire project is to be performed by a subcontractor, there must be no question about what the final product will be. All deliverables—interim and final—must be clearly defined so that candidate subcontractors can assess the project and provide the prime contractor with sufficient information to assure the prime contractor that the subcontractor clearly understands and can deliver the product of the project. 5.2.2 Candidate Vendors Are Selected Based on a Documented Procedure Organizations often have a preferred vendors list. If so, that should be the source of candidate vendors. In the absence of a preferred vendors list, the following are some possible sources of vendors: ◆
Trade journals;
◆
Vendors with previous experience with the organization;
◆
Employee referrals;
Software Subcontract Management
73
◆
Websites;
◆
Names obtained from competitors at trade shows and conventions.
The procedure should list these and any others that your organization may choose to use. Over time, a vendors list can be created as the organization gains experience with outsourcing. As we discuss subcontractor management in the section immediately following subcontractor selection, you will see how to evaluate the work of subcontractors. 5.2.3 Proposals Are Received from All Subcontractors Under Consideration The process for subcontractor selection must be comprehensive; the risks involved in using an inadequate subcontractor are great. All contracts should be reviewed by the organization’s legal representation. The information contained herein does not attempt to cover any legal matters. The formal process for subcontractor selection involves, at a minimum, the following: ◆
RFPs;
◆
Experience;
◆
Review of proposals.
5.2.3.1 RFP The RFP is a formal document that details the project needs, including the required timeframe, and mandates a due date for all responses. When being forwarded to candidate subcontractors, depending on the complexity of the project, a bidders’ conference may be scheduled. This is a date for a meeting with all interested candidate subcontractors to be held after they receive the RFP, which provides them with an opportunity to ask clarifying questions. If a bidders’ conference is not to be held, a timeframe should be provided during which the subcontractors can call or email and ask questions. All questions should be documented, and at the close of the question and answer period (usually not longer than two weeks), the prime contractor will provide all candidate subcontractors with a list of all questions and answers. This ensures that all subcontractors have the same information from which to build their proposals.
74
Practical Software Process Improvement
5.2.3.2 Experience The prime contractor must be assured that the subcontractor has experience close enough to the proposed project to satisfactorily perform it. For areas where the technology is new, or the product or service is particularly innovative, there may not be any subcontractor with the specific experience. However, the subcontractor should be able to demonstrate that it has pioneered new technologies in the past and has successfully performed projects to produce unique or unusual products or services. The RFP should include an area requesting this specific information. 5.2.3.3 Review of Proposals Like reviews discussed in earlier chapters, the review of the RFPs should be formal and should involve all pertinent stakeholders. The person who is coordinating the subcontractor search—usually the project manager—forwards copies of all proposals to the stakeholders and schedules a meeting (the RFP should include how many copies of the proposal the subcontractor is to submit). A minimum of two business days should be provided between delivery of proposals to stakeholders and the meeting, allowing sufficient time for the stakeholders to review the proposals prior to the meeting. The person responsible for the subcontractor search then facilitates the meeting, getting input from all stakeholders on their opinions about the capability of each subcontractor. 5.2.4 The Subcontractors Under Consideration Have the Resources—Personnel and Facilities—to Perform the Work Most projects have time constraints; the product or service to be produced by the project must be available by a certain day. The ideal subcontractor may not have the necessary resources available to satisfy the prime contractor’s time needs. The prime contractor will need to make compromises but needs to be sure that quality is not compromised to achieve a date. If a subcontractor who can do the job adequately, within the required timeframe, cannot be located, the prime contractor will need to make a variety of business decisions. Can part of the project be performed in house? Can a different project be outsourced, thus making in-house resources available for the more complex project? Can the delivery date be delayed? What are the risks involved in each of these alternatives? These are issues that can be addressed after the review of the proposals received by vendors.
Software Subcontract Management
75
5.2.5 Either the Work to be Performed or Management Is Located Sufficiently Convenient to the Prime Contractor for Face-to-Face Meetings As May Be Necessary Although much outsourcing is now performed offshore, it is imperative that the prime contractor has access to decision makers with the subcontracting company. In all likelihood, demos and periodic status checks will be required (see the next section on subcontractor monitoring), and should problems arise it is vital for the prime contractor to be able to easily and conveniently meet with the subcontractor. Even if much of the work will be performed abroad, management must be accessible to the prime contractor. The inability to have that accessibility is identified as a frequent cause of outsourcing failures. This issue should be addressed by vendors in their proposals. 5.2.6 The Subcontractor Provides Adequate References from Satisfied Customers All candidate subcontractors should provide the prime contractor with references, and the prime contractor should check them thoroughly. The subcontractor should provide the names of organizations for which they worked previously, a brief overview of projects similar in scope and nature to the one currently under consideration, and the names of individuals with those companies who can be contacted. The prime contractor should interview at least two of these references is detail. References should be provided by the vendors in their proposals. As can be seen, these factors all interrelate (e.g., experience is verified by references and resource availability may be affected by geographic location). Each is vital to successful outsourcing.
5.3 Software Subcontractor Management/Supplier Agreement Management; Part 2: Monitoring the Work of the Subcontractor The second major factor in software subcontractor management/supplier agreement management is monitoring the work of the subcontractor. When a project or a portion of a project is outsourced, the project manager maintains responsibility for the entire project. Monitoring the work of the subcontractor is as important as monitoring the work of the
76
Practical Software Process Improvement
rest of the team, as discussed in Chapter 3. Failure to do so will result in the same problems that occur with inadequate project tracking. In order to create a process for monitoring the work of the subcontractor, ask the following questions of key stakeholders: ◆
Is the subcontractor required to provide a project plan?
◆
If so, does the prime contractor’s project manager monitor the subcontractor’s work according to the plan?
◆
What periodic reporting is required of the subcontractor?
◆
Are milestones built into the contract?
◆
Are demos required at specific intervals?
◆
How often are technical reviews held with the subcontractor?
◆
What is the escalation procedure in the event of problems arising with the contract?
◆
What are the penalties for missed dates?
As you ask these questions of personnel who are either responsible for or experienced with outsourcing in your organization, other questions will arise. Once you have answered them, and you know how these tasks are performed—if indeed they are performed at all—you are ready to prepare the gap analysis.
5.4 Gap Analysis for Software Subcontractor Management/Supplier Agreement Management; Part 2: Subcontractor Management Table 5.2, which uses the Gap Analysis Template For Software Subcontractor Management/Supplier Agreement Management Part 2: Subcontractor Monitoring from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are common in many organizations, they may not be relevant to yours; these are simply examples to assist you in completing your own gap analysis. As with all of the gap analysis templates in the Appendix, the CMM/CMMI® column is already populated. This column shows the basic standards of the KPA to which the template refers. In Table 5.2, the items in
Software Subcontract Management
77
Table 5.2 Gap Analysis for Software Subcontract Management/ Supplier Agreement Management Part2: Subcontract Monitoring Current Practice 1 Monitoring consists of occasional email contact with the subcontractor.
CMM/CMMI®
Change Needed
The subcontractor works from a project plan that is submitted to the prime contractor.
A formal process must be established that mandates the creation of a project plan and the use of that plan as the basis for monitoring the subcontractor’s work.
The prime contractor does not have access to the subcontractor’s project plan.
2 The requestor occasionally The prime contractor’s project manager has discussions with the monitors the vendor. subcontractor’s project plan to assure that the project is being performed as agreed.
A formal review schedule with dates, milestones, and escalation procedures must be established.
The prime contractor’s project manager facilitates periodic technical reviews with the subcontractor.
A means of ensuring frequent, periodic technical discussions between the prime contractor and subcontractor must be established. This must be part of the project plan.
The prime contractor’s quality assurance personnel (frequently the project manager) Problems with quality are monitors the processes and interim work addressed once the product of the project is in products of the subcontractor. production.
Establish a policy to review the work plans and interim products of the subcontractor.
3 There are no technical discussions beyond the initial one to judge the subcontractor’s abilities, nor are there any that might arise as a result of questions the subcontractor has.
4 Quality evaluation takes place upon final delivery.
78
Practical Software Process Improvement
Table 5.2 (continued) Current Practice
CMM/CMMI®
5 Acceptance testing is The subcontractor takes considered outside the an active role in work of the subcontractor; acceptance testing. it is performed after the subcontractor’s work is complete.
Change Needed Satisfactory acceptance testing must be established as part of the subcontractor’s work. The contract, and therefore the project, is incomplete until the prime contractor is satisfied with acceptance testing.
the other two columns, Current Practice and Change Needed, are only 2 examples for illustrative purposes. There are five items listed in the CMM/CMMI® column and three blanks cells for the corresponding columns, Current Practice and Change Needed. Depending on the individual organization, for each CMM/ CMMI® standard, there may be several Current Practice items and several Change Needed items. These should be used as needed. It is not necessary to have each cell completed; conversely, if there are more than three corresponding items, additional rows of cells can be added. In the first column are examples of pertinent findings. In this example, monitoring the work of the subcontractor is sporadic; an occasional email is all the contact there is. This greatly increases project risk because the person who needs to know project status—the prime contractor—is not kept informed, regardless of how stable and controlled the remainder of the project may be. Like the examples in the previous chapters, this example is oversimplified, but it provides a basis for your work in your own organization. Once you’ve finished your interviews, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you need; remember, Table 5.2 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. This template shows five critical items in the CMM/CMMI® column. The problems that you identify regarding project tracking will probably fall into one of those five categories. You may, however, have more than one 2. Please note that these are not all inclusive; the purpose is to provide you with the basics of process improvement. For more detailed information, please see [3].
Software Subcontract Management
79
issue for one or more of the categories. Include as many as you find; you will prioritize from that list. Having spoken with several people in the organization, you will probably find many commonalities, and these may be similar to the complaints resulting from a lack of project tracking (see Chapter 3). The requestor and the project manager may complain that they never know about a delay in delivery until the last minute. The project manager may say that when upper management requests a status, she has to guess and has no viable backup to provide, because she is unable to access the subcontractor. Testers may say that they await delivery of code on the date specified in the plan in order to incorporate it with the rest of the project (for projects where only part of the project is being performed by a subcontractor), and when it doesn’t arrive as scheduled it disrupts their scheduled work on other projects. Additionally, because there have been no technical reviews during the project life cycle, the code produced by the subcontractor may not easily integrate with the rest of the organization’s systems. Resistance statement 11: With all of this tracking, why outsource at all? Response: Outsourcing a project, or part of a project, is often the best way to get a product or service to market quickly and is often the most economical method. However, outsourcing a project does not excuse the prime contractor from ultimate responsibility for its success.
Now you are ready to look at solutions. As with all of the KPAs, we will use the CMM/CMMI® as the foundation because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization. The following discussion can be used as the basis for your process. Remember always to tailor it to the needs of your organization. 5.4.1 The Subcontractor Works from a Project Plan That Is Submitted to the Prime Contractor Whether the entire project or a portion only is being subcontracted, there must be a project plan created by the subcontractor and submitted to the prime contractor for review and approval. This should have the level of detail required by the prime contractor. The prime contractor will assign a project manager to oversee the subcontractor’s work; this project manager must be satisfied with the subcontractor’s plan. It must include the
80
Practical Software Process Improvement
complete life cycle of the portion of the project work being performed by the subcontractor. This aspect of subcontractor monitoring is closely associated with the next aspect. 5.4.2 The Prime Contractor’s Project Manager Monitors the Subcontractor’s Project Plan to Assure That the Project Is Being Performed as Agreed As stated earlier, the prime contractor will assign a project manager to oversee the work of the subcontractor. This project manager will use the subcontractor’s project plan as the basis for his monitoring. The plan should include significant milestones (i.e., completion of phases, demos of major interim deliverables), and the prime contractor’s project manager will assure that these milestones are met. Generally, this will not be a fulltime assignment for the prime contractor’s project manager, but he must assure that the project is proceeding as agreed. If only a portion of the project is outsourced, the project manager responsible for the project will also be responsible for monitoring the work of the subcontractor. Author’s experience: A smaller service organization reported its failure with a subcontract. The agreements were signed, and then there was little or no contact with the subcontractor until close to delivery date. At that point, the prime contractor was told that delivery would be several weeks late. This information was given to the author as evidence that subcontracting was not workable for a smaller organization. The problem: A project that is outsourced is still a project of the prime and requires management. Lack of appropriate management caused schedule delays and cost overruns. The solution: By implementing standard project management practices on subcontracted work, the organization was able to more closely monitor the work and was kept aware of progress and problems. Although there was resistance to outsourcing another project, it was successfully accomplished. Resistance statement 12: This sounds like double work for the project manager; she has to monitor the internal team and the subcontractor. Response: The work involved in monitoring the subcontractor will not be nearly as comprehensive as managing the internal aspects of the project.
Software Subcontract Management
81
However, the subcontractor must be viewed as part of the team, and therefore its work must be monitored.
5.4.3 The Prime Contractor’s Project Manager Facilitates Periodic Technical Reviews with the Subcontractor This aspect of subcontractor monitoring is often overlooked and represents a severe potential risk. Regardless of how careful the original selection of the subcontractor was and how qualified the subcontractor is to perform the work assigned, periodic technical reviews are imperative. The project manager facilitates these review meetings; if the subcontractor is remotely located, the meetings can be conducted via telecommunications systems. The purpose of these meetings is to assure that the work being performed by the subcontractor is compatible and consistent with the internal systems of the organization. Because the subcontractor is not physically present within the prime contractor’s organization and is not working with the prime contractor’s development systems, there is always a risk that incompatibilities will be introduced. Regardless of how exactly the development system of the subcontractor mirrors that of the prime contractor, inconsistencies may be introduced. Technical review meetings will greatly help to mitigate this risk. Although facilitated by the project manager, the review meeting should involve technical personnel from both organizations. The prime contractor’s technical personnel will describe their progress and issues and obtain input from the subcontractor’s technical personnel, and vice versa. Tools being used to create code, testing procedures, and platforms will all be discussed to assure that the subcontractor’s work can be integrated into the prime contractor’s systems with little effort. The frequency of these meetings depends on the complexity of the individual project and the discretion of the prime contractor’s project manager. The project plan should include these reviews. 5.4.4 The Prime Contractor’s Quality Assurance Personnel (Frequently the Project Manager) Monitor the Processes and Interim Work Products of the Subcontractor Quality assurance as used here refers to both the processes being used by the subcontractor and the subcontractor’s deliverables. The prime contractor’s quality assurance personnel—sometimes a group, but more often this responsibility is delegated by default to the project manager—review
82
Practical Software Process Improvement
the subcontractor’s project plan and test procedures, at a minimum, to assure that they are sufficient to produce the product or service at the level of quality required by the prime contractor. The following is an overview of what should be monitored in reference to project plans and test procedures. ◆
Project plan: The project plan should be monitored on an ongoing basis to assure that it is being used to drive the work of the project. This plan should have been reviewed and approved by the project manager before the project began; like a project plan for an internal project, it must be updated on a regular basis to reflect progress on the project. It must also be changed as necessary. The prime contractor’s project manager must review this document on a regular basis to assure compliance with the contractual agreement. The project plan should include these reviews.
◆
Test procedures: Test procedures should be available, in draft form, early in the project life cycle. The prime contractor’s project manager needs to review them to assure that they are adequate; he can and should make suggestions to increase rigor as he deems necessary. The test procedures are not to be reviewed only once; the original draft documents will be changed as more information about the project becomes known. Therefore, they must be reviewed periodically. The project plan should include these reviews.
5.4.5 The Subcontractor Takes an Active Role in Acceptance Testing The original project plan submitted by the subcontractor should have included time and effort for acceptance testing. The process of integrating systems built by a subcontractor with internal systems is one area that is often problematic with organizations that outsource work. Overcoming this is simplified by requiring the involvement of the subcontractor in acceptance and integration testing. The project manager should assure, when she reviews the project plan submitted by the subcontractor, that this is part of the plan. Acceptance criteria should also be part of the plan. Measurement and Analysis For each project, there are a number of areas to measure. A documented procedure needs to be created so the same information is collected for each project. This enables reasonable comparisons and drives additional process improvements.
Software Subcontract Management
83
The plan should allow for exceptions; the exact same things may not be valid to be measured on each project. The following are some key areas to measure: ◆
Cost of monitoring activities;
◆
Delivery dates: actual versus planned.
5.4.5.1 Cost of Monitoring Activities The prime contractor’s project plan should include the steps necessary to monitor the work of the subcontractor (i.e., original and ongoing reviews of the project plan and technical reviews). These each have a cost in terms of the project manager/project team’s time and effort. Information related to time and effort should be documented for these activities. For example, if two hours a week is allotted for technical reviews, but on several occasions issues arose which required a second meeting during the week, then that information should be reviewed. It will assist in the planning, scheduling, and budgeting of future similar projects. What caused the additional meetings? Were these issues that could or should have been foreseen? Can they be captured as risks on future similar projects? Table 5.3 can be used to track the costs of activities. 5.4.5.2 Delivery Dates: Actual Versus Planned When comparing the actual delivery dates to the planned dates, there are two basic areas to view: 1. Deliverables received from the subcontractor; 2. Deliverables made to the subcontractor from the prime contractor.
Table 5.3 Cost Tracking Table Item
Planned Cost
Actual Cost
Discrepancy
1
Original review of project plan
$xx,xxx.00
$xx,xxx.00
$x,xxx.00
2
Technical reviews (5)
$xx,xxx.00
$xx,xxx.00
$x,xxx.00
N
Other items
$xx,xxx.00
$xx,xxx.00
$x,xxx.00
84
Practical Software Process Improvement
These areas should be viewed to see how close they were to the plan (see Table 5.4). If there were discrepancies, what caused them? If the subcontractor was late because the prime was late delivering an item on which the subcontractor’s deliverable was dependent, this information must be captured. If the subcontractor was late with deliverables, the reason should be explored. Perhaps it is a consideration to be factored in when awarding the next contract.
5.5 Software Subcontract Management/Supplier Agreement Management Flowchart The software subcontract management/supplier agreement management flowchart shown in Figure 5.1 provides an overview of this discussion. Note that this includes both subcontractor selection and management. As stated, these comprise the foundation of an effective software subcontract management/supplier agreement management process.
5.6 Software Subcontract Management/Supplier Agreement Management Checklist The software subcontract management/supplier agreement management checklist can be used by both the person responsible for process improvement and the team (see Table 5.5). While the person responsible for process improvement has ultimate responsibility to assure that these steps are performed, other team members can refer to the checklist so they will know what is expected in the performance of subcontractor management. The template used in the software subcontract management/supplier agreement management process is the gap analysis template (see Appendix A on the enclosed CD-ROM).
Yes Approved vendor list accessed
Outsourcing decision made
RFPs sent
Bidders’ conference to be held?
Bidders’ conference held
No
Subcontractor project plan submitted
Plan approved?
Yes
Technical review held
Proposals reviewed
Proposals received
Yes
Project plan reviewed and updated
Acceptance testing performed
Acceptance testing ready? No No
Acceptance test completed? Yes Project completion
85
Figure 5.1 Software subcontract management/supplier agreement management flowchart.
Software Subcontract Management
No
Contract awarded
86
Practical Software Process Improvement Table 5.4 Deliverables Tracking Table Deliverable
Planned Date
Actual Date
1
Project plan—original
August 10, 200x
August 29, 200x
2
Test procedures draft
August 30, 200x
September 15, 200x
N
Item
Date
Date
Table 5.5 Software Subcontract Management/Supplier Agreement Management Checklist Item
Status
1 The decision to outsource is made according to a documented procedure. 2 Candidate subcontractors are selected according to a documented procedure. 3 RFPs are sent to all candidate subcontractors. 4 A bidders’ conference is held (optional). 5 Proposals received are reviewed. 6 The contract is awarded based on documented criteria. 7 The subcontractor submits a detailed project plan. 8 The prime contractor’s project manager monitors the subcontractor’s work based on the plan. 9 Periodic technical review meetings are held. 10 The prime contractor monitors the quality of the subcontractor’s processes and deliverables. 11 The subcontractor has a major role in acceptance and integration testing. 12 The prime contractor measures the cost of monitoring the subcontractor. 13 The prime contractor documents incoming and outgoing deliveries, comparing the actual to the planned.
References [1]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998, p. 171.
87 [2]
Ahern, Dennis M., Aaron Clouse, and Richard Turner, CMMI Distilled, New York: Addison Wesley, 2003, p. 136.
[3]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998.
6 Software Quality Assurance/Process and Product Quality Assurance
With CMM®, “the purpose of Software Quality Assurance is to provide management with appropriate visibility into the process being used by the software project and of the products being built” [1]. With CMMI®, “the purpose of Process and Product Quality Assurance is to provide staff and management with objective insight into the processes and associated work products” [2]. Software quality assurance traditionally measured the quality of the products of the project, including interim deliverables. With the introduction of the CMM®, the focus shifted to process quality, with product quality still being an integral part of project development but outside the scope of the project methodology. With CMMI®, assurance of the quality of the process was maintained, along with product quality. Organizations that do not practice both aspects of quality assurance increase the risk of serious difficulties. There tends still to be a belief that product quality can be tested in and process quality is unnecessary. Several, but not all, of the problems inherent in that way of thinking are mentioned here:
89
90
Practical Software Process Improvement
◆
Lack of project control—project managers, sponsors, and others do not know where the project stands in terms of budget, schedule, or quality;
◆
Inability to replicate project success;
◆
Conversely, inability to prevent repetitive project failure—not monitoring the process prevents management from seeing where mistakes were made;
◆
Excessive testing time—this can result in missed delivery dates, dissatisfied customers, and lost competitive opportunities;
◆
Expensive rework;
◆
Inferior product quality.
In order to begin to make changes in your organization, information will need to be gathered. As stated in previous chapters, much of this information can be obtained in conversations with the following people: ◆
Project managers;
◆
Developers;
◆
Testers;
◆
Business analysts;
◆
Sales personnel;
◆
Marketing personnel;
◆
Higher level executives.
Ask yourself, and these other key people in your organization, the following questions: ◆
What are the quality processes in your organization (if any)?
◆
Is there a quality team?
◆
Are software reviews and inspections part of every project plan? If so, are they performed?
◆
Are specific software work products designated for periodic inspection for compliance at predetermined stages during the project life cycle?
Software Quality Assurance/Process and Product Quality Assurance
91
◆
Are testing personnel involved in the project from the earliest stages of the requirements phase?
◆
Is periodic reporting of quality assurance activities made to upper management? If so, are such reports scheduled at certain times during the project life cycle?
◆
Do the people charged with quality assurance activities have a specific escalation procedure?
◆
How is reporting of noncompliance issues handled?
◆
Who has authority to prevent release of a product or service if it does not satisfy the basic quality requirements?
Determine what your organization usually does in terms of quality assurance. It’s likely that different procedures, however informal, are performed differently from project to project.
6.1 Gap Analysis for Software Quality Assurance/Process and Product Quality Assurance Table 6.1, which uses the gap analysis template for software quality assurance SQA/process and product quality assurance from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are common in many organizations, they may not be relevant to yours; these are simply examples to assist you in completing your own gap analysis. As with all of the gap analysis templates in the appendix, the CMM/CMMI® column is already populated. This column shows the basic standards of the KPA to which the template refers. In Table 6.1, the items in the other two columns, Current Practice and Change Needed, are only examples for illustrative purposes.1 There are four items listed in the CMM/CMMI® column; there are also three blanks cells for each of the corresponding columns, Current Practice and Change Needed. Depending on the individual organization, for each CMM/CMMI® standard there may be several Current Practice items and several Change Needed items. These should be used as needed. It is not 1. Please note that these are not of all the activities and abilities associated with this KPA, but they are the key areas that are frequently most lacking in many organizations.
92
Practical Software Process Improvement Table 6.1 Gap Analysis for Software Quality Assurance/ Process and Product Quality Assureance Current Practice
CMM/CMMI®
Change Needed
A person responsible for Identify an individual or 1 SQA is the responsibility of the test SQA oversight is identified group of individuals who will assume SQA oversight team. responsibilities.
2 SQA is based on test plans.
An SQA plan that includes specific SQA steps is included as part of the project plan.
Assure that the individual(s) responsible for SQA oversight are involved in the earliest stages of project planning.
3 Management is advised Regular reporting to key when problems occur. management stakeholders is performed as stated in the project plan.
Establish specific reporting milestones with identified contingency reporting for emergencies.
4 If quality is considered adequate by the team, the project moves forward.
Assure that the software quality standards are clearly defined and that a procedure is created to obtain project sponsor approval to proceed if they are not.
A method of dealing with variations from approved quality levels is identified and followed.
necessary to have each cell completed; conversely, if there are more than three corresponding items, additional rows of cells can be added. Note also that the gap analysis refers to a quality assurance group. This is the ideal that is seldom achieved in organizations that are not seeking a specific CMM/CMMI® level. Often quality assurance activities are delegated by default to the project manager. Each of the activities detailed in this chapter can be performed by an individual, although tailoring will be
Software Quality Assurance/Process and Product Quality Assurance
93
required. This discussion will include specifics on how to tailor these items in an organization that does not have a separate quality assurance group. Information in the gap analysis refers to the individual or individuals responsible for quality assurance oversight. The cliché that quality assurance is everyone’s responsibility remains true; however, for optimum efficiency someone must have oversight responsibilities. This is the person (or group of persons) who will identify SQA milestones when the project plan is being developed and assure that these SQA milestones are met. This, too, is detailed later in the chapter. In the first column are examples of pertinent findings. In this example, quality assurance is seen as the responsibility of the test team. This is a common problem in many organizations. The test team (or individual tester in organizations that don’t have a test team) has quality assurance responsibilities, but those responsibilities are not the test team’s alone. Optimally, as stated earlier, SQA is a separate organization outside of the project team, independent of the project manager and project sponsor. However, as also stated earlier, this ideal is seldom achieved. In those cases, quality assurance oversight is usually the responsibility of the project manager. He must assure that quality milestones are part of the project plan. If a quality assurance initiative is being implemented after the start of the project, the project manager should request a change to the project plan as described in Chapter 7. In many cases, other stakeholders will not perceive the value in doing this; however, implementing the quality steps will still be beneficial. In this case, the project manager can review his chosen quality milestones during regularly scheduled status meetings and seek input from the project sponsor if he feels that the product of the project is not being produced to the needed level of quality. The example also states that quality assurance is monitored by the test team. If specific milestones are included in the project plan, problems will be identified long before integration testing begins. Defects are easier—in terms of time, money, and complexity—to fix the earlier in the project life cycle that they are found. Building in these milestones is an important quality assurance step. The third point in this example states that upper management is notified when problems arise. This is a chronic problem on projects; no one wants to give bad news, so its delivery is delayed. This always worsens the problems. If management personnel are notified in a timely manner of lack of progress, they can notify the customer early if there is to be a schedule delay or if additional monies will be needed to complete the project. The
94
Practical Software Process Improvement
customer can then make whatever changes to its budget and implementation schedule may be required. If management does not know when problems arise, the problems will be compounded once the customer is eventually notified of them. For this reason, timely reporting must be performed. Finally, in this example, the evaluation of quality prior to deployment is left to the project team. With no standards to which the product or service must be held, and with a delivery date fast approaching, a “good enough” decision may be made. This presents a variety of problems, as good enough for the project team may not be acceptable for the customer. Upper management must know the level of quality, as measured by predetermined standards, and make a judgment based on that information. Like the examples in the previous chapters, this example is oversimplified, but it provides a basis for your work in your own organization. Once you’ve finished your interviews, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you need; remember Table 6.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. This template shows four critical items in the CMM/CMMI® column. The problems that you identify regarding quality assurance will probably fall into one of those four categories. You may, however, have more than one issue for one or more of the categories. Include as many as you find; you will prioritize from that list. Having spoken with several people in the organization, you will probably find many commonalities. For example, the project sponsor may complain that she encounters customer complaints or an unacceptable level of defects once the product or service is deployed. She may state that such issues should have been identified and conveyed to her. The project manager may feel that he had inadequate control of the project, not being aware of whether basic quality steps, such as code inspections, were being implemented and, if so, how effective they were. Testers may say that the code they receive is not really ready for testing. Resistance statement 14: This seems like a separate project just for quality. We’ve had no major complaints. Why should we do all this? Response: Quality tasks must be part of each project. This will ensure a better product or service and lead to higher customer satisfaction. In today’s market economy, it is vital to get a better product or service to market faster than the competition. Taking these steps will help achieve that goal.
Software Quality Assurance/Process and Product Quality Assurance
95
Now you are ready to look at solutions. As with all of the KPAs we will use the CMM/CMMI® as the foundation because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization. The following is a summary of the abilities and activities that are associated with SQA/process and product quality assurance KPA for CMM/CMMI®.2 1. A person responsible for SQA oversight is identified. 2. An SQA plan that includes specific SQA steps is included as part of the project plan. 3. Regular reporting to key management stakeholders is performed as stated in the project plan. 4. A method of dealing with variations from approved quality levels is identified and followed. The following discussion can be used as the basis for your process. Remember always to tailor it to the needs of your organization. The first area mentioned is as follows: 6.1.1 A Person Responsible for Quality Assurance Oversight Is Identified As stated earlier, in optimum situations there will be a person in charge of a quality assurance team. However, often budget or other constraints prevent this from occurring. In any case, someone must be charged with this oversight. This is frequently the project manager, but could be any other team member who is knowledgeable about project quality standards. A business analyst can usually serve in this capacity. The specific responsibilities of this person, in addition to her other role on the project, should be documented. They include the following: ◆
Provide input regarding quality standards to project planning;
◆
Define quality milestones to be reviewed during the project life cycle—this could include code reviews and demos;
2. Please note that these are not all inclusive; the purpose is to provide you with the basics of process improvement. For more detailed information, please see [3].
96
Practical Software Process Improvement
◆
Assure that specified quality steps are being implemented by monitoring code reviews, attending demos, and assuring that quality levels are met;
◆
Issue periodic quality reports to identified management stakeholders;
◆
Escalate quality deviations to management;
◆
Recommend “go/no go” depending on the quality of the finished product or service.
Ideally, the person responsible for quality assurance will be independent of the project. This is to ensure that there can be no negative repercussions as a result of reporting product or process shortcomings. A person or group who can evaluate a project’s process and products without any concern that a negative finding will impact his performance review is in a stronger position to assure quality. However, many organizations perform quality assurance functions without this independence. It is mentioned here as the ideal, but it is not an absolute necessity by any means. Any organization with an effective project manager can successfully implement these steps. 6.1.2 An SQA Plan That Includes Specific SQA Steps Is Included As Part of the Project Plan An SQA plan should be part of the project plan. If there is no formal plan, specific steps should still be included in the project plan. The following are some basic quality assurance steps that will assist in achieving the goal of improved process and product quality. Tailor this list to suit the needs of your organization. It is pointless to include steps that no one will perform; start where your organization is comfortable and make incremental improvements in quality assurance steps over time. Assure that the project plan includes the following components: ◆
Project charter (see Chapter 3);
◆
Schedule based on the WBS;
◆
Budget;
◆
Project tracking milestones;
◆
Code reviews—specify at what points they will be held and describe the format, such as who (or what functional group) must be represented;
Software Quality Assurance/Process and Product Quality Assurance
97
◆
Demos (if applicable)—specify when and what they (it) should include;
◆
Quality standards—these will be based on the product or service being produced and may include an acceptable number of defects identified in each phase or maximum acceptable downtime.
This list is not exhaustive; draw on your own experience with the applications being used to establish quality assurance steps. As with all process steps, having them in the plan is not enough; they must be performed. The person who is designated responsibility for quality assurance oversight must assure that these tasks are implemented. For example, having a project schedule as part of the plan is vital; assuring that the project schedule is managed is the purpose of having the schedule. Other items can and should be scheduled in, such as code reviews. In all likelihood it will be the project manager who facilitates these reviews. Some of these items, such as reviewing milestones, can be incorporated into the weekly status meetings. Like code reviews, product demos will need to be scheduled outside of status meetings. 6.1.3 Regular Reporting to Key Management Stakeholders Is Performed As Stated in the Project Plan Reporting quality assurance findings serves two purposes: 1. Identified stakeholders—those with a need to know—are kept informed about the progress of process and product quality. 2. Team members know that performance will be reported, thus helping to ensure improved performance. Early in the planning stages of the project, the people who need to know quality updates should be identified. At a minimum, this will be the project sponsor. However, some others who should receive these reports are the following: ◆
Development lead;
◆
Test lead;
◆
Business analyst(s).
98
Practical Software Process Improvement
Reports to these people should include summary information about the quality team’s (or individual’s) efforts. An example follows in Table 6.2. This simple report assures that stakeholders who need information about the quality of the project are receiving it. For example, upon receiving this, the development lead may recognize that Module 456 is a particularly complex one, but one with which he is familiar. His assistance at this point in the project may prevent a costly schedule delay. See Appendix G on the enclosed CD-ROM for a template for this report. 6.1.4 A Method of Dealing with Variations from Approved Quality Levels Is Identified and Followed The role of the quality assurance team or individual is to assure that quality standards are being met and quality steps are being performed to ensure a high-quality product or service. As deviations are identified, they must be documented and resolved. How this is done should be documented in the quality assurance plan. When deviations from process or product quality are identified, the first level for resolution is the project team. The project manager has the responsibility of documenting the issue, assigning it to a team member (or herself), and following up to assure resolution. Table 6.3 is a sample template for tracking identified quality issues. Table 6.3 can be part of the regular report sent to management. A template can be found in Appendix G on the enclosed CD-ROM. Some issues cannot be resolved at the project level. Either they require an upper management decision (e.g., the delivery date simply cannot be met if the steps needed to assure the required level of quality are performed) or the problem exceeds the technical expertise of the team members. Once an issue has been identified, the decision as to whether it can be Table 6.2 Sample Quality Report QA Task
Date Performed
Comments
1
Code review—Module 123
August 5, 200X
Accepted.
2
Code review—Module 456
August 10, 200X
A second review, not initially scheduled, will be held on August 24 due to problems identified.
N
Software Quality Assurance/Process and Product Quality Assurance
99
Table 6.3 Sample Quality Issues Register Date
Issue
1
6/10/0x
Mary Williams Demo crashed when X users were logged on.
2
6/14/0x
Code review for Module XYZ not held. (Issue)
N 6/15/0x
Assigned To
Due Date
Status
7/10/0x
Open
Peter Johnson
6/20/0x
Open
(Name)
(Due date)
(Open or closed)
resolved within the project team must be made. If it cannot, it needs to be escalated immediately. In some cases, a problem may appear to be within the scope of the project team. In that case, it will be assigned by the project manager as indicated earlier. At any time from the point at which it was identified to the projected resolution date (“Due Date” in Table 6.3) that the person to whom it was assigned recognizes that it is outside of his expertise, the project manager should be notified for immediate escalation. The escalation path should be defined in the quality plan. If an issue cannot be resolved within the project team, to whom should it be reported? At a minimum, it must be reported to the project sponsor, but often she is not the person to resolve it. Each organization must identify those people to whom issues should be reported if they cannot be resolved within the project team. It may include the following: ◆
Designated subject matter expert;
◆
Development lead from another group within the organization;
◆
Test lead from another group within the organization;
◆
Subcontractor management (if a portion of the project is outsourced and the problem is identified in that portion);
◆
Business analyst.
The key is to identify people who can be relied on to assist with the resolution of the problem, in addition to whoever—usually the project sponsor—can work with the customer to make any adjustments that may be required. Determining who these people are will require some
100
Practical Software Process Improvement
discussion within the organization. This should be done during project planning. If a quality assurance program is being implemented after the project has begun, it will still be necessary to speak to those people in a position to know the following: ◆
Who are the subject matter experts in the organization, or elsewhere in the company, on the applications being created or enhanced?
◆
Who has the most frequent contact with the customer? This could be the product managers, project sponsor, or someone else within the organization.
◆
Ultimately, who is the person who could best deliver bad news to the customer?
◆
Who in the organization needs to know about any proposed budget or schedule changes?
Identify these resources as early as possible. Resistance statement 15: How can we identify who can solve a problem before the problem exists? Response: You can’t. But you can identify who in your organization, even people not on the current project, are experts in that field. Resistance statement 16: At times we are working on something completely new. No one in the organization has any experience with it. Response: This is more challenging and is a common problem. However, you still need to identify those people who could be most helpful if a problem arose. For example, if you are automating your company’s accounts receivable system for the first time, the accountant should know how she wants things to run. This will not provide technical (i.e., coding) help but can assist developers in clarifying what is needed and determining whether it is possible with the current resources, budget, and schedule.
Measurement and Analysis For SQA/process and product quality assurance, two main areas are to be measured and analyzed: ◆
Cost of process efforts;
◆
Number of process tasks.
Software Quality Assurance/Process and Product Quality Assurance
101
6.1.4.1 Cost of Process Efforts The amount of time spent performing the following activities should be documented: ◆
Quality planning;
◆
Code reviews;
◆
Milestone reviews;
◆
Demo reviews;
◆
Report creation;
◆
Meetings to present quality findings.
Table 6.4 is a suggested format. Be aware that this is only a suggestion. The only right way of capturing and documenting this information is the way that makes sense for your organization. This will depend on who needs to see the information. If the project sponsor wants to see this as part of his reports, you will need to tailor it to suit his needs. Be aware of the need to exercise good judgment. For example, one can probably estimate with some degree of accuracy how much time was spent in the quality assurance aspect of project planning. If quality assurance is an integral component of the plan, then a significant amount of time was
Table 6.4 Cost of Process Efforts Register
Item
Time Spent
No. of Times Performed
Cost Each Total Time Cost
1
Project planning 12 hours
N/A
X
12 * X
2
Code review— Module XYZ
4 hours
3
X
12 * X
3
Code review— Module ABC
6 hours
4
X
24 * X
4 5 N
Comments
Three reviews planned; a fourth was requested by the lead developer.
102
Practical Software Process Improvement
probably spent, especially if this is the first time the organization has focused on quality planning. However, as this quality planning was probably part of every project planning meeting and possibly of early requirements meetings, it may be difficult to quantify how many times this planning was performed. An activity such as a code review is performed alone; it is not part of status meetings, planning meetings, or requirements reviews. Therefore, the number of times a code review for a particular model has been performed can be documented. See Appendix G on the enclosed CD-ROM for a template. 6.1.4.2 Number of Process Tasks The information contained in Table 6.5 can be obtained from Table 6.4, but while that measure focuses on cost, this focuses on activity. As with cost of process efforts, the person responsible for these measurements must exercise good judgment. A quick hallway conversation with the project sponsor cannot be considered a meeting to present findings. However, if that conversation was lengthy, or if a 10-minute hallway conversation occurred each day, this is time that should be accounted for. See Appendix G on the enclosed CD-ROM for a template. This is the basis of an SQA/process and product quality assurance process. On the following pages you will find a flowchart for SQA/process
Table 6.5 Number of Process Tasks Performed Register Activity
No. of Times Performed Comments
Quality planning
This was part of all planning activities.
Code reviews
12
One additional review was performed at the request of the development lead.
Milestone reviews
8
Milestone reviews held midway through the phase were particularly helpful in preventing problems later in the life cycle.
Demo reviews
4
First phase demo was held too late; this caused a delay in initial acceptance testing.
Report creation
12
The report template saved time each reporting period.
Meetings to present findings
4
The written reports reduced the need for face-to-face meetings.
Software Quality Assurance/Process and Product Quality Assurance
103
and product quality assurance and a checklist. There is also a flowchart for a change control procedure. Chapter 8 has a sample SQA/process and product quality assurance process and Appendix I on the enclosed CD-ROM has a template to use in developing your own.
6.2 SQA/Process and Product Quality Assurance Flowchart The SQA/process and product quality assurance flowchart shown in Figure 6.1 provides an overview of this discussion. As stated, this comprises the foundation of an effective SQA/process and product quality assurance process. The change control procedure remains the same regardless of the item being changed. Figure 6.2 depicts a recommended change control procedure. It is included here for your convenience.
SQA plan developed
Project initiated
Project plan baselined
Milestone 1 reached
Yes Milestone 1 acceptable?
SQA reviews milestone 1
Issue report
Milestone reached
No Make changes
Yes Milestone acceptable ?
SQA reviews milestone N
Issue report
Document metrics
No Make changes
Figure 6.1 SQA/process and product quality assurance flowchart.
Issue final report
104
Practical Software Process Improvement
Change requested
Change request form sent to all stakeholders
Impact analysis meeting held
Project sponsor notified of impacts
Project sponsor approves change?
No
Stakeholders notified that change request is denied
Yes Project manager changes baselined documents
Project manager notifies all stakeholders of changed documents
Figure 6.2 Change control procedure.
6.3 SQA/Process and Product Quality Assurance Checklist The SQA/process and product quality assurance checklist can be used by both the person responsible for process improvement and the team (see Table 6.6). While the person responsible for process improvement has ultimate responsibility to assure that these steps are performed, other team members can refer to the checklist so they will know what is expected in the performance of SQA. The templates used in this process are: ◆
SQA/process and product quality assurance gap analysis (see Appendix A on the enclosed CD-ROM);
◆
Sample quality report (see Appendix G on the enclosed CD-ROM);
Software Quality Assurance/Process and Product Quality Assurance
105
Table 6.6 Software Quality Assurance/Process and Project Quality Assurance Checklist Item
Status
1. SQA plan included as part of project plan 2. Milestone 1 reviewed 3. Report issued 4. Milestone N reviewed 5. Report issued 6. Metrics documented 7. Final report issued
◆
Sample quality issues register (see Appendix G on the enclosed CD-ROM);
◆
Cost of process efforts register (see Appendix G on the enclosed CD-ROM);
◆
Number of process tasks performed register (see Appendix G on the enclosed CD-ROM).
References [1]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998, p. 171.
[2]
Ahern, Dennis M., Aaron Clouse, and Richard Turner, CMMI Distilled, New York: Addison Wesley, 2003, p. 136.
[3]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998.
7 Software Configuration Management/Configuration Management
With CMM®, “the purpose of Software Configuration Management is to establish and maintain the integrity of the products of the software project throughout the project’s software life cycle” [1]. With CMMI®, “the purpose of Configuration Management is to establish and maintain the integrity of work products using configuration identification, configuration control, configuration status accounting, and configuration audits” [2]. Organizations that do not practice configuration management increase their risk of schedule delays and budget overruns. These problems can occur because of confusion surrounding which versions of work products are current. Work products can include any of the following, at a minimum: ◆
Requirements—business requirements and technical requirements;
◆
Design;
107
108
Practical Software Process Improvement
◆
Code modules;
◆
Test procedures—scripts and test cases.
Several, but not all, of the problems that could result from inadequate or nonexistent configuration management are mentioned here: ◆
Undocumented requirements changes: testers are creating test procedures and scripts based on requirements that are no longer valid. Often this is not discovered until code is turned over to test, and testers find that they are not obtaining the expected results. At that point they may be advised that the requirements changed, thus necessitating extensive and time-consuming rework on recreating test procedures.
◆
Design changes: if developers are not aware of what the most current design document is, they may create or change code that is consistent with an earlier, now-obsolete version of the design document. Again, this results in extensive and costly rework.
These are two common examples of problems that can be easily prevented with use of configuration management. Author’s experience: At a large telecommunications company at which the author was employed as a consultant, the test team, during a weekly project status meeting, reported that significant problems were being found during testing. The lead tester stated that it did not appear that the requirements were resolved in the code. They described some specific issues. The business analyst then suggested that the test team look at the requirements, as the current version did not include the items they were testing for. The problem: Without any but the most informal review, requirements were released to development and testing. As the business analyst continued to consider them, and in conversations with the requestor, he made significant changes that satisfied the requestor. However, no one else on the team was aware of these changes. The solution: The author implemented a change management procedure in which all work products were baselined and then placed under change control. This involved the simple step of creating a folder on the shared drive for which the project manager had read/write privileges and all
Software Configuration Management/Configuration Management
109
other team members had read-only privileges. After baselining, all team members worked from the same documents. If a change was requested, a formal request was made to the project manager (usually in the form of an email), and all team members had input into the change. This process resulted in more care by the requestor in making the request and more confidence by the team in creating the requested product or service.
In order to begin making changes in your organization, information will need to be gathered. As stated in previous chapters, much of this information can be obtained in conversations with the following people: ◆
Project managers;
◆
Developers;
◆
Testers;
◆
Business analysts;
◆
Sales personnel;
◆
Marketing personnel;
◆
Higher level executives.
Ask yourself, and these other key people in your organization, the following questions: ◆
How is version control handled? Is a tool used? If so, has everyone who needs to use it been trained?
◆
Is there a formal method of baselining documents? If not, how do people with a need to know find out what versions are the most current?
◆
How are changes to baselined documents made? If documents are not baselined, how are changes to them made? How are team members notified of these changes?
It is likely that there is limited configuration management performed in the organization. Many organizations embarking on a process improvement initiative—whether formal or informal—find this to be a significant problem. And like other KPAs mentioned earlier, configuration management does not stand alone; it only has value when used with other KPAs. For
110
Practical Software Process Improvement
example, if the project plan lists several modules that will be changed in the course of the project, they must be under configuration management.
7.1 Gap Analysis for Software Configuration Management/Configuration Management Table 7.1, which uses the gap analysis template for software configuration management (SCM)/configuration management from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are common in many organizations, they may not be relevant to yours; these are simply examples to assist you in completing your own gap analysis. As with all of the gap analysis templates in the appendix, the CMM/CMMI® column is already populated. This column shows the basic standards of the KPA to which the template refers. In Table 7.1, the items in the other two columns, Current Practice and Change Needed are only examples for illustrative purposes.1 There are five items listed in the CMM/CMMI® column; there are also three blanks cells for each of the corresponding columns, Current Practice and Change Needed. Depending on the individual organization, for each CMM/CMMI® standard there may be several Current Practice items and several Change Needed items. These should be used as needed. It is not necessary to have each cell completed; conversely, if there are more than three corresponding items, additional rows of cells can be added. In the first column are examples of pertinent findings. In this example, configuration management is informally performed. In cases such as this, there may be a version of requirements that is generally accepted as the version from which work products will be created. Design is based on it, and the test team or individual tester creates plans based on that document. However, it may be changed when the requestor thinks of some additional functionality or a developer sees a way to resolve another, unrelated issue, perhaps because he will be working on a module that has presented some problems in the past. If these changes are made, any notification to downstream functions (i.e., testing) is informal, if done at all. Second, in the gap analysis example, there is the lack of a specific, identified repository for work products under version control. This 1. Please note that these are not of all the activities and abilities associated with this KPA, but they are the key areas that are frequently most lacking in many organizations.
Software Configuration Management/Configuration Management
111
Table 7.1 Gap Analysis for Software Configuration Management/ Configuration Management CMM/CMMI®
Change Needed
1 SCM is done very informally.
Current Practice
An SCM plan is created for each project.
Prepare an SCM plan template.
2 Work products are maintained by the project manager and are not on a shared drive.
A configuration Establish a repository management library is providing read-only access established as a repository for all team members. for work products under configuration management.
3 A few work products are The work products that will under version control on be under configuration management are identified an ad hoc basis. at the start of the project.
Establish specific reporting milestones, with identified contingency reporting for emergencies.
4 Change requests are made as needed by any team member.
A formal procedure for change requests to baselined work products is documented and followed.
Create and document a change request process.
5 Changes are made as needed.
Changes to baselined work products are made only after the change request process has been followed and all stakeholders are notified of the change.
Establish a policy for changing baselined work products, incorporating the change request process into it.
complicates the project by not providing ready access to all team members. If changes are made without notification, and there is an identified read only repository, at least team members can check it to assure that the work they are doing is consistent with the current documents of the project. Third, knowing what to put under version control is vital. This may differ from project to project, but some work products should be under version control for every project. These will be discussed later.
112
Practical Software Process Improvement
A vitally important aspect of configuration management is having a change request process. This ensures baseline integrity and also ensures that all stakeholders are aware of changes when they are initially proposed, before the change is made. Finally, we look at the method for actually changing the baselined work product. Note that notification to all stakeholders is key to project success. Like the examples in the previous chapters, this example is oversimplified, but it provides a basis for your work in your own organization. Once you’ve finished your interviews, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you need; remember Table 7.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. This template shows five critical items in the CMM/CMMI® column. The problems that you identify regarding SCM/configuration management will probably fall into one of those five categories. You may, however, have more than one issue for one or more of the categories. Include as many as you find; you will prioritize from that list. Having spoken with several people in the organization, you will probably find many commonalities. For example, the developers may feel that as soon as design is complete and they have started coding, they hear of a change that requires redesign and then rework. Or, they may be working on a code module that they believe is the most recent version, only to find significant work has been done to the module by someone else who is still working on it, thus rendering all their time spent working on it useless. The test team or tester may spend months working on test procedures, only to have the code that is delivered significantly different from what was expected, due to changes in the requirements that were made without any notice to the test team. Resistance statement 14: We are on very tight schedules; there is little time for all of this additional work. Response: Industry studies confirm that, like many aspects of process improvement, taking this time early in the project will save time and money later.
Now you are ready to look at solutions. As with all of the KPAs, we will use the CMM/CMMI® as the foundation because it is based on industry best practices. Do not be overly constrained by it, however; remember that it is customizable to suit the particular needs of your organization.
Software Configuration Management/Configuration Management
113
The following is a summary of the abilities and activities that are associated with the SCM/configuration management KPA for CMM/CMMI®.2 1. An SCM plan is created for each project. 2. A configuration management library is established as a repository for work products under configuration management. 3. The work products that will be under configuration management are identified at the start of the project. 4. A formal procedure for change requests to baselined work products is documented and followed. 5. Changes to baselined work products are made only after the change request process has been followed and all stakeholders are notified of the change. Resolving the items shown in the gap analysis that was developed after interviews with stakeholders will assist the organization in satisfying these areas. The following discussion can be used as the basis for your process. Remember always to tailor it to the needs of your organization. 7.1.1 An SCM Plan Is Created for Each Project The configuration management plan should be prepared in the early stages of project planning and in conjunction with it. It need not be lengthy, and it will generally include the following items: ◆
The location of the project work product repository (discussed in more detail later);
◆
The name or main role of the project librarian. Note that this will seldom be a full-time position. Often the project manager will assume project librarian responsibilities as well as his/her project management role. If the person who will be the project librarian has been selected, that name should be in the project plan. If a project manager has not yet been assigned, but it is known that the project manager will also serve as project librarian, the SCM plan should list the role.
2. Please note that these are not all inclusive; the purpose is to provide you with the basics of process improvement. For more detailed information, please see [3].
114
Practical Software Process Improvement
7.1.2 A Configuration Management Library Is Established As a Repository for Work Products Under Configuration Management The plan mentioned in step one should describe this repository. For projects with limited budgets, an effective repository is simply a folder on the shared drive. It will contain a file for each software product that will be under version control (see Section 7.1.3), and the person designated as the project librarian will have read-write privileges. All other stakeholders will have read only privileges, allowing them to see the most recent version of the identified work products but not allowing any changes to them. 7.1.3 The Work Products That Will Be Under Configuration Management Are Identified at the Start of the Project The items to be placed under configuration management may vary to some degree from project to project. However, some items should always be included. These basic, constant items are: ◆
Software requirements;
◆
Design documents;
◆
Code modules;
◆
Test procedures;
◆
Support tools;
◆
Any process-related documents, such as standards and procedures.
7.1.4 A Formal Procedure for Change Requests to Baselined Work Products Is Documented and Followed During the life cycle of any project, changes will be necessary. Even after all stakeholders have agreed on the requirements, for example, the requestor often has ideas later that he/she wants incorporated in the release currently being developed. Or a developer may recognize how, with little effort, additional functionality could be introduced. However beneficial these changes might be, they must follow a change request process. As change requests can affect project plans, requirements, design, code modules, and test procedures, a separate section, Appendix C on the enclosed CD-ROM, describes a change request procedure that is sufficiently simple to be implemented in any organization but is nonetheless very effective.
Software Configuration Management/Configuration Management
115
7.1.5 Changes to Baselined Work Products Are Made Only After the Change Request Process Has Been Followed and All Stakeholders Are Notified of the Change The final step in this process is making the actual changes to the documents and notifying the stakeholders that they have been made. Following the impact analysis meeting, the project librarian will make the necessary changes to project work products and update them in the project repository (assuming, of course, the project sponsor has approved the change). He/she will then send an email to all stakeholders, listing the documents that have been changed, briefly summarizing the change and advising of their location in the repository. The document version should be updated with each change to the document. When first baselined, the document is “Version 1.0.” After the first change, it is “Version 2.0,” and so on. Again, this is not complex but provides a means for everyone to be working from the same and most current document. For version control of development modules, the solution, while not as simple, is workable for most organizations. The optimum solution is to utilize a version control tool, but creating a rudimentary method using the shared drive resolves the issue for any organizations whose budgets do not at present allow for the purchase of a tool. Code does not reside on a shared drive the way documents do, but a document can be used for check in/check out. It would list the code modules in one column and have columns for date, action (checked in or checked out), developer name, and version number. Table 7.2 is an example. In this example, XYZ is a new module. This is indicated by the version number. Any version scheme that makes sense for your organization can be used. Module XYZ was checked out by J. Smith on April 10, 200x. J. Smith needed to advise the project manager that he needed to work on the module. He could see by looking at the table, accessible to everyone to read
Table 7.2 Version Control Table for Code Modules Module
Date
Action
Developer
Version
1
XYZ
April 10, 200x
Checked out
J. Smith
1.00
2
ABC
May 16, 200x
Checked out
M. Williams
7.00
3
XYZ
May 20, 200x
Checked in
J. Smith
2.00
N
116
Practical Software Process Improvement
on the project’s shared drive, that it was not checked out. The project manager then updated the table. If anyone else wanted to work on the module, they would see that it was checked out by J. Smith and could check with him regarding his work on it. Module ABC in this example is an older module. M. Williams checked it out on May 16. On May 20, 200x, J. Smith advised the project manager that he had completed his work on Module XYZ, and it would now be accessible to others. Certainly, this method is not foolproof. It relies on the individual team members to check for module availability, but its effectiveness lies in that it helps keep team members accountable. This adds the burden of needing to contact the project manager every time a developer needs to work on a module, which is somewhat cumbersome. However, preventing the risk of having weeks or even months of work overwritten is worth the extra effort. The project manager could also delegate this to a senior developer. Following these simple steps will prevent serious problems that frequently occur on projects where no process for configuration management is established and followed. Measurement and Analysis For SCM/configuration management, there are two main areas to be measured and analyzed: ◆
Number of change requests made;
◆
Number of changes implemented.
The number of changes implemented should never exceed the number of change requests made. If it does, the process is not being followed, and corrective action is needed. Taking these measurements is not difficult. The project manager will maintain the email change requests he receives and can compare that to the version number. If he received five change requests for requirements, for example, and the final project version was Version 7, two unauthorized changes were made. In addition, tracking the specifics of the change can be beneficial for future planning. For example, a change in requirements late in the life cycle may indicate that insufficient time and effort were spent in creating, reviewing, and approving (baselining) the requirements. Changes such as
Software Configuration Management/Configuration Management
117
these can focus on where training or additional process improvements could prove beneficial. Table 7.3 can be used for tracking this information. In this table, in the Change Requested column, the project manager would insert a brief summary of the change that was requested. In Phase, she would indicate whether the request was made during requirements, design, or code, or another phrase. Note that it is important to track the kind of development life cycle that the project used. A change request during test is far more significant with a project using the traditional waterfall life cycle than for one using an iterative process. The Accepted and Rejected columns are self explanatory: a yes or no would go in each, indicating whether the change was incorporated into the project or postponed for a later release (or possibly rejected completely). This is the basis of an SCM/configuration management process. On the following pages, you will find a flowchart for SCM/configuration management and a checklist. See Chapter 8 for a sample process and Appendix I on the enclosed CD-ROM for a process template.
7.2 SCM/Configuration Management Flowchart The SCM/configuration management flowchart shown in Figure 7.1 provides an overview of this discussion. As stated, this comprises the foundation of an SCM/configuration management process.
7.3 SCM/Configuration Management Checklist The SCM/configuration management checklist can be used by both the person responsible for process improvement and the team (see Table 7.4).
Table 7.3 SCM Tracking Table Change Requested 1 2 N
Phase
Accepted
Rejected
118
Practical Software Process Improvement
Project initiated
SCM plan created
Librarian (or role) identified
Repository established
Documents baselined
Yes Change request received?
Change request process followed
Change approved?
Yes Update/revise documents
No
No
Notify stakeholders Proceed to deployment
Figure 7.1 SCM/Configuration Management Flowchart
While the person responsible for process improvement has ultimate responsibility to assure that these steps are performed, other team members can refer to the checklist so they will know what is expected in the performance of configuration management. The templates used in this process are: ◆
SCM/configuration management gap analysis template (see Appendix A on the enclosed CD-ROM);
◆
Version control table for code modules (see Appendix G on the enclosed CD-ROM);
◆
SCM tracking table (see Appendix G on the enclosed CD-ROM).
Software Configuration Management/Configuration Management
119
Table 7.4 SCM/Configuration Management Checklist Item
Status
1 An SCM plan is created in connection with the creation of the project plan. 2 The SCM plan is reviewed and approved (baselined). 3 A document repository is created. 4 All stakeholders are aware of the document repository and its location. 5 Only the project manager has read-write access to the repository. 6 All other stakeholders have read-only access to the repository. 7 All stakeholders know the change control procedure. 8 Change requests are made in writing to the project manager. 9 The project manager schedules an impact analysis meeting for each change request. All stakeholders are invited. 10 At the impact analysis meeting, a determination is made to accept or reject the change. 11 The project sponsor is notified of the decision. 12 The project manager makes changes to all documents to reflect the change, as necessary. 13 The project manager notifies all stakeholders of the documents that have been changed.
Selected Bibliography Whitgift, D., Methods and Tools for Software Configuration Management, John Wiley and Sons, London, England, 1991.
References [1]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998, p. 180.
[2]
Ahern, Dennis M., Aaron Clouse, and Richard Turner, CMMI Distilled, New York: Addison Wesley, 2003, p. 136.
[3]
The Capability Maturity Model: Guidelines for Improving the Software Process, Carnegie Mellon University, Software Engineering Institute, 1998.
8 Process Documentation
For any new processes to be effective, they must be documented so they can be followed repeatedly. There is no point in initiating process improvements unless they are written down and available to all stakeholders. There are several advantages to this: ◆
New team members will have a ready source of information about how to perform their tasks. This will reduce the size of the learning curve and reduce the amount of time more experienced team members need to spend teaching new team members.
◆
Important details will not be overlooked. By documenting project steps, any that are not needed will at least be considered and a decision made to eliminate them. Nothing will be forgotten to cause problems later in the project life cycle.
◆
Each team member will have a greater understanding of the roles of the other team members and how each fits into the whole of the project. Improved cooperation will be fostered, as team members understand why other team members require certain information.
◆
Project successes can be documented through lessons learned meetings and repeated on subsequent projects. 121
122
Practical Software Process Improvement
◆
Should the decision be made to have a CMM/CMMI® assessment, having this documentation will be vital.
Like the documentation discussed in previous chapters (e.g., requirements project plan), project documentation should be available as read only to all project stakeholders. The person responsible for the documentation, often the project manager, will have read-write ability. Process documentation should be created, reviewed, and baselined as any other project document. Changes to a process should undergo the same change control procedure: 1. Notification to all stakeholders of the requested change; 2. Meeting to discuss the change; 3. Decision to accept or reject the change; 4. Change to any related documents, if necessary; 5. Notification to all stakeholders of the changed documents. Like project documents, a change to one process could affect others. If, for example, the decision is made to add a certain interim work product to the list of work products under configuration management, for all projects, that would require a change in both the project planning documentation and the project tracking and oversight documentation. The person responsible for project documentation must assure that any corresponding changes are made to the appropriate documents. Otherwise, conflicts will arise and team members will no longer consistently follow the same procedure. It is vital that the processes you create are not so rigorous that they will not be followed. Many organizations experience failure of their process improvement initiative because they tried to create a perfect process and sometimes succeeded. Unfortunately, if the organization is not ready for a “perfect” process—and very few are—the process will simply be ignored. During your interviews with stakeholders, you learned what was and wasn’t being done on projects. Take the priorities, those areas that are most troublesome, and address them first. Let stakeholders see how following some basic processes are beneficial to them. From that point you can build additional steps into the processes. On the following pages, you will find a sample process document for each of the KPAs described in Chapters 2–6. The examples herein are
Process Documentation
123
simply that: examples. They are not intended to be used as they are but are merely to give an idea of what a process for each KPA might look like. Each organization must create its own processes based on its particular needs. Each sample follows the same format. This models the uniformity that assists team members in comfortably reviewing different process documents. Although the information contained in each is different, having the same structure makes them easier to follow. Remember, also, that once you have written the policies, you will review them with the team members. This way they will have a voice in them, which will greatly assist in obtaining buy in from them. Chapter 11 discusses this in more detail. Table 8.1 is a sample process for Software Requirements Management/Requirements Management. Please note that Appendix I on the enclosed CD-ROM has templates that correspond to each of these sample documents. Table 8.2 is a sample process for Software Project Planning/Project Planning. Table 8.3 is a sample process for Software Project Tracking and Overnight/Project Monitoring and Control. Table 8.4 is a sample process for Subcontract Management/Supplies Agreement Management. Table 8.5 is a sample process for SQA/Process and Product Quality Assurance. Table 8.6 is a sample process for SCM/Configuration Managment. As you begin your process improvement initiative, you may choose not to include all of the areas referenced here. Use the knowledge you gained from creating the gap analysis for each area and implement what is most needed for your organization. Implement processes that will address the most serious problems first. From there you can introduce steps to address other areas. People are often willing to try something new when a problem is persistent and especially troublesome. That is the area where someone introducing a process improvement initiative can gain a great deal of buy in. The topic of buy in is discussed in detail in Chapter 9
124
Practical Software Process Improvement Table 8.1 Software Requirements Management/ Software Requirements Management Sample Process
Purpose
To assure that all stakeholders understand and agree to the requirements and are kept informed of any proposed changes.
Participants
Senior management; Project manager; Business Analyst; User; Systems engineer; Technical personnel; SQA manager; SCM manager; Others as necessary.
Activities
1. Responsibility for requirements is determined. The business analyst will have this responsibility. The name of the person to whom this responsibility is delegated will be included in the project plan. 2. Requirements are documented. All requirements will be formally reviewed by all of the participants listed earlier or a delegate of each. All participants will receive a copy of the requirements document to be reviewed not less than two business days prior to the review meeting. The review meeting will last no more than two hours. If the document cannot be reviewed in that time, a follow-up meeting will be scheduled. If only minor changes are required, and all of the stakeholders agree, conditional approval can be given to the requirements document (it is baselined). The business analyst will make the changes and email the revised document to all participants. Nonresponse by any participant within two business days will indicate acceptance of the revisions. If major changes are required, a second formal review meeting will be held after they are made, no sooner than two working days from the time the business analyst forwards the revised document to all participants. 3. The requirements document is used for software plans, work products, and related activities. This includes, but is not limited to: Design; Code;
Process Documentation
125
Table 8.1 (continued) Activities
Test plans. 4. Changes to the requirements document are reviewed and incorporated into the software project. Anyone wishing to make a change to the baselined requirements will complete a change request form (available at f:/process/forms and templates/change request form.doc) and forward it to the project manager. The project manager will forward a copy to all stakeholders as listed in the Participants section. An impact analysis meeting will be scheduled and facilitated by the project manager not less than two days after all participants are sent a copy of the change request. If the requested change is approved, the project manager will document the approval of the project sponsor (if budget or schedule are adversely impacted) and make the necessary adjustments to the project plan.
Deliverables Baselined requirements document; Minutes from baselining meeting(s); Change requests forms, if any; Minutes from change request impact analysis meetings.
Table 8.2 Software Project Planning/Project Planning Sample Process Purpose
To assure that all stakeholders understand and agree to the project purpose, scope, goals, and their responsibilities and are kept informed of any proposed changes.
Participants
Senior management; Project manager; Business analyst; User; Systems engineer; Technical personnel; SQA manager; SCM manager; Others as necessary.
126
Practical Software Process Improvement
Table 8.2 (continued) Activities
1. Responsibility for the project plan is assigned. In all cases, a project manager will be assigned full responsibility for the project plan. If no project manager is available, consulting services will be sought. 2. Project plan components are established. The following items will constitute a project plan for each project: Charter; Project’s purpose; Scope; Goals and objectives; Software life cycle to be used; Project schedule; Interim work products to be developed; Size estimates of tasks; Cost estimates; Milestones; Reviews; Risks. 3. The project plan will be reviewed, in a meeting, by all stakeholders or their designees once the project manager deems it is ready. The review will be attended by the following people, or their designees: i. Senior management of the organization requesting the product; ii. Project manager; iii. Business analyst; iv. User; v. Systems engineer; vi. Lead developer; vii. Test team leader; viii. SQA manager; ix. SCM manager. All stakeholders will have a minimum of two business days to review the project plan prior to the review meeting.
Process Documentation
127
Table 8.2 (continued) Activities
Prior to the review meeting, the project plan and all related documents that comprise it can be viewed on the shared drive, as follows: f:\Project XYZ\Project Plan\(document name). The following are the documents that will comprise the project plan: i. Project XYZ charter; ii. Project XYZ project’s purpose; iii. Project XYZ scope; iv. Project XYZ goals and objectives; v. Project XYZ software life cycle to be used; vi. Project XYZ schedule; vii. Project XYZ work products to be developed; viii. Project XYZ size estimates of tasks; ix. Project XYZ cost estimates; x. Project XYZ milestones; xi. Project XYZ reviews; xii. Project XYZ risks. 4. Cost estimate documentation procedures. Cost estimates will be determined with historical information and expert opinion using the Delphi method. 5. Schedule estimate documentation procedures. The project manager will create a WBS for each project. 6. Project plan is baselined. All stakeholders or their designees, as listed earlier, will be involved in the review meeting. It is assumed that if a stakeholder sends a designee, the designee has the authority to approve the plan. Once the project plan has been baselined, all related documents that comprise it can be viewed on the shared drive, as follows: f:\Project XYZ\Project Plan\(document name). The following are the documents that will comprise the Project Plan: i. Project XYZ charter; ii. Project XYZ project’s purpose; iii. Project XYZ scope; iv. Project XYZ goals and objectives; v. Project XYZ software life cycle to be used; vi. Project XYZ schedule;
128
Practical Software Process Improvement
Table 8.2 (continued) Activities
vii. Project XYZ work products to be developed; viii. Project XYZ size estimates of tasks; ix. Project XYZ cost estimates; x. Project XYZ milestones; xi. Project XYZ reviews; xii. Project XYZ risks. 7. Changes to the project plan are reviewed and incorporated into the software project. All stakeholders must be notified of change requests. All stakeholders will provide input to the impact analysis. The change request form can be found on the shared drive, as follows: f:\Templates\Change Request Form.doc. 8. Affected groups and individuals agree to their commitments. All stakeholders will be involved in the project plan review and baselining. All stakeholders will also be involved with any change requests made.
Deliverables
Baselined project plan documents; Minutes from baselining meeting(s); Change requests forms, if any; Minutes from change request impact analysis meetings.
Table 8.3 Software Project Tracking and Oversight/Planning Monitoring and Control Sample Process Purpose
To ensure sufficient visibility into actual project progress so that management can take effective actions when the project’s performance deviates significantly from the plan.
Participants
Project manager; Business analyst; Systems engineer; Technical personnel; SQA manager; SCM manager;
Process Documentation
129
Table 8.3 (continued) Participants
Others as necessary.
Activities
1. The project is tracked against the plan. The project plan will be the basis for all project activities. 2. Formal project status reviews are held. The project plan will specify a specific time for weekly projcet status review meetings. The project manager assigned to the project will facilitate these meetings. He or she can delegate this responsibility to the business analyst as he or she determines necessary. All project team members are required to attend the project status meetings. After the phase of the project for which a team member has responsibility has passed, the project manager will determine if he or she needs to continue to attend to assist in future phase planning and implementation. However, unless otherwise advised, all team members will attend. Following each status meeting, the project manager will issue the following reports to the project sponsor: i. Estimated expenditures to date; ii. Estimated schedule variations, if more than +/– 10% the plan; iii. Identified risks elevated to severity level 2 or greater. 3. Actual expenditures are tracked and recorded. At the start of each phase, and at the approximate midpoint as determined by the project manager, a detailed review of expenditures will be performed. This will include the following. i. Amount budgeted to date; ii. Amount actually spent; iii. Earned value analysis; iv. Projected budget at completion of project. The project manager will record or document the budget information collected at each point. Reports providing summary information of the following will be provided to the project sponsor at the start of each new phase for the previous phase and at phase midpoint: i. Amount budgeted to date; ii. Amount actually spent; iii. Earned value; iv. Projected budget at completion.
130
Practical Software Process Improvement
Table 8.3 (continued) Activities
All necessary backup will be maintained by the project manager in the project folder on the shared drive. The project manager will determine this information based on status reports from team members. 4. The schedule is tracked against the plan. Schedule tracking will be the core of the weekly status meeting. In the event that the schedule begins to slip, the project manager can require more frequent status reporting. This may include only certain team members (e.g., the development team if it is the development phase where the schedule is slipping). The project manager will record or document the schedule information collected at each point. Reporting to the project sponsor will consist of an overview of the project progress in the form of a Gantt chart showing progress by phase, not by individual tasks within a phase. In the event that the schedule slips by more than 10%, the project sponsor may require more detailed status reporting, more frequent status reporting, or both. During normal project progress, all team members will be involved in schedule reporting. If the project manager determines that more frequent schedule reporting is necessary, he or she can mandate it as indicated earlier. 5. The risk assessment is updated. i. Risk updating will be a part of each weekly status meeting. ii. More detailed risk assessment updates will be performed in conjunction with detailed budget tracking at the start and midpoint of each phase. iii. The project sponsor will be notified immediately when the following risk issues are present: 1. Project budget is at risk of an overrun greater than 15%; 2. Project schedule is at risk for any overrun; 3. The product of the project is at risk of being released with a level of quality below what is required. iv. The project manager will record or document the risk information as it is collected. Changes to the project plan are made according to a documented procedure. 6. The following steps will be taken when any change to the project plan is proposed:
Process Documentation
131
Table 8.3 (continued) Activities
i. Notification to all stakeholders of the requested or required change; ii. Impact analysis will be performed; iii. The project sponsor will have final approval/disapproval authority; iv. All baselined documents will be changed if necessary; v. All stakeholders will be notified of rebaselined documents and where to find them.
Deliverables
Minutes from meetings: 1. Status reviews; 2. Budget tracking meetings; 3. Impact analysis meetings. Change requests forms, if any.
Table 8.4 Software Subcontract Management/ Supplier Agreement Management Sample Process Purpose
To select qualified subcontractors and manage them effectively.
Participants
Project sponsor; Project manager; Director of information technology.
Activities
1. Project work will be subcontracted based on the following criteria: Availability of in-house resources with the necessary skill set; Urgency of time to market; Size and complexity of the project. These criteria will be maintained regardless of whether the entire project, or only a portion of a project, is being considered for outsourcing. 2. Subcontractor selection will follow this procedure: Potential subcontractor names will be obtained from trade journals and personal recommendations of team members. RFPs will be sent to all candidate subcontractors. The experience of all candidate subcontractors will be carefully reviewed. All proposals received will be formally reviewed by the key stakeholders listed earlier in the Participants section. Others may be called in as necessary, depending on the needs of the particular project.
132
Practical Software Process Improvement
Table 8.4 (continued) Activities
The availability of resources of subcontractors will be confirmed. Management will be located within a reasonable geographic area, allowing easy access whenever necessary for meetings. A minimum of two references will be thoroughly checked. This involves a face-to-face meeting with the references and an overview and demonstration of the work performed by the subcontractor. 3. A project plan will be submitted by the subcontractor. The project plan will include the following components: i. Statement of work; ii. Project schedule; 1. WBS; iii. Qualifications of personnel assigned to the project; iv. Escalation procedures; v. Significant milestones; 1. To be determined in consultation with the prime contractor; vi. Periodic demonstrations; 1. To be determined in consultation with the prime contractor; vii. Technical review meetings; viii. Reporting requirements; ix. Acceptance criteria; x. Other factors as deemed appropriate for the particular project being subcontracted. The subcontractor’s project plan will be reviewed and approved by the prime contractor’s project manager. 4. The subcontractor’s project plan will be the tool by which the prime contractor’s project manager monitors the work of the subcontractor. 5. Periodic technical reviews will be held. The prime contractor’s project manager will facilitate these meetings, adhering to the schedule in the subcontractor’s approved project plan. i. Additional technical reviews can be held if the prime contractor’s project manager deems it necessary. i. Members of the development, test, and documentation teams, as determined by the project manager, will participate in all technical review meetings. 1. The prime contractor’s project manager can invite other personnel to participate as necessary.
Process Documentation
133
Table 8.4 (continued) Activities
The prime contractor’s project manager will maintain the minutes of these meetings and submit reports on an as-needed basis to the project sponsor. 6. Quality assurance monitoring will be performed. At the midpoint of each phase (as determined by the prime contractor’s project manager), and at the conclusion of each phase, quality assurance monitoring will be performed. The following documents will be reviewed for accuracy and completion: i. Project plan; 1. Does it reflect changes to the project? 2. Are all dates current? ii. Test procedures; 1. Is the current draft consistent with the current status of the project? 2. Do they have sufficient rigor to assure quality? iii. Interim deliverables; 1. Demos; 2. Prototypes. The prime contractor’s project manager will record or document the findings collected at each point. In the absence of a formal quality assurance organization, quality assurance activities will be performed by the prime contractor’s project manager and business analyst. i. Assure that both have sufficient training to accomplish these tasks. 7. The subcontractor will provide qualified personnel on site for integration/acceptance testing. The project plan will include specific acceptance test criteria. The project sponsor will receive a full report on acceptance test results. i. He or she has final say on acceptance. The subcontractor will work on integration/acceptance testing until results are satisfactory, as detailed in the project plan. 8. Changes to the subcontractor’s project plan will only be made as follows: All stakeholders will be notified of any requested/required change; A formal impact analysis meeting will be held;
134
Practical Software Process Improvement
Table 8.4 (continued) Activities
All baselined documents will be changed by the project manager, if necessary; Approval or disapproval of the requested change is the decision of the project sponsor; All stakeholders will be notified of rebaselined documents and where to find them; i. The subcontractor’s project manager will accomplish this.
Deliverables Minutes of meeting that determined the decision to outsource; RFP; All proposals received; Minutes from proposal review meeting(s); Subcontractor project plan; Minutes from all meetings: 1. Project status meetings; 2. Technical review meetings; 3. Impact analysis meetings; 4. Others as needed; Change requests; Copies of all reports created for upper management or other stakeholders.
Table 8.5 SQA/Process and Product Quality Assurance Sample Process Purpose
To assure that processes that will contribute to the delivery of a high-quality end product or service are established and functioning.
Participants
Project manager; Project sponsor; SQA team members.
Activities
1. Project initiation will not be complete and sign off will not be accomplished until the person responsible for SQA activities is assigned. The project sponsor will name, or at least approve, this person. If this is not possible, the project manager will assume this responsibility. The person responsible for quality oversight can delegate any or all of this responsibility. However, he/she is ultimately responsible.
Process Documentation
135
Table 8.5 (continued) Activities
2. The person(s) designated earlier will assure that the project plan components include the following: Project charter; Schedule (based on WBS); Budget; Milestones—conclusion of the following phases: i. Requirements; ii. Design; iii. Development; iv. System test; v. Integration test; Code reviews: i. For each new module created; ii. For each existing module revised more than 40%. 3. The following quality process levels will be measured on this project: Defects found per phase; Code reviews held; Change requests: i. Accepted; ii. Rejected; Adherence to identified project quality standards as outlined earlier in section 2. 4. Summary reports will be provided to the following stakeholders at each scheduled milestone review: Marketing director (project sponsor); Project manager; Development lead; Test lead; Business analyst. 5. The following are the reports that will be generated: Requirements: i. Number of reviews; ii. Participants at reviews; iii. Length of reviews (duration of time);
136
Practical Software Process Improvement
Table 8.5 (continued) Activities
iv. Number and severity of defects found; v. Completed on schedule, early, or late. Design: i. Number of reviews; ii. Participants at reviews; iii. Length of reviews (duration of time); iv. Number and severity of defects found; v. Completed on schedule, early, or late. Development—modules reviewed: i. Number of reviews; ii. Participants at reviews; iii. Length of reviews (duration of time); iv. Number and severity of defects found; v. Completed on schedule, early, or late. System test: i. Number of cases executed; ii. Number and severity of defects found; iii. Completed on schedule, early, or late. Integration: i. Number of cases executed; ii. Number and severity of defects found; iii. Completed on schedule, early, or late. 6. Additional reports may be generated at the request of any stakeholder or at the discretion of the SQA team.
Deliverables
Minutes from all meetings in which SQA participates (e.g., project planning, requirements review); Documentation of designation of person responsible for SQA activities and the date that designation was made; Copies of all reports mentioned earlier in Section 4.
Process Documentation
137
Table 8.6 SCM/Configuration Management Sample Process Purpose
To establish and maintain the integrity of the products of the project.
Participants
Project manager; Development lead; Developers; Business analyst; Test lead; Testers.
Activities
1. An SCM plan is created for each project. The SCM plan is developed during project initiation. Stakeholders review the SCM plan as part of the initial project plan review. The SCM plan is baselined. 2. A configuration management library is established as a repository for work products under configuration management. The repository will be on shared drive C. The project will have a folder, and SCM will have a subfolder under the project folder. Each item determined to be under configuration management will have a subfolder. The project manager will have read-write access to the SCM folder; all other stakeholders will have read only access to the SCM folder. 3. The work products that will be under configuration management are identified at the start of the project. For each project, the following artifacts will be under configuration management (others will be determined based on individual project needs): Project plan; Requirements; Code modules: i. Module 1; ii. Module 2; iii. Module N; Test procedures. 4. A formal procedure for change requests to baselined work products is documented and followed. The following steps must be taken:
138
Practical Software Process Improvement
Table 8.6 (continued) Activities
i. Email request to project manager from the individual making the change request. ii. Project manager notifies all stakeholders of the request and schedules an impact analysis meeting. iii. All stakeholders participate in the meeting. 1. Schedule, cost, and quality impacts are discussed. 2. Impacts on other projects are considered. iv. A decision is made to accept or reject the change. v. The project sponsor must agree with the decision. He or she can override it. If the project sponsor overrides the decision, the project manager documents the sponsor’s reasons and advises all stakeholders. 5. Changes to baselined work products are made only after the change request process has been followed and all stakeholders are notified of the change. The project manager notifies all stakeholders of the decision. The project manager updates any documentation that must be altered due to the change (e.g., project plan, requirements). The project manager notifies all stakeholders of the changed documents, where they are located, and the version number of the current documents.
Deliverables
The following items are the basic deliverables for all projects (others may be required, depending on individual project needs): SCM plan; Change requests; Minutes of impact analysis meetings; Record of all stakeholder notifications.
9 Obtaining Buy In
One of the biggest obstacles to successful process improvement is lack of team and management buy in. If management is not committed to the changes, then the team members who must implement them will often have little motivation to do so. There are many reasons why both management personnel and team members resist change, and understanding those reasons and knowing how to address them will be a key part of any successful process improvement initiative. When embarking on any new initiative that involves changing the way people do their work, resistance must be expected. Implementing process improvement is particularly threatening to many people. In order to overcome this resistance and help the culture evolve from one of fear of change to one that embraces it, knowing why resistance exists is extremely beneficial. With greater knowledge comes the ability to combat the fear. We will discuss resistance as it relates to the two groups from which we must obtain buy in: ◆
Team members;
◆
Management personnel.
139
140
Practical Software Process Improvement
While studies show some differences between the reasons that team members and managers resist change, there are more similarities than differences. However, the way to overcome this resistance can be significantly different for team members than for managers. The discussion that follows includes a great deal of theory; however, it is important because it sets a foundation for the practical information on buy in that follows it. That information addresses specific buy-in steps for each improvement area (e.g., software requirements management/requirements management, software project planning/project planning). Being aware of common resistance points, and how to deal with them, will prove beneficial as process improvement steps are being implemented.
9.1 Team Members Regardless of the level of support from upper management, if the team members who must implement the changes are not convinced of their need and benefit, the process improvement initiative will fail. And for project managers implementing processes on their own projects, without any support from upper management, the risks are even greater. With upper management support, there is at least some motivation on the part of team members to move forward with process improvements. Lacking that, the person initiating the improvements must sell the concept to the team. In this section we will look at some common reasons why teams resist any changes. Later we will see how to address these issues. 9.1.1 Issue: Self Interest It might be expected that people who express frustration with work overloads, constantly changing requirements, and unclear expectations generally would welcome a method to address these issues. However, one study indicates that if “… workers develop a sense of security of employment by seeing large stacks of work in progress, a system that leads to overall efficiencies by decreasing those stacks…may make them jittery despite any technical or economic advantages it provides elsewhere” [1]. Team members sometimes obtain a sense of job security from being able to demonstrate to upper management that they are overwhelmed with work, spend much time in meetings, and work many hours of overtime. Instituting process improvements would minimize many of those factors by making tasks more manageable and organized. This indicates that self interest plays
Obtaining Buy In
141
a major role in resistance, as some employees believe that the size of their workload equates with their perceived importance to the organization. Response: If self interest is what is motivating the resistance, than embracing the change must be demonstrated to be in the individual’s self interest. If management has mandated the process improvement initiative, an individual’s participation could be part of his annual performance evaluation. However, if a project manager has simply decided to implement structured processes on her own project(s), the issue is slightly more complex. She must demonstrate to the team member that by utilizing the processes, her value will be enhanced. This is best done by casting the process improvement initiative in the context of that particular individual’s role. The following are some examples: ◆
Business analyst: While there will be some additional work up front, which may feed into the business analyst’s self interest, with a baselining process constant rewrites of the requirements document will be eliminated. With the process, requirements will be documented more clearly, so all parties will agree on what is to be built. The business analyst will have an increased level of confidence in knowing that his work will be the result of collaborative efforts and will be accepted by all stakeholders. The workload may be reduced, but recognition may increase.
◆
Developer: Process will enable developers to work from baselined documents, confident that, at project delivery, if the product or service does not satisfy the customer need, it will not be because the requirements were not properly implemented. This can be viewed, in the context of self-interest, as eliminating or at least minimizing a potential problem during the developer’s annual performance appraisal. Developers will also have the assurance that the code modules on which they are working will not be overwritten by another developer, as configuration management is practiced with the new processes. This can be a serious issue in some shops. A developer who is proud of her work will not risk having it eliminated by the carelessness of another team member.
◆
Tester: Like the business analyst, he will also have an investment in time, right from the earliest stages of the project. However, having the opportunity to participate in requirements reviews will enable the tester to assure testability, eliminating the need to guess what was
142
Practical Software Process Improvement
meant by such vague statements as “user friendly” or “fast response time.” This will result in better test plans and scripts, allowing the work to be more successful. As with the developer, this can eliminate or minimize a potential problem during performance appraisals. Without process, the tester may need to guess at some aspects of what to test; he or she may guess incorrectly and thus allow a faulty product to be deployed. Remember that a resistant employee will never state that self interest is her reason for resistance; she may not even be aware that that is the reason. The person initiating process improvement must discern whether that is what is behind the actions of the resistant individual. 9.1.2 Maintaining Influence The same study referenced earlier concluded that “….computer-based systems increase the influence of those who have access to the technology, can organize data to their advantage, and can understand computing use.”[2] The implementation of process may put computer-based information into the hands of people previously unable to access it with ease. These new users, or users who can utilize the systems with greater ease, may no longer have the need to rely on a few people for information they can now obtain on their own. By initiating the process steps outlined in this book, pertinent project information will be available to all stakeholders; some employees may see that as a threat to their perceived expertise—as information formerly held almost exclusively by them is now widely disseminated. This perceived loss of influence is generally in that the code peculiar to the organization, which in the past may have been the exclusive domain of one individual, is now more readily available to the other stakeholders. If a person’s exclusive expertise was simply in specific code modules, for example, that exclusivity will be lost. Response: It will be vitally important to show respect for the knowledge each person has, especially as the steps of process improvement will make some of that knowledge more widely available. Process improvement does not minimize the need for subject matter experts. An expert in a certain programming language, for instance, will still be relied upon for her expertise in that area. People have language expertise first and then learn the modules through usage. The language expertise should be stressed, rather than the loss of exclusive ownership of certain of the organization’s
Obtaining Buy In
143
intellectual assets. The author’s experience that follows provides an example of this situation. Author’s experience: The author worked at a company where legacy systems that represented the core of this very successful business’s income were undocumented. The company had grown quickly and in the early years documentation was not perceived as a priority. Yet when the author joined as a consultant, he raised this issue and the business side of the company recognized the need to thoroughly document the systems. The problem: The development team, although involved in the earliest planning stages of this project, dismissed it as a useless endeavor and a waste of company money. Management personnel representing the business side, however, also involved from the start, felt this was a project desperately needed to protect the company’s interests. Because the development team members were the only people in the organization who had a clear understanding of the systems, making that information available to anyone with a personal computer and access to the company intranet site threatened their degree of influence. The solution: Upper management made the decision to proceed with the project. The author hired three consultants and, despite strong initial resistance from the development team, successfully documented these vital legacy systems. However, during the project life cycle, it was demonstrated to the development team that their expertise was vital to the success of this project. They eventually embraced the initiative and were an integral part of its success.
Resistance from development could have been the belief that sharing this vital information would decrease their influence, as it increased that of the rest of the business. Marketing personnel now had easy access to information previously held exclusively by development. Yet the outcome of this project was a greater understanding by marketing of the services the company offered, as well as their complexity. This reduced the amount of time spent in capturing, reviewing, and baselining requirements because the requests made by the marketing department became more reasonable in terms of new services desired and dates they were required by. Marketing and development could discuss constraints, opportunities, and risks, on a more even basis, enabling marketing personnel to have a greater grasp of issues as described by development.
144
Practical Software Process Improvement
The organized manner in which process improvement helps any group to operate can be perceived as decreasing the influence of some team members. Some highly resistant employees might be asked to become subject matter experts in the new processes. 9.1.3 Increased Accountability Another way in which people may feel threatened by the implementation of process standards is that these standards increase accountability. For example, without process, cost and schedule estimates may be very high level, with no way of verifying accuracy. With the implementation of process, a method of creating estimates (both time and cost) is instituted, along with verification procedures throughout the project life cycle. When requirements are not documented in any manner more formal than conversations and a few emails, it is impossible to determine what went wrong when the finished product or service does not satisfy the stated need. With a formal requirements document that is reviewed and baselined—approved and signed off by all stakeholders from both the business (requestor) and technical (development) sides—it can be clearly demonstrated that the requestor did not request a product or service that fulfilled the need or that the technical organization did not adequately fulfill the request. Stated another way, while process steps do increase accountability, they can be seen by some as a manner of affixing blame when things go wrong. There is often a tendency to seek a scapegoat when a project fails. Response: Team members must recognize that the goal is never to place blame; it is to produce a high-quality product or service on time and within budget. When things go wrong, it is beneficial to everyone to be able to look back at the project and see where mistakes were made—not with the intention of blaming anyone, but rather as a means to learn from those mistakes. If there is no documentation and no accountability, the same mistakes will be repeated over and over again. Looking back at projects can indicate where additional training is needed or where a different life cycle (e.g., iterative versus waterfall) could have been more useful. The concept of accountability will often be most felt during lessons learned meetings following the deployment of the product of the project. This will be an opportunity for all stakeholders to highlight what they each felt was done right on the project, so it can be repeated on future projects. Conversely, it provides everyone involved in the project with the
Obtaining Buy In
145
opportunity to point out and discuss areas for improvement. These are not finger-pointing sessions; an effective project manager will keep them to productive fact-finding meetings. Stress that the purpose is to find flaws in the way projects are done, not to find the persons responsible for them. Increased accountability affords new opportunities for training and greater responsibility. Be aware that not everyone wants increased responsibility; some people welcome it as a necessary step in their career, while others feel it is an unwanted burden. Point out that when problems arise, it is beneficial for all concerned to know the source of the difficulty so appropriate measures (e.g., additional training, adjusted work schedules), can be taken. Not every corporate culture is ready to look beyond blame and seek opportunities to grow and develop instead. The person initiating process improvements must be careful to try to foster this attitude and guard against any blame placing for things that went wrong on a project. One lessons learned meeting that deteriorates into a blaming session will cause serious setbacks to a process improvement initiative.
9.1.4 Lack of Confidence Another common fear is that of not being able to learn the new skills. “To be truly usable a system must be compatible not only with the characteristics of human perception and action, but, and most critically, with users’ cognitive skills in communication, understanding, memory and problem solving.”[3] This is true of methodologies as well. For this reason, it is imperative that process improvement changes proceed at a pace that, while accomplishing real benefits to the organization, does not overwhelm the staff. The concepts detailed in this book are not complex, yet they do introduce a new way of working. People tend to become accustomed to one way of working. They often develop a high degree of expertise in one area and sometimes then have little interest in learning anything else. This may not be a lack of confidence as much as a feeling of complacency. This is another challenge encountered when implementing any change. Response: “Users will select systems that provide functions needed to do their tasks.”[3] Users will also embrace methodologies if they are helpful to them in accomplishing their tasks. It is beneficial to show how process steps will accomplish that. It is helpful if team members can see the process steps as simply another small aspect of their current tasks; they will be performing the same work with some alterations. Assurance that training and
146
Practical Software Process Improvement
on-the-job mentoring will also be provided should help to encourage use of the new processes. For the initiative to be successful, the teams that will implement these changes must be comfortable with the idea that the new tasks will fit well with their current activities. This is true whether the resistance is due to lack of confidence in their abilities to learn the new processes or simply because they are comfortable with the old way. By assuring individuals that the new processes will mesh easily with their usual tasks—in time—some of the resistance should be reduced. While we have discussed these as separate topics, be aware of how they overlap. For example, no amount of assurance that training will be provided will assist a person who is only using lack of confidence as an excuse to avoid the change in order to maintain his influence The obvious reason is sometimes the actual reason for the resistance but often is not. If addressing the obvious does not prove successful with an individual, consider what other motivations he might have. These are some common underlying reasons for resistance to change. However, for obvious reasons, team members don’t often say that this is why they resist; in fact, they will often make an attempt to embrace the new processes, but their reservations about them quickly take over. Team members will not identify self interest, the need to maintain influence, a dislike of increased accountability, or lack of confidence as the reason for resisting change. However, with this information as a basis, we will now discuss some of the resistance issues that team members may raise and how to overcome them.
9.2 Issues 9.2.1 Process Causes More Work Team members who are often working with very tight schedules and deadlines may resent the need to create some of the additional documentation required by any effective process. Teams accustomed to working without formal requirements—basing their work on a few emails and conversations with the requestor—may see the time spent creating and reviewing a formal requirements document as time taken away from “real” project work: coding and testing. They may feel constrained by the requirements document, which denies them the freedom to call the requestor
Obtaining Buy In
147
periodically and informally make suggestions for enhancements or get clarification. It can’t be denied that there is an additional layer of bureaucracy that accompanies process. However, some basic facts will help to overcome the resistance. ◆
Fact: Lack of documentation compromises schedules, budgets, and product integrity. This is because no one is ever sure what is being requested, and the final result often needs significant rework. This does not reflect well on the project team. If the amount of time spent on rework were instead spent on documenting requirements, a better quality product—produced on time and within budget—can almost be assured. Without it, some level of failure is assured.
◆
Fact: Lack of documentation is a main cause of feature creep or scope creep. If there is no baselined requirements document, a requestor can imply a desire for certain functionality, thinking her request is clear but leaving the development team with an entirely different impression. Later in the project life cycle, often when the requester sees the first demo or prototype, she will ask about other features that she assumed were to be included. With no increase in budget or adjustment of schedule, the development team will often agree to the additions.
◆
Fact: If an organization has the time to do it over, it has the time to do it right the first time. Process assists in getting it right the first time.
9.2.2 Process Is the Latest Management Fad; Here Today, Gone Tomorrow Perhaps this is not the first process improvement initiative that the organization has seen. The team members may be skeptical, not wanting to invest their effort in what they consider a temporary effort. ◆
Fact: The processes outlined in this book are not new, nor are they being created in a vacuum. They are the result of studies of thousands of successful organizations over a period of several years.
◆
Fact: More and more companies are requiring some level of process discipline in the organizations with which they do business. Implementing process helps keep a competitive edge.
148
Practical Software Process Improvement
9.2.3 Management Only Cares About the Bottom Line; No One Is Interested in All of This Documentation Upper management is concerned first and foremost with profit and loss. They will never ask to see an SQA process or a change request template. ◆
Fact: Having the processes in place that are detailed in this book will assist management in budgeting, scheduling, and hiring. Without these processes, management does not have a clear picture of costs.
◆
Fact: While management will never ask to see the process documents, they are tools that assist project teams and contribute to an improved bottom line.
9.2.4 I Can’t Work Effectively with Someone Watching my Every Move Team members may say that they need the freedom to do their work as they determine best. Process, they may believe, will constrain them unnecessarily. Many development team members take pride in their creativity. ◆
Fact: Projects adhering to a disciplined process have a greatly increased record of on-time, within budget, high-quality success. This is not accomplished by decreasing the level of morale. It is accomplished by assuring that all are clear on their responsibilities and participate as fully contributing members of the project team.
◆
Fact: The processes detailed in this book are designed to be tailored to the needs of individual organizations. No one process will work for all organizations. These are guidelines within which project teams work to achieve a greater level of success.
Gaining team buy in is difficult; don’t expect it to happen quickly. Look for any individuals within your organization who are receptive to the process improvement initiative. These people can be key to obtaining the acceptance of other, more resistant members, but it will not happen overnight. It is important to remain optimistic and focus on every success achieved, no matter how small. Each success is the foundation for the next one. We will now discuss some of the underlying reasons for management resistance and an overview of how to address them. We will then look at a practical, detailed means of addressing this resistance in the context of KPAs.
Obtaining Buy In
149
9.3 Manager Resistance For many of the same reasons mentioned in the discussion of team resistance, management is often resistant to the changes that process implementation causes. Note that management is seldom resistant to the changes that process implementation brings: quality products or services delivered on time and within budget. But the steps to get there are often resisted. As we discuss “managers” in this section, we are referring to upper management personnel, those managers above the level of project managers. The following points are summarized excerpts from the results of a study on management resistance to change.[4] Following each point we will look at some ways to address each issue. 9.3.1 Loss of Power and Control The leading reason for manager resistance to change was a fear of losing power. Changes often eliminated something the manager had control of or introduced something that the manager would not have control over. Some managers perceived the changes as infringements on their autonomy, and some participants indicated that the change was even perceived as a personal attack on the managers. Managers reacted to the change initiative as a “battle for turf.” Comment: Note the similarity to the ideas of loss of influence and self interest as discussed in the section on team resistance. Managers felt that a change would lessen their control over some aspect of the organization and therefore resisted the change despite any positive effects it might have brought. As mentioned in the section on team buy in, providing more information to more people often results in a lessening of influence of those who previously had exclusive knowledge of that information. If someone is the acknowledged expert, and suddenly the information he knew so well is available to everyone else, his influence diminishes. Response: In most organizations, what is good for the organization is good for each individual within it. Highlighting the potential benefits will help managers to deal with any threat of loss of influence that they may be feeling. Often they will argue that these processes may work in large, multinational organizations (which they do), but not in smaller organizations. Point out that this is not the case; process improvement, in various forms (e.g., CMM®, ISO) has proven effective in organizations of all sizes.
150
Practical Software Process Improvement
This resistance is not easy to overcome; don’t expect to break down all barriers at once. Work on more than one aspect at a time. 9.3.2 Overload of Current Tasks, Pressures of Daily Activities, and Limited Resources Managers felt that the change was an additional burden. Limited resources compounded the problem. The change initiative seemed like extra work and resource strain at a time when the pressures of daily activities were already high. In many projects, managers were expected to continue all of their current duties in addition to the duties of implementing the change. Comment: Process improvement does take an investment in time. Each manager will recognize this and if they are not convinced of the benefits of implementing processes, they will resist it. Response: Acknowledge from the start that there is an investment in time; there is no point in trying to deny the obvious. If possible, demonstrate that the way the organization currently plans and runs projects has not be as successful as it could be. Look for evidence of the following factors, which will have meaning to management: 1. Delayed schedules, which could have the following results: ◆
Customer dissatisfaction;
◆
Loss of competitive advantage;
◆
Violation of a government regulations, resulting in costly fines;
2. Budget overruns; 3. Extensive and costly rework, resulting from unclear requirements; 4. Interdepartment conflicts. If this information is not readily available within your organization, for even one or two projects, rely on the literature. Point out that these are common problems at many organizations that have been resolved through the use of a standardized process. It is also important to emphasize that the investment in time that process requires is just that: an investment. The benefits are reaped later in the project life cycle, in the following ways: ◆
Less rework is required, as requirements were understood from project initiation.
Obtaining Buy In
151
◆
Defects are found earlier due to regularly scheduled reviews (the earlier defects are found, the less expensive it is to fix them).
◆
Code is easier to maintain, because standards have been implemented and followed.
◆
Less time is spent creating user documentation because necessary information, which becomes source information, has been documented throughout the project life cycle;
◆
Testing time is reduced because test procedures were started early in the project life cycle.
◆
Increased customer satisfaction results, due to better quality products or services delivered on time.
9.3.3 Lack of Skills and Experience Needed to Manage the Change Effectively Managers were fearful of the new demands that would be placed on them by the business change. Several skill areas were identified as areas of concern. First, managers were uncomfortable with their role in managing the change. Some feared recrimination, while others did not have the experience or tools to effectively manage their employees’ resistance. Managers also were concerned about the demands and responsibilities placed on them by the new business processes, systems, or technologies. Comment: Again we see parallels between management resistance and team member resistance. In the case of a process improvement initiative, management needs only a high-level view; management personnel do not need to know the specific details of the new processes. Upper management will not need to alter any of the tasks they perform as a result of process implementation. Response: Provide high-level overview presentations. While any process document could be several pages long, a series of slides with a few bullet points each is often all managers need. Don’t overwhelm them with information, but keep them informed of progress. 9.3.4 Disagreement with the New Way Some managers disagreed specifically with the change. They did not feel that the solution was the best approach to fixing the problem. Managers who did not play a role or provide input in the design and planning phases
152
Practical Software Process Improvement
tended to resist the solution. Some participants felt that the resistance was due to the solution not being the idea of the manager (“not invented here”). Comment: Management personnel may feel that a certain methodology is being “force fit” into the organization. They may feel that the person initiating the process improvement is not sufficiently familiar with the organization to do so effectively. Or, they may not even recognize or acknowledge that there is a problem. They may accept the problems of budget and schedule overruns and rework as just a normal part of software development. Response: If management is dubious about the method, point out that the steps being taken have been tried and proven in thousands of organizations worldwide, ranging from small companies to the largest in the world. Emphasize that the steps will be tailored to work within the current culture. Address the issue of problems being an inherent part of the business by stating that several organizations have successfully reduced them to a fraction of what they previously experienced.
9.4 Management Personnel As indicated in Chapters 2–6, which cover the KPAs, process improvement goes beyond the boundaries of the development team and crosses from the technical side of the organization to the business side. Often the need for process is perceived as a technical issue; this misperception must be addressed to optimize the benefits that can accrue from process improvement. We have just discussed some common areas of management resistance, along with some generic responses. We will now explore more specific methods of overcoming management resistance. While one area of improvement necessarily affects others, we will look at each KPA separately. You will note many similarities. For example, lack of a formal requirements document affects project planning. However, as with the earlier chapters, we will review these issues based on individual KPAs. Each of the following problems and the accompanying solutions can be presented to management in either a casual discussion or a formal presentation, depending on the needs of the organization. If management is considering introducing a formal process improvement initiative, anyone
Obtaining Buy In
153
involved in those discussions can create a formal presentation. If a project manager is simply trying to get better control of his/her own projects and encounters resistance from upper management or business to some of the steps he/she is taking, having this information will be beneficial in overcoming that resistance. Listed at the end of each subsection are the other KPAs that will be affected by each individual problem. 9.4.1 Requirements Management In Chapter 2, we briefly mentioned some of the issues that typically exist in organizations that have not implemented a requirements management process. Overall, without managing requirements, changes to them cannot be recognized as changes. For example, if midway through coding the development team provides a prototype to the requestor, and the requestor mentions a feature not demonstrated but that he expected, there is no way of knowing whether this is an enhancement or was indeed part of the original requirements. In a situation like this, major replanning may be required in order to accommodate the new request. This could affect the schedules of both the current project and any projects that team resources are scheduled to be assigned to once their role on the current project concludes. We will look at these and related issues in more detail here, in the context of their impact on upper management and business personnel. 9.4.1.1 Problem 1: Unclear Link Between Requirements and Scheduling Management may feel that requirements and scheduling are not related. It may appear that a few conversations with development are sufficient for “requirements.” Resolution In order for the project manager to schedule the work, he/she must have a clear understanding of what work needs to be done. Even if time estimates are provided by technical leads, the project manager creates the schedule from those estimates. If requirements are not fully documented, there will be a high degree of uncertainty about what product or service is wanted; without that certainty it is impossible to tell how long it will take to create the product or service. When the project manager knows what work is to be done, he/she can schedule it appropriately. The guesswork that is never accurate will be
154
Practical Software Process Improvement
eliminated. This does not imply that no schedule changes will be required; that is a part of software project tracking and oversight/project monitoring and control. But even those adjustments will be more accurate if the original WBS (see Chapter 3) was based on an accurate understanding of what is to be produced. Other Affected KPAs Software Project Planning/Project Planning With documented requirements, the project manager and technical leads can determine the following: ◆
What tasks need to be accomplished;
◆
How long each should take;
◆
The level of expertise that is required;
◆
When each resource is needed;
◆
How often technical reviews should be held;
◆
What milestones should be part of the plan.
Software Configuration Management/Configuration Management The requirements document must be placed under version control or it will be little better than nonexistent. Software Subcontract Management/Supplier Agreement Management (If All or Part of the Project Is Outsourced) The requirements will enable all stakeholders, from both the business and technical sides, to make a better decision about whether all or part of a project should be outsourced. Without documented, baselined requirements, this decision is simply guesswork. 9.4.1.2 Problem 2: Unclear Link Between Process and Profits Upper management may look at the bottom line and decide that there is no return on investment in formalizing a requirements process. Resolution If there is uncertainty about what product or service is to be created, and thus uncertainty about how long it will take to create it, no monetary amounts can be reasonably attached to the work in order to establish even a high-level budget for the project. With accurate, detailed,
Obtaining Buy In
155
agreed-upon requirements, the project manager will know how long the work will take. By creating an accurate WBS from the requirements document, the project manager can assign monetary values to the work and thus create a high-level budget. Even before specific persons are assigned to roles, salary ranges can be inserted. This information is extremely helpful to management when making go/no go decisions and for overall budgeting purposes. Other Affected KPAs Software Project Planning/Project Planning Putting accurate task information into the project plan enables the project manager to estimate a high-level project budget with a high degree of accuracy. Software Project Tracking and Oversight/Project Monitoring and Control Tracking to a plan that reflects the agreed-upon project work enables the project manager to monitor expenses as the project moves through its life cycle and compare them to the original estimates. Significant deviations will be identified early and can be dealt with before they become major crises. Software Subcontract Management/Supplier Agreement Management (If All or Part of the Project Is Outsourced) Knowing exactly what is to be produced and how long it will take enables subcontractor management to be performed more efficiently and without guesswork. The facts will be there for the prime contractor and the subcontractor to use in their work. 9.4.1.3 Problem 3: Resource Allocation Management may feel that qualified resources are readily available for the project as needed. Project managers often have a pool of resources from which to draw. Without managing requirements, it is impossible to tell with any degree of accuracy when certain resources will be needed and when they can be released. Resolution If requirements are documented, reviewed, and baselined, as outlined in Chapter 2, the project manager can then assign resources with the confidence that they will be available when needed and can move to other projects when scheduled to do so. This assists in keeping the cur-
156
Practical Software Process Improvement
rent project on schedule and in allowing other project to also start and finish on time. Other Affected KPAs Software Project Planning/Project Planning Individual resources are seldom dedicated to one project for its entire life cycle. Often a resource will be on the project for part of a phase, his assignment will be completed, and he will move to another project but needs to return to the first project at a later date. If the product or service to be produced by the project is known and understood, the project manager can date these assignments with a great degree of accuracy. Software Project Tracking and Oversight/Project Monitoring and Control Changes are caused by a variety of reasons, including, but not limited to, the following: ◆
Inaccurate estimates;
◆
Underqualified resources;
◆
New request by business.
In these situations, some of which will occur on every project, the more information the project manager has, the better able he/she is to deal with them. Knowing the current baselined request as documented in the requirements is key to accomplishing this. 9.4.1.4 Problem 4: Testing Issues Management personnel may see little or no relation between requirements and testing. This is especially true for managers who did not start their careers in a technical area. There may be a feeling that development delivers code to test, which then simply tries to break it. Resolution The test team (or individual) needs to create test procedures from requirements. Ideally, there will be a traceability matrix mapping each test case back to a specific requirement, but even lacking that degree of rigor, the test organization needs to know exactly how the product or service being created is supposed to function. Without baselined requirements, the test team must guess at what to test.
Obtaining Buy In
157
Documented baselined requirements allow testers to create test plans and procedures that will accurately test the code being created. There will be no need for testers to recreate procedures close to the end of the project life cycle. Other Affected KPAs Software Project Planning/Project Planning Testers must assure that the requirements as written are testable. Words such as fast and user friendly are meaningless in testing. Software Project Tracking and Oversight/Project Monitoring and Control If a delay in code development will result in a delay in when the code is ready for testing, the project manager needs to know this. If requirements are documented and baselined he can better judge the impacts on testing of delays earlier in the project life cycle and make schedule adjustments accordingly. Software Subcontract Management/Supplier Agreement Management (If All or Part of the Project Is Outsourced) The need for testing code delivered from subcontractors cannot be minimized. If requirements are documented and baselined, there will be no question about whether the subcontractor has fulfilled its obligations. 9.4.1.5 Problem 5: Changes Management personnel may feel that if requirements are baselined, making even minor adjustments to them will be costly and time consuming. Resolution If requirements are documented and baselined but a change request process is not implemented, then changes can be introduced that will affect budget and schedule with no means of determining if the requested change justifies those effects. Additionally, without a change control process, downstream systems (most notably the test group) may not be informed of changes and may continue creating test procedures that are now, unbeknownst to them, invalid. This will cause further delays once the change has been discovered by testing, which will then have to rewrite all test procedures. Adhering to a change control procedure such as that described in Appendix C on the enclosed CD-ROM will ensure that schedule and budget impacts are all considered before a change is approved and that
158
Practical Software Process Improvement
all stakeholders will be made aware of changes when the change is implemented. Other Affected KPAs Software Project Tracking and Oversight/Project Monitoring and Control Changes to the requirements will necessitate changes to project plan documents. Software Subcontract Management/Supplier Agreement Management (If All or Part of the Project Is Outsourced) Changes to requirements that affect outsourced projects must be relayed to the subcontractor. There may be increased expenses that must be known when the change is made, not discovered when the final invoice from the subcontractor is received. SCM/Configuration Management Changes to documents will require version control of those documents. 9.4.1.6 Problem 6: Unclear Link Between Requirements and Customer Satisfaction It may not be immediately clear to management personnel how requirements management affects customer satisfaction. Management may say that if a process does not benefit the customers, it is not worth doing. Resolution Without a requirements management process, the requesting organization will remain dissatisfied with the technical group, believing that that group never provides what the requestor wants when the requestor wants it. The delivered product or service will always require rework in order to convert it into what the requestor actually wants. If the product or service has been promised to external customers by a certain date, those customers may need to be told that the product or service will be late. In competitive markets, these delays can lose customers. When requirements are documented, reviewed, approved, and baselined, the requestor can be confident that the technical group will deliver what the requestor wants. External customers have a far greater chance of accessing the product or service on the original promised deployment date.
Obtaining Buy In
159
Other Affected KPAs Software Project Planning/Project Planning The only way to assure that the customer—whether internal or external—gets the desired product or service is to document and baseline the requirements From this, an accurate project schedule can be created, further helping to ensure that the end user gets the product or service on time. Software Subcontract Management/Supplier Agreement Management (If All or Part of the Project Is Outsourced) The prime contractor must provide the same degree of accurate information to the subcontractor. With a baselined requirements document, the subcontractor will have the necessary information to deliver its part of the project (or the entire project) for customer deployment on time. At times, the requestor does not have a clear picture of what is wanted. Implementing a requirements management process assures that before work begins on a new product or service, the requestor is clear on what it is that is desired.1 9.4.2 Software Project Planning/Project Planning Chapter 3 discusses some of the problems inherent in lack of formal project planning. Upper management personnel may feel that extensive planning in general is not necessary. These managers may believe that it takes away from “real” project work, such as coding and testing. The following items demonstrate specific problems and solutions related to software project planning/project planning. 9.4.2.1 Problem 1: Project Confusion Without a plan, personnel working on a project are not a team; they are simply people called in at seemingly arbitrary times to perform certain tasks. They have little concept of how their work affects the overall goals and objectives of the project and are thus unable to use that knowledge—knowledge of their role in the greater scheme of the project—to perform their tasks more creatively. They lack the focus needed. Resolution Having a plan provides all stakeholders with basic information about the project; its goals, purpose, and objectives; and the interim 1. In cases where the requestor is unsure of what is wanted, an iterative approach to development may be useful.
160
Practical Software Process Improvement
work products to be delivered. It enables all team members to know when their particular skills are needed and in what way they are needed. It allows them to make commitments to other projects, knowing when they will be released from the current one. Other Affected KPAs Software Project Tracking and Oversight/Project Monitoring and Control A plan is needed to track project progress. The more accurate the plan, the better tool it will be for tracking. SQA/Process Product Quality Assurance The SQA group, for organizations that have one, uses the plan to know when certain milestones will be reached so it can monitor interim work products. 9.4.2.2 Problem 2: Resource Assignments Without a project plan, the project manager has to guess at when certain skills will be needed. Other projects may have those same skill needs, and without a plan there will be conflict between projects for these skills. Resolution With a plan, the project manager is better able to negotiate for skills when needed, and, if unable to procure them when needed, can advise the customer early in the life cycle of the project. Other Affected KPAs Software Project Tracking and Oversight/Project Monitoring and Control The time certain skills will be needed may change as the project moves forward. Knowing this, the project manager can negotiate in advance to assure that these skills are available to the project when required. 9.4.2.3 Problem 3: Inability to Recognize Project Problems Early Without a plan, there is no reasonable way of determining whether the project is in trouble until such time that the problems are obvious to everyone. If there is no plan for how work is to proceed, there is no way of knowing if it is proceeding in a satisfactory manner. One person may perceive that the project is in trouble, when another believes it is going fine.
Obtaining Buy In
161
Resolution A plan details the expected progress of the project. It provides the basis for tracking and enables the project manager to recognize deviations from the plan and make the necessary corrections. Other Affected KPAs Software Project Tracking and Oversight/Project Monitoring and Control As stated earlier, the plan is the tool by which the project manager tracks the project. It must be complete and accurate to enable the project manager to use it effectively. SQA/Process Product Quality Assurance The SQA group can escalate issues when it identifies them, often during milestone reviews or at the date of a scheduled milestone review. If the work product to be reviewed is not ready, some remedial action must be taken. Having a plan enables the SQA group to know when milestones should be reached. 9.4.3 Software Project Tracking and Oversight/Project Monitoring and Control In Chapter 4, some of the potential problems resulting when a project is not tracked to its plan were discussed. These are common problems in many organizations. The following are some examples of these problems in a practical context that can be discussed with reluctant team members or management. You will note that some of the problem categories listed are the same for different process steps (e.g., software requirements management/requirements management, software project planning/project planning), yet the problems that arise from them are not the same. 9.4.3.1 Problem 1: Risk Mitigation The most rigorous risk planning and identification will be worthless if the risk issues are not tracked regularly. Identified risks may decrease and new, previously unforeseen risks may appear, but without tracking to the plan, this information will not be seen early enough to allow sufficient time for mitigation. Resolution Risks are generally identified in phases; a project manager knows early in the project where to expect, and thus guard against, certain risk issues. As he/she monitors the project according to the plan, he/she
162
Practical Software Process Improvement
will know when certain potential risk events have passed. During regularly scheduled project status meetings, during which the plan is reviewed and updated, new information about the project, which occurs as a natural consequence of moving through the project life cycle, will uncover other potential risks. Mitigation steps can then be taken in advance of the risk event occurring. Other Affected KPAs Software Project Planning/Project Planning A part of planning is replanning, which is often necessary during projects, especially when risk events occur. Being prepared with replan steps saves time and money. SCM/Configuration Management Changes to documents will require version control of those documents. 9.4.3.2 Problem 2: Reporting Milestones will be reached early, late, or on time, but without project tracking it will be impossible to provide reliable information to upper management on a timely basis. The project manager will be unable to determine if the date for any particular milestone, as originally planned, remains valid. Resolution As management looks for certain milestones to be reached as documented in the plan, the project manager will be able to determine through tracking to that plan when an event will be early, late, or on schedule. He/she can advise upper management early about any delays. If upper management personnel know of a delay in advance, they can take whatever steps may be necessary to lessen customer impact. Other Affected KPAs SQA/Process and Product Quality Assurance One role of the SQA group is to provide timely, accurate, and useful reports for upper management. If the project is not being tracked, these reports cannot exist. 9.4.3.3 Problem 3: Customer/User Issues Without tracking to the plan, it will be impossible to advise a customer in advance if the product or service will be late. Customers and users are often more amenable to a delay if they are aware of it early on. Being advised
Obtaining Buy In
163
days, or even hours, before expected deployment causes serious customer impacts. Resolution Tracking to the plan greatly reduces the risk of a surprise delay at the end of the project life cycle. Certainly integration test may uncover a serious issue, but if the project has been tracked to the plan from the start, serious defects would probably have been discovered in an earlier phase through reviews or unit testing. Other Affected KPAs Software Project Management/Project Management Replanning is an issue here, as it may be necessary to replan depending on customer needs. For example, if the entire functionality that a customer or user requested by a certain date will not be available, perhaps they are willing to settle for some of the functionality by that date, with the rest being delivered as a later release. Software Requirements Management/Requirements Management If there is a change in the project scope, the requirements must be adjusted accordingly. 9.4.3.4 Problem 4: Budget Overruns Without tracking to the plan, the project manager has to guess at expenditures and only knows that more funding is needed when the project is in serious peril. Resolution Tracking to the plan enables the project manager to see when project work is deviating from the plan and thus enables her to make necessary adjustments. If additional funding is needed, he/she can approach the project sponsor with the necessary information and explanations of why the extra funding is needed. It is far better to advise a project sponsor with this request before the project is in serious trouble. Other Affected KPAs Software Project Planning/Project Planning This is affected when the results of tracking the project require replanning. As stated previously, replanning is common on projects and is not a problem as long as it is done in an orderly manner. When issues on a project are
164
Practical Software Process Improvement
discovered through tracking, the project plan must be adjusted to rectify them. Software Subcontract Management/Supplier Agreement Management Budget overruns are a common complaint with outsourced projects. Tracking to the plan will enable the prime contractor’s project manager to know when project work is deviating from the plan, thus risking additional expenses. SCM/Configuration Management Changes to documents will require version control of those documents. 9.4.4 Software Subcontractor Management/Supplier Agreement Management Many organizations refrain from using subcontractors because they simply do not know how to manage them. Others enter into agreements with subcontractors and have negative experiences for the same reasons. Yet often subcontracting a project or a portion of a project is the most cost-effective means of getting a product or service to market in the optimum time frame. The following discussion covers the major points that management may see as barriers to subcontracting work to a vendor and the reasons that respond to each point. 9.4.4.1 Problem 1: Uncertainty About Interim and Final Deliverables Whether all or part of a project is outsourced, it will eventually be brought back into the prime contractor’s shop to be integrated with other systems. Without the opportunity to receive and test interim deliverables, the final product could require as many resources in time and budget as the project cost initially. Resolution Performing subcontract management correctly ensures that interim deliverables will be part of the plan. These deliverables are documented as project milestones, and regularly scheduled status meetings with the subcontractor allow the prime contractor to know early on if there will be a delay in delivery and why. Integration and test procedures for each deliverable are also defined, so both the prime contractor and the subcontractor understand the expectations.
Obtaining Buy In
165
Other Affected KPAs Software Project Planning/Project Planning Replanning could become an issue if reviews of interim work products indicate that there are schedule problems. SCM/Configuration Management Changes to documents will require version control of those documents. 9.4.4.2 Problem 2: Budget and Schedule Overruns Without any Recourse Without proper subcontractor management, the subcontractor at any time can advise the prime contractor, with very legitimate reasons, that problems have arisen on the project that will require additional time and resources. With money already invested in the project, the prime contractor often has little choice but to grant the request for time extensions and increased budgets. Resolution A prime contractor that is appropriately monitoring its subcontractor will not be in a position to be caught off guard by budget and schedule problems. Through regular technical and project reviews, demos, and status reports—all scheduled in the contract—the prime contractor will be aware of any issues that arise. The subcontract may include a weekly burn rate report, showing exactly how much was spent that week and a cumulative total. Other Affected KPAs Software Project Planning/Project Planning Replanning can also be an issue if the schedule needs to change. SQA/Process and Product Quality Assurance. Additionally, the software quality assurance team or individual will, as agreed upon in the contract, audit the subcontractor’s performance to assure that processes are being followed, which will assist in keeping the project on time and within budget. SCM/Configuration Management Changes to documents will require version control of those documents.
166
Practical Software Process Improvement
9.4.4.3 Problem 3: Poor Quality Management may complain that with other previously subcontracted work, the quality of the final deliverable was below the minimum acceptable level. This might be shown as evidence that it is impossible to get a quality product when outsourcing a project. Resolution If the prime contractor signs the contract and then has minimal contact with the subcontractor until final delivery (the model frequently followed), quality in all likelihood will be low. However, a properly managed subcontract will avoid these issues with the following factors: ◆
The contract will include minimum quality levels and specific tests to ensure those levels;
◆
Financial penalties will be agreed upon if these levels are not met;
◆
The prime contractor will hold periodic technical reviews to ensure that the quality is acceptable;
◆
The prime contractor’s SQA procedures will be enforced, with the subcontractor producing evidence that required processes are being followed.
9.4.4.4 Problem 4: Difficulty Maintaining Code that an Outside Organization Created This is a frequent complaint of managers hesitant to subcontract. Resolution Coding standards will be part of any effective subcontract. This will include, but not be limited to, the following: ◆
Standards for comments;
◆
Documentation requirements;
◆
User manuals;
◆
Ongoing support for a specific period of time.
Utilizing these basic steps will ensure that code created by an outside organization can be maintained as simply and effectively as code created in house.
Obtaining Buy In
167
Other Affected KPAs Software Project Planning/Project Planning Subcontracting a project or part of a project takes planning, and the steps detailed in Chapter 3 should be followed. Software Requirements Management/Requirements Management Requirements are subject to change during the life cycle of any project. This is as true for projects performed by vendors as for projects performed in-house. Changes to requirements of outsourced projects must be handled with the same diligence and rigor as changes to requirements of inhouse projects. SCM/Configuration Management Changes to documents will require version control of those documents. 9.4.5 SQA/Process and Product Quality Assurance Software quality assurance, although an integral part of every successful project, is often overlooked and its importance minimized. Often considered simply a part of testing, the true value of quality assurance is seldom practiced, yet without a lot of effort the payoffs can be considerable. 9.4.5.1 Problem 1: Belief that Quality Assurance Is the Test Team’s Responsibility A common thought about quality assurance is that defects in code will be found by the testers, thus preventing them from remaining in code deployed for customer use. No additional quality assurance measures, it may be argued, are necessary. Resolution This limited understanding of quality assurance jeopardizes product or service quality. The quality of the product or service is one aspect of quality assurance; the quality of the processes used to create the product or service is another, no less important aspect. The person responsible for process quality will assure that the following steps, at a minimum, are being taken, all of which contribute to product or service quality, and an on-time, within budget project. ◆
Requirements are baselined, thus assuring agreement between the requestor and the development team.
168
Practical Software Process Improvement
◆
The project plan includes all necessary components and is baselined, eliminating any confusion about roles, expectations, and delivery dates.
◆
Changes to baselined work products are made according to a documented procedure, assuring that impacts are known before changes are approved and that all stakeholders are aware of the change.
◆
Coding standards are maintained, allowing increased ease of maintenance.
◆
Test procedures follow the process outlined in the project plan, helping to assure rigorous testing.
Although each of these steps should be maintained as part of project management discipline, an SQA function acts as a second and vitally important layer to assure compliance with the procedures being implemented. 9.4.5.2 Problem 2: Budget Constraints The organization may not be budgeted for a quality assurance group; this would simply be additional work for the project manager, who already performs many of these functions. Resolution Even without a separate group or person to assure that these tasks are being performed, someone should be given this responsibility. Ideally, it will be someone from another project, with no stake in the project he/she is auditing for quality assurance purposes, but this is seldom the case. If it is to be the project manager, the project schedule should allow sufficient time for him/her to perform quality assurance duties. These duties would include the following: ◆
Periodic checking to assure that any change requests to any baselined work product (e.g., requirements, charter, other project plan components) have followed the change control procedure;
◆
Random review of code modules to assure that coding standards are being maintained;
◆
Review of test procedures when in draft and final versions to assure that they match the procedures outlined in the project plan.
Obtaining Buy In
169
It may be further argued that the project manager will know about all changes to work products, as change requests must go through him and he is the only one with read-write access to the documents. However, if those procedures have not been institutionalized, major issues can result without a quality assurance function. And it is likely that the project manager, in his role of project manager, will not see code modules. Other Affected KPAs Software Requirements Management/Requirements Management Software Project Planning/Project Planning Software Project Tracking and Oversight/Project Monitoring and Control Software Subcontract Management/Supplier Agreement Management SCM/Configuration Management Because SQA/process and product quality assurance functions to ensure that the other processes are being followed, each is affected by it. 9.4.6 SCM/Configuration Management Configuration management is generally followed to some degree on most projects, but it is performed in such an informal manner as to be all but useless. As with each other process area we have discussed, management often has what appear to be good reasons for not formalizing configuration management practices. We will now discuss some of the common arguments against formal configuration management activities, along with effective counterpoints. 9.4.6.1 Problem 1: Budget Constraints Management may believe that performing configuration management correctly requires tools that the organization does not have and is not budgeted to procure. Resolution As has been demonstrated, some rudimentary but effective configuration management practices can be instituted without the expenditure of tools. (Also, freeware is available to provide some basic version
170
Practical Software Process Improvement
control.) By making good use of the shared drive and providing training (see Chapter 10) to all stakeholders, effective configuration management/version control can be practiced. Other Affected KPAs Software Requirements Management/Requirements Management Software Project Planning/Project Planning Both of these areas include documents that will be under configuration management. 9.4.6.2 Problem 2: Lack of Problem Perception There may be a perception that the organization manages in a satisfactory manner with whatever levels (if any) of configuration management are currently practiced. Resolution In this circumstance, it may be necessary to document for management some of the problems that result due to inadequate configuration management practices. This might include the following: ◆
Rework. A breakdown in configuration management generally has a negative domino effect. For example, the test group may discover that requirements were changed early in the life cycle by the business analyst at the request of the marketing department. However, the rest of the team still relied on the original version of the requirements. It may then be necessary for the design to be changed, which will necessitate a change to the way modules were coded, which will require new test procedures, all of which will probably cause a delayed deployment date and a budget overrun.
◆
Difficulties with other organizations. If any part of the project, or a related project, was outsourced, and configuration management was not practiced, the risk that code or entire systems being imported into the system will not integrate properly is very high.
Other Affected KPAs Software Requirements Management/Requirements Management Software Project Planning/Project Planning
Obtaining Buy In
171
Software Subcontract Management/Supplier Agreement Management. SQA/Process and Product Quality Assurance The impacts on each of these areas result from the fact that version control is part of each component listed. Requirements will change during the life cycle of the project; that is simply a fact of life. When they change, the plan must change to accommodate the additional, or different, work the change requires. This change may affect not only the individual organization, but also any vendors or subcontractors. And reports from quality assurance audits must be versioned so trends can be seen. Positive trends can serve to improve processes on other projects, and negative trends can indicate where additional training or process revisions are required. These topics are commonly encountered by anyone initiating process improvement activities. The facts are there to overcome the objections, and the person responsible for process improvement must demonstrate these facts. The following chapter details training presentations for organizations that are formalizing a process improvement initiative.
Selected Bibliography http://www.computerworld.com/managementtopics/management/story/0, 10801,56246,00.html.
References [1]
Kling, Rob, “Social Analyses of Computing: Theoretical Perspectives on Recent Empirical Research,” Computing Surveys, Vol. 12, No. 1, March 1980, p. 69.
[2]
Kling, Rob, “Social Analyses of Computing: Theoretical Perspectives on Recent Empirical Research,” Computing Surveys, Vol. 12, No. 1, March 1980, p. 90
[3]
Goodwin, Nancy C., “Functionality and Usability,” Communications of the ACM, Vol 30, No. 3, March 1987, pp. 229–230
[4]
“Top Ten Reasons for Change Resistance-298 Companies Reporting,” Change Management Learning Center, www.change-management.com, Best Practices report, 2003. Prosci.
10 Training
In order to assure that everyone affected by the new process steps fully understands their role in them, training must be performed. The kind of training you choose to do will depend on whether you are implementing a formal process improvement initiative, with upper management support, or are introducing process steps on individual projects. As these trainings are significantly different we will discuss them separately. The first discussion will involve the following topics: 1. Training for a formal initiative. In this circumstance, it is likely that upper management has determined a need for process improvement and has made resources (financial and human) available to accomplish it. Consultants may have been brought in, or an individual or group of employees may be assigned to process improvement full time. There are a variety of models that could be used; the key is that this is an organizationwide initiative with upper management sponsorship. All stakeholders will expect training. The initial training will be to provide an overview of process improvement and the related goals of your organization.
173
174
Practical Software Process Improvement
2. Role-specific training. After the overview training is accomplished, it will be necessary to hold formal, role-specific training to assure that individuals from both business and the technical team know what is expected of them. Remember that software process improvement is often seen by business personnel as affecting only the technical personnel; the fact that business has a major role must be conveyed to them. Remember also that roles listed here are common, but the titles of those roles differ from one organization to another. Substitute the names appropriate to your organization in these trainings. The second part of this chapter is a recommended training program for less formal initiatives. In this circumstance, a project manager, for example, has determined a need to formalize processes on his projects but does not have upper management sponsorship. He simply recognizes that there is a need to introduce and formalize processes on his projects. In this circumstance, management training will not be expected, yet each role must know their responsibilities in terms of process. With each training, especially with the role-specific trainings, it must be remembered that individual mentoring will also be required. Each team member will take the information learned with her, but when first actually putting it into practice, the team members will probably need additional guidance.
10.1 Formal Training Overview Although upper management may have determined the need to implement processes, that does not imply that all stakeholders with a need to know have been informed of this decision, the reasons for it, or how it will affect them. It is probable that even stakeholders who had input into the decision do not have the knowledge to judge who it will affect or how. Therefore, as mentioned earlier, two presentations will be required. 1. Overview training; 2. Detailed, role-specific training. The following is a sample presentation of overview training. Please note that this is only a sample and should be adjusted to fit the needs of
Training
175
your organization. Perhaps you need to stress one aspect of process improvement over the others; if so, add slides and reasons to address that need. Also remember that some topics that will need to be covered in more depth in the detailed, role-specific training are only introduced here. As indicated, there are three areas to use: ◆
Slide heading;
◆
Discussion points;
◆
Notes on the discussion points.
The following model (Figure 10.1) indicates how the information in the tables can be arranged in slides (Figures 10.2–10.14). Notes for Slide 1 Today we will review some of the basic reasons for this process improvement presentation. We will answer the three questions on the screen: ◆
Exactly what is meant by process improvement?
◆
Why has this organization decided to implement process improvements at this time?
◆
And, finally, how will this initiative affect the different roles in the organization?
Process Improvement
Heading
What it is Why do it What it means to you
Discussion points
Figure 10.1 Slide model.
176
Practical Software Process Improvement
Process Improvement
What it is Why do it What it means to you
Figure 10.2 Slide 1: introduction.
Notes for Slide 2 Because many basic tasks must be performed for each project (e.g., requirements gathering), formalizing and standardizing the way these tasks are done increases efficiency in a variety of ways: ◆
Reduces the time it takes to determine how to do the task—procedures and templates are available;
◆
Assures that all aspects of the task will be done;
Process Improvement
What it is A formalized method of performing project tasks to increase efficiency and improve the following: Product/service quality Scheduling Budgeting
Figure 10.3 Slide 2.
Training
177
Target Areas Requirements Project planning Project tracking Configuration management Subcontractor management Quality assurance
Figure 10.4 Slide 3. ◆
Enables all team members to know the status of the task;
◆
Provides information that feeds into other tasks (e.g., requirements feeds into project planning).
Notes for Slide 3 Initially these are the areas on which we will focus our process improvement efforts.
Requirements Documented Reviewed Baselined Under change control
Figure 10.5 Slide 4.
178
Practical Software Process Improvement
Project Planning Scope statement Estimates: Time and cost Schedule Risks Documented Reviewed Baselined Under change control
Figure 10.6 Slide 5.
Notes for Slide 4 Clear, unambiguous requirements are key to the success of any project. In order to assure that both the requestor and the development team understand what is wanted, we will use a requirements template to capture all necessary information. Following that, all stakeholders—from both the business and technical sides—will review the document to assure mutual understanding. Once that understanding is gained, the document will be baselined. That indicates that all stakeholders
Project Tracking Status reviews Technical reviews Milestone tracking Plan adjustment
Figure 10.7 Slide 6.
Training
179
Configuration Management
Importance of configuration management Items to be under configuration management How it will be implemented
Figure 10.8 Slide 7.
agree to it, and it cannot be changed without input from all of the stakeholders. This will assure that everyone who is working on the project, including those responsible for design, code, and test procedures, are all working from the same document. If a change is requested, all those working on the project will have the opportunity of explaining how the change will affect their work. At that point the decision to accept or reject the change can be made based on complete information. If the decision
Software Quality Assurance
Refers to process and product quality Not just a function of testing
Figure 10.9 Slide 8.
180
Practical Software Process Improvement
Subcontract Management
Selecting a subcontractor Monitoring the subcontract
Figure 10.10 Slide 9.
is made to accept the change, all stakeholders will be notified and the revised version of the requirements document will be made available to everyone. Notes for Slide 5 You’ll note that project plans, like requirements, will be documented, reviewed, baselined, and under change control. The question is, what will be documented, reviewed, baselined, and under change control?
Benefits
Decreased time-to-market Increased quality Improved budgeting Improved scheduling
Figure 10.11 Slide 10.
Training
181
Improved customer satisfaction
On-time deliveries High quality products and services
Figure 10.12 Slide 11.
For each project, some basic components of the plan will be required. Each plan will have a scope statement, providing a high-level overview of what the product of the project will be: what it will include and what it won’t include. For example, often a product or service is needed quickly to meet a competitive demand. All desired functionality may not be part of the initial release, and additional functionality may be planned for a future
Process Rollout
Requirements Project planning Project tracking Configuration management Subcontractor management Quality assurance
Figure 10.13 Slide 12.
182
Practical Software Process Improvement
Questions? Comments?
Figure 10.14 Slide 13.
release. The scope statement will describe what the product of this particular project will and won’t include. Estimates of time and cost will be performed using a WBS. A WBS is used to break tasks into smaller components, generally no smaller than 40 hours of work. Using this method, initial time and cost estimates can be made from which a preliminary schedule can be established. A model for assessing risks will also be used on each project. Once the scope statement, estimates, and risks have been documented, stakeholders will meet to review and baseline the plan. At project initiation, a limited amount of information is known about the project. With each succeeding phase, more information about future phases is determined, so the plan will change overtime. But as with requirements, changes to the plan must have stakeholder input and then stakeholder notification. This leads to the next area of focus (show next slide). Notes for Slide 6 The best plan will be useless unless the project is tracked to it. The plan itself should include the frequency of reviews and a list of milestones. The project manager, with input from all team members at the review meetings, will be constantly aware of project progress and issues and can address issues immediately. This level of tracking is key to assuring that the product or service of the project will be delivered on time, within budget, and with the requisite quality.
Training
183
It may seem that a lot of time is spent on planning and tracking activities, and this could take time away from technical tasks. However, industry studies consistently show that this upfront investment of time will pay dividends later in the project life cycle. For example, spending the time to clearly understand requirements will eliminate, or at least greatly reduce, costly and time-consuming rework at the time of deployment. Notes for Slide 7 In the earlier slides, we discussed the importance of assuring that changes to any work products (e.g., requirements document, project plan components) are only made with stakeholder input and stakeholder notification. Problems typically arise when this is not done. For example, if requirements change, even slightly, but the test team is not informed of the change, the test procedures that they are creating will not be valid. When that is discovered, the project manager will have to decide to either delay deployment to allow sufficient time for the testers to create and execute new test procedures or take the risk of deploying the product or service without adequate testing. Under configuration management, every change made will be done with input from all stakeholders. A change request that may require minimal code changes could require extensive testing adjustments. That is one reason why it is vital to have stakeholder input into the changes requested. Configuration management assures version control; all team members will know that the version of documents or code that they are working from is current and that all other team members are working from the same version. Testers can be confident that they are creating test procedures that will test what is actually being created by development. The most basic tool of configuration management is the shared drive. Versions of documents and locations of code modules can be stored there, with all team members having read-only access, thus preventing any unauthorized changes. The project manager, or someone she delegates, will have read-write privileges, enabling her to make changes once they have been evaluated and approved. Notes for Slide 8 SQA is often considered another term for testing. In terms of process improvement, SQA is far broader and encompasses process as well as product quality. Having formalized, documented procedures will greatly assist in producing quality products on time and within budget. SQA as used here indicates a team or individual responsible for monitoring the processes that we are implementing and seeing that all
184
Practical Software Process Improvement
team members are complying with them. It is necessary that this person not have other project responsibilities. He must be independent and should not report to the project sponsor. The project plan will include specific points to monitor, including the following: ◆
Baselining of specific documents. The project plan will indicate that certain project work products must be baselined. The SQA team will ensure that these work products are, in fact, baselined.
◆
Change requests. The SQA team will periodically check to ensure that change requests are submitted to the project manager, stakeholders are notified, impact analysis meetings are held, the decision of the stakeholders is publicized, and, if the change is approved, that the document is changed accordingly, a new version number is assigned, and all stakeholders are notified of the change and version number.
(Comment to presenter: While the independence of the SQA person or team is vital, in reality this is often not the case for an organization that is not planning to have a formal CMM/CMMI® assessment. If your organization will not have an independent SQA person or team, alter the notes accordingly.) Notes for Slide 9 Organizations sometimes hesitate to subcontract work even when, under optimal conditions, doing so would be the best method to create a particular product or service. There are generally two reasons why subcontracted work is unsatisfactory: 1. The wrong subcontractor was chosen; 2. The subcontract was not properly monitored. We are implementing a process to address both areas. First, the steps to select a subcontractor will be clearly defined. Such factors as experience with similar applications, staff experience, and location will be considered along with price. Second, recognition that a subcontracted project is still a project, and needs to be planned and monitored, will assure that the subcontract is managed. This will not require a full-time project manager, but a project manager will be dedicated part time to assure that the steps detailed in the contract are maintained throughout the project life cycle. This will prevent problems upon delivery. Some of the milestones that will be part of every project include the following: ◆
Requirements baselining;
Training
◆
Project plan baselining;
◆
Technical reviews;
◆
Status reports;
◆
Demos, as appropriate;
◆
Acceptance test criteria.
185
In addition, specific escalation procedures will be detailed, so in the event of a missed milestone the person to contact at the subcontractor’s organization will be known. Notes for Slide 10 There is no point in implementing process for its own sake. Process improvements will accomplish these benefits in the following ways: ◆
Having documented procedures will decrease the learning curve for any new team members. Less time will need to be spent by experienced team members in teaching them.
◆
Less rework will be required, because issues will be identified earlier through clear project expectations (baselined requirements) and periodic reviews.
◆
Problems that do arise will be identified earlier. If a scheduled deployment date must be delayed, it will be known early, when the customer has more time to make whatever adjustments may be required. Last-minute deployment delays are a source of significant customer dissatisfaction.
◆
The project sponsor will have a reasonable estimate at project initiation of what the project will cost. As the project is tracked throughout the life cycle, the project manager will be able to notify the project sponsor when adjustments may be needed, rather than advising him at the end of the project of any cost overruns.
Notes for Slide 11
This, of course, is the bottom line.
Notes for Slide 12 As an organization, we will begin using aspects of each of these areas initially, as they all interact with and build on each other.
186
Practical Software Process Improvement
Notes for Slide 13 some, as follows:
If no questions are asked, the presenter may raise
◆
People sometimes wonder how they will learn these new processes. This will be done through training and mentoring.
◆
A concern that people sometimes have is the upfront costs of process, especially in terms of time. There is an investment in time, but it will pay off later on in the project life cycle through fewer defects and less rework.
Add others that may be pertinent to your organization. This generic overview can be the foundation for your initial, high-level training.
10.2 Formal Training—Detailed Having now seen a sample overview presentation, we will now review a more detailed, role-specific training presentation. The following presentation would be made when you are ready to begin implementation, after you have performed the gap analysis and created the processes. As indicated on each slide, there are three areas to use: ◆
Slide heading;
◆
Slide discussion points;
◆
Notes on the discussion points.
The following model (Figure 10.15) indicates how the information in the tables can be arranged in slides (Figures 10.16–10.29). Notes for Slide 1 All of these processes are documented and can be viewed at (location). While today’s training provides detail on each process, we will work with you individually on your projects to assure your understanding and success. Notes for Slide 2 In order to capture requirements accurately and assure mutual understanding between what business wants and what development will create, a standard template will be used. The first draft of the document will be completed by the business analyst. She will then forward the draft to the technical lead. If the technical lead has no major issues with
Training
Process Improvement
Heading
What it is Why do it What it means to you
Discussion points
187
Figure 10.15 Slide model. As always, remember that this is generic and needs to be tailored to suit the needs of your organization.
the requirements, he will schedule a review meeting with all stakeholders. This includes representatives from all affected business groups (e.g., marketing) and all affected technical groups (e.g., development, test). Each representative will receive a copy of the document when the meeting is scheduled and should arrive at the meeting prepared to discuss any problems they see with it. For example, business may see that the requirements neglect a feature they wanted. Test may see that certain areas are too vague to be testable.
Process Improvement
What it means to you
Figure 10.16 Slide 1.
188
Practical Software Process Improvement
Requirements Template Review Baselining Change control
Figure 10.17 Slide 2.
Once any issues have been resolved to the satisfaction of all stakeholders, the document will be baselined. This means that the version agreed upon is accepted by all as the official—and only—version, and it cannot be changed without going through change control procedures. Generally this document resides on the shared drive, with all stakeholders having read only access to it and the project manager having read-write access. Specific change control procedures are covered later in this presentation.
Project Planning Project plan components Review Baselining
Figure 10.18 Slide 3.
Training
189
Work Breakdown Structure Project Phase Task Subtask
Figure 10.19 Slide 4.
Notes for Slide 3 Although the project schedule is often referred to as the project plan, it is only one component of the project plan. For all projects, the following components will be included in the plan: ◆
Scope statement;
◆
Estimates: time and cost;
◆
Schedule;
Assume that a Project is Initiated to Automate Billing Top: Automate billing First level of sub-tasks: Requirements, planning, etc. First level of sub-task under “Requirements:” Meet with user, document request, etc.
Figure 10.20 Slide 5.
190
Practical Software Process Improvement
Project Tracking Formal, scheduled review meetings - Project status - Technical issues Plan adjustment based on review findings
Figure 10.21 Slide 6. ◆
Risks.
The scope statement provides a high-level overview of what the product of the project will be: what it will include and what it won’t include. For example, often a product or service is needed quickly to meet a competitive demand. All of the desired functionality may not be part of the initial release; additional functionality may be planned for a future release. The
Configuration Management Items to be under configuration management - Requirements - Project plan - Code modules - Test procedures How configuration management will be implemented
Figure 10.22 Slide 7.
Training
191
Change Control Process Formal request Impact analysis by stakeholders Decision Change of work product Stakeholder notification
Figure 10.23 Slide 8.
scope statement will describe what the product of this particular project will and won’t include. Estimates of time and cost will be performed using a WBS. A WBS is used to break tasks into smaller components, generally no smaller than 40 hours of work. Using this method, initial time and cost estimates can be made from which a preliminary schedule can be established. We’ll discuss the specifics of a WBS in a minute.
Subcontractor Management Selection of subcontractor Management of subcontractor
Figure 10.24 Slide 9.
192
Practical Software Process Improvement
Subcontractor Management Selection of subcontractor
Figure 10.25 Slide 10.
A model for assessing risks will also be used on each project. The project manager will assure that each of these components exists for each project. She can delegate the actual work of creating them (e.g., the project manager can assign the business analyst to write the scope statement), but the project manager is ultimately responsible for seeing that these components exist.
Subcontractor Management Management of subcontractor - Project plan - Technical reviews - Interim work product review - Acceptance testing
Figure 10.26 Slide 11.
Training
193
Software Quality Assurance Process quality - Leads to product quality Not just a function of testing
Figure 10.27 Slide 12.
Once the scope statement, estimates, and risks have been documented, stakeholders will meet to review and baseline the plan. Notes for Slide 4 The WBS is a method of looking at the overall product or service to be produced and then breaking that down into more manageable parts. The WBS can be thought of as an organizational chart, with the company president at the top, several vice presidents reporting to him, sev-
Summary Process - Requirements management - Project planning - Project tracking - Configuration management - Subcontractor management - Quality assurance
Figure 10.28 Slide 13.
194
Practical Software Process Improvement
Process Improvement Questions
Comments
Figure 10.29 Slide 14.
eral directors reporting to each vice president, several managers reporting to each director, and so on. An example may be helpful. Notes for Slide 5 In this very simplified example, you can see that the starting point is the product of the project. In order to accomplish the automating of the billing system, you must know exactly what that means: Does it include past due notices being sent directly to the legal department? If so, at what point past due? Thirty days? Sixty days? The business analyst will be responsible for capturing these details. The same procedure will be followed with all other subtasks at each level. Generally, once a task is at the 40-hour level, it does not need any further breakdown. Notes for Slide 6 The plan, as described on slides 3 and 4, that will be created for each project will be the basis for tracking project progress. The plan will include the frequency of status and technical review meetings. In this way, the project manager and all stakeholders will know the status of work, and adjustments to the plan can be made whenever it begins to deviate such that key deliverable dates would slip. In most cases, all team members would attend the project status meetings. The status of currently due work, overdue work, and work coming due shortly would be discussed. The project manager can decide if only a subset of the project team is necessary for a particular meeting.
Training
195
By having this information, the project manager will be able to provide upper management with accurate information on budget, schedule, and quality issues. Notes for Slide 7 In order to assure that all work products are being created from the same “blueprint,” configuration management procedures will need to be followed. At a minimum, the items shown here will be under configuration management; for individual projects, project managers may decide to include other work products, but these will be constant for all projects. Under configuration management, every change made will be done so with input from all stakeholders, version numbers will be changed for each new version, and stakeholders will be advised of the new version numbers. The following slide discusses the change control procedure being implemented. Notes for Slide 8 steps:
Change control procedures involve the following
1. The person requesting the change emails the project manager with the requested change and the reasons for the request. 2. The project manager forwards the request to all stakeholders and schedules an impact analysis meeting. 3. All stakeholders review the change request and determine how it will affect their work. 4. All impacts will be discussed at the impact analysis meeting. 5. The stakeholders will determine whether to accept or reject the change. 6. The project sponsor’s decision can override the decision of the other stakeholders. 7. If the change is approved, the requirements document is changed accordingly by the project manager. 8. The project manager announces by email to all stakeholders that the revisions have been made and advises the new, current baselined version number.
196
Practical Software Process Improvement
Please note that other, related project documents may also need to be updated as a result of a change to requirements Notes for Slide 9 tion.
We will first detail the process for subcontractor selec-
Notes for Slide 10 In order to decide to outsource a project, it is imperative that requirements be definitive. Once that is accomplished, the following steps will be taken: ◆
A candidate list is created—this can be from an approved organization vendor list, past experience, the Internet, or publication resources.
◆
RFPs—this will ask for a variety of information including experience, resource availability, geographic location, and references.
◆
Review of proposals is completed.
◆
A decision is made.
The project manager oversees the accomplishment of these tasks. All negotiations with potential subcontractors will be done by the legal department in conjunction with the project manager. [Comment to presenter: If your organization does not have a legal department, change this to refer to whoever will be responsible for contract negotiations. Use the role, not the name (i.e., “the CIO,” not “Mary Jones”).] Notes for Slide 11 ◆
Prime contractor: This is the organization seeking to have the work performed.
◆
Project plan: The subcontractor’s project plan must be reviewed and approved by the prime contractor. The prime contractor’s project manager will periodically review the plan with the subcontractor to assure that the project is proceeding as planned.
◆
Technical reviews: As part of the prime contractor’s normal review procedure with the subcontractor, the project manager will arrange technical reviews between the technical team of the prime
Training
197
contractor and of the subcontractor. The purpose of these reviews is to assure that the technical aspects of the project are fully understood by the subcontractor and development is proceeding in accordance with them. ◆
Interim work product review: The plan will include the delivery of interim work products (e.g., code modules, user documentation) periodically during the project life cycle. The prime contractor’s project manager will review this information for completeness and accuracy. This also helps to assure the maintainability of the code after it is turned over to the prime contractor.
◆
Acceptance testing: The contract must assure that the subcontractor is not finished until acceptance testing is completed to the satisfaction of the prime contractor.
Notes for Slide 12 SQA in this context refers to process quality. If the processes we’ve just discussed are being followed, the success rate for delivering projects on time, within budget, and with the requisite quality will greatly increase. In order to assure that these processes are being followed, an SQA team (or individual) will be assigned. This team (or individual) will periodically check the work products of each project (e.g., requirements document, project plan components) to assure that they conform to the processes. Deviations from the process will be brought to the attention of the project manager to be rectified. Notes for Slide 13 cesses.
These are the areas for which we have created pro-
Notes for Slide 14 If no questions or comments are raised, the presenter may raise some, as follows: ◆
This may seem like a lot of extra work for the project manager. He will have some additional responsibilities, but they will enable him to have better control of the project throughout the entire life cycle, thus reducing cost and schedule overruns, while improving the quality of the product or service being created.
◆
This also indicates a significant change from how subcontractors were selected and managed in the past. There may be a concern that
198
Practical Software Process Improvement
subcontractors we’ve used in the past will object to these processes. This change is simply to assure that we consistently deliver highquality products and services. When we partner with an outside organization, such as a subcontractor, we need to assure that that organization is doing what we require to prevent problems or identify existing problems as early as possible. ◆
Another concern that people sometime have is the time spent in review meetings. There is an investment of time, but these meetings help to identify and thus resolve issues as early as possible, as well as help to train less experienced team members in the applications of the current project.
Add others that may be pertinent to your organization.
10.3 Informal Training Finally we will consider training used by a project manager who is implementing processes on her projects without upper management sponsorship. This training will serve to introduce the concept of process to the team members and help them understand how the processes will impact their individual roles. While there are similarities to the training overview in Section 10.1, the two trainings are not the same. The following is a sample presentation of overview training. Please note that this is only a sample and should be adjusted to fit the needs of your organization. Perhaps you need to stress one aspect of process improvement over the others; if so, add slides and reasons to address that need. Also remember that some topics that will need to be covered in more depth in the detailed, role-specific training are only introduced here. As indicated on each slide, there are three areas to use: ◆
Slide heading;
◆
Slide discussion points;
◆
Notes on the discussion points.
The following model (Figure 10.30) indicates how the information in the tables can be arranged in slides (Figures 10.31–10.40).
Training
Process Improvement
Heading
What it is Why do it What it means to you
Discussion points
199
Figure 10.30 Slide model.
Notes for Slide 1 Today we will review some of the basic reasons for this process improvement presentation. We will answer the three questions on the screen: ◆
Exactly what is meant by process improvement?
◆
Why are we implementing process improvements at this time?
◆
How will this impact you?
Process Improvement
What it is Why do it What it means to you
Figure 10.31 Slide 1.
200
Practical Software Process Improvement
Process Improvement
What it is - A formalized method of performing project tasks to increase efficiency and improve the following: Product/service quality Scheduling Budgeting
Figure 10.32 Slide 2.
Notes for Slide 2 Because many basic tasks must be performed for each project (e.g., requirements gathering), formalizing and standardizing the way these tasks are done increases efficiency in a variety of ways: ◆
It reduces the time it takes to determine how to do the task—we will use the same basic procedures for each project and also use templates. For example, we will be using a requirements template.
Why Do It?
Projects are often late Projects often go over budget Too many defects are discovered after deployement
Figure 10.33 Slide 3.
Training
201
Target Areas
Requirements Project planning Project tracking Configuration management Software quality assurance
Figure 10.34 Slide 4. ◆
It assures that all aspects of the task will be done.
◆
It enables all team members to know the status of the task.
◆
It provides information that feeds into other tasks (e.g., requirements feeds into project planning).
Requirements
Documented Reviewed Baselined Under change control
Figure 10.35 Slide 5.
202
Practical Software Process Improvement
Project Planning
Scope statement Estimates: Time and cost Schedule Risks Documented Reviewed Baselined Under change control
Figure 10.36 Slide 6.
Notes for Slide 3 These problems are typical in our organization, and by taking the steps outlined in the next several slides, we will be able to make great progress in overcoming them. The steps I’m about to discuss have proven successful in thousands of organizations of all sizes. We will utilize these steps to benefit from the experience of these other organizations.
Project Tracking
Status reviews Technical reviews Milestone tracking Plan adjustment
Figure 10.37 Slide 7.
Training
203
Configuration Management
Importance of configuration management Items to be under configuration management How it will be implemented
Figure 10.38 Slide 8.
Notes for Slide 4 Initially these are the areas that we will target. They are all closely related. (Comment to presenter: Note that in this example, software subcontract management/supplier agreement management is not included. Some projects do not use subcontractors. In this example, the project manager does not work with subcontractors and does not anticipate doing so.)
Change Control Process
Formal request Impact analysis by stakeholders Decision Change of work product Stakeholder notification
Figure 10.39 Slide 9.
204
Practical Software Process Improvement
Process Improvement
Figure 10.40 Slide 10.
Notes for Slide 5 In order to assure that both the requestor and the development team understand what is wanted, we will use a requirements template to capture all necessary information. Following that, all stakeholders—from both the business and technical sides—will review the document to assure mutual understanding. From that point, if someone wants to introduce a change to requirements, we’ll have a meeting to review all of the impacts before authorizing the change. Notes for Slide 6 We will be using several components of a project plan. Each plan will have a scope statement, providing a high-level overview of what the product of the project will be—what it will include and what it won’t include. Estimates of time and cost will be performed using a work breakdown structure (WBS). A WBS is used to break tasks into smaller components, generally no smaller than 40 hours of work. Using this method, initial time and cost estimates can be made from which a preliminary schedule can be established. A model for assessing risks will also be used on each project. Once the scope statement, estimates, and risks have been documented, stakeholders will meet to review and baseline the plan. As with requirements, this will ensure that everyone who will work on the project agrees with the plan.
Training
205
After baselining, changes to the baselined documents will only occur after formal change control procedures have been followed. Notes for Slide 7 Weekly status reviews will assure that everyone knows the status of the project on a regular basis. If problems arise, they can be addressed immediately. We will have technical reviews in addition to the status meetings to assure that everyone has a clear and mutual understanding of technical issues. The schedule will have milestones. For example, the start of each phase will be considered a milestone, and we will strive to assure that we meet those milestones on the date planned. Finally, as we move through the project life cycle, we will know more about the needs of subsequent phases and will adjust the plan accordingly. Notes for Slide 8 In the earlier slides, we mentioned that baselined documents would only be changed after following change control procedures. Change requests to requirements will require an impact analysis meeting attended by all stakeholders or their representatives. As these changes are made, it is imperative that all team members know about them. We will make project plan changes at status meetings, and then the version of the plan, which will be available on the shared drive, will be changed and a new version number issued. The project manager will advise all team members via email of the new number. We will now discuss the change control procedure for requirements. Notes for Slide 9 steps:
Change control procedures involve the following
1. The person requesting the change emails the project manager with the requested change and the reasons for the request. 2. The project manager forwards the request to all stakeholders and schedules an impact analysis meeting. 3. All stakeholders review the change request and determine how it will affect their work. 4. All impacts will be discussed at the impact analysis meeting. 5. The stakeholders will determine whether to accept or reject the change.
206
Practical Software Process Improvement
6. The project sponsor’s decision can override the decision of the other stakeholders. 7. If the change is approved, the requirements document is changed accordingly by the project manager. 8. The project manager announces by email to all stakeholders that the revisions have been made and advises them of the new, current baselined version number. This may seem like a lot of work, but it will assure that change requests are not made frivolously; the business side will know that taking care to get the requirements right the first time is in everyone’s benefit. It will also assure that we are all working from the most current version of requirements. Notes for Slide 10 If no questions or comments are raised, the presenter may raise some, as follows: ◆
This may seem like a lot of extra work for the project manager. He will have some additional responsibilities, but they will enable him to have better control of the project throughout the entire life cycle, thus reducing cost and schedule overruns while improving the quality of the product or service being created.
◆
People are sometimes concerned about the reaction of business personnel to the formality of change requests. There may be some objection, but the project manager will work with business personnel to assure that they see the benefits of formal change control procedures.
◆
Another concern that people sometimes have is the time spent in review meetings. There is an investment of time, but these meetings help to identify and thus resolve issues as early as possible, as well as help to train less experienced team members in the applications of the current project.
Add others that may be pertinent to your organization. This overview focuses on five of the areas discussed in this book. Tailor it to meet your organization’s needs. Like the processes themselves, the training must be created to suit the needs of each individual organization. The basic topics are covered in these
Training
207
sample presentations, but you must assure that the content of your presentation will interest your audience by showing how process implementation will address their needs.
10.4 Mentoring Once you have made the formal presentation, you will need to mentor each team member to assure that they understand and are willing to implement the process tasks related to their individual role. Certainly this is easier for an organization with a separate group to perform process improvement. But even if it is just a project manager implementing processes on her projects, mentoring must be performed to assure success. Mentoring each team member on his role alone is not enough: the development lead needs to know how to interact with the business analyst in reviewing and baselining the requirements. Marketing personnel must have guidance in making change requests; no longer will an email to a developer result in additional functionality after the project plan has been baselined. The person responsible for the process improvement effort will need to structure and monitor these new relationships. Mentoring can be formal or informal [1]. In an informal mentoring relationship, a mentor is sought after because of her expertise in an area. There are no official meetings, no time set aside for instruction, and the relationship is casual. While this style of mentoring can be extremely beneficial in some circumstances and is the method most often employed, it is not the preferable method for a process improvement initiative, although it is sometimes the method that must be employed. In a formal mentoring relationship, the mentor sets aside specific times to spend with the individual(s) being mentored. That time is reserved for the accomplishment of specific tasks. In the context of process improvement, the person responsible for the initiative will serve as the mentor. He will need to schedule time with the team members to assist them in the accomplishment of their tasks within the context of the new processes. The following are some typical examples of mentoring that the person responsible for process improvement will conduct. Please note that this list is not intended to be exhaustive, but rather provides an overview of the kinds of tasks with which team members will need assistance. The specific mentoring assistance provided will depend on the individual project and the personalities of the team members.
208
Practical Software Process Improvement
1. Business analyst: The person responsible for process improvement will work individually with the business analyst to assist her in the following ways: ◆
Using the requirements template, including tailoring it to fit the needs of the project;
◆
Scheduling and facilitating meetings with business and technical personnel;
◆
Obtaining approval for baselining;
◆
Assuring that requirements are only changed following change control procedures.
2. Developers: The person responsible for process improvement will work individually with development personnel to assist them in the following ways: ◆
Understanding and implementing version control;
◆
Using the requirements document as the basis for creating and modifying code;
◆
Assuring that change requests made to the developers are directed to the project manager.
3. Testers: The person responsible for process improvement will work individually with testers to assist them in the following ways: ◆
Understanding and implementing version control;
◆
Using the requirements document as the basis for creating test procedures;
◆
Understanding their role in requirements development and change control.
4. Business personnel: The person responsible for process improvement will work individually with business personnel to assist them in the following ways: ◆
Understanding the benefit of the processes;
◆
Recognizing that time spent early in the project is an investment, not a waste of time;
◆
Assisting with change requests.
Training
209
When dealing with experienced professionals, there may be resentment about the instruction provided by the person responsible for process improvement. If this is the case, mentoring with those individuals must be informal. For example, if the business analyst does not seem receptive to receiving assistance in using the requirements template, the person responsible for process improvement might ask him if he has any suggestions to improve it. This may stimulate a discussion that will enable the person responsible for process improvement to subtly explain why such a change may not be needed, by showing the business analyst how to effectively use the template as it now exists. Successful mentoring will be vital to your process improvement effort. Use the method with each team member that you think will be most effective, but do not be locked into one particular method with any team member. If you feel that formal mentoring will be effective with a team member, but she seems resistant to your suggestion of setting time aside to discuss her role in the context of process, simply state that perhaps she can just come to you with questions if they arise. Do not leave it at that, however; check in casually with her to assure that she understands how to use the process.
Reference [1]
Phillips-Jones, Linda, “Should You Be an Informal of Formal Mentor?” July 2004, http://www.mentoringgroup.com/html/mentor_28.htm.
11 Process Implementation
Once the initial interviews (for the purpose of creating gap analyses) have been accomplished, the process document drafts written and approved, and upper management and team members have received overview training, it is now time to implement the new processes. Although a great amount of work has already been accomplished, it will all have been for nothing if the new process steps are not successfully implemented. As has been mentioned, a process that is perfect on paper is useless if it is not followed. We will now discuss the various steps to help assure that the processes you have developed are successfully implemented. A number of basic concepts will need to be followed. After listing them, we will discuss each in detail. Work with the team. There are two key factors here. ◆
Get their ideas on what the main problems are and address those first.
◆
Review the process documents with them.
Prioritize. Determine the two or three areas that most need to be addressed. Walk through the process. Assist with requirements writing, project plan development, and establishing the project repository. Act as 211
212
Practical Software Process Improvement
liaison between business and development. In all likelihood they will be working together in a new way and will need assistance to do so successfully. Don’t expect too much too soon. Highlight any successes and point out how you can learn from failures. If processes fail, it simply means they need to be readjusted. We will now discuss each of these in detail.
11.1 Work with the Team A major complaint of team members is the belief that someone with little knowledge about their organizational culture attempts to implement policies and procedures that simply don’t fit. Even when processes are being implemented from within, there can be a tremendous amount of resentment directed at those responsible for process implementation. There is often a feeling that someone without their expertise is attempting to tell them how to perform their jobs. This resentment, once felt, is difficult to dispel. Bringing the team members into the process of establishing the processes, to whatever degree they are willing to be involved, will give them a sense of ownership. 1. Get team members’ ideas on what the main problems are and address those first. By the time you are ready to implement processes, you have performed the necessary interviews to create the process documents. You have probably spoken to several team members during the course of your interviews, getting their input and perspective on issues facing the organization. It will now be beneficial to discuss your findings with the team. In these discussions, you can determine what areas the team members think are most problematic. Because the team members are the people who will actually implement the new processes, it is logical to address the areas of need that they identify. 2. Get team members’ input on the final versions of the process documents. Although they may resist process, if they have a voice in creating the processes to be established, it will be more difficult for them to continue to resist. Getting and using their input may be challenging; they may want to dilute the processes to the point that they are worthless. The person responsible for process
Process Implementation
213
improvement can negotiate some points; with others, there is no room to bargain. For example, the requirements document can be tailored as long as the basic needed components remain intact. But change control is mandatory; the change control procedure outlined herein (see Appendix C on the enclosed CD-ROM) must be implemented in full or it will be worthless. The person responsible for process improvement must ask himself, on every point in question, what the impact will be if that particular point is weakened. Weakening the structure of the requirements document may result in a higher level of defects than is acceptable, requiring some rework. However, weakening the change control procedure brings a high risk of overall project failure.
11.2 Gap Analysis and Prioritization To assist in prioritization we can use the same basic table used for the gap analysis for each process area, with one significant difference. We will still look at the current practice and the change needed, but instead of the CMM/CMMI® requirement, we will look at the problems resulting from the current practice. This will be the foundation of your prioritization. The information you place in the Current Practice column will be based on your feedback interviews with team members. As they identify the areas of most concern to them, summarize them and use them for prioritization. Table 11.1 is an example of a completed prioritization table. Note that in the first column are pertinent findings. In the first item, requirements are not documented and can be changed at anytime without any formal evaluation of possible impacts. The result of this is that team members are not clear on what is being requested. This often results in a product or service delivered at the end of the project life cycle that is not what the requestor wanted. This will necessitate rework, budget and schedule overruns, and may have a significant and damaging customer impact. The second item mentioned in this example concerns project planning. A high-level plan is created, but the project is not tracked to the plan. The plan is submitted to upper management solely to provide a delivery date. With any project, the amount of information known at the start of the project is limited. Budget and schedule estimates should be based on the
214
Practical Software Process Improvement Table 11.1 Gap Analysis for Prioritization
1
Current Practice
Problems Resulting from the Current Practice Change Needed
Requirements are not documented.
No one is clear on what is being requested.
Requirements must be formalized.
Requirements can be changed at anytime.
2
A high-level schedule is created by the project manager. It is only used to give upper management a general idea of when the product or service will be deployed.
There is no budget estimate, and the schedule is seldom met.
A detailed project plan must be created for each project, and the project must be tracked to the plan.
3
There are few reviews during the project life cycle and no follow-up review after deployment.
There is no way of repeating successful practices other than relying on team members who can remember what they did specifically to cause success.
Process and product quality assurance practices must be a part of each project.
4
Work is subcontracted when a major initiative falls seriously behind schedule.
The cost and risk are both very high.
A formal process for deciding when to outsource must be established and followed.
The vendor selected is often the one that happens to be “handy” at the time of need.
A vendor selection process must be established and followed.
WBS, and, as the project progresses, adjustments should be made as additional information about the project is gained. In the example in Table 11.1, this is not done. If there is only a high-level plan that is not used to
Process Implementation
215
track the project, upper management can have no realistic idea about the delivery date or the budget to allocate to the project. In the third item, there are few reviews during the project life cycle and no follow-up review after deployment. Technical and status reviews, in this example, are not performed on any regular basis. These reviews are vital for several reasons: ◆
To assure that all team members involved in the technical aspect of the project have a mutual understanding of all pertinent issues;
◆
To identify technical issues early;
◆
To train newer members in the application.
In addition to these reviews, the SQA group or individual should regularly monitor meeting minutes, change requests, and other project documentation to assure their accuracy. Finally, a lessons learned meeting should be held, optimally after each phase, but certainly after deployment of the product or service of the project. Without these reviews, the risk of deploying a product or service with an unacceptable level of defects, or finding defects late in the life cycle when they are extremely costly to fix, is increased. In the last item, the hypothetical organization we are studying subcontracts work when in crisis mode. This only compounds existing problems and increases the risk of failure. In your interviews with team members and others, you will find some similarities in the way they perceive work is done and some differences. Group them together logically: problems mainly stemming from lack of good requirements, problems mainly stemming from ineffective version control, and so on. Many issues may appear to have more than one source; if that is the case, decide, if possible, which area the problem most significantly affects. If that is not possible, put the problem in both categories. An issue such as that—one that seems to effect two or more areas equally—should be one of your first priorities. Although this example is oversimplified, it provides a basis for prioritizing the needs in your own organization. Once you’ve reviewed your findings with the team, complete the first column of the gap analysis, Current Practice. Place your findings in as many rows as you need; remember, Table 11.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made.
216
Practical Software Process Improvement
The table for this example shows that four critical catagories were identified by the project team members. The person responsible for process improvement has already interviewed team members and upper management personnel and has created processes to address these needs. During discussions with the team members to prioritize, the proposed process improvements should be discussed. Based on these interviews, and the resulting information placed in Table 11.1, you are ready to establish priorities. To some degree, this is subjective; you need to determine both where the greatest need is and what processes are most likely to have success. Based on your conversations with team members, decide which processes are most likely to be embraced. Remember that few people will readily accept all aspects of a process initiative; many people will resist them all. You will better position yourself and the initiative for success by accomplishing the following: 1. Target areas causing the most difficulties. What did team members most indicate was problematic for them? These are the areas to address because team members will be most motivated to try something new to resolve these problems. Note that upper management and team members may have very different ideas about what areas are most problematic. Although upper management’s input is important, you have a greater chance of success if you address team members’ concerns first. 2. When possible, utilize team members who are receptive to the processes. If the business analyst is highly motivated to see a requirements process implemented, then that is an excellent starting point. Work with her on the template and on demonstrating to other team members the advantages that will accrue as a result of this process. Conversely, if the business analyst seems especially resistant to documented requirements, but sees the benefit of project planning and tracking, focus on establishing a baselined project plan, status meetings, and so on. This does not mean that other issues should be avoided. A requirements document is mandatory, but it can be tailored to make it more acceptable to those resisting it. Over time, as process improvements succeed, it can evolve to become a more useful tool. 3. Focus on areas where you can reasonably expect some quick success. If upper management is considering outsourcing a project or part of
Process Implementation
217
a project, for example, and has drawn in development and business to discuss it, propose using the process you’ve created, at least for subcontractor selection. If a highly qualified contractor is selected, chances of success increase even if it is not managed properly. 4. Manage expectations. If team members or upper management think that process improvement is a panacea, the process initiative will not meet expectations. Be realistic; there will be some trial and error, but each step will result in net gains for the organization, even if those gains are not immediately as great as might be hoped.
11.3 Walk Through the Process This aspect will probably be the most time consuming. If the person responsible for process improvement has that assignment in addition to another role (such as a project manager), walking through the process will be especially burdensome, but it can’t be avoided. During the time when processes were being created, there may have been no hurry; when there was time for the interviews and the writing of process documents, they were done. But once an organization is ready to roll out the processes, they must be done as needed. For example, the creation of a project plan for a new project cannot wait. If the project has been approved by a sponsor, a project plan is needed. While this is being done, usually by the project manager (who may also be responsible for the process improvement initiative), requirements must be gathered and the requirements document written. The person responsible for process improvement will need to work with the business analyst, the business side requesting the project, and the technical team to assure that the requirements are placed in the template, that all the necessary information is captured, that a draft version is sent to all stakeholders, a review meeting held, and so on. All of the steps necessary for writing good requirements must be performed, and the people responsible for doing so will not know how unless guided by the person who is implementing the process improvements. The following lists the major tasks and the person generally responsible, with whom it will be necessary for the person initiating process improvements to work, at least initially.
218
Practical Software Process Improvement
1. Requirements: business analyst. ◆
Completing the template;
◆
Scheduling the review;
◆
Monitoring/facilitating the review to assure that all areas are covered;
◆
Following up with any needed revisions;
◆
Obtaining approval;
◆
Notifying all stakeholders of baselining.
2. Project planning: project manager. ◆
Creating the plan, which includes the creation of all plan components as described in Chapter 3;
◆
Scheduling the review;
◆
Monitoring/facilitating the review to assure that all areas are covered;
◆
Following up with any needed revisions;
◆
Obtaining approval;
◆
Notifying all stakeholders of baselining.
3. Project tracking: project manager. ◆
Assuring that scheduled meetings occur;
◆
Facilitating meetings;
◆
Assisting with project plan revisions;
◆
Notifying stakeholders of revisions.
4. Software subcontract management: project sponsor, project manager, business manager. ◆
Creating a list of possible vendors;
◆
Developing the RFP;
◆
Developing the cover letter for the RFP;
◆
Arranging the bidders’ conference;
Process Implementation
◆
Reviewing proposals;
◆
Notifying the winner of the award;
◆
Reviewing the subcontractor’s project plan;
◆
Assuring that technical reviews occur as scheduled;
◆
Assuring that satisfactory project statuses are received;
◆
Escalating problems as necessary;
◆
Assuring adherence to all aspects of the contract.
219
5. SQA: SQA group, project manager. ◆
Checking that all reviews are being held and documented;
◆
Confirming usage of required templates;
◆
Completing tables showing findings.
6. SCM: Project manager, SQA ◆
Determining what work products should be under configuration management;
◆
Establishing the work-product repository;
◆
Assisting with a version control naming scheme;
◆
Assuring that baselined products are entered properly into the repository;
◆
Monitoring changes to baselines for accuracy;
◆
Assuring stakeholder notification of baselining and rebaselining.
It is expected that the person responsible for process improvements is the most knowledgeable about the processes themselves and all related templates and checklists. Because of this, that person may have a major role in documenting the requirements, writing the project charter, creating the WBS, and so on. It will be important to assist the person responsible for each of these tasks, rather than doing them for him. He will not learn them without assistance; neither will he learn them if the tasks are done for him. Because much of this work must be done at the start or early part of the project life cycle, it is obvious how it can be challenging for one person, especially if she is also the project manager. While the project plan is being
220
Practical Software Process Improvement
created, SQA measures will be decided so they can become part of the plan. At the same time, decisions will be made regarding configuration management—what work products will be involved, where the repository will reside, and so on. After that, the walk through of the process steps with the people responsible for individual tasks will be far more manageable. But that initial investment of time is vital; it will be the foundation for process improvement success on the project for which these steps are being taken and on future projects.
11.4 Act As Liaison Between Business and Development A common problem on many projects is lack of communication and understanding between the business side of the organization and the technical side. The need for good communication becomes even more vital when process steps are being implemented. Without process, if requirements were unclear, a developer working on a module might contact someone from the requesting organization and ask a few questions. That developer might then have a good idea of the expected function of the module she is working on, but not of the larger picture. And that broader view may be vital to the work that developer is doing. Conversely, someone from the requesting organization may contact a developer and ask for a change that appears to be minor. The developer may agree to make the change, again without a clear understanding of the entire project. Each of these situations will lead to problems later in the life cycle, when modules are to be integrated. If this has been the pattern, however, and now a more formal communication method is being established (e.g., baselined project plan and requirements, change control procedures), the person responsible for process improvement will need to assure that these communication links are being maintained and that the business and technical teams understand the necessity for them. He will need to work sufficiently close with both business personnel to know if they want a change to the scope of the project and the technical team to know if such a change has been informally requested. Also, if members of the technical team have questions, they should be answered during a regularly scheduled technical review. This way, everyone on the technical team has the same understanding. It will be important to assure that no steps are skipped, unless doing so is a conscious decision for which there are adequate reasons that can and
Process Implementation
221
should be documented. Part of the role of liaison is to see that each step is accomplished. This may be challenging when schedules are tight and deadlines are fast approaching. If business and technical personnel understand the reasons for the steps and know that missing any of them is not acceptable, compliance will be much easier to attain. Resistance statement 15: We can’t always wait for the next scheduled technical review to ask questions. Doing so will greatly delay our work. Response: This process does not prevent the technical team from asking questions occasionally of the business side as needed. However, with regularly scheduled technical reviews, most questions should be answered. And if questions do arise that need immediate attention, they should certainly be asked. However, they should also be discussed at the next technical review meeting to assure that all team members have the same understanding of the issue.
The person responsible for process improvement needs to position herself as an asset to all team members, both business and technical. She will need to explain the purpose and benefits of each process step that may be questioned. It must be stressed to all stakeholders that the goal is not completed paperwork; the goal is a better record of delivery of on-time, within budget, high-quality products and services. The paperwork (e.g., templates, checklists) is a means to achieve that goal. The person who is implementing the process improvements must recognize that in this context, a major part of her role will be solving problems that arise during the initial usage of process steps. There will be questions about project plan components; typical questions follow, although this list only represents the kind of questions that must be answered and is not intended to be exhaustive. It is simply an example of typical questions, and the common-sense answers that the person implementing process improvement must give. These answers will reflect the fact that process improvement is logical; it exists to serve the business (Q = question; A = answer). Requirements Management Q. What do we do if we don’t have sufficient information to complete all areas? A. If there is simply insufficient information, but that information is expected as some point during the project life cycle, detail what is missing,
222
Practical Software Process Improvement
why it is missing, and when it is expected in the appropriate section of the requirements document. A. If the item doesn’t apply to a particular project, indicate that fact with N/A and the reason it is N/A for this particular project. This indicates that the item was not forgotten. Don’t leave any section blank. Q. Can the development lead write the document? A. Anyone can write the requirements document, as long as the baselining process is followed (stakeholder review, approval, and baselining). Project Planning Q. Who writes the project charter? A. The project charter is authorized by the project sponsor, who should provide the document. If that does not happen, the project manager should write it, or assign someone to do so, and then obtain the sponsor’s signature. Q. Do we need to have all the project plan components complete before we move to the next phase? A. While doing so is the ideal, that ideal is seldom achieved. However, the WBS, charter, scope, budget estimate, and schedule should be complete before proceeding. Project Tracking and Oversight Q. Are weekly status meetings required? A. Weekly status meetings are not mandatory, but, before you dispense with them, consider the benefits that will be lost by so doing. Status meetings are the most effective way for all team members to know project issues. A problem faced by one team member can be mentioned in a status meeting, and one of the other members may have the resolution. Without this regular contact, weeks could pass without the issue being addressed. Similarly, team members with less expertise on the application being developed learn from those who are more experienced during conversations at these meetings. If the decision is made not to have weekly status meetings, the project plan should state what will occur as a substitute. This could be status meetings held less frequently, with written status reports submitted between the meetings. Whatever method of status reporting is used, the project manager must be updated on a weekly basis. Q. Do all team members have to attend status meetings? If the business analyst’s work is done, for example, why must he/she attend?
Process Implementation
223
A. This decision is best left to the discretion of the project manager. However, while there are some advantages to limiting participation to those team members whose work is not completed, there are some disadvantages as well. To continue with the example of the business analyst, if changes are suggested at a status meeting, and the business analyst is in attendance, he/she should be sufficiently familiar with the requirements to have a general idea of the impact. It could be determined at that meeting that the change is too large in scope for the current release. Without that input, the project manager will arrange and facilitate an impact analysis meeting, taking the time of all stakeholders, with the same outcome resulting. A. A team member whose work is complete, or whose project work has not yet started, can still have valuable input into the project. Subcontract Management Q. If we’ve used a subcontractor in the past and been completely satisfied with the work performed, why bother with a vendor search for the next project? A. If the projects are very similar, there is no need to make an expansive search as described in Chapter 5. However, obtaining at least two other bids will help to assure that you are getting the best price. If the projects are dissimilar, then following the entire process described in Chapter 5 will be highly beneficial. SQA Q. If our schedule is tight, can’t we just rely on testing to find defects before deployment? A. The later in the life cycle that defects are found, the more costly they are to fix. Investing in the time upfront will save time later on. SQA steps should be part of the project plan; they should be considered as important as any other task. A. It’s also important to remember that by SQA, in the context of process improvement, we are referring to the quality of the process steps. By assuring that the steps being implemented are actually performed, fewer defects will be introduced and those that are will be found earlier. SCM Q. In the interests of time, wouldn’t it make sense to change the version number and notify all stakeholders only for major changes?
224
Practical Software Process Improvement
A. On the surface that seems like a reasonable idea. Unfortunately, as has been demonstrated, one person’s idea of a ”minor” change could have a great effect on someone else. If several changes are being made at once, they could be combined. But having each change represented by a new version number, and undergoing the steps outlined in Chapter 7, will provide benefits that far exceed any inconvenience in doing so.
11.5 Provide Feedback As process improvement is first introduced, providing team members and management with feedback is essential. Any successes should be reported, along with areas where the process did not have the desired effect. After each project, a lessons learned meeting should be held. Optimally, such a meeting will be held after each phase is complete. At these meetings, attention should be paid to what worked and what didn’t in terms of process. These findings will drive further changes in the process steps that will be more effective. If you have prioritized and have focused your efforts on a few areas rather than trying to resolve all problems at once, you will have success. Using the Measurement and Analysis steps at the end of each chapter, demonstrate where you have had success. Do not try to hide failures; they will be obvious to everyone anyway. Analyze why those particular steps didn’t work and tailor them for success the next time. Feedback should be formal. Any or all of the templates provided in the Measurement and Analysis sections of each chapter that covers a KPA can be used as the basis for reporting to both management and team personnel. Management, however, will probably require a higher level view; their focus may be the following: ◆
Number of projects completing within budget and percentage over for those that exceeded budget (e.g., Project XYZ exceeded budget by 18%);
◆
Number of projects completed on schedule and number of days, or percentage over, for those that did not complete within budget (e.g., Project ABC was delivered 35 days after the scheduled delivery date);
◆
Number and severity level of defects discovered within the first 30 days of deployment;
◆
Number and severity level of defects found in each phase of the project life cycle.
Process Implementation
225
Team personnel will probably benefit from a closer look at process results, and this is where lessons learned meetings are invaluable. These give team members an opportunity to discuss in detail what worked and what didn’t. The project manager, or the person responsible for process on the project, should document the findings of each meeting, periodically provide a summary of findings on the shared drive, and notify all team members that it is there. This summarization can be done quarterly or twice yearly, depending on the number of projects the organization performs. For an organization performing many projects, more frequent summarization of lessons learned meetings is necessary. Teams can use these findings to improve processes on the next project. If an organization only performs a few projects a year, less frequent summarization of findings is fine. One caution should not be overlooked: lessons learned meetings need a skilled facilitator to assure that they don’t deteriorate into fault-finding sessions. If someone comments that the requirements document was not written as clearly as it could have been, the person who wrote it may become defensive. There are two problems to guard against here: 1. Criticisms should always be of the process, not of any person. In this example, if the requirements were unclear, the person identifying that fact should comment that the requirements template needs additional review and revision. That removes the focus from the person who wrote the requirements to the template, which can be changed. 2. If one team member is critical of another, or someone becomes defensive, the facilitator must diffuse that situation immediately. This is best done by turning the focus back to the process. If it was felt that the project was not well planned, and the project manager becomes defensive, the facilitator may ask what components of the project plan template need to be reviewed for possible revision. Remember also that if any team member seems critical of another team member and can’t quickly be brought to focus on the process instead of the person, then there are probably other issues involved that go beyond the project. The project manager may try to resolve this problem outside of the lessons learned meeting, but this may not be possible. If it can’t be resolved on that level, the situation should be referred to human resources.
Review documents
Team agrees to priorities?
Prioritize
Yes
No
Assist with requirements
Assist with project planning
Assist with SQA planning
Assist with SCM planning
Assist with SSM (if applicable)
Yes Assist with project tracking
Capture metrics
Hold ‘lessons learned’ meeting
Process changes needed? No Publicize metrics
Figure 11.1 Flowchart—process implementation.
Revise processes
Work with business and technical teams
Practical Software Process Improvement
Interview team members
226
Process drafts written
Process Implementation
227
As with any undertaking, there is no guarantee of success with a process improvement initiative. But, by following these steps, you will greatly increase the odds of seeing dramatic benefits in your organization.
11.6 Implementing the Process Flowchart The flowchart depicted in Figure 11.1 reflects the effort that must be expended by the person responsible for process improvement during the initial implementation. As shown, several tasks must be performed simultaneously. This is another reason indicating the importance of prioritization. It will be impossible to perform all of the tasks; those that have been indicated by the team members should be the focus of the initial effort.
11.7 Process Implementation Checklist The checklist in Table 11.2 will assist all team members in knowing what steps are necessary during process implementation. While its main use will be by the person responsible for initiating process improvement, all team members will be able to refer to it throughout the process, thus knowing what to expect.
Table 11.2 Process Implementation Checklist Item 1
Provide management training (if applicable).
2
Provide team-level training to project team.
3
Determine pilot team.
4
Interview pilot team members.
5
Obtain information about problematic areas.
6
Discuss processes.
7
Prioritize areas to address.
8
Tailor processes to suit organization needs.
9
Assist with template completion.
10
Troubleshoot problems with business and development.
Status
12 Monitoring and Revising the Process
These two topics—monitoring the processes and making ongoing revisions to them—are closely related. In order to know where adjustments or revisions are necessary, you must monitor the processes to determine which are working successfully and which require change. Due to this close relationship, they will be discussed together. Regardless of your diligence in interviewing personnel, creating processes, and revising them prior to implementation, once they are actually in use, there will be a need to adjust them. Additionally, as the team becomes more accustomed to, and comfortable with, the new processes, more rigor can be introduced. Making these adaptations must be done with the input of the people actually using the processes. As indicated, there are two reasons to revise processes: 1. To revise or adjust unworkable or ineffective process steps; 2. To increase the structure and rigor of process. Although some needed adjustments will be intuitive, others will require a careful review of metrics collected from projects. While both of these require changing the process, the procedure for each is sufficiently different to be discussed separately. 229
230
Practical Software Process Improvement
12.1 Making Adjustments During implementation, you will receive suggestions and insights from team members. Some suggestions may be in the form of complaints; listen to these and look for any legitimate problems that are causing the complaint. If there is a legitimate problem, by addressing it, you will not only improve the process, but also signal to the person who made the complaint that his input is valued. This may serve as a major factor in encouraging that person to participate more fully and to express concerns more constructively in the future. In addition to these informal comments and suggestions, a structured lessons learned meeting after the completion of the first project using the new processes should be held. This meeting should last no more than one hour and should be facilitated in such a way that no person or role is blamed for process difficulties. For example, if the business analyst wrote the requirements document, and there were problems stemming from requirements, look at the requirements template for the source of the problem, not the business analyst. The foundation of the meeting will be a gap analysis template, and the same form used throughout the process improvement effort will be used again. Using a familiar method will provide a comfort level to the team members that will encourage greater input from them.
12.2 Gap Analysis for Monitoring and Revising the Process Table 12.1, which uses the gap analysis template for ongoing revisions from Appendix A on the enclosed CD-ROM, is an example only. Although the items listed are common in many organizations, they may not be relevant to yours; these are simply examples to assist you in completing your own gap analysis. Using this as the basis for your lessons learned meeting provides the structure to help assure that the meeting will be productive. Note that the middle column remains the same: CMM/CMMI. This column, like the middle column in the other gap analysis templates, lists the process standard to be reached. However, unlike the middle column in the gap analysis templates for the individual KPAs, this one provides an overview of the goal of each individual KPA. For example, in the gap analysis template for software requirements management/requirements management, there are four specific goals listed for requirements management.
Monitoring and Revising the Process
231
Table 12.1 Gap Analysis for Ongoing Revisions Positives and Negatives from Project XYZ 1
Requirements were documented using the template. Requirements were baselined.
CMM/CMMI® Requirements are well documented, baselined, and only changed following change control procedures.
Provide additional change control training. Include specific examples of problems caused by not following it.
Small changes were made without following change control procedures. This scope creep caused the project to miss the schedule deployment date.
2
3
All project plan components were included.
Possible Solutions
A detailed project plan is created, reviewed, and baselined.
The project was well under way before the plan was baselined. As a result, the plan was ineffective.
Look at each plan component. Too much detail was included for scope and purpose, and not enough for the WBS.
The project is tracked to Because the plan was the plan. baselined late and was inadequate, it was quickly abandoned. It was not used to track the project.
Assure that an effective plan is created. Prioritize plan components and spend less time on creating those of lesser importance.
Status meetings were held on an as needed basis.
Include regular status meetings in the plan and perform the project to the plan.
232
Practical Software Process Improvement
Table 12.1 (continued) Positives and Negatives from Project XYZ 4
5
Possible Solutions
Vendors are selected A portion of the project was outsourced. A vendor according to a documented procedure. was used that had not been used previously but was highly recommended. No vendor selection process (e.g., RFP, bidders conference) was used. This may have been the cause of some of the problems that followed.
Schedule the project to include time for vendor selection. After the project was approved, requirements gathering began but vendor selection did not start until coding was begun. Vendor selection should have started as soon as the project was approved.
The subcontract was managed according to the subcontractor’s plan. It was successful overall, but there were some problems with integration.
Had the project plan been more effective, it would have included sufficient technical reviews with the subcontractor that probably would have eliminated the integration problems. Assure that this is done in the future.
We tried to monitor our own use of processes. Quality assurance steps were not part of the plan. Including SQA steps in the plan would have ensured a better plan.
6
CMM/CMMI®
There was confusion about what project work products were to be under configuration management. As a result, not everyone worked from the right work product.
SQA steps are part of the project plan.
Review the purpose for SQA and include the necessary steps in the next project. Invest the time in the future to specify SQA steps.
Specify configuration Configuration management is performed items in the plan and where they can be found. according to a documented procedure.
Monitoring and Revising the Process
233
In the gap analysis for ongoing revisions, there is one general goal listed for each KPA. In the first column, place information about items that did or did not work successfully on the project (i.e., items that did not meet the standard shown in the second column). In the third column, document possible solutions to reach that standard. Note that pertinent findings are in the first column. In this example, requirements were documented using the approved template, reviewed, and baselined, but change control was not strictly maintained. As a result of the additional unplanned and unapproved work, the scheduled delivery date was missed. A project plan was created and baselined, but not until significant project work had begun. In this case, the plan may only have been created because it was required, not as a basis for performing the project. Without an effective project plan, there was nothing to track project progress against. In this situation, where there is no effective project plan, the project is generally out of control. The project manager and other team members do not know the project status at anything but a very high level. Problems will not be foreseen; they will only be discovered when encountered, causing delays as solutions are sought and implemented. This example project had no SQA plan; process was monitored informally by the team members. All team members should strive to perform their work according to the processes, but having specific steps detailed in the project plan is far more effective. If, for example, technical review meetings are to be held at the start of each phase according to the plan, the SQA plan will specify that meeting consistency is to be monitored. If meetings are missed, the project manager is notified. If the problem continues, the project sponsor is notified. With this level of accountability, it is far more likely that effective processes, which lead to on-time, within budget, highquality deliverables, will be the result. The project plan should include a specific list of work products to be placed under configuration management. This is another area where software quality assurance plays a major role. If this list does not exist, it is SQA’s responsibility to raise that fact as an issue. If the list does exist, SQA assures that it is implemented. Although this example is oversimplified, it provides a basis for your work in your own organization. This is the kind of information to gather at the lessons learned meeting.
234
Practical Software Process Improvement
At the lessons learned meeting, complete the first column of the gap analysis, Positives and Negatives from Project XYZ. Place your findings in as many rows as you need; remember, Table 12.1 is only an example. Use only the level of detail you need to be able to determine the changes that need to be made. This template shows six critical items in the CMM/CMMI® column. The problems that you identify regarding process implementation will fall into one of those six categories. As indicated in the example, you may have more than one issue for one or more of the categories. Include as many as you find; you will prioritize from that list. At the lessons learned meeting, you will probably find many commonalities. In the current example, several team members may feel that certain project plan components did not fully apply to this particular project, but they felt constrained to include them in order to comply with the process. At the start of the project, there may have been more motivation for process compliance than there was later, when schedules were very tight and the promised deployment date was fast approaching. At that point, team members may have felt that change control procedures were too time consuming and cumbersome for small changes. There may also have been disagreement about what work products needed to be under configuration management if a list of qualifying items was not spelled out at the start of the project. And team members may have felt that, without a designated software quality assurance individual or group, these responsibilities were too burdensome to be carried by team members busy with writing and testing code. These are legitimate concerns that can be rectified by either adjusting the process, or providing additional training on process steps. The purpose of the lessons learned meeting is to identify those process-related areas that caused difficulties on the project—such as not complying with the change control procedure—so that the team, and especially the person responsible for process improvement (frequently the project manager), can determine solutions. Once you have identified the problem areas, you are ready to look at solutions. Remember that the goal is to adjust the processes to be more effective, based on what was learned during the initial project.1 If initial interviews and process creation were performed as indicated in the earlier 1. This method of adjusting processes from lessons learned meetings can and should be used after each project, not just the first one. However, with each succeeding project, the changes to the processes should be smaller.
Monitoring and Revising the Process
235
chapters, major revisions should not be necessary. Small changes can have a significant impact. Your search for solutions will be based on the CMM/CMMI® standard that you are working towards, as shown in the gap analysis and listed here. 1. Requirements are well documented, baselined, and only changed following change control procedures; 2. A detailed project plan is created, reviewed, and baselined; 3. The project is tracked to the plan; 4a. Vendors are selected according to a documented procedure; 4b. The subcontractor was managed according to a documented procedure; 5. SQA steps are part of the project plan; 6. Configuration management is performed according to a document procedure. The following discussion can be used as the basis for adjusting your processes. Remember always to tailor it to the needs of your organization. 12.2.1 Requirements Are Well Documented, Baselined, and Only Changed Following Change Control Procedures This is a key component to a successful project. If change control procedures were not followed, review them and see what changes can be made. For example, it may seem burdensome to meet formally every time a change is requested. There are two possible solutions. ◆
Review any change requests at the weekly project status meetings and decide if an impact analysis meeting is necessary. It could be recognized at the status meeting that the change will be major and will require a significant addition to both schedule and budget. The project manager can then relay this information to the requestor. If he still wants to consider the change, an impact analysis meeting will be scheduled. However, he may decide to defer the request to a future release.
◆
Send the request through email. Ask each person to reply within a certain time frame (i.e., two business days) with their opinion of
236
Practical Software Process Improvement
how the change would impact their work. The project manager will then summarize this information, determine the change to schedule and budget, and submit this to the project sponsor. She will decide to accept or reject the change, and the project manager will proceed accordingly. She will then either adjust the requirements, schedule, and budget to reflect the change and announce to the team that the change is approved, or she will announce to the team that the change has been rejected. A problem with this method is assuring that responses are received from all team members. However, if they are aware that responding will prevent the need for a meeting, the response rate may be higher. However, the project manager will probably need to perform some follow up to get all of the responses. 12.2.2 A Detailed Project Plan Is Created, Reviewed, and Baselined If a project plan is not being created, or if the plan created does not adequately reflect how the project is to be performed, the risk of problems becomes extremely high. Some organizations may feel that a high-level plan is all that is necessary. Unfortunately, a project cannot be tracked from such a plan. The project plan, to be effective, must detail the steps that will be undertaken in the project. For each project, it is necessary to look at plan components and decide which are necessary for the particular project. As stated in Chapter 3, the following are the basic project plan components. Answer the questions posed for each item and determine if the information can be minimized for a particular project. 1. Charter: “A document issued by senior management that provides the project manager with the authority to apply organizational resources to project activities.”[1] ◆
Is there an email to the project manager authorizing the project? This may be sufficient to serve as a charter.
2. Project’s Purpose: A description of what is to be produced. ◆
Is this a later release of a product or service? If so, there may be an original document describing the project’s purpose. That document could be adapted to describe the current project.
Monitoring and Revising the Process
237
3. Scope: This should clearly state what the final product will and will not include. ◆
Can a list be provided?
4. Goals and Objectives: What will the project accomplish? What will the product or service produced by the project accomplish for the end user? ◆
Can this be included in the Project’s Purpose?
◆
How will it accomplish it? In what way will this product or service meet the goal of the end user?
◆
Are the two main questions (What will the product accomplish? How will it accomplish it?) answered in the section Project’s Purpose section? If so, under Goals and Objectives in the requirements template, simply insert “See Project’s Purpose.”
5. Software Life Cycle to be Used: Waterfall? Iterative? Other? 6. Work Products to be Developed: Many interim work products that are not the end product the customer will see, but are necessary to the creation of the end product, usually must be produced. The plan should state what these are. ◆
Can a milestone list describe interim work products?
◆
Are these included in the WBS? If so, simply refer to that document.
7. Size Estimates of Tasks: This is typically broken down to durations of not less than one week, through the use of WBSs. Historical information—basing estimates on new project work on what is known from previous projects—is entirely valid. ◆
What is the lowest task level needed for this particular project? Generally, work packages are broken down to tasks of one week. Perhaps for a specific project, this level of granularity is not needed.
8. Cost Estimates: This is based on the WBS, and any other costs associated with the project, such as tools that must be purchased for this project.
238
Practical Software Process Improvement
9. Milestones: When will certain milestones, such as interim deliverables, be ready? This is vital for tracking and monitoring the project. ◆
If these are included in the WBS, refer to that document. It is not necessary or desirable to duplicate efforts.
10. Reviews: How often will the plan be reviewed? Like requirements, the plan is going to change during the life cycle of the project; some tasks will not take as long as estimated, some will take longer. If requirements change (and you can generally be sure that they will), the plan will have to be altered to match that change; completion date may be delayed or additional tasks may be required. ◆
If reviews are part of milestones or part of the WBS, refer to those documents.
11. Risks: What are the known unknowns? What is the contingency plan for dealing with the known unknowns as well as the unknown unknowns? As indicated, some tasks must be included (i.e., cost, schedule, risk assessment). But where processes can be streamlined, they should be. However, be careful not to eliminate detail from the project plan for the sake of current expediency. The plan, however tailored, must still reflect how the project is to be performed. 12.2.3 The Project Is Tracked from the Plan This step, of course, assumes that a workable plan exists. And a workable plan is imperative for a successful project. The steps detailed in the plan must be followed. When adjustments are necessary they should be made with input from the team. 12.2.4 Subcontract Management 12.2.4.1 Vendors Are Selected According to a Documented Procedure When only part of a project is to be outsourced, vendor selection is often not given appropriate consideration. As in the example cited earlier, vendors are often selected based on very little information. When the project is initially authorized, if the decision is made at that time to outsource all or part of it, the vendor selection process must begin immediately. If the
Monitoring and Revising the Process
239
decision is made later to outsource part of the project, an impact analysis meeting should be held to adjust the schedule and budget. That adjustment should include sufficient time for the preparation of an RFP, the scheduling of a bidders’ conference, and the other steps of vendor selection described in Chapter 5. Deciding after the project starts that part of it will be outsourced will affect the schedule. If the goal of the outsourcing is to deliver the product or service earlier than planned, the need for careful vendor selection is increased. 12.2.4.2 The Subcontractor Is Managed According to a Documented Procedure In the example referred to earlier, vendor management was successful even though vendor selection was performed without any process. If the vendor provides a project plan that is viable, and that plan is approved by the prime contractor, the chances of success are greatly enhanced. The chance of a successful subcontracted project is increased even if only one component of software subcontract management/supplier agreement management—either vendor selection or vendor management—is performed. The chance of success is greatly increased if both are performed. But if a highly qualified vendor is selected, one with experience in the technology needed and the applications to be produced, inadequate management may not have a detrimental effect on the project. Conversely, if a vendor is selected without being reviewed appropriately, and vendor management tasks are rigorously performed, the project has a good chance for success. Obviously, combining the two will increase the chance for success greatly. If a project manager is advised midway through the project that a portion of it is to be outsourced, and the vendor has already been selected, subcontractor management is made more challenging but is not impossible. He/she must require a project plan from the subcontractor and must have the authority to require changes before it is approved. The subcontractor’s project plan must include the components described in Chapter 3. The scope and a schedule derived from the WBS are key; if the subcontractor does not have the time to create an entire plan, these two components at the least must be established. The prime contractor’s project manager will use the schedule to monitor the subcontractor. 12.2.5 SQA Steps Are Part of the Project Plan In this example, SQA measures were not considered during project planning. As a result, there was no oversight for issues such as project planning
240
Practical Software Process Improvement
and change control, which were mentioned as problems on the project. Basic quality assurance steps must be documented; they can be tailored depending on the needs of the project, but they must exist and be followed. And as stated in Chapter 6, someone must be given authority for SQA. While designating the project manager for this additional role is not ideal, it is often the case. SQA steps need not be onerous. The key areas for most projects are listed next. Remember always that individual projects will have differing needs. The following are a few basic SQA steps to be considered for each project: ◆
Review of requirements changes compared to change requests received;
◆
Audit of technical review documentation;
◆
Verifications that milestones are met as scheduled;
◆
Periodic reports to upper management;
◆
Escalation steps for noncompliance.
12.2.6 Configuration Management Is Performed According to a Document Procedure The project manager, in conjunction with other team members, must determine what work products are to be under configuration management. This is another key area that cannot be avoided without potentially increasing project risks. Chapter 7 details the items that need to be under configuration management. If the list of potential work products seems burdensome, prioritize it and choose those that are most important. Remember, however, that any work product that more than one person either depends on to do his/her work or works on should be under version control. The reasons for this have been detailed in several earlier chapters.
12.3 Increasing the Rigor of the Processes Once the consistent use of the basic processes is established, and the team is comfortable with and sees the benefits of these processes, you can begin to strengthen them for even greater benefit to the organization. At this point, because you will have been using processes for several projects by now,
Monitoring and Revising the Process
241
there will be objective information available to you to assist in deciding where to strengthen processes. The following discussion details information to consider as you improve existing process in your organization. Ask yourself the following questions: Requirements ◆
Is the requirements template being used consistently?
◆
Is every facet of the requirements template either completed or marked “N/A,” indicating that it has been considered and determined not necessary for a particular project?
◆
Is the requirements document baselined?
◆
Are change control procedures consistently followed for requested changes to baselined requirements?
◆
Are all documented requirements being satisfied?
◆
Are all team members comfortable with the requirements document? Is design based on requirements? Are developers able to write code based on the requirements? Do testers create effective test plans based on requirements?
As you consider these questions, review the evidence that has been collected to date. Tables 12.2 and 12.3, described in Chapter 2, will provide a wealth of information in determining the overall status of requirements management in your organization. A summarization of this information from several projects will help you to know whether more work is needed to assure efficient requirements management or your organization is ready for a more detailed requirements process. For an explanation of these tables, please refer to Chapter 2. Software Project Planning/Project Planning ◆
Is a project plan created for every project? Does it include the components described in Chapter 3? If tailored, is all of the necessary information included, even if separate categories are not (e.g., if there is not a separate category for Goals and Objectives, goals and objectives should be covered in the Project Scope section)?
242
Practical Software Process Improvement Table 12.2 Status of Allocated Requirements
Requirements Tracking Log Summary Summary of Individual Requirement
Status/Comments
1 2 3 … N
Table 12.3 Change Request Log Summary Change Request Log Summary Summary of Change Request
Status (Open, Approved, Disapproved)
Project Plan Adjusted?
1 2 3 … N
◆
Is the project plan baselined early in the project life cycle?
◆
Are all necessary stakeholders involved in baselining the project plan?
◆
Do projects typically complete on time and within +/–10% of budget?
◆
Are quality goals generally met?
As you consider these questions, review the evidence that has been collected to date. Tables 12.4–12.6, described in Chapter 3, will provide a wealth of information in determining the overall status of project planning in your organization. A summarization of this information from several projects will help you to know whether more work is needed to assure efficient planning or your organization is ready for more detailed planning.
Monitoring and Revising the Process
243
Table 12.4 Milestone Tracking Table Milestone
Planned Date
Actual Date
1 2 N
Table 12.5 Effort Expended Table Task
Actual Effort
1 2 N
Table 12.6 Budget Tracking Table Phase
Roles
Actual Cost
1 2 N
For an explanation of these tables, please refer to Chapter 3. Software Project Tracking and Oversight/Project Monitoring and Control ◆
Is the project tracked to the plan?
◆
Is the plan used to assure that all milestones are reached?
◆
Do regular status meetings trigger changes to the plan?
◆
Are identified issues documented and tracked to completion?
As you consider these questions, review the evidence that has been collected to date. Tables 12.7–12.9, described in Chapter 4, will provide a wealth of information in determining the overall status of project tracking
244
Practical Software Process Improvement Table 12.7 Effort Tracking Table—Task Level Task
Planned Effort
Actual Effort
Discrepancy
1 2 N
Table 12.8 Effort Tracking Table—Phase Level Phase
Planned Effort
Actual Effort
Discrepancy
1 2 N
Table 12.9 Budget Tracking Table Phase
Planned Cost
Actual Cost
Discrepancy
1 2 N
in your organization. A summarization of this information from several projects will help you to know whether more work is needed to assure efficient tracking or your organization is ready for more detailed project managing and tracking. For an explanation of these tables, please refer to Chapter 4. Software Subcontractor Management/Supplier Agreement Management—Vendor Selection ◆
Are vendors selected according to a documented procedure?
◆
Are RFPs issued? Are bidders conferences held?
Monitoring and Revising the Process
245
Software Subcontractor Management/Supplier Agreement Management—Vendor Management ◆
Does each vendor submit a project plan? Is the vendor required to alter the plan as directed by the prime contractor’s project manager?
◆
Are periodic technical reviews held with the vendor?
◆
Is the vendor required to participate in integration testing?
◆
Are outsourced projects completed on schedule and within +/–10% of budget?
◆
Are quality goals met?
As you consider these questions, review the evidence that has been collected to date. Tables 12.10 and 12.11, described in Chapter 5, will provide a wealth of information in determining the overall status of subcontract selection and management in your organization. A summarization of this information from several projects will help you to know whether more work is needed to assure efficient subcontract selection and management or your organization is ready for more rigorous processes. For an explanation of these tables, please refer to Chapter 5.
Table 12.10 Cost Tracking Table Item
Planned Cost
Actual Cost
Discrepancy
Table 12.11 Deliverables Tracking Table Deliverable 1 2 N
Planned Date
Actual Date
246
Practical Software Process Improvement
SQA/Process and Product Quality Assurance ◆
Is someone assigned SQA responsibility?
◆
Is the person assigned SQA responsibility authorized to escalate noncompliance issues to the project manager or project sponsor?
◆
Are specific SQA tasks described for every project?
As you consider these questions, review the evidence that has been collected to date. Tables 12.12 and 12.13, described in Chapter 6, will provide a wealth of information in determining the overall status of SQA in your organization. A summarization of this information from several projects will help you to know whether more work is needed to assure efficient SQA or your organization is ready for more rigorous SQA processes.
Table 12.12 Cost of Process Efforts Register Item
Time Spent
No. of Times Cost Each Performed Time
Total Cost
1 2 3 4 5 N
Table 12.13 Number of Process Tasks Performed Register Activity
No. of Times Performed
Comments
Comments
Monitoring and Revising the Process
247
For an explanation of these tables, please refer to Chapter 6. SCM/Configuration Management ◆
Is a list of work products to be under version control a part of every project plan?
◆
Is a project repository established for every project?
◆
Is a project librarian assigned?
As you consider these questions, review the evidence that has been collected to date. Table12.14, described in Chapter 7, will provide a wealth of information in determining the overall status of configuration management in your organization. A summarization of this information from several projects will help you to know whether more work is needed to assure efficient configuration management or your organization is ready for a more rigorous SCM process. For an explanation of this table, please refer to Chapter 7. Author’s experience: In a small organization where the author worked, the requirements template was resisted by business and technical personnel. Although definite advantages were indicated after its use on a couple of small projects, it was considered burdensome and a cause for delay. There was a desire to stop using it. The problems: Without documented requirements, problems that plagued the organization in the past would return and the progress that had been made would be lost. Additionally, if this process were abandoned, excuses or reasons for abandoning others would also be found. The solution: The author obtained several other requirements templates from the Internet and asked team members to refer him to any they
Table 12.14 SCM Tracking Table Change Requested 1 2 N
Phase
Accepted
Rejected
248
Practical Software Process Improvement
thought would be workable. A meeting was held to review these other templates; one was selected and tailored. Although the author had to be careful to not allow team members to remove every valuable component of the document in an effort to make it less burdensome, the result was a workable template. Because the team members had tailored the template, and therefore had an investment in it, resistance to its use decreased.
Changing the Process Once you have determined that processes need to be changed, either to adjust them for increased workability early in the process improvement initiative, or later, to enhance the degree of rigor, you need to maintain the involvement of the team. The change control procedures that are used on projects should be used for process change. ◆
Determine the changes that need to be made.
◆
Send an email to all stakeholders describing the proposed change and scheduling a meeting.
◆
Note that “stakeholders” in this context is not as broad as it is for project changes. It consists of team members and, for changes to processes that effect business personnel, representatives from that organization must also be involved. For example, a change to project planning that covers coding milestones would not need the involvement of business. A change to the requirements template, however, would require both business and technical stakeholders.
◆
This meeting will not be an impact analysis meeting, such as is held when a change to requirements is proposed. It will be a meeting to assure that the proposed change will in fact improve the process in the manner intended.
◆
If stakeholders agree to the change, the person responsible for process improvement will make the change on the process document(s) and advise all stakeholders that the change has been made and where to access the revised documents.
◆
If processes have been implemented organizationwide, only a representative from each discipline is required. He should have the authority to approve process changes for his organization. For example, a member of the test team could be designated by the test lead to participate in the process improvement initiative, but he must be empowered to approve recommendations created by the group.
Monitoring and Revising the Process
249
The process of adjusting or changing processes will be performed more than once. After the initial implementation, small changes will be required as stated earlier. Once the processes are well accepted by the team and are in common usage, it will be time to enhance them for greater effectiveness. Once the steps described here have been taken and the newly revised processes introduced, it will be necessary to review them in a lessons learned meeting after they are first implemented, to make the minor adjustments that may be necessary. The process—implement-adjustuse-enhance-implement-adjust-use-enhance—will be repeated until it is the rare exception for a project to go over schedule or budget, or to have major defects discovered after deployment.
Table 12.15 Process Improvement Checklist Item 1
Review process documents with team members prior to initial implementation.
2
Make modifications as suggested.
3
Implement processes on first project.
4
Hold lessons learned meeting on processes after completion of first project.
5
Adjust processes as necessary.
6
Use processes on multiple projects.
7
Gather metrics for each process on each project.
8
Review metrics gathered on multiple projects.
9
Review processes for potential enhancements.
10
Draft enhanced processes.
11
Hold meeting with team members to consider enhancements.
12
Revise enhancements per team suggestions.
13
Implement enhancements on new project.
14
Hold lessons learned meeting on enhanced processes after completion of new project.
15
Repeat from Step 5.
Status
250
Practical Software Process Improvement
12.4 Process Improvement Checklist The checklist in Table 12.15 can be used by the person responsible for process improvement as well as the entire team. This way the team members know what the sequence of steps will be. The templates used in this process are: ◆
Gap analysis template (see Appendix A on the enclosed CD-ROM);
◆
Checklist (see Appendix C on the enclosed CD-ROM).
Reference [1]
A Guide to the Project Management Body of Knowledge, Project Managment Insitute, 1996, Reading, MA, p. 167.
Glossary
Baseline Any work product that has been reviewed and approved by all pertinent stakeholders. A baselined document is considered final, and can only be changed following formal change control procedures. Bidders’ Conference A meeting held by the prime contractor for all interested subcontractors to clarify issues and answer questions pertaining to the Request for Proposal. Capability Maturity Model (CMM) A software methodology that, when implemented, brings evolutionary improvements to a software development organization. Capability Maturity Model Integrated (CMMI) A software methodology that builds on the CMM and expands its scope. Change Control Procedure A formal method of altering any project work product that has been baselined. Charter (Project Charter) scribes a project.
A document that authorizes and briefly de-
Delphi A method of gaining opinions and consensus from a group of people without the bias of group influence. 251
252
Practical Software Process Improvement
Gap Analysis The difference between a current situation and the goal, and the work that must be accomplished to move to that goal. Impact Analysis An evaluation of any changes in terms of budget and schedule that are required due to an unforeseen circumstances (such as a requested change to a baselined work product). ISO (International Standards Organization) dards and related disciplines.
A set of software stan-
Key Process Area process activities.
A category within CMM that defines a related set of
Prime Contractor a project.
The organization seeking to outsource all or part of
Project Manager project.
The team member with overall responsibility for the
Project Plan A group of components that comprises the instructions to accomplish the desired product or service. It includes, at a minimum, a charter, scope statement, schedule and budget estimate. Project Sponsor The person within the organization who has the ability to fund a project, and to authorize resources to perform it. Requirements
A detailed description of the desired product or service.
Request for Proposal (RFP) A document issued by a prime contractor when seeking a subcontractor. Risk Assessment An evaluation of probable events that could impact the project, usually in a negative manner. Scheduler resources.
Any tool that is used to set and adjust project dates and
Scope A brief description of what the product of a project includes and excludes. Software Configuration Management related work products.
Version control of software and
Software Quality Assurance In the context of software process improvement, this refers to process and product worth as measured against a predetermined standard.
Glossary
253
Stakeholder Any person or organization who is effected in any way by a software project. This generally refers to the project sponsor, business and technical team members. Subcontractor An organization that is hired by a prime contractor to perform all or part of a project for the prime contractor. Also referred to as ‘Vendor.’ Template A form that is non-specific to any particular project and contains instructions for use and can be used repeatedly on different projects. Vendor An organization that is hired by a prime contractor to perform all or part of a project for the prime contractor. Also referred to as ‘Subcontractor.’
About the Author
Robert Fantina has extensive experience as a consultant on Process Improvement Initiatives. He has succesfully implemented process improvements at small organizations and Fortune 500 companies. He holds a master’s degree from Rutgers University. Mr. Fantina can be reached at
[email protected].
255
Index
A
B
Appendix A, 5, 11, 14, 24, 29, 45, 47, 68, 76, 84, 91, 110, 118, 230, 250 Appendix B, 5, 18, 20, 24 Appendix C, 5, 20, 24, 40, 114, 157, 213, 250 Appendix D, 5, 24 Appendix E, 5, 34, 39, 46, 58 Appendix F, 5, 36, 46 Appendix G, 5, 56, 98, 102, 104, 105, 118 Appendix I, 5, 21, 61, 103, 123 Assessment, .2, 4, 8-10 Baseline, 15-62, 104-115, 124-138, 143-147, 155-159, 180-208, 218-251 Bidders’ Conference, 73, 85, 86, 218, 232, 239, 244, 251 Budget, 4, 14, 28, 33-48, 51-65, 94-96, 107, 128-135, 147-157, 163-165, 182, 195, 213-249
Business analyst, 10, 14, 17, 20, 30-43, 47, 66, 90-99, 108-110, 124-128, 135-141, 192, 208-230
C Change, 1, 5, 14-24, 40-51, 58-62, 103, 104, 108-162, 180-,213, 220-251 Charter, 28-45, 126, 127, 135, 219, 222, 236, 251 Checklist, 21-23, 41, 43, 61, 62, 84, 86, 103-105, 117, 221, 227, 250 CMM, 2-18, 27-31, 47-50, 65-79, 89, 91-95, 107, 111-113, 122, 149, 184, 213, 230, 231-235, 251 CMMI, 2-18, 27-31, 47-50, 65-79, 89, 91-95, 107, 111-113, 122, 149, 184, 213, 230, 231-235, 251 Cost, 9, 27-45, 55-58, 85, 100-102, 126-128, 138, 144, 182-204, 237, 238, 245, 246
257
258
Practical Software Process Improvement
D Delphi, 36, 251
F Flowchart, 27, 43, 61, 85, 102, 103, 117, 227
G Gap Analysis, 2-15, 24-32, 47-51, 68-77, 84, 91-93, 110-118, 211-215, 230-235, 250, 252
Reviews, 15-24, 34, 35, 44-52, 62, 73-108, 126-144, 155, 161-165, 187-219, 226-249 RFP, 67, 73, 74, 85, 86, 131, 134, 196, 218, 232, 239, 244, 252 Risks, 14, 27-62, 78-89, 111, 126-130, 140, 161-163, 182, 190-193, 202, 238, 240, 252 Schedule, 1, 3, 14-17, 28-62, 96, 97, 107, 126-165, 189-214, 221-224, 235-239, 249
S K KPA, 4-18, 29, 31, 49, 50, 68, 71-79, 91, 95, 109-123, 148, 152-165, 224, 230, 233, 252
M Measurement and Analysis, 6, 9, 21, 41, 59, 82, 100, 224 Milestones, 34-65, 76, 80, 92-105, 126-135, 161-164, 202, 205, 237-248
P Prime Contractor, 67, 73-86, 132, 133, 159, 164, 165, 196, 239, 245, 252 Project Manager, 8-23, 31-58, 66, 67-83, 89-104, 108-164, 174, 182-185, 192-206, 214-225, 233-239, 252 Project Plan, 7, 10, 19, 20, 27-59, 79-113, 122-140, 159-164, 177-204, 213-252
R Requirements, 1-43, 55-61, 91-114, 123-125, 135, 140-147, 153-163, 177, 180-248, 252
SCM, 6-9, 107-126, 137, 154-165, 218-252 Scope, 19, 35, 42, 45, 127, 147, 163, 181-193, 222, 231, 237, 241, 252 SPP, 6, 8, 9, 156-165, 177-183, 201, 202, 241 SPTO, .47-62, 122-128, 154-161, 177-183, 201, 218, 243 SQA, 6-13, 89-103, 124-136, 148, 160-165, 177-183, 190, 193, 195, 201, 203, 215, 252 SSM, 6, 9, 65-86, 123, 131, 154-164, 177-181, 191-196, 218-226, 239-245 Stakeholder, 3-51, 58-62, 71, 82, 93, 97, 114-142, 154, 158, 173-206, 218-223, 242-252 Subcontract, 67-85, 99, 131-134, 159, 164, 165, 184, 185, 197, 214-223, 239, 252
T Test, 3, 10-40, 49-56, 66, 78-99, 108-114, 126, 132, 164, 183, 223
W WBS, 34-42, 59, 96, 127, 132, 155-204, 214, 219, 222, 237-239
Recent Titles in the Artech House Computing Library Achieving Software Quality through Teamwork, Isabel Evans Action Focused Assessment for Software Process Improvement, Tim Kasse Advanced ANSI SQL Data Modeling and Structure Processing, Michael M. David Advanced Database Technology and Design, Mario Piattini and Oscar Díaz, editors Agent-Based Software Development, Michael Luck, Ronald Ashri, and Mark d’Inverno Agile Software Development, Evaluating the Methods for Your Organization, Alan S. Koch Building Reliable Component-Based Software Systems, Ivica Crnkovic and Magnus Larsson, editors Business Process Implementation for IT Professionals and Managers, Robert B. Walford Data Modeling and Design for Today’s Architectures, Angelo Bobak Developing Secure Distributed Systems with CORBA, Ulrich Lang and Rudolf Schreiner Discovering Real Business Requirements for Software Project Success, Robin F. Goldsmith Future Codes: Essays in Advanced Computer Technology and the Law, Curtis E. A. Karnow Global Distributed Applications with Windows® DNA, Enrique Madrona Guide to Standards and Specifications for Designing Web Software, Stan Magee and Leonard L. Tripp
Implementing and Integrating Product Data Management and Software Configuration, Ivica Crnkovic, Ulf Asklund, and Annita Persson Dahlqvist Internet Commerce Development, Craig Standing Knowledge Management Strategy and Technology, Richard F. Bellaver and John M. Lusa, editors Managing Computer Networks: A Case-Based Reasoning Approach, Lundy Lewis Metadata Management for Information Control and Business Success, Guy Tozer Multimedia Database Management Systems, Guojun Lu Open Systems and Standards for Software Product Development, P. A. Dargan Practical Guide to Software Quality Management, Second Edition, John W. Horch Practical Insight into CMMI®, Tim Kasse Practical Software Process Improvement, Robert Fantina A Practitioner’s Guide to Software Test Design, Lee Copeland The Requirements Engineering Handbook, Ralph R. Young Risk-Based E-Business Testing, Paul Gerrard and Neil Thompson Secure Messaging with PGP and S/MIME, Rolf Oppliger Software Configuration Management, Second Edition, Alexis Leon Software Fault Tolerance Techniques and Implementation, Laura L. Pullum Strategic Software Production with Domain-Oriented Reuse, Paolo Predonzani, Giancarlo Succi, and Tullio Vernazza Successful Evolution of Software Systems, Hongji Yang and Martin Ward Systematic Process Improvement Using ISO 9001:2000 and CMMI®, Boris Mutafelija and Harvey Stromberg
Systematic Software Testing, Rick D. Craig and Stefan P. Jaskiel Testing and Quality Assurance for Component-Based Software, Jerry Zeyu Gao, H. -S. Jacob Tsao, and Ye Wu Workflow Modeling: Tools for Process Improvement and Application Development, Alec Sharp and Patrick McDermott
For further information on these and other Artech House titles, including previously considered out-of-print books now available through our In-Print-Forever® (IPF®) program, contact: Artech House
Artech House
685 Canton Street
46 Gillingham Street
Norwood, MA 02062
London SW1V 1AH UK
Phone: 781-769-9750
Phone: +44 (0)20 7596-8750
Fax: 781-769-6334
Fax: +44 (0)20 7630-0166
e-mail:
[email protected]
e-mail:
[email protected]
Find us on the World Wide Web at: www.artechhouse.com