94,99 €
A comprehensive, practical book on software management that dispels real-world issues through relevant case studies Software managers inevitably will meet obstacles while trying to deliver quality products and provide value to customers, often with tight time restrictions. The result: Software War Stories. This book provides readers with practical advice on how to handle the many issues that can arise as a software project unfolds. It utilizes case studies that focus on what can be done to establish and meet reasonable expectations as they occur in government, industrial, and academic settings. The book also offers important discussions on both traditional and agile methods as well as lean development concepts. Software War Stories: * Covers the basics of management as applied to situations ranging from agile projects to large IT projects with infrastructure problems * Includes coverage of topics ranging from planning, estimating, and organizing to risk and opportunity management * Uses twelve case studies to communicate lessons learned by the author in practice * Offers end-of-chapter exercises, sample solutions, and a blog for providing updates and answers to readers' questions Software War Stories: Case Studies in Software Management mentors practitioners, software engineers, students and more, providing relevant situational examples encountered when managing software projects and organizations.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 515
Veröffentlichungsjahr: 2013
Table of Contents
Series page
Title page
Copyright page
Dedication
Foreword
Preface
Opening Remarks
Why Read This Book?
Organization of the Book
Acknowledgments
Errata and Book Support
Chapter 1: Getting Started
Goals and Scope
Understanding the Enterprise
Review of Software Management Fundamentals
Theory versus Practice: Which Is It?
Emphasizing Practitioner Roles
Setting Realistic Expectations
How Do You Know Whether You Will Be Successful?
Recognizing Bad Smells and Trusting Your Blink
Separating the Controllables from the Noncontrollables
Surveying the Tools of the Trade
Line Management Tools and Techniques
Project Management Tools and Techniques
Digging Deep to Find the Root Cause
Questions to Be Answered
Summary of Key Points
Web Pointers
Chapter 2: Industrial Case: Organizing for ERP within a Large Information Technology Shop
Learning Objectives: Putting Project Management to Work
Setting the Stage: The Three-Headed Dragon
Options, Recommendation, and Reactions during the Transition to ERP
Outcomes and Lessons Learned When Introducing Matrix Management
Exercise: If You Were King, What Organizational Changes Would You Make to Breakdown the Silos?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 3: Industrial Case: What Is a Reasonable Cost and Schedule for a Telecommunications Project Upgrade?
Learning Objectives: Establishing Realistic Cost and Schedule Goals
Setting the Stage: Can We Do It for the Target Cost?
Options, Recommendations, and Reactions While Striving to Satisfy Key Clients
Outcomes and Lessons Learned Using Incremental Development
Exercise: How Do You Get Your Bosses to Believe Your Estimates?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 4: Industrial Case: Getting Back on Track Within a Manufacturing Environment
Learning Objectives: Getting Back on Track
Setting the Stage: Recognizing and Addressing the Trouble Signs
Options, Recommendations, and Reactions While Attempting to Restore Order
Outcomes and Lessons Learned Associated with your Get-Well Plan
Exercise: When Trying to Get a Software Project Back on Track, What do You Focus On?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 5: Industrial Case: Staff Turnover Having an Impact in Financial Firm
Learning Objectives: Addressing Staffing Issues
Setting the Stage: Understanding the Learning Curve
Options, Recommendations, and Reactions While Building a Modern Test Organization
Outcomes and Lessons Learned While Addressing Test Issues
Exercise: What Nonfinancial Incentives Would You Use to Reduce Staff Turnover?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 6: Industrial Case: Acquiring Software for Pipeline Operations
Learning Objectives: Developing Requirements Using Multidisciplinary Teams
Setting the Stage: How to Avoid Gold Plating and Other Common Maladies
Options, Recommendations, and Reactions When Specifying Requirements
Outcomes and Lessons Learned Relative to the Use of Feature-Based Specifications
Exercise: When Managing Requirements, What Are the Traps to Watch Out For?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 7: Industrial Case: Launching Software Applications Sales on the Internet and Social Media
Learning Objectives: How Do You Transition a Start-Up from R&D to Doing Business?
Setting the Stage: Capitalizing on the Opportunities
Options, Recommendations, and Reactions as You Get Ready for Your Product Launch
Outcomes and Lessons Learned as Your Product Hits the Street
Exercise: How Do You Satisfy Business and Customer Needs When Selling Software?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 8: Government Case: Managing the Acquisition of a Large Defense Project
Learning Objectives: What to Do When a Contractor Is Behind Schedule, Over Budget, and Performing Badly
Setting the Stage: Who Do We Blame?
Options, Recommendations, and Reactions Resulting from an Independent Assessment
Outcomes and Lessons Learned When the Truth Is Exposed
Exercise: When Addressing Software Cost and Schedule Problems, How Do You Determine Their Root Causes?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 9: Government Case: Too Much Governance/Oversight Hinders Progress in Health Care
Learning Objectives: How to Handle Extreme Governance Requirements Under Pressure
Setting the Stage: Governance and the Competitive Environment
Options, Recommendations, and Reactions Aimed at Validating the Architecture of a New Pharmacy System
Outcomes and Lessons Learned When Dealing with Customer Demands for Change
Exercise: How Much Oversight Is Enough Within a Constrained But Competitive Contractual Environment?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 10: Government Case: New Concepts for Air Traffic Control
Learning Objectives: Making the Transition to Agile Methods
Setting the Stage: Change Management within Conservative Organizations
Options, Recommendations, and Reactions during the Transition to Agile Methods on a Large Project Being Developed Globally
Outcomes and Lessons Learned as You Scale Agile Methods for Use
Exercise: How Do You Mechanize the Agile Notion that Software Requirements Are a Learning Exercise Rather than a Specification Process?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 11: Government Case: Addressing Cyber Crime on the Internet
Learning Objectives: How to Get Help in Covering Unbudgeted Tasks
Setting the Stage: The Quick Update Cycle
Options, Recommendations, and Reactions to Approaches to Handle Frequent Requests to Refresh Network Defenses
Outcomes and Lessons Learned Related to Getting Budget Relief
Exercise: How Do You Quickly Change a Software Product and Keep Customers Happy at the Same Time?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 12: Academic Case: How Best to Educate Those Entering Industry
Learning Objectives: Getting New University Hires Up-to-Speed Quickly
Setting the Stage: What Does Industry Need from Universities?
Options, Recommendations, and Reactions When Recruiting at Universities
Outcomes and Lessons Learned Based On Recruiting Results
Exercise: What Education and Training Do You Provide for New Software Hires?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 13: Academic Case: Research Agendas that Matter to Industry
Learning Objectives: Sponsored Research Agendas
Setting the Stage: Research versus Teaching: A Dilemma?
Fact-Finding
Options, Recommendations, and Reactions Based on Research Discussions
Organization
Project
Process
Product
Recommendations
Outcomes and Lessons Learned Based On University Performance
Exercise: How Do You Stimulate Pursuit of Software Research in Academia that Has a Near Rather than Far-Term Impact?
Summary of Key Points and Lessons Learned
Web Pointers
Chapter 14: Pulling It All Together
Software Management Secrets of Success
Gaining Insight and Advantage in Practice
Ten Management Techniques to Rely On
Ten Problems to Be Wary of When Pursuing Success
Things You Can and Cannot Do in General
If I Were King: My Six Wishes
Summary
Web Pointers
Appendix A: Acronyms and Glossary of Key Terms
Acronyms Used within the Book
Key Terms Used within This Book
Appendix B: Recommended Readings, References, and Resources
Recommended Readings
Other Resources
Appendix C: Sample Solutions
Chapter 2: Industrial Case: Organizing for ERP within a Large Information Technology Shop
Chapter 3: Industrial Case: What Is a Reasonable Cost and Schedule for a Telecommunications Project Upgrade?
Chapter 4: Industrial Case: Getting a Project Back on Track Within a Manufacturing Environment
Chapter 5: Industrial Case: Staff Turnover Having an Impact in Financial Firm
Chapter 6: Industrial Case: Acquiring Software for Pipeline Operations
Chapter 7: Industrial Case: Launching Software Applications Sales on the Internet and Social Media
Chapter 8: Government Case: Managing the Acquisition of a Large Defense Project
Chapter 9: Government Case: Too Much Governance/Oversight Hinders Progress in Health Care
Chapter 10: Government Case: New Concepts for Air Traffic Control
Chapter 11: Government Case: Addressing Cyber Crime on the Internet
Chapter 12: Academic Case: How Best to Educate Those Entering Industry
Chapter 13: Academic Case: Research Agendas that Matter to Industry
Index
Press Operating Committee
Chair
James W. Cortada
IBM Institute for Business Value
Board Members
Mark J. Christensen, Independent Consultant
Richard E. (Dick) Fairley, Founder and Principal Associate, Software Engineering Management Associates (SEMA)
Cecilia Metra, Associate Professor of Electronics, University of Bologna
Linda Shafer, former Director, Software Quality Institute, The University of Texas at Austin
Evan Butterfield, Director of Products and Services
Kate Guillemette, Product Development Editor, CS Press
IEEE Computer Society Publications
The world-renowned IEEE Computer Society produces authoritative, peer-reviewed technical journals, magazines, books, and conference publications, in addition to online courses, certification programs, conferences, and career development services, in areas of computer science and engineering. Please visit http://computer.org for the latest information.
IEEE Computer Society / Wiley Partnership
The IEEE Computer Society and Wiley partnership allows the CS Press authored book program to produce a number of exciting new titles in areas of computer science, computing and networking with a special focus on software engineering. IEEE Computer Society members continue to receive a 15% discount on these titles when purchased through Wiley or at wiley.com/ieeecs.
To submit questions about the program or send proposals please contact Simone Taylor:
Email:[email protected], Telephone: 201-748-8784, John Wiley & Sons, Inc., 111 River Street, MS 8-02, Hoboken, NJ 07030-5774.
Cover Design: Michael Rutkowski
Cover Illustration: © iStockphoto.com/liangpv
Copyright © 2014 by the IEEE Computer Society.
Published by John Wiley & Sons, Inc., Hoboken, New Jersey. All rights reserved.
Published simultaneously in Canada.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning, or otherwise, except as permitted under Section 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, Inc., 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 750-4470, or on the web at www.copyright.com. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions.
Limit of Liability/Disclaimer of Warranty: While the publisher and author have used their best efforts in preparing this book, they make no representations or warranties with respect to the accuracy or completeness of the contents of this book and specifically disclaim any implied warranties of merchantability or fitness for a particular purpose. No warranty may be created or extended by sales representatives or written sales materials. The advice and strategies contained herein may not be suitable for your situation. You should consult with a professional where appropriate. Neither the publisher nor author shall be liable for any loss of profit or any other commercial damages, including but not limited to special, incidental, consequential, or other damages.
For general information on our other products and services or for technical support, please contact our Customer Care Department within the United States at (800) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.
Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic formats. For more information about Wiley products, visit our web site at www.wiley.com.
Library of Congress Cataloging-in-Publication Data is available.
ISBN: 978-1-118-65072-1
This book is dedicated to my wife and best friend Carole.
Foreword
When a software project is successful, every stakeholder is rewarded with an application or system that benefits the organization that requested it. But many things can go wrong throughout the life of a software project. The customer can keep changing requirements, never quite understanding the features and functions that software is supposed to deliver. The team can encounter technical difficulties that create havoc with the project schedule. Or the entire project can be overcome by “management challenges” that encompass everything from people problems, to support issues, to market pressures, to inexperienced or even incompetent leadership. That is why every organization tries to appoint a grizzled veteran as the project manager or team leader. They need someone who has been in the trenches and learned lessons that keep a software project out of trouble.
But what if grizzled veterans are in short supply? What if your team encounters “difficult” customers? What if you have a stable of technically brilliant rookies who have not had enough real-world experience to understand that tech stuff is not the be-all and end-all? What if the person who is going to manage your software project has some experience, but not enough? Don Reifer wrote this book to help those of us who face these questions.
In Software War Stories: Case Studies in Software Management, Don has distilled cogent examples drawn from actual software projects. With each of his case studies, he provides an unvarnished view of the business environment, the management and technical structures that are encountered as work begins, an explicit description of the challenges that are to be encountered, and a clear indication of the questions that need to be asked and answered in order to achieve a successful result. When things go wrong—and they do—Don explains why and how to deal with them. He provides the reader with a roadmap that allows for the extraction of lessons learned, and as a consequence, he broadens the experience base of the reader.
As I read through Software War Stories, I could not help getting the feeling of déjà vu. All of us who have worked in the industry for many years have encountered situations similar to those that Don Reifer describes. In some cases, we have made the mistakes that the soldiers in Don's war stories make, often with unpleasant results. If only I had read this book 20 years ago, I thought. The war stories extracted from business, government, and industry would have made me a better project manager and a better software engineering consultant.
Don has packaged “experience” and placed it in the pages of this book. Take advantage of that—you will be a more effective project manager if you do.
Roger S. Pressman
Preface
This book presents 12 case studies aimed at providing you with insights on how to manage software projects and organizations within industrial, governmental, and academic settings. Each case was selected to address one or more of the 10 most common management problems that have plagued software management practitioners during the past three to four decades. An exercise accompanies each case to help you understand how to put the lessons learned on the case to work on the job. Context information is provided along with feedback on techniques that others have used successfully to address the root causes of the problems. By putting you in a simulated setting, we hope to improve your ability to manage software projects.
During the past four decades, I have been repeatedly asked to help firms get wayward software projects back on track. As part of these efforts, I have been exposed to good, bad, and ugly project experiences. Some jobs have been enjoyable; others have been a nightmare; all have been learning experiences. When I reflect on these projects, the troubles that were experienced seem to stem from common maladies. Most of these issues have plagued software practitioners for at least three decades. If you asked me for the short list, I would narrow the problems down to the following 10 because these seriously impact one's ability to perform:
For most of you, these issues are nothing new. These problems have been around since the days of software pioneers, such as Edsger Dijkstra,1 Fred Brooks,2 and Harlan Mills.3 For the most part, the software industry has developed approaches that we can use to redress most of these issues. Most of these results build on proven principles of management that apply to software and just about any similar pursuit. Unfortunately, we have not effectively communicated these solutions to practitioners who are currently managing software development efforts within industrial, governmental, and academic settings. This is the situation I hope to correct by sharing lessons learned that can help you get back on track whether you are using classical and/or agile methods.
This book was written to help you better manage software projects. Case studies have been around for a long time. Harvard University developed them initially to foster learning by trial and error. When coupled with exercises, they have been proven to be an effective learning tool. This potent combination of cases and exercises puts the student in the driver's seat and has him/her learn by trial and error. By having the student try to steer the car in a controlled environment, they can develop the skills, knowledge, and abilities needed to survive the roadways in the future. I believe that the combination of cases and exercises force the reader to figure out what to do when faced with the many barriers that can influence the outcome of their software endeavors. While some of these obstacles may be outside the reader's control, others can be positively influenced by taking relatively simple actions. For example, providing software workers with proper equipment and tooling can speed up development, so long as the learning curve is tractable and does not impede progress.
I wrote this book primarily for software practitioners, project and team leaders, and engineers who aspire to be or are currently managing software projects or organizations. My primary aim in writing this book is to help those managing, leading, and directing software efforts to understand how to improve their ability to succeed on the job. Case studies allow the reader to accomplish this goal by learning by example under controlled conditions. Success within this context is defined by the ability to deliver acceptable software products on time and within budgets, even when facing adversity.
This is not just another book on software management fundamentals. While it builds on proven management principles and practices, its aim is quite different. Instead of telling you what management techniques exist and how they can be used theoretically, this text uses case studies and exercises to force you to think about which techniques you can employ to cope with the issues that you will face while managing a software development effort. Situations portrayed by the cases are realistic, and for the most part happen repeatedly. In addition, cases were selected to cover common situations that occur in both government and industry.
This book assumes you have a basic understanding of underlying management fundamentals in the context of software development projects. If you are interested in refresher materials, you might consider reading either the most current version of Roger Pressman's Software Engineering: A Practitioner's Approach4 or Steve McConnell's classic text Code Complete: A Practical Handbook of Software Construction.5 For project-management fundamentals, I highly recommend Harold Kerzner's Project Management: A Systems Approach to Planning, Scheduling and Controlling,6 currently in its tenth edition. For agile project management, Ken Schwaber does a great job with Agile Project Management with Scrum.7 Of course, no list would be complete without the following three of my classic texts on related management topics: Software Management,8Making the Software Business Case: Improvement by the Numbers,9 and Software Change Management: Case Studies and Practical Advice.10
Appendix B provides further relevant works that you can consult should you need to refresh your management knowledge. The appendix points out readings, references, and other resources that are available to help you understand the fundamental concepts that you can build on to improve your practice.
This book is organized around 12 case studies, both large and small. As mentioned, they encompass situations that commonly occur in both government and industry. Chapter 1 presents background materials on management theory and context materials for these cases, while Chapter 14 provides a summary of key messages contained within the book. The remaining 12 chapters focus on learning experiences presented in the form of case studies and reinforced via exercises. These cases address small and large organizations, agile and traditional developments, and the industrial, academic, and government sectors. Three appendices are provided to define acronyms and key terms (Appendix A), offer suggested readings (Appendix B), and provide sample solutions for the exercises in each chapter (Appendix C).
While the cases examined are for the most part based on real-world experiences, all of those presented represent fictitious examples developed to represent what many practitioners may face when exercising their managerial responsibilities in practice on the job. While built on my own experiences and the literature, be advised that none of these cases are real. I have exaggerated many of the situations that occurred to embellish the key points raised by the case.
Because the skills, knowledge, and abilities needed to handle complex management problems such as those discussed in the cases may take years to develop, readers are warned that some of the discussions on how to resolve problems may be beyond their capacity to execute. Instead, they will be alerted to the problems and take the appropriate actions necessary to respond to them within an acceptable time period. Whenever possible, I will provide pointers in each chapter to broaden the reader's knowledge of the solution space.
I would like to acknowledge the many thought leaders, people, and organizations that I have worked with over the past few years who helped me formulate the concepts that I share with you in this book. The list is so long that I cannot thank them all by name. However, I would like to acknowledge those who helped me prepare this manuscript.
I would first to thank my peer review team, Mr. Bob Epps of Lockheed Martin Corporation (LMCO), Dr. Ken Nidiffer of the Software Engineering Institute (SEI) at Carnegie Mellon University (CMU), Mr. Dan Strickland of the Missile Defense Agency (MDA), and Ms. Joan Weszka, who recently retired from Lockheed Martin and is now Director of Business Development at Method Park America, who offered helpful feedback after spending many hours reviewing my drafts. So did my long-time friends and colleagues, Dr. Barry Boehm of the University of Southern California (USC) and Dr. Roger Pressman of R.S. Pressman & Associates. In addition, Roger was kind enough to volunteer to write the foreword to this book. I appreciate his efforts.
I would also like to thank my family and especially my wife Carole, who persevered as I wrote this volume. As expected, writing a manuscript like this took many hours. I would rather have spent this time with her doing things that we both enjoy, like travel and exploration. I would also like to thank her for her many suggestions as she proofed the manuscript. As always, she did an excellent job of correcting my English and helping me express my sometimes convoluted thoughts in a simpler and better manner.
I have made every effort to ensure the accuracy of this book and its companion instructor manual's content. Any errors that have been reported since the book was published are listed on my website at www.reifer.com.
If you find an error that is not already listed, you can report it to us through the same page by emailing me at [email protected].
Donald J. Reifer
References
1 Edsgar W. Dijkstra, A Discipline of Programming, Prentice-Hall, 1976.
2 Frederick P. Brooks, The Mythical Man-Month: Essays in Software Engineering, Addison-Wesley, 1975.
3 Richard Linger, Harlan D. Mills, and Bernard I. Witt, Structured Programming: Theory and Practice, Addison-Wesley, 1979.
4 Roger Pressman, Software Engineering, A Practitioner's Approach, 7th ed., McGraw-Hill, 2009.
5 Steve McConnell, Code Complete: A Practical Handbook on Software Construction, 2nd ed., Microsoft Press, 2004.
6 Harold Kerzner, Project Management: A Systems Approach to Planning, Scheduling and Controlling, 10th ed., Wiley, 2009.
7 Ken Schwaber, Agile Project Management with Scrum, Microsoft Press, 2004.
8 Donald J. Reifer, Software Management, 7th ed., IEEE Press, 2007.
9 Donald J. Reifer, Making the Software Business Case: Improvement by the Numbers, Addison-Wesley, 2001.
10 Donald J. Reifer, Software Change Management: Case Studies and Practical Advice, Microsoft Press, 2011.
Chapter 1
Getting Started
Management is doing things right; leadership is doing the right things.
—Peter Drucker
This book is about managing software development efforts. By its very nature, management deals with people. It is a difficult job because you have to rely on others to perform the work. To accomplish the task at hand, you have to motivate your staff to do the right job right the first time. The job involves planning, organizing, staffing, directing, and controlling the delivery of complex software products. It requires leadership and teamwork. It requires discipline and organizational skills, as there is a lot to do and not a lot of time to do it. It requires being able to smell out the problems and address them before they have a chance to harm you. Many times, your destiny is shaped by others within enterprises who sometimes have trouble understanding what resources it takes to generate a quality product on budget and schedule. Other times, it involves working within enterprises where software workforces are underappreciated and viewed with distrust. Under such conditions, it is no wonder that such organizations have had a less than stellar success record.
By reading this book, I hope that you will learn what others have done to succeed in developing software even when the environment that they work in is not totally supportive. It is my contention that secrets of software success are known and can be communicated. Seasoned software managers know how to deliver quality products on time and within budget. Many have done it for years. The reason for software's seemingly high failure rate is that many neophyte managers do not put these secrets to work on the job. Sometimes, they cannot because they are just not in control of the factors that drive the development. For instance, if the schedule is driven by some hard deadline, such as a trade show, there is no way to postpone delivery. You either meet the schedule or have to wait for the next year when the promotional opportunity presents itself again. Other times, the people who are assigned to do the job just do not know what to do, when, and under what circumstances. They do not have the experience and have not developed the skills and knowledge needed to succeed at the job. Lastly, the task is difficult in its own right. Building software to aggressive schedules under severe budget constraints is neither for the weak nor the weary. Vigilance, self-control, initiative, and attention to detail are required to ensure that the software product delivered satisfies all the parameters that govern whether or not the development is viewed as successful.
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
Lesen Sie weiter in der vollständigen Ausgabe!
