Chapter 1 Basic Software Demand
"Hey, is it p hil? I am M ARIA of the Ministry of Human Resources, we encounter a problem when using the staff system you have written, and a staff wants to change her name to Sparkle Starlight, and the system is not allowed, you can Help? "
"Her married a person name STARLIGHT?" P h i l asked.
"No, she didn't marry, but only to change her name," M a R I a answered. "It's this problem, as if we can only change your name when marital status changes."
"Of course, I never thought who would not change my name inexplicably. I don't remember that you have told me that the system needs to handle such a thing, this is why you can only change your name in changing the Marriage Status dialog. The dialog. "Phil said.
M ARIA said: "I think you certainly know that everyone can change his (her) at any time. But no matter what, we hope to solve this problem before next Friday, otherwise, S Parkle will not pay her. Billing. Can you modify this error before you? "
"This is not my fault! I never know that you need to deal with this situation. I am busy doing a new performance detection system, and also dealing with some of the needs of the employee system" (passing the paper sound). "I have another thing. I can only revise it before the end of the month, I can't do it within a week, I am sorry. If there is a similar situation, please tell me and write them down."
"Then how do I say to S P a r k L e?" M a r i a asked, "If she can't pay the bill, then she can only happen."
"M aria, you have to understand, this is not my fault." P hil insisted on, "If you tell me, you have to change someone's name, so you can't happen. I didn't guess your ideas (demand) blamed me. "
M a r i a has to be angry: "Okay, ok, this annoying thing I hate computer system. Waiting for you to modify it, call me, do it?"
If you have a similar experience as a customer, you must know how troubled by a software product that can't make a basic operation. Although developers will eventually meet your requirements, you will not thank him. However, from the developer's perspective, after the entire system has been completed, the user will then propose how annoying the further requirements of the function. At the same time, the request to modify the system forced you to put down the current project, and often modify the request also requires you to give priority, it is very unpleasant.
In fact, many problems encountered in software development are due to collection, writing, negotiation, and modifying the procedures and practices in the process of product demand (methods). For example, the above P HIL and M Aria, the problem occurs involves the collection, undetermined or unclear functions of informal information, unfastened or unidentified hypothetical, imperfect demand documents, and the demand change of burst process.
For most people, if you want to build a $ 2 million house, he will definitely discuss various details with the builders, they understand that the changes in the completion will result in losses, and the harmfulness of the details. However, involving software development, people have become "big". The problems in the software projects are assessed in the "disaster root" (L e Ffingwell 1997) buried in the demand analysis stage. Many organizations still use some non-standard methods in those basic projects, which leads to a gap (expectation difference) - The software developed with the software wants to have a huge expectation difference. In software engineering, all risk bearers (S t a k e h o L D e r) are interested in the demand analysis phase. These risk bearers include customers, users, business, or demand analysts (responsible for collecting customer needs and writing documents, and those responsible for contact between customers and development organizations), developers, testers, user document edies, project management And customer manager. If this part of the work is handled, it can develop a very good product, and the customer will be satisfied, and the developers are also satisfied, enrichment. If the processing is not good, it will lead to misunderstand, setbacks, obstacles, and threats in potential quality and business value. Because the demand analysis has laid the foundation of software engineering and project management, all risk bearers are best to use the effective demand analysis process provided by this book.
This chapter will help you: • Some key nouns used in the development of software requirements development. • Be alert to some problems associated with demand in software projects. • Knowing the excellent demand specifications should have the characteristics. • Understand the difference between demand development and demand management.
1.1 Definition of software requirements
One problem in the software industry is to lack unified noun terms to describe our work. The "demand" defined by the customer seems to be a higher level of product concept. The "demand" said by developers is designed to be detailed. In fact, software requirements include multiple hierarchies, different levels of demand reflects detail from different angles and varying degrees.
I e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e E E E E - defined demand in: (1) Users solve problems or achieve the conditions required for the target (C A P A B i L i t y). (2) Systems or system components must meet the conditions or power required for contracts, standards, specifications, or other formal premises. (3) A document description reflecting the conditions or power described above (1) or (2).
1.1.1 Some explanations about "demand"
The definition of I E E E is included in the user's angle (external behavior of the system), as well as from the developer's angle (some internal characteristics).
The key issue is to write a demand document. I have witnessed a project to replace all developers in the middle of the project, and customers were forced to sit together with new demand analysts. The analyst said: "We want to talk to you about your needs." The first reaction of the customer is: "I have already told you my request for your predecessor, now I want to give me a system." In fact, demand has not been written as a document, so new analysts have to start with their heads. So if there is only one pile of mail, the stamping, talks about several times or some fragmentary dialogue, you are sure that you have understood the needs of users, it is entirely self-deception.
Another definition is considered that the demand is "Description of the user needs to trigger a program or system development (Jones 1994). Demand Analysis Expert Alan Davis (1 9 9 3) Expand this concept: "" From the system outside the system 2, the first part of the software requirements: Yes, why do you have the characteristics, function and attributes of the user. These definitions emphasize what products are, but not the product is designed and constructed. The following definitions from the user needs further transferred to the system characteristic (S o m m e r v i l l eand Sawyer 1997): What are the requirements are specified ⋯⋯ specifications must implement. It describes the behavior, characteristics, or attributes of the system, which is constrained in the system during development.
From these different forms of definitions, it is not difficult to find: There is no clear, there is no "demand" terminology, and the real "demand" is actually in people's minds. The need for any document (for example: requirements specification) is only a model, a narrative (Lawrence 98). We need to ensure that all project risk bearers have a consensus on the understanding of those terms of the description.
1.1.2 level of demand
The following definitions are defined in common terms in the field of demand engineering.
Software requirements include three different levels - business needs, user needs and functional requirements - also include non-functional requirements. Business Requirement reflects the organization or customer's high-level target requirements for system, product, which will be explained in project views and scope documents. User Requirement document describes the task that users must be completed using the product, which is described in the User Case Document or Subject (S C E N A R I O) description. Functional Requirement defines the software features that developers must implement, so that users can complete their tasks to meet business needs. The so-called characteristic (F e a t U r e) refers to a collection of logical related functional needs, providing users with processing power and meeting business needs. The relationship between the components of the software demand is shown in Figure 1 - 1.
The functional requirements described in the Software Requirements Specification, S R s are fully describe the external behavior of the software system. Software demand specifications have played an important role in development, testing, quality assurance, project management, and related project functions. For a complex product, software function requirements may be just a subset of system requirements, because others may belong to software components.
As a supplement to functional requirements, the software demand specification should also include non-functional requirements, which describes the operation of the system to demonstrate the behavior and execution of the user. It includes products that must be complied with standards, specifications and contracts; specific details of external interfaces; performance requirements; design or implementation constraints and quality properties. The so-called constraint refers to the restrictions on the design and construct of developers in software product products. Quality attributes are described in the characteristics of the product through a variety of angles to reflect the product function. Multi-angle description products are extremely important to users and developers.
The following is a different type of demand as an example. Business needs may be: "Users can effectively correct the spelling errors in the document", which may indicate that this is a spell inspector that meets business needs. The corresponding user needs may be "to find the spelling error in the document and to select the word for misplaced" by a list of replacement items. " At the same time, there are many functional requirements, such as finding and highlighting the operation of the wrong word; showing the dialog box for replacement words and replacement of the entire document range.
Managers or market analysts will determine the business needs of software, which makes the company's operation more efficient (for information systems) or strong market competitiveness (for commercial software products). All user needs must be consistent with business needs. User needs enable demand analysts to summarize functional needs to meet users' requirements for their tasks, while developers designs software based on functional needs to implement must function. From the above definitions, you can find that demand does not include design details, implement details, project plan information, or test information. Demand is not related to these, it is concerned about what you want to develop. The project also has other needs, such as developing environmental needs or issuing products and transplants to support the environment. Although these demands are also critical to the success of the project, they are not discussed by this book.
1.2 Each project has a demand
Frederick Brooks fully illustrates important roles of demand process in software projects in his 1 9 87-year-old article "NO Silver Bullet: Essence and Accident Ofsoftware Engineering":
The most difficult part of the development of software systems is to accurately explain what is developed. The most difficult conceptual work is to prepare detailed technical needs, including all interfaces facing users, facing machines and other software systems. At the same time, once this is wrong, it will eventually bring great damage to the system, and it is also extremely difficult to modify it.
Each software product is to make its users can improve their lives in some way, so spending that they need a high-level investment that makes the project success. This is obvious for commercial end user applications, corporate information systems and software as part of a large system. But for our developers, there is no written demand document, how do we know when the item ends? And if we don't know what is important for customers, how can we make customers satisfied?
However, even if it is not necessary for software requirements for commercial purposes. For example, software libraries, components, and tools are software used inside the development team. Of course, you may don't need a document description to make it more agreeable with other people's opinions, but more common is to repeat the inevitable consequences of rework, and the cost of reconstructing code is far more than rewriting a demand document.
Recently, I have encountered a development team development including a computer-aided software engineering tool, including flowchart tools and source editing editors. Unfortunately, after they develop this tool, find that this tool cannot print out the source code file, and the user of course hopes to have this feature. Result This group had to hand-copy source code documentation for code check. This shows that the demand is clear and the idea is accurate. If we don't write a document, the software does not meet the expectation goals can only be taken.
On the contrary, I have written a page for a simple email interface to integrate into the Business Error Tracking System. And the U N i x system administrator finds a simple demand list when writing scripts to handle the email, is so useful. When you test the system based on demand, this system not only has all necessary functions very clearly, but no errors are found.
1.3 What is the need for a good demand for unqualified groups
Project teams do not pay attention to the demand process will be self-sufficient. The defects in the demand project will bring great risks to the project. The "success" here refers to the product of the products that can fully meet the user's expectations in a reasonable price, time limit.
Some demand risks will be discussed below. Chapter 5 will introduce how to apply software risk management to prevent the emergence of risks related to demand.
Some risks arising from inappropriate demand processes • Users not lead to unacceptable. • The increase in user needs has led over to expense and reduces the quality of the product. • Available Two Demand Instructions Instructions may result in waste and rework. • Users add some unnecessary features and developers to draw their advent (G O L D - P L A Ti N g). • Over-excessive demand descriptions are missing some key needs. • Ignore the needs of a certain user will lead to dissatisfaction with many customers. • Impermptive demand instructions make project planning and tracking unable to perform accurate. No sufficient user participation
Customers often do not understand why collecting demand and ensuring that demand quality costs so much effort, developers may not pay attention to users' participation. The reason: First, because the cooperation with users is not as meaningful to write code; the second is because developers feel that they have understood users' needs. In some cases, it is difficult for users who actually use the product, and customers don't quite understand their true needs. But it should still be used to participate in the development team in the early stage of the project and experience the entire development process.
2. User needs continue to increase
If the demand is constantly supplemented in the development, the project is getting larger than its plan and budget. The plan is not always consistent with the scale and complexity, risks, development and productivity and demand changes, making problems more difficult to resolve. In fact, the root source is that the changes in user needs and the modifications made by developers' new needs.
To control the range of demand changes to minimal, you must give a clear description of the project view, scope, target, constraint restrictions, and success standards at the beginning, and this will be described as a reference frame for evaluation requirements and new features. The description includes a change control process for changing factors analysis of each change, which helps all risk bearers understand the rationality of business decisions, that is, why do certain changes, the time, resources, or characteristics of resources. in.
The continued change in product development will make its overall structure is increasing, and the patch code also makes it difficult for the entire program to understand and maintain. Insert patch code makes modules to violate strong cohesive, loosely coupled design principles, especially if the project configuration management is not perfect, recoverable changes and deletion features will bring problems. If you distinguish these possibilities that these may bring changes, you can develop a more robust structure and better adapt to it. This requirement such that the design phase needs will not directly lead to patch code, and it is also conducive to reduce the decline due to changes due to changes. 3. Ambiguous two demand
Ambiator two but the most terrible problem in demand specifications (Lawrence 1996). Its meaning means that many readers have different understandings for demand instructions; another layer of meaning is that the single reader can use more than one way to explain a request.
The ambiguous demand will cause different risk assumes to produce different expectations, which will have a waste of time for the developer and make the tester to expect inconsistent with the developer. A system tester has told me that she has often understood the needs of demand, so that many test cases have to be rewritten.
The two demands bring inevitable consequences to rework - do something that you think that you are doing well. Retreat will cost the total cost of 4 0%, while 70% to 85% of the redo is caused by the demand for errors (L E FF I N G W E L1 9 9). Imagine what if you can reduce half of the returning party? You can develop products faster, develop more, better products in the same time, and even occasionally go home to rest.
One way to be ambiguous is to organize teams responsible for reviewing demand from different perspectives. Just simply browsing the demand documentation cannot solve the ambiguous two problem. If different reviewers are explained from different perspectives, each reviewer really understands the demand document, so the second meaning will not be discovered until the project is then discovered, then discovered, then discovered, make correction costs Big. Other detection ambient two demanded techniques are introduced by GAUSE and WE I N B E RG (1 9 8 9), and there is also a rear of this chapter.
4. Unnecessary features "Drawing Snake Add" refers to the new features that developers try to increase some "user appreciation" but does not involve the demand specification. Regular situation is that users do not think that these functions are useful, so that they work hard to "white".
Developers should be able to conform to customers and provide them with some ideas for innovative consciousness. What functions provide to provide balance between the customer's needs and developers in the allowable time limit, developers should strive to make functions Simple and easy, don't leave customers from customer requirements without the consent of our customers, self-propositions.
Similarly, customers may sometimes require some of the functions that look "cool", but lack practical value, and implement these functions can only spend time and cost. In order to minimize the dangers of "draw snakes", you should be confident that you understand why these features, as well as these features, such as the Dragon Dram, which makes the demand analysis process always pays attention to core functions that enable users to complete their business tasks.
5. Too streamlined specifications
Sometimes, customers don't understand that demand analysis has such an important, so only a simple specification, only involving the content of the product concept, and then let the developers are improved in the project progress, and the results are likely to appear. The developer first established the structure of the product to complete the requirements. This method may be suitable for cutting-edge research or demand itself is very flexible (McConnell 1996). But in most cases, this will bring setbacks to developers (allowing them to work under incorrect assumptions and extremely limited guidance), will bring troubles to customers (they can't get the products they want) .
6. Ignore the user classification
Most products use different characteristics from different people, and the use of frequent use is different, and the user is not the same as the level of education and the level of experience. If you can't classify all of these major users early in the project, you will inevitably cause the user to be disappointed with the product. For example, menu-driven operations are too low to advanced users, but meaningful commands and shortcuts will make unskilled users difficult.
7. Incompebitious plan
"The above is my opinion of my new product, ok, now you can tell me when you can do it?" Many developers encountered this problem. Lack of understanding of demand analysis can lead to excessive optimistic estimates, and when inevitable overrun, it will bring more troubles. According to reports, there is a main reason for the software cost estimate in the process of demand, mainly the following five points: frequent demand changes, missing demand, and demand specifications and imperfect demand analysis with insufficient communication, quality low quality (Davis 1995) ).
The correct response of the problem mentioned for inaccurate requirements is "When I truly understand your needs, I will tell you". It is easy for unsuitable information and unspeakable estimates for immature demand. To make an estimate, it is best to give a range (such as the best case, very likely, worst case) or a trusted extent (I have 9 0% grasp, I can be in 8 weeks carry out). Unti-prepared estimate is usually given as a speculation, but the listener thinks that it is a commitment. So we have to try our best to achieve achievable goals and insist on completing it.
1.4 The benefits of high quality demand process
Organizations for implementing effective demand engineering can get multi-faceted benefits. The biggest benefit is greatly reduced in the development of the development and the overall maintenance phase. B o E H m (1 9 8 1) It is found that the demand for the demand discovered after the product is applied to the application is more than 6 8 times more cost than correcting this error in the demand phase. Recent studies have shown that this error can cause cost-amplification factors to be up to 2,0,000. Emphasizing the quality of demand does not attract some people's attention. They mistakenly think how much time consumption will lead to product development. Traditional quality cost angle analysis reveals the importance of demand and other early quality work (Wiegers 1996a). The correct demand process emphasizes the work of work in product development, including the active efforts of many risk bearers throughout the project. Collection needs can make the development team better understand the market, and market factors are a key factor in any project. Due to the development of product development, these ratios are aware of the customer's criticism. Let users actively participate in the demand collection process to make the product more attractive, and can have faithful customer relationships. By understanding the user's task requirements, it is not limited to some "gorgeous" characteristics, you can avoid all energy consuming in useless, and users can compensate for the "gap between users" and developers (expective differences) ).
The demand of the selected system is explicitly assigned to each software subsystem, emphasizing system methods using product engineering. This simplifies the integration of hardware software, and ensures that the hardware and software system function matches appropriate. Effective change control and influence analysis processes can also reduce the negative impact of demand changes. Finally, it will be clearly prepared, and the unsteady document will greatly facilitate system testing to ensure product quality to satisfy all risks.
1.5 Excellent demand features
How to distinguish between good demand specifications and problem specifications for problems? The characteristics of a single demand statement statement will be discussed below (Davis 1993; IEEE 1998). Let the risk bearers conduct serious review from different angles to S R s requirements, which can determine which needs are indeed. As long as you are writing and reviewing demand, you will write better (although not very perfect) demand document, it will also develop better products. In Chapter 9, we will use these characteristics to find some problems in demand and improve them.
1.5.1 Characteristics of Demand Instructions
1. Each requirement must clear the functional description of the required implementation to enable developers to get all the necessary information required for design and implementing these features.
2. The correctness of each requirement must accurately state its function to develop. References to make the correct judgment are the source of demand, such as user or high-level system requirements specifications. If the software requirements are in contrast to the corresponding system demand, it is incorporated. Only the user represents to determine the correctness of the user's needs, this is the reason for the active participation of users. The need for users will have such statements: "Those who are meaningless, these are probably what they want." In fact, this is exactly the reviewers to guess.
3. Feasibility Each requirement must be implemented within the known system and environment and the limits. In order to avoid unpasquility needs, it is best to have a member of a software engineering team in the process of acquiring the demand (collecting requirements), working with people who need to analyze or consider the market, by him responsible for inspecting technical feasibility. .
4. Each requirement of the necessity should record the criteria required by the customer's truly needed and the final system. "Necessity" can also be understood as "root" that each requirement is used to authorize you to write documents. To enable each requirement to retroactive into a customer's input, such as using instances or other sources.
5. Assign a priority to each requirement, feature, or using an instance to indicate the components that it occupied in a particular product. If all the needs are as important as it is equally important, the project manager will lose control freedom in developing or saving budget or scheduling. Chapter 1 3 will discuss how to divide priority in more detail.
6. None of the readers who do not have a clear unified explanation, because the natural language is extremely easy to lead to erliness, so we try to express each demand with a simple and clear user's language. Avoiding an erliness method comprises forming a regular review, writing test cases, development prototypes, and design specific scheme scripts for demand documents. 7. Authentication checking whether each requirement can be implemented by design test cases or other verification methods, such as demonstration, detection, etc. to determine if the product is implemented as required. If the demand cannot be verified, it is determined whether it is the subjective precaution, not an objective analysis. An implicit needed for a conflict before and after, unpredictable needs.
1.5.2 Characteristics of requirements specifications
1. Integrity cannot miss any necessary demand information. I miss the demand will be difficult to find. Focus on the user's tasks instead of the system's functionality will help you avoid incompleteness. If you know a missing information, use T B D ("to be determined" as a standard identification to indicate this lack. Before starting development, you must solve all T b D items in the demand.
2. Consistency consistency refers to non-contradictions with other software requirements or high-rise (system, business) demand. You must solve the inconsistency between all requirements before development. Only a survey study can only know if a requirement is indeed correct.
3. Changeable modification should revise S R s RS when necessary or when maintaining a history of each requirement. This requires every need to be independently marked and distinguishes out of other needs, so that there is no meaning. Each requirement should only appear once in S R s. This is easy to maintain consistency when changing. In addition, using the directory table, index, and mutual reference list method will make the software requirements specifications are easier to modify.
4. Trackability should be able to establish a link chain between each software requirement with its root and design elements, source code, and test cases. This trackability requires that each requirement is structural and granular. (Fine - grained) is written and monitored separately, not the narrative of the large segment. Chapter 1 8 will detail the traceability of requirements.
1.6 The confusion of the named terraces in the development and management requirements of the demand will result in inconsistencies to the subject (specification, D i S C I P L I n). Some authors refer to the entire demand range as a "demand project", and others call "Demand Management". I think it is more appropriate to divide the entire software demand engineering research in demand development (the second part of this book) and demand management (the third part of this book) is more appropriate, as shown in Figure 1 - 2:
Figure 1-2 Schematic diagram of level decomposition of demand engineering domain
Demand development can be further divided into: Issue acquisition (E L i c i t a t i o n), analysis (a n a l y s), write specifications (S P E C I c a t i o N) and verify (V E R I f i c a t i o N) four stages (Thayer and Dorfman 1997). These subtries include all activities such as demand, evaluation, and writing documents in software products. Demand development activities include the following aspects: • Determine the user class desired by the product. • Get the needs of each user class. • Understand the actual user tasks and objectives and the business needs supported by these tasks. • Analyze information from users to distinguish user task requirements, functional requirements, business rules, quality properties, suggestions, and additional information. • Divide the needs of the system level into several subsystems and assign a part of the demand to the software component. • Understand the importance of relevant quality properties. • Discuss the division of implementation priority. • Write the collected user requirements into specifications and models. • Review demand specifications, ensuring common understanding and understanding of user needs, and clarifying problems before the entire development team accepts instructions.
Demand management needs to "establish and maintain contracts reached with customers in software engineering" (CMU / SEI 1995). This contract is included in the written demand specifications and models. The customer's acceptance is only half of the success of demand, and developers must also be able to accept them and truly apply demand to the product. The usual demand management activities include: • Define the demand baseline (the main body of quickly developing the demand document). • The requirements of the review proposed, evaluating the possible impact of each change to determine if it is implemented. • Integrate demand changes into your project in a controlled manner. • Make the current project plan consistent with demand. • Estimate the impact of change requirements and negotiate new commitments on this basis (agreed). • Let each requirement can be associated with its corresponding design, source code, and test cases to implement tracking. • Track the demand status and its changes during the entire project. From another angle, the difference between demand development and demand management can be seen from another angle: Figure 1-3 Demand Development and Demand Management
Next: • Record questions you encountered in the current project or previous project. Indicates that each problem is a demand development problem or demand management issues, and the impact of these issues and its root causes. • Discuss the needs of current or previous projects with your team members and other risk assumers (customers, market surveys, project managers), and the root causes of their roots and their impact. Indicate all participants, if you want to solve these difficulties, you must face it, do you have prepared it for this? • Subscribe to software requirements for the entire project personnel, and personnel should include important customers, market staff and managers. Training is an effective team study and cooperation. Everyone will reach the terminology and technical consensus in training, which is conducive to communication and cooperation with each other.