Software and demand Lin Xing (Iamlinx@21cn.com) October 2001
In this new column about software engineering, the author will introduce the classic articles in combination with theoretical knowledge, practice cases, excellent tools, and tell the most important process in software engineering - demand process Knowledge in each face. Through reading, you will learn about how demanded knowledge system, demand process capabilities, related software engineering knowledge, how to do demand analysis in practice. Although there are many examples, the article is mainly biased towards the publicity of a thought, an object-oriented thought, a practical thinking.
1.1. From the monkeys, there is such a joke: a pet shop in Silicon Valley, browsing the pet. At this time, I walked into a customer, saying to the owner: "I want to buy a C monkey." The owner nodded, went to the shop of the store, caught a monkey, handed it to the customer: "Total $ 5,000 "Customer pays the payment, then takes away his monkey." The passenger was very surprised, went to the owner and said before: "The monkey is too expensive!" The owner said: "The monkey can use C to program, very fast, the code is compact, so there is so much money." The passenger saw another monkey in the cage, which is worth 10,000 dollars. So asked: "That is more expensive! What can it do?" The owner replied: "Oh, that is a C monkey; it will be programmed for the object, you will use Visual C , you can also understand a little Java, very useful "" The passenger wrapped over and found the third monkey, it exclusively a cage, the price of the neck was $ 50,000. The passenger took a breath and asked: "The monkey adds up more than all other monkeys! What can it do?" The owner said: "We don't know what it can do, but it is a project consultant. "Although this is just a joke, it is certain that it is very important, project management is very important, and the talents of project management are extremely lacking. In countries developed in software industries, how many of you know the importance of software engineering planning. In Taiwan, India, Japan, there is no shortage of software groups who have successfully implemented software projects, and more don't have to say that as a software big country, it has been getting rid of from lower-level software, enters the realm of design and marketing. . Software is first a product (software is a service or product issues, no conclusion), see the development process of manufacturing in the world, will find some interesting phenomena. In this era of this century, the manufacturing industry in Western countries has experienced the process of promoting productivity, improved quality, etc. However, due to the continuous climb of human resources in Western countries, it is increasingly difficult to reduce product costs, so Western countries can inevitably have experienced the process of migration of manufacturing (the result of manufacturing outgoing) has dropped sharply. Trade is frequent, the country that has accepted manufacturing has developed its own manufacturing), while Western countries leaving only marketing and design capabilities, mastering the focus of product production. Similarly, the IT industry is also experiencing this process: the United States outsourced software to Taiwan, hardware. China's hardware is also rising, but the gap between the software industry, China and other countries is too big, and does not say that in the software industry is at the core status operating system, database. Even if the application software, China's software level is also low. When the foreign manufacturing has just moved into China (reform and opening up), China's small entrepreneurs also did not have any management experience and quality awareness. However, with the development of the manufacturing industry and the entry of foreign advanced ideas, China also has born a very excellent global manufacturing giant. China's software industry is now in just a point of management ideas, but there is still no mature point. We have reason to believe that China will also have excellent global software companies in the near future. It is still necessary to consider the problem of reality. Software This product is very strange, and the software company's management thinks is equally strange.
Unlike the various management ideas of the current enterprise, the management ideas of software companies are mainly for the management of the project to ensure the success of the project. 1.2. Items and demand jokes correspond to the project to the project refer to the project management personnel, here to introduce a role concept (the same person can serve as a variety of roles), the usual project management role includes: project manager, project completion , Change control managers, business process analysts, business model designers, demand analysts, demand reviewers, system analysts ... In a successful project, a variety of roles are clear, divided into cooperation, and complete the design implementation of the project. So what is these "monkeys" do it in the project? RUP (Rational Unified Process Rising Process, this article uses numerous RUP ideas) divided a project into 10 core workflows and 4 phases, and in the core workflow as Y-axis, stage Establish a project view for the X-axis (Figure 1). Figure one
This article will introduce the first phase. In the first phase, the demand is heavy, the demand referred to here is not only a workflow of RUP (under business modeling), but is more general concept, including business modeling in RUP workflow. , Demand, partial analysis, test plan, configuration, and change management. 1.3. The demand is that due to the neglect of the project rework caused by the demand process, a large number of items have failed in the demand phase. The following is a typical example example of the demand process:
The developer was buryd from two or three days; the user told the developer I want to develop an XX system, but I am very busy, you first develop a look, the above two attitudes means project Unsuccessful, it should be said that developers and users should be responsible for it. Demand is a process of developers and users interaction, and the no input of any party will lead to the failure of the project. Of course, because users are not professional, developers have the right to tell users to treat the needs of the project. I have talked about the projects developed by their company and finally draw a conclusion. All the most successful projects have an important feature: users are very support. The standard of judgeting a software project is to see if it solves the user's problem, and the user's problem is to reflect the needs of users, and demand is also a success standard for the project. Any inadvertent demand phase may lead to a lot of rework in the software implementation stage, and the demand is not cautious, because you can be careful, because many demand is hidden, even users don't know their needs. At this time, there is a scientific approach to help software organizations implement a demand process. 1.4. The demand is the master of the change. "There is no constant demand, the software in the world has changed more than 3 times, the only owner of the software that only changed twice, it is dead, and die on the way to modify the demand. "What kind of problem is there in many software projects? Earlier ERP companies found that the original ERP system needs to improve when the company developed, but to improve or change the existing ERP system, the only way is to revisit an ERP system. This is a small expenditure for companies. At this point, the backward information system has become an important factor in restricting the development of enterprises. What is the reason for this situation? The main factors are traditional system analysis to be carried out in the case where the demand is constant, which can be configured to the optimal extent. However, in modern instantaneous society, a company is in an old model, which will be in a disadvantage in the competition (so now "componentization" ERP, this is an external number). Since the needs of enterprises change, unstable, the enterprise information system established based on changes in the change is of course unstable. At this time, there is a problem, and we have said before, the demand is the foundation of the project, since the demand is unstable, why is it to establish a stable corporate information system? To answer this question, you must first compare the differences between the process and object-oriented development methods. The traditional process-oriented development method has a road to the top 20 years, and set up the horses of the Chinese enterprises. The reason is called the oriented process, because the development of the focus focuses on the process, developers focus on the process of function as the core, such as many people try to write some universal transfer functions to meet the needs of the bank. Process development languages include: Cobol, Pascal, C, and C deformed languages. Object-oriented concepts are in China in nearly 10 years, and their thoughts have not really spread. Simply put, object-oriented is the world, anything in the world is an object, so it is a natural idea that is very natural, which is in line with our thinking habits. Object-oriented languages include SmallTalk, C , Java, as well as Object Pascal, and C # just born. Demand is unstable, is there any stable thing in the demand? Yes, it is an object. The world is consisting of objects, while the objects are lasting, such as animals, plants have a considerable time. Although objects are also changing, animals, plants are constantly evolving. But the object exists in a quite long period, and the existence time of animals and plants will certainly be longer than any company.
The essence of object-oriented development methods analyzes the stable object of enterprises from the instability demand of enterprises, and organizes demand based on corporate objects, and architecture systems. The system thus derived is much more stable than the traditional system, because once the company's mode changes, it is only necessary to reorganize the stable corporate object. This development method is called OOAD (Object Orient Analysis & Design object-oriented analysis and design), and the analyzed corporate object is called Common Business Object. 1.5. Demand is what is the purpose of the demand workflow in RUP:
Customers and other related people * are reached and consistent in the system's work. Enable system developers to understand system needs more clearly. Define the system boundary (limited). Provide the basis for the technical content of the program iteration. Provide the basis for estimating the cost and time required for development systems. Define the user interface of the system, focusing on the needs and objectives of the user. * Zhou: All people are all people who have affected by the project. Such as customers (or customer representatives), investors, shareholders, production managers, buyers, designers, testers, document writers, etc., from above, we can roughly think about what to do during the demand . In fact, the demand process is to illustrate the demand process, which is to determine what the system is doing and what conditions. Although it is simple, it is not so easy to achieve it. So scientific demand process has a complete set of complete theories, tools, methods to achieve. Just like any company must have a profit, there must be a business and a management process, and the demand process is divided into a demand analysis process and a demand management process. The business's business is a profitability, the demand analysis process is also output in the project; enterprises must guarantee the business to be managed, and the demand analysis process also cannot be separated from demand management. Small businesses have not become the management method of the system. When the company is small, it can be dealt with, but the enterprise is large, all kinds of problems have followed, and the insufficient management directly leads to the inefficiency of business. Similarly, the shortcomings of demand management may cope with small software projects, but for large projects, the insufficient management will expose, and direct consequence is the failure of the project. Instruments out, many people think that the demand management is to control the demand process, this is not wrong, but in RUP's idea, more important thinking is iteration. The purpose of iteration is to develop, in order to evolve, in order to improve. So the software life cycle in RUP is divided into multiple iterative cycles (the software life cycle will be discussed below). * Iteration: Iteration includes all other peripheral elements that generate product issuance (stable, executable product versions) and all other peripheral elements to use. Therefore, in a certain extent, development iteration is a complete process of completely passing all workflows: (at least) requirements workflow, analyzes design workflow, implement workflow, and test workflow. It is essentially similar to a small waterfall project. The main thing for the demand analysis process is nothing more than obtaining the requirements of the system for the system, but the demand is changeable, and you can't tell customers to wait until they fix each to develop software. So things that demand management processes are manageable to ensure demand changes. 1.6. The demand level "Software Needs" all the detailed definitions of the demand level: 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. The User Requirement document describes the task that users must be completed using the product, which is described in the Used Case Document or Script Script (SCENARIO) 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 feature refers to a collection of logical related functional requirements, providing users with processing capabilities and meeting business needs. The relationship between the components of the software demand is shown in the figure: Figure 2
Corresponding to the workflow of RUP, business needs is actually the business model of RUP. In this process, participants are mainly business-process analynts. The main purpose is to evaluate the current business process of the company, and determine what extent to which the extent to which you have to do it (you have to do an ERP project means you must optimize business processes, and the last department level The MIS project is not necessary to use the cattle.). Then you will get something called business vision, in fact, what will be like a successful project, and agree on the scope of the public. The business demand level needs to be put into energy depending on the specific item, while the determination of business needs is limited by the user's demand and functional demand, and business needs are the constitution of the demand process, any demand must not be contrary to it. At the user's needs level (RUP demand workflow), the center of gravity is transferred to how to collect users, that is, the use case of the role and role (here the role and the use case are the concept in UML, we will discuss below), Demand analysis is difficult, because many demand is hidden, it is difficult to get, it is more difficult to ensure complete demand, and demand is variable. In general, in the past, it is more based on demand analysis, but the company's documents are often limited, such as lagging behind the current business, not clear enough, depending on the management level, so The method of obtaining the demand is gradually tend to organize the interview. Functional demand relies on user needs, it can be said that it is a mapping of user needs in the system. The developer thinks from the user to the developer. At this level, making a software prototype for users a very good idea. Until now, the user still doesn't have a real concept. If you give the user a prototype, the user will say, "Oh, my XX system is like this." This avoids the user after the software development is completed. I only see some of the risks brought about by software. Is there a need to use a rapid prototype development method and prototype to develop to what level depends on the specific project, many times, use some informal ways to generate prototypes: If you want to develop a web system, let your beauty do a few The page gives the user, if you make a C / S system, do an interface to the user, it is enough to use it, even you can draw a picture of your future software on the blackboard. User is mostly friendly, don't think about the problem. 1.7. Requirements Standard Discussion Software Demand has a lot of articles, which is not the same for demand, but in mind, it is to ensure the smooth progress of the project. Here I summarize some more general standards, it may not be perfect, but as long as you can guarantee these points, your project is not easy: clear (CLEAR), complete (consistent), test (TESTABLE), there are other concepts, such as tracking, modifications, and more. Clearly: At present, most demand analysis is still natural language (because if you use formal language, and user communication will become a big problem, which means that customers must formal language training before developing software, this Is unrealistic). Natural language is the largest drawback of demand analysis is its second meaning. So we have to make certain restrictions on the language used in demand analysis. For example, try to use a simple expression of the subject action.
To put it bluntly, the description in the demand analysis makes people look like a child just learned, do not use questions, and modify these gorgeous expressions. In addition to the language of language, be careful not to use the boss, it is computer terminology. The most important thing for demand analysis is to communicate with users, but most users are not a computer professionals. If you use it in demand analysis, it will cause user understanding. For a few, if you want to be a bank's credit card system, you can describe the software requirements: the bank's card management credit card, each credit card belongs to an account. Credit card has a card number, balance. A credit card has multiple transaction records. Complete: There is no more thing that has missed a worse demand than the software development is close to completion. The integrity of demand is very important, imagine missing demand and have to rework, this is simply a nightmare. But unfortunately, the omission of demand is very often what happened, not just your problem, but more problems happen to users, they don't know what to do. It is a difficult thing to do with the integrity of demand. It involves all parties to all parties in the demand analysis process, throughout the process, developed from the initial plan to the final demand review. Consistency: Consistency is also a relatively large concept, it is difficult to use a few words. Simply, user needs must match business needs, and functional requirements must be consistent with user needs. Strictly abide by the consistency relationship between different levels, it can ensure that the software system developed will not deviate from the initial achievement. In the implementation process, we must also refine the consistency relationship. For example, user needs cannot exceed the previously specified range. Test: How do you feel that a project test starts? Some people say that start from the completion of the coding. Cleaner is a little bit of coding, while the unit test is simultaneously, and the system test is performed after the encoding is completed. These are not wrong. But actually testing is starting from a demand analysis process. Demand analysis is the input and reference of the test plan. This requires demand analysis to be tested. What is testing? "We have to use new systems to complete report automation", do you think this demand is testable? Of course, what are the reports? What is the standard for automation processing? These have not explained in the needs. Therefore, this requirement cannot be tested, that is, there is no testability. Speaking here, everyone may understand that several criteria for previous needs are tested to ensure demand. This is the fact that only all the needs of the system can be tested, and it is possible to ensure that the software always surrounds the needs of the user, ensuring that the software system is successful. About the author: Lin Xing, Chen Yun Software Studio Project Management Group Senior Project Manager, has many years of project implementation experience. Chen Xun Software Studio is committed to the application of advanced software ideas, software technology applications, main research directions lies in software process ideas, Linux cluster technology, OO technology and software plant models. You can contact him by email IAMLINX@21cn.com.