At some point, the game changed. Why? Humphrey [1989] observed that
Humphrey goes on to observe that complexity continues to outpace one's ability to solve these problems intuitively as they appear. For example, we were involved in a requirements project that simultaneously affected approximately 30 products in a broad product family. The requirements being generated influenced, in real time, the software being written by more than 800 programmers at distributed locations. Success required intense coordination of a "team of teams" all working in a common methodology to address the requirements challenge. What's to be done? Clearly, we have to make the "team thing" work and work well. As Boehm [1981] points out in the COCOMO cost estimation model, the capability of the team has the greatest impact on software production.
Davis [1995] supports this conclusion in his discussion of team productivity: "optimizing the productivity of all individuals does not necessarily result in optimizing the productivity of the team." So, it seems logical that we invest some of our resources in making software teams more productive. Requisite Team Skills for Effective Requirements ManagementIn order to help the team, we've organized this book around six team skills that are necessary for a modern software team to successfully address the requirements challenge.
Team Members Have Different SkillsOne of the most interesting things about teams is that individual team members have different skills. After all, that's what makes a team a team. Royce [1998] points out that
In the software team, we hope that some players have proven their ability to work with the customers effectively, that others have software programming abilities , and that others have testing abilities. Still other team players will need design and architecture abilities. Many more skills are required as well. We also expect that the requisite team skills for requirements management will affect various members of the teams in various ways. So, in a sense, we'll hope to further develop every team member's ability to help manage requirements effectively. And we'll try to indicate , where we can, which team members may be best suited to a particular and necessary skill. The Organization of Software TeamsSoftware development is exceedingly complex, and the domains in which we apply our skills vary tremendously. It therefore seems unlikely that one specific way to organize a software team will work in all cases or is inherently more efficient than other approaches. Nonetheless, certain common elements occur in many successful teams. Therefore, we think it's important to establish a hypothetical team construct. But rather than invent an ideal team, which would be too easy and too academic, we decided to pattern our hypothetical team on a real software development team. The team we'll model is based on a real-world software team that has proved effective in two major areas: (1) effective requirements management and (2) delivery on time and on budget. (Of course, we believe that this is an obvious cause-and-effect relationship!) Yet we also admit that many other skills must be present in a team that truly delivers the goods year in and year out. In our case study, the team works for a company called Lumenations, Ltd. that is developing a next -generation "home lighting automation system" for high-end residential use. |