Flylib.com

Books Software

 
 
 

- page 39

   

Summary

It's difficult for anyone to argue rationally against the idea of managing and documenting the requirements of a system in order to ensure that we deliver what the customer really wants. However, as we have seen, the data demonstrates that, as an industry, we often do a poor job of doing so. Lack of user input, incomplete requirements and specifications , and changing requirements and specifications are commonly cited problems in projects that failed to meet their objectives. And we know that a significant number of software projects do fail to meet their objectives.

A common attitude among developers and customers alike is, "Even if we're not really sure of the details of what we want, it's better to get started with implementation now, because we're behind schedule and in a hurry. We can pin down the requirements later." But all too often, this well-intentioned approach degenerates into a chaotic development effort, with no one quite sure what the user really wants or what the current system really does. With today's powerful and easy-to-use prototyping tools, there's a perception that if the developers can build a rough approximation of the user's needs in a prototype, the user can point out the features that need to be added, deleted, or modified. This can work, and it is an important aspect of iterative development. But, due in part to the extremely high cost of fixing requirements errors, this process must be within the context of an overall requirements management strategy ” otherwise , chaos results.

How do we know what the system is supposed to do? How do we keep track of the current status of requirements? How do we determine the impact of a change? Issues like these cause requirements management to emerge as both a necessary and a practical software engineering discipline. We have introduced an encompassing philosophy of requirements management and have provided a set of definitions that support these activities.

Since the history of software development ”and the future for at least as far as we can currently envision it ”is one of increasing complexity, we also understand that the software development problem is one that must be addressed by well-structured and well-trained software teams . In the requirements management discipline in particular, every team member will eventually be involved in managing the requirements for the project. These teams must develop the requisite skills to understand the user needs, to manage the scope of the application, and to build systems that meet these user needs. The team must work, as a team , to address the requirements management challenge.

In order to do so, the first step in the requirements management process is to ensure that the developers understand the "problem" the user is trying to solve. We'll cover that topic in the next three chapters as Team Skill 1, Analyzing the Problem.

   
   

Team Skill 1: Analyzing the Problem

graphics/teamskill1.gif

graphics/problem_icon.gif

The last few years have seen an unprecedented increase in the power of the tools and technologies that software developers use to build today's enterprise applications. New languages have increased the level of abstraction and improved the productivity with which we can address and solve user problems. The application of object-oriented methods has produced designs that are more robust and extensible. Tools for version management, requirements management, design and analysis, defect tracking, and automated testing have helped software developers manage the complexity of thousands of requirements and hundreds of thousands of lines of code.

As the productivity of the software development environment has increased, it should now be easier than ever before to develop systems that satisfy real business needs. However, as we have seen, the data demonstrates that we remain challenged in our ability to truly understand and to satisfy these needs. Perhaps there is a simpler explanation for this difficulty that may represent the "problem behind the problem." Development teams spend too little time understanding the real business problems, the needs of the users and other stakeholders, and the nature of the environment in which their applications must thrive . Instead, we developers tend to forge ahead, providing technological solutions based on an inadequate understanding of the problem to be solved .

Development teams tend to forge ahead, providing solutions based on an inadequate understanding of the problem to be solved.

The resulting systems do not fit the needs of the users and stakeholders as well as could have been reasonably expected. The consequences of this mismatch are inadequate economic rewards for the customers and developers of the system, dissatisfied users, and career challenges. It seems obvious, therefore, that an incremental investment in an analysis of the problem will produce handsome rewards downstream. The goals of this team skill are to provide guidelines for problem analysis and to define specific goals for this skill in application development.

In the following chapters, we will explore ways and means of defining just exactly what the problem is. After all, if your team can't define the problem, it's going to be difficult to develop a proper solution.

 

Chapter 5 The Five Steps in Problem Analysis

 

Chapter 6 Business Modeling

 

Chapter 7 Systems Engineering of Software-Intensive Systems