Software Engineering: Requirements Analysis and Software Design (5)

Requirements engineering is the first step of building a management information system, which is to investigate the current situation and needs of customers, and to record and analyze the needs of customers completely and accurately according to engineering methods and standards. The result is the basis of the follow-up design project.

1. Definition

Requirements engineering refers to collecting, recording and analyzing customers' requirements for informatization by adopting engineering methods and standards, and finally determining the functions that the system needs to realize and the related characteristics and constraints of the functions. Demand engineering includes three main parts: demand investigation, demand analysis and demand management.

Note: About demand management

Requirements management is a very important content in requirements engineering, including requirements tracking, control, change and version management. It is an important means to ensure the content, quality and progress of the system, and the content of requirements management focuses more on software process management.

Step 2: Function

The function of requirements engineering can be summarized in one sentence: collect what customers want to do and finally decide what to do.

For the development of an application software, the quality of requirements engineering results greatly affects the design results of this software, which is the main link to determine success or failure. It is an essential ability for a requirements analyst to obtain, record, analyze and confirm the requirements from customers completely and pass them on to subsequent projects correctly. The requirement specification formed by the results of requirement engineering analysis is not only the basis for subsequent design and development, but also the basis for customer evaluation and acceptance of the system.

On the other hand, the content of requirements engineering also greatly affects the cost, technology, cycle, resources, quality and end-user satisfaction of software development. The result of requirements engineering will not only affect the final result of customers, but also affect the final interests of software developers.

The core work of demand engineering is demand investigation and demand analysis, and finally there are two main deliverables.

1) demand survey results (demand survey data summary)

Through face-to-face investigation, the first-hand demand data collected from the customer site, including the original data recorded in the form of graphics, words, tables, etc., form a demand survey data summary.

2) Requirements analysis results (requirements specifications)

Based on the above survey data, we determine all the contents that need to be developed in the end, and finally form a requirement specification through customer confirmation, which is the basis of the subsequent design and development process.

1. Collection and confirmation of requirements

From customer's unclear original requirements to code development, the part that contributes the most to convergence is requirement engineering, while the part that is easy to standardize and standardize is ③ ~ ⑤. ② Sort out the complicated contents of ① to form a clear demand specification. ③ Further refine the results of ② into the design results of architecture, function and data. ④ Further extract the results of ③ and transform them into components and mechanisms. ⑤ Develop the result of ⑤ into the final software in the form of coding.

As can be seen from the advancement and change of graphics, requirement engineering ② is responsible for sorting out the contents of the original requirement ① and forming a clear and identifiable requirement specification; And ③ ~ ⑤ A series of work, the later part, the simpler and more complicated, and the more convergent the things to be done. (2) Requirements engineering is the forerunner, undertaking the most complicated, chaotic and tiring work, and playing the biggest convergence role in the five steps from initial customer requirements to coding. ② The greater the convergence degree (gradient of trapezoid) of some graphics, the closer the graphics in future design and development are to right-angled rectangles, and the smoother the work. Otherwise, when ② ~ ⑤ are trapezoidal with large gradient, it means that the requirements engineering is not in place, and in the subsequent design and development, problems will be found in the previous requirements, resulting in rework.

Note: About the meaning of "convergence"

Cohesion refers to the process of integrating complex original requirements into standardized operation. The content of standardized work is not affected by requirements, and its content is fixed regardless of whether the requirements are complex or not.

2. Demand, not all from customer research.

Are all the requirements for building an information system obtained from customers? This question reflects how much content in the completed system is put forward by software engineers (including consulting, requirements, design, development, implementation, etc.). ). These proposals usually contain more advanced requirements and more added value, and there are multiple sources of requirements.

1) Basic requirements

The basic demand comes from the "investigation" of customers. This kind of requirements are mainly functional requirements, which are basically designed and developed according to customers' wishes, and most of the contents are determined in the stage of demand investigation and demand analysis.

2) Intermediate demand

Intermediate requirements are not the functional requirements directly put forward by customers, but the requirements generated in the process of transforming, optimizing, filling gaps and upgrading the business requirements put forward by customers in the requirements analysis stage and business design stage, that is, the requirements generated in order to improve the business.

3) Advanced requirements

Advanced requirements mainly come from software engineers according to customers' target requirements, new design concepts and new technologies. In other words, advanced requirements are those designed by software engineers, such as "finding someone to design the process (architecture)", "designing components (functions) according to tasks" and "data reuse (data)". "Design requirements" require software engineers to have sufficient knowledge and ability.

The order of difficulty in obtaining the above three demand sources is advanced demand > intermediate demand > basic demand.

Software engineers should realize that the requirements engineering (investigation and analysis) has been completed, not all the requirements acquisition work has been completed, but the requirements directly put forward by customers have been completed, and the requirements mining through design engineering has not yet begun.

Note: Advanced requirements will affect the development cost. Here, we only consider how to explore valuable requirements, regardless of the development costs brought by new requirements.

Requirements are usually divided into two categories, namely functional requirements and non-functional requirements.

Functional requirements are the business processing functions that the system must provide, and also the main body of software requirements. Usually, when there is no adjective in front of the requirement, it refers to the functional requirement.

The acquired requirements can be divided into three categories, and there is a transformation relationship between them. According to the order of transformation, they can be divided into target requirements, business requirements and functional requirements.

Target demand: the goal, idea, hope and value of informatization put forward by customers.

Business requirements: the system proposed by the customer should correspond to the content, process and rules of the business.

Functional requirements: determine the functions that the system must provide to handle business requirements and the specific description of the functions.

Non-functional requirements refer to the establishment of some index conditions to judge the operation of the system, rather than the specific functional requirements of a business process. They are used to judge whether the running system meets the following conditions: security, reliability, interoperability, robustness, ease of use, maintainability, portability, reusability, expansibility and so on.

The results of pre-sales consultation include many important inputs of demand analysis and business design, especially many "target requirements", which have a very important impact on the overall planning and top-level design of subsequent information systems.

1. Contents of pre-sales consultation

Before entering the design engineering stage, the purpose of all communication and exchange with customers is to obtain requirements. Especially for large-scale projects, there is usually a pre-sales consultation stage before signing the contract. At this stage, general software companies will send experienced consultants (such as expert consultants) to communicate with customers and discuss what solutions can be provided according to customer needs. The negotiation at this stage has the following characteristics.

● The contract has not been signed, and what the specific information system will do has not been determined. Whether the contract can be signed depends on the result of negotiation.

● At this time, most of the participants in the customer side are high-level enterprises, such as operators, senior managers and information directors.

● Customer needs are mostly target needs, business needs and even pain points, and rarely talk about functional requirements.

● The demand will relate to the development strategy of the enterprise, the main existing problems and the company's expectation for informatization.

● The content discussed in communication may be abstract, and the demand is mostly hidden. Whether it can become a real demand requires the guidance, screening and confirmation of consultants. Pre-sales consultation usually talks about relatively high-end requirements, which are the main source of "target requirements" in subsequent demand analysis and the value expectations of enterprise managers for information systems (although they may be put forward in a subtle way). In the subsequent so-called "demand investigation" stage, there may often be no opportunity to directly listen to the needs of enterprise executives, so this part of the content should be recorded as a very important demand and used as an important reference for subsequent demand analysis.

2. Pre-sale consultation and demand engineering

The way of pre-sales consultation depends very much on the personal ability and charm of the consultant, and there is no special specification and standard deliverable and template, so the consultation work is not clearly included in the requirements engineering (different software vendors may have different division methods), and the two have different emphases.

(1) Pre-sales consultation: The key point is to propose solutions through pre-sales consultation activities and assist the sales department to sign contracts.

(2) Requirements Engineering: The key point is to enter the customer site and make a detailed investigation of the confirmed contract contents. Although the main purpose of consultation is to facilitate the signing of the contract, the information collected in the consultation stage is a very important object of requirements engineering analysis, especially the "target requirements".

3. The role of consultants

(1) Consultant represents the highest professional level of software enterprises, and he should be the business card of software manufacturers.

(2) A consultant is a preacher who comprehensively expounds the ideas and viewpoints of software vendors.

(3) The starting point of consultants is high, and the starting point of the whole project is high, and the total value will be high (both for software vendors and customers).

(4) Consultants should be able to use the retained knowledge and experience to act as consultants and staff officers for customer decision makers.

(5) The focus of the consultant's work is to communicate with the decision maker of the customer's project and obtain the customer's goals, expectations and other target needs.

4. Competency requirements of consultants

For an expert consultant engaged in pre-sales consultation, the requirements for him are relatively high, mainly in the following aspects (not limited to this).

1) communication ability The object of communication is the customer's decision-making level, middle-level management personnel such as production and finance, which requires higher ability. For example,

● Understanding: Can you understand the gist and hidden needs of high-level talks?

● Demonstration: Can you fully demonstrate the service capabilities and product capabilities of software companies?

● Persuasion: Can you persuade customers to make corresponding changes in the organization or management system after importing the system? Wait a minute.

2) Professional Ability For a consultant, the requirements for his professional ability are comprehensive.

Have you mastered the basic knowledge of industry consultation?

Are you familiar with the customer's main business and auxiliary business knowledge?

● Basic understanding of the latest technologies, matching cases and solutions in the software industry.

The engineering decomposition of demand engineering is divided into two stages, namely, demand investigation stage and demand analysis stage.

There are two main tasks in the demand investigation stage: demand investigation and data collection.

(1) demand survey: collect customer demand through questionnaires, state diagrams, interview records, existing forms, etc.

(2) Data summary: summarize the data collected during the survey to form a demand survey data summary, which will be used as the analysis basis in the demand analysis stage.

There are two main tasks in the demand analysis stage: demand analysis and data summary.

(1) requirement analysis: analyze the customer's requirements according to the requirement survey data, and finally confirm the functions that the system needs to realize.

(2) Data Summary: Summarize the data of the analysis results to form the requirement specification, which will be used as the input in the subsequent design stage.

1. Demand survey

The main purpose is to collect and record customers' demands for informatization, with the emphasis on "recording" the contents, rather than "analysis" or "design", so as to avoid the need to keep the data "original" (demand templates are used to standardize and format the recorded contents) because the analysis and design incorporate the personal opinions of demand analysts in the demand research stage.

2. Demand analysis

Based on the understanding of demand survey data, it is extracted, classified and sorted. At the same time, according to the analysis, the breakpoints in the study are completed and expressed in a more standardized way. What's important is that demand analysts add personal understanding and valuable opinions on enterprise informatization promotion through the analysis of high-end requirements such as target requirements and business requirements, so the results of demand analysis will be different from the original records. The understanding of the requirements analyst represents the understanding of the software development team and is based on it.

Therefore, the ability of demand analysts will ultimately affect the content, technology, cost and cycle of information systems.

3. The relationship between them

Both of them are described in non-technical design terms, while demand survey is recorded in "customer terms" and demand analysis is expressed in "business design terms". There are differences between the two in the purpose of work, for example, the business flow chart made by demand analysis must have business integrity and conform to the standard expression of business process; The business flow chart collected by demand research may be a fragmented and discontinuous daily account. Demand analysis extracts and classifies the contents of demand entities, and establishes a demand system table; This kind of arrangement is not needed in the demand research stage, but only the original collection and record (the original state should be preserved). The results of demand analysis have two functions: to confirm to the front-end customers and to output the design basis to the back-end; The results of demand research only provide information for demand analysis. The biggest difference between the two is as follows.

(1) Demand survey: The focus is on the collection and recording of original demand.

(2) Demand analysis: it focuses on the overall understanding, collection and confirmation, and demand analysis is not the repetition of demand research.

Influence of data completed in requirements engineering stage on subsequent design stage

(1) Demand survey: collect and sort out the original demand of customers.

(2) Demand analysis: The research data are only for demand analysis and cannot be directly quoted by the design institute (for reference).

(3) Outline design: It is necessary to completely cover the results of demand analysis and give the scheme.

(4) Detailed design: In principle, detailed design is aimed at the results of general design.

(5) Application design: According to the application requirements in requirements analysis, the method of system implementation is given.

(6) Technical design: responding to non-functional requirements and technical requirements in the results of requirements analysis.

(7) and (8) Development-testing: The results of requirements analysis cannot be used as the basis for development and testing (for reference).

(x) System acceptance: The final acceptance of the system by the customer is based on the requirement specifications. ?

Demand research is not carried out according to the order of work or the relationship between research contents, so there is no strict work subdivision. It is divided according to the different forms of demand expression and can be divided into three types.

(1) Graphics class: includes graphics that express the current business situation of customers, and the requirements of interface expression, etc.

(2) Words: the needs expressed in words collected through questionnaires and interview records.

(3) Form category: the actual report and document form requirements provided by customers.

There is no necessary correlation or order between these three types of data, and they can be collected at the same time.

According to the results of demand investigation, non-functional requirements are all functional requirements, which can be divided into target requirements, business requirements and functional requirements according to the definition of functional requirements, and there is a conversion relationship between target requirements → business requirements → functional requirements. Strictly speaking, they are not three types of requirements, but three levels of requirements, and finally they can only be realized in the system if they become the functional requirements of the third layer. The work breakdown in the analysis stage is determined in the following order.

(1) The first level of work: analysis of target requirements, and conversion to business requirements.

(2) The second level of work: business requirements analysis, converted into functional requirements.

(3) The third level work: analysis and determination of functional requirements.

Establish the corresponding demand system. Without this demand system, we can solve customers' problems with personal experience. With this system, we can use collective experience and wisdom to solve customers' problems. The demand system here mainly refers to the establishment of "business requirements".

Establishing a demand system can bring a lot of value. Let's give a few examples.

1. System knowledge accumulation

(1) The achievements of research and practice can be accumulated in an orderly manner, including ideas, methods, standards and norms.

(2) Customer value accumulation, including: different business areas, industries, sectors, systems, modules, functions, etc.

2. The need of commercial scale

(1) Enhancing the enterprise value of software can provide systematic solutions for customers.

(2) Refine, plan and establish new business models, and quickly respond to customer needs.

3. Reduce costs and improve efficiency

(1) The accumulated knowledge can be effectively reused and enjoyed, and the cost can be reduced.

(2) It can greatly shorten the development cycle and help reduce the phenomenon of "demand distortion".

4. Main measures to avoid risks

(1) The best way to avoid risks is to let everyone know what to do in advance, which can be done with the support of the system.

(2) People's ability is insufficient, and the investigation and analysis time is short, which can be solved by knowledge base.

As a demand analyst, the shortcut to quickly cultivate talents is to have many abilities, such as "business ability", "communication ability", "abstract ability" and "expression ability", but this is too abstract and difficult to understand, and it is not built in one day. Establishing a knowledge base that can provide direct reference and enjoyment for most people can make people in need "follow in an orderly way". It is like a "business platform" for everyone to provide experience and share knowledge, which is jointly maintained by everyone.

Requirements engineering can be said to be the basic knowledge of everyone engaged in the software industry. Because its core content is:

(1) How to communicate with others, how to quickly understand others' ideas, how to convey ideas to others, etc.

(2) How to quickly find the breakthrough point for a complex and unfamiliar research object?

(3) How to express an unclear object with simple language, figures or tables?

(4) How to translate the requirements expressed in customer terms (knowledge and experience) into business design terms? Wait a minute.

? The demand quantity and added value of management information system depend on the informatization purpose of customers and the ability of demand analysts. The position of demand analyst is usually sandwiched between the front "consultant" and the back "business designer". When the software enterprise has these two positions or the project is equipped with these two positions, the influence of the requirements analyst's own ability on the project can be controlled to a certain extent. If there are no other two positions in the software enterprise or these two positions are not configured in this project, then the demand analyst determines the highest level of this project (the highest level of enterprise management projects is usually determined by business designers), so he must master some knowledge of consulting and business design.

Requirement engineering takes design input as the requirement standard.

Requirements engineering is not only a "knowledge", but also a "technology" that can be implemented qualitatively and quantitatively. It has templates, processes and standards. More importantly, it has a strict inheritance relationship with the subsequent design. Because the scope, content and format of design are the output standards of requirements engineering, the content of requirements engineering is very specific and standardized, and it can be regarded as "technical" requirements engineering. The establishment of engineering standards based on design input can improve design quality, product quality and work efficiency.