Requirements, requirements engineering and requirements engineers — 6. Requirements for design capabilities

In the software industry, the term "design" is both familiar and unfamiliar. In theory, everyone knows that design needs to be done before software development, but it is necessary to specify what design is, the content, methods, deliverables, standards, and who will be responsible for the design. When designing, but it is not clear (except for some large software companies). Most software companies do not have a "designer" position or even set up a design link. Especially in small and medium-sized software companies, it is a common phenomenon that the completion of the demand survey is directly handed over to the programmer. Generally speaking, the business architecture diagram and interface prototyping of such software companies are all done by requirements engineers. In view of this, here is a brief introduction to the abilities that requirements engineers need to engage in the "design role".

Insert picture description here
Figure 1 Location of design work

The content of the design work can be divided into two parts
□Non-technical part: includes two parts: business design and application design (requires engineers to master, the focus of this article)
□Technical part: technical design (development engineers must master, not involved in this article)

The third chapter introduces the requirements for the design ability of the demand engineer

How to judge whether the demand engineer has done the "design position" work? Strictly speaking, the development engineer (programmer) should carry out coding development in accordance with the design specification. If your software company does not have a "designer position" between the requirements engineer and the development engineer, then the development engineer must be coding and development based on the [requirement specification] compiled by the requirements engineer. At this time, you can judge: the requirements engineer While investigating and analyzing requirements, we also did design work including business design, application design, etc. (technical design is done by development engineers who understand technology).

1. Design Purpose

The purpose of the design work is to refine the results of the previous requirements analysis into specific architecture graphics, functional interface prototypes, data relationship diagrams, and explanatory texts supporting development in accordance with the requirements of software implementation.
All system-related people (customers, consulting/requirements, programmers, testing, implementation, etc.) can accurately understand the future system before the software development is completed through this design data. According to this design data, you can know:
□The system has What function, operating mode, and the effect of changes brought to the client's work, etc.
□Technical route, implementation plan, test cases, etc. of the system realization
□Required coding resources, schedule, delivery content, etc.
Design work is the process of figuring out how to do the system.

2. Design role

1) The role of design work

The role of design work can be divided into several aspects to understand.

(1) The business design
determines the "availability" of the product, and the business design correctly indicates that the system is available. Business design refers to the actual work of the customer to determine the specific business logic, data logic, business functions, etc., such as the design content of the reimbursement module: reimbursement process (business logic), reimbursement data source (data logic), reimbursement operation interface (business function) ). The correctness of the design result is directly related to whether the system is available, so the correct business design is the basis for system construction.

(2) Application design
determines the "ease of use" of the product, and the application design correctly shows that the system is easy to use. Application design focuses on whether the system design is humanized and whether it can improve work efficiency for customers. For example: designing the system from "people looking for things" to "things looking for people", this design brings customers the optimization of the working environment , Greatly improve work efficiency, reduce human work errors, and let the system automatically provide services to users.

(3) The customer value of customer value
software mainly comes from the results of business design and application design. The former determines the level of business value (business optimization, improvement, and benefit enhancement brought by the system), and the latter determines the application value (system The changes in working methods and the improvement of work efficiency brought about by them), especially the results of application design, greatly affect the customer’s satisfaction with the system.

(4) Risk reduction The
more detailed and specific design work is done, through repeated "design deduction", rework after development can be avoided, which is a very important purpose of design work.
By the way, due to the widespread lack of emphasis on "design work" in the software industry, a large number of frequent rework after the completion of the software is a common phenomenon, one of the important reasons is the lack of design (or lack of excellent design), before development No one knows what the completed system will look like (lack of business verification, application verification). Once the trial is completed, customers will put forward many requests for modification, and the system has to be modified or even overturned.

2) The role of requirements engineer

In software companies that do not have a designer position, the requirements engineer actually acts as a "designer". Regardless of the industry or the product being made, the designer is the key to the success of the product. The level of the designer is directly related to the level of the product and ultimately determines the value of the product. The role of the requirements engineer in design is summarized as follows (not limited to this):
□ Collect and confirm all the required materials and requirements in the previous consulting and research roles. The following is to combine the required materials with the software technical requirements by referring to the requirements of the design role. , Give the design drawing (design data) of the future system.
□Design work is the key to determining the product, and engineers are required to judge the correctness, feasibility, and rationality of the design.
□The design role has the right to decide during the system development process, including system style, specifications, and standards (both business and application aspects). In principle, technical designers and programmers cannot change the design without permission.
□ Strictly speaking, programmers do not code and develop according to requirements, but according to design materials; similarly, test engineers also write use cases and tests based on design materials.
□The requirements put forward by the customer are carried out in accordance with the requirements of the software, so that the requirements can be converted into the functions of the software system.
■It can be said that the work results of demand engineers are the key to software development content, customer satisfaction, and software value.

Note: About the similarities and differences between design and architecture,
"Design" is a big concept. Design includes "architecture". Architecture work belongs to the initial stage of the whole process of design. The main content of architecture is to conduct coarse-grained design such as "planning and outline". The focus is on the overall planning of the system, and formulating the design concept, framework, main lines, principles, standards, etc. of the system. Generally speaking, when it comes to design, it includes not only the overall architecture of the system, but also the detailed design (as small as the placement of a "field" on the interface). Therefore, the scope of the work of "designer" is broader, and the work of "architect" generally refers to the preliminary work of the design phase.

3. Design Ability

After clarifying the purpose and function of the design, let's talk about the ability requirements of the demand engineer at this stage. The requirements for the design ability of the requirements engineer are related to the delivery content between him and the subsequent technical engineers. As a design role, the requirements engineer must be able to accurately give the functional requirements and standards of the system in both business and application aspects. Let's talk about it from two aspects: necessary ability and professional knowledge.

1) Required ability

For the position of "designer", the requirements for the ability of the demanding engineer are relatively high. The ability he needs to master is relatively comprehensive. It is not a simple single ability of seeing, listening, and speaking, but a comprehensive ability that combines thinking ability and practical ability. , Here are a few items for reference (not limited to this):

(1) Planning ability: The ability to
observe and understand problems from the perspective of the customer’s leadership, to understand customer needs as a whole (the requirements put forward by the three levels of operation, management and execution), and to be able to take into account: the new system and other existing The relationship of the system in space, the relationship between the content of the new system today and the expansion of tomorrow in time.

(2) Modeling ability It is
necessary to be able to analyze, extract, and find rules from the perspective of the system, and then establish the most concise business processing model. If the model is well established, the system has a reasonable structure, strong reusability, easy implementation, and strong adaptability to requirements.

(3) Drawing ability
There is no doubt that the important form of design deliverables is graphics (business architecture diagrams, data relationship diagrams, interface prototype diagrams, etc.). Basically, you can judge the level of the designer by looking at the graphics. In other words: how many design results can be correctly expressed in a graphic manner is a very important criterion for ability judgment.

(4) Logic ability
is indispensable for all roles in the first stage of software engineering (consulting, research and design), and the logic ability for design positions should not only be reflected in the thinking level, but also more important. It is to express the result of thinking with correct graphics, and the logic in the graphics must be clear.

2) Professional knowledge

The role of requirements engineer as a "designer", the professional knowledge required in the design stage mainly refers to software design. Including:
(1) Summary design knowledge: Top-level design of the system based on the previous [Requirements Specification], including overall planning, design concepts, business lines, technical routes, principles, and corresponding rules and standards.
(2) Detailed design knowledge (business): According to the [summary design specification], carry out detailed business design on the content of the architecture layer, function layer and data layer, such as business modeling, business prototype determination, field definition, dictionary/ Kanban/form design etc.
(3) Detailed design knowledge (application): According to the [summary design specification], carry out detailed application design on the content of the architecture layer, function layer and data layer, such as system prototype, process mechanism, login, portal, permissions, and Design related to system ease of use.
(4) Detailed design knowledge (technology): not within the scope of requirements for the ability of the demanding engineer (omitted).
(5) Use case design knowledge: Is the previous design reasonable, correct, and meets customer needs? Here you need to design use cases, including business use cases (check the content of the business design part), application use cases (check the content of the application design part).
(6) Technical realization knowledge: Although the requirement engineer is not required to be able to code, it is better to be able to master certain system composition, system development, system testing and other related common sense (the more the better), the easier it is to have this knowledge Judge the rationality between customer needs and software implementation.
■Ability comes from the repeated application, summary and accumulation of learned knowledge in practice.

4. Design results

The design results include all the above design materials
(1) Outline design specifications.
(2) Detailed design (business) specifications and business use cases.
(3) Application design (application) specifications and application use cases.

■Design summary

Compared with the work content of consulting and research, the design work requirements may be more difficult and require more knowledge. However, in small-scale software companies or small-scale software projects, most of them do not have specific designers, so It is particularly important that the requirement engineer has a certain design ability.

■Summary of demand engineer's ability

So far, the introduction of the requirements of the requirements engineers is complete. From the above introduction, it can be seen that a perfect system development requires a large number of excellent programmers, but also requires a lot of excellent requirements engineers, and no requirement engineers complete the above work correctly. (Consultation, research, design), no matter how high the technical level of the programmer is, it is impossible to get an excellent product. The collaboration of the two is a necessary condition for the completion of the system, and there is no judgment as to which one is the primary one and which is the secondary one.
It can be seen from Figure 1 that the front of the demand engineer is the position of the consultant, and the back is the position of the designer. No matter which direction you work hard in, there will be a higher position waiting for the demand engineer. The research ability of demand engineer is the basic requirement of consulting ability and design ability.
If you are working in a small software company or a small project, then you must have the abilities required by the above-mentioned "consultants, requirements engineers, and software designers".
Which role are you in? Do you intend to become an all-rounder?

■For software design, please refer to Li Hongjun's "How to Draw Logic Diagram", "Interface Design Method" and other series of blog posts.

This concludes this series. For the detailed design method introduction, please refer to the book "Dahua Software Engineering—Requirements Analysis and Software Design".

Insert picture description here

Guess you like

Origin blog.csdn.net/lihognjun/article/details/114983289