There is no demand, there is no software Jinzhi (reprinted from the computer world) (reproduced from Software Engineering Expert Network www.21cmm.com) The demand project is undoubtedly a key issue in current software engineering, from a survey initiated by the United States in 1995. It is enough to see this. In this survey, they track the 8,000 software projects across the country, and the results show that there is no completion of the 1/3 project, and in the completed 2/3 project, there are 1/2 The project was not implemented successfully. After careful analysis of the causes of failure, they found that the reasons related to the demand process accounted for 45%, and the lack of end users' participation and incomplete demand were two primary reasons, each accounting for 13% and 12%. The demand project is one of the most complex processes in software engineering, and its complexity comes from objective and subjective. From an objective sense, the problems faced by the demand project are almost unwanted. Due to the extensive application of the application, it is undoubtedly closely related to the characteristics of the various application industries. Its objective difficulty is also reflected in non-functional demand and its complex relationship with functional demand, the current lack of non-functional demand analysis modeling technology has increased the complexity of demand projects. In terms of subjective sense, demand projects need squares to participate (such as domain experts, field users, system investors, system analysts, demand analysts, etc.), all aspects have different eye points and different knowledge background, The difficulty of communication has increased human difficulty to the implementation of demand projects. Initially, demand projects are only an integral part of software engineering, which is the first stage of the software life cycle. Although everyone also knows the importance of demand projects on the entire life cycle, it is far from the study of other parts of software engineering. In the traditional software engineering life cycle, the stage of demand is called demand analysis. In general, the role of demand analysis is: ● System engineer illustrates the functionality and performance of the software, specifies the interface of software and other system components, and defines the constraints that software must meet; ● Software engineer refine software configuration, establish data model, Function model and behavior model; ● Provide software designers to provide models available to data design, architecture design, interface design, and process design; ● Provide developer and customer demand specifications for the basis for evaluating software quality. However, from the current research status, the content of the demand project is far more than one. The demand engineering is a cross-branch of system engineering and software engineering, involving the goals of the software system, software systems, software systems constraints and environmental operations. It also involves the relationship between these factors and the exact specifications of the system and system evolution. It also provides a bridge between reality needs and software capabilities. Basic activities of demand projects include: ● Extractive requirements; ● Simulation and analysis requirements; ● Pass demand; ● Recognize demand; Each activity has its basic motivation, tasks, and results, and also have their own difficulties. First, starting a project is because it is necessary to transform the current system. To transform a system is because there is a problem that the current system needs to be resolved. Such as: The current system does not meet the current situation, there is a new business opportunity or may save time, funds and resources, etc., this is the motivation to extract the demand. At this stage, the task of demand engineers is to understand the problem, get enough knowledge, and finally become an expert in the field of problems. Demand engineers often use W6H methods to understand the problem area, that is, 6 problems with W head, a problem with H head, as shown in Table 1.
Demand extraction is very difficult, and its main reasons are: ● Lack of domain knowledge, the problem in the field is often blurred, inaccurate; ● There is a default knowledge, which is difficult to describe daily knowledge (common sense issues); ● There are more A knowledge source, and there may be conflicts between multi-knowledge sources; Methods of demand extracts generally have problems, interviews, data acquisition methods, conditions, scenarios, and objective-based methods, as well as knowledge engineering methods, such as: web analysis, card classification, classified table technology and Model-based knowledge acquisition, etc. The second phase of the demand project is analog and analyzing demand, and there are many jobs to do with this. The starting point of demand analysis and simulation is: ● Guidance extraction; ● Help demand engineers understand progress; ● Help discover problems; ● Help check the problem. Demand analysis and simulation also contain three levels of work. The first is a demand modeling. The performance of the demand model has three natural languages, semicircularization (as shown, table, structured English, etc.) and formal representation. The natural language form has a feature of strong expression, but it is not conducive to the semantics of the model, generally only for demand extraction or marking model. Semi-shape representation can capture structures and certain semantics or implement a certain reasoning and consistency check. Formalization indicates precise semantics and reasoning capabilities, but to construct a complete form of model, take longer and deep understanding of the problem. Requirements for demand concepts include: ● Independence of implementation: not analog data representation and internal organization, etc., ● Better abstraction: only to extract the essential aspect of the problem; ● Surface: Syntax is unsteran Semantics; ● Conformability: Simple model blocks can cope with different complex levels and scale; ● Adopting to support secondary, incompleteness, and inconsistent analysis; ● Trackability: support horizontal cross index And can be associated with design or implementation; ● Executability: can dynamically simulate, facilitate comparison with realism; ● Minimal: No redundancy concept. Demand simulation technology is divided into enterprise simulation, functional demand simulation and non-functional demand simulation. Enterprise simulation is a soft system approach involving the entire organization, from different viewpoint analysis issues, including objectives, organizational structures, activities, processes, etc. Some enterprise simulations also establish an executable domain model. It is not only a specific specification, but also a lot of analysis of the operation of the enterprise. Current representative work includes: information simulation, organizational simulation, and target simulation. Functional demand simulation provides services from different viewpoints as analog software, including structural viewpoints and behavioral viewpoints, and the main methods are: structured analysis, object-oriented analysis, and formal methods. Structured analysis is a data-oriented approach to data streams. Its core concept includes: processes, data streams, data storage, external entities, data groups, and data elements. Representative simulation tools are: data flow chart, data dictionary, original process specification. Object-oriented analysis with objects and its services as modeling standards, which are natural, and objects also have relatively stability. The elements of the main simulation include: objects, classes, attributes, relationships, methods, messaging, USE Cases, etc. Its main principles include classification inheritance, information hidden, collection relationships, etc. The formal method is broadly, which is a means of applying discrete mathematics to design, simulates and analyzes, which is accurate as a mathematical formula. In a narrow sense, it is the use of a formal language in the form of a language formula for checking the syntax and proves certain attributes.