1. Preparations before Requirement Analysis
In the process of software development, demand analysis can be said to be one of the core tasks. Just like a fleet that is about to sail, to reach the directory within a specified time, they need a correct route, if the route is incorrect, they will arrive at the destination by mistake, or they will never be able to get back to the original location. This is an important thing, but it is missing from many teams in China, I did some work, but when the project was completed, I looked back and found that we did a lot of unnecessary things and wasted a lot of time, manpower, and material resources, to reduce the occurrence of these errors in future development, some problems are recorded.
To understand the system requirements, you can start with the summary requirement first, and then refine the requirements. The requirement analysis must develop a document. before writing a document, we must make a good effort to seek the scope of analysis, summary:
1.1 What kind of system should we do?
I don't want to talk about it. Anyone who wants to develop software knows that after this, everything can be expanded. For example, if we want to build a B2C mall, we need to sell maternal and child supplies, we can refer to the B2C websites on the current website for reference, analysis system architecture, and system functions.
1.2 What kind of environment is the system going to do?
One of the systems I experienced last time was to use Asp.net to resend a B2C mall. However, there are some prerequisites that my company used to develop a website using Java + MySQL, however, the new system we developed must be compatible with previous data, such as customer information, product information, and some resource information. It must also be compatible with the address paths included by Google and Baidu, communication with the original ERP and other conditions make our development very limited. These requirements are the same and you cannot change. Therefore, you must consider the design of new systems, it takes time to understand the functions and interfaces of the previous system. If you do not understand it, you can discover that the system is out of the company's original business process after you have developed the new system, making the company unable to operate, it means that the system you developed has no value at all. I think this is not the result we want.
1.3 What problems should we solve?
A developed software system is designed to meet customer needs. A B2C website is used to sell goods. It mainly consists of customers, goods, shopping carts, and orders. These core functions are defined, I think other accidents will not affect the process of the whole system too much.
1.4 future changes
In the face of future development, we may not be able to fully consider it, but with the company's strategic development, we can consider it in advance and think about it as much as we can think about it, we develop a system not only to meet the current needs. If we only focus on it, your system will soon be phased out, and the function may not need to be implemented now, but the interface will always be left behind, otherwise, it would be very difficult to improve the system. If a small requirement is to change the system architecture, I think the system will become increasingly unstable. As a system analyst, this is also crucial.
1.5 What is the period in which the system can maintain the task?
The system cycle is closely related to the company's strategic development. The function of a system cannot meet the market requirements as society changes. When designing a system, let's take a look at the company's strategic development, such as what the company wants to do within three years, the number of customers, and the amount of website hosting, so that we can evaluate the system architecture, you are ready to build a big fat man at the beginning, but now the demand is simple. In actual operation, the speed is slow. In fact, the more complex the architecture is, the slower the system runs, although many large systems run well now, you have to think about what the servers and network architecture are like. You cannot make your system have such a good environment, the cost is too high, and general companies cannot afford it.
1.6 system implementation in several stages
At the initial stage of development, we cannot complete all the functions of the system very well. to speed up the development progress and launch the system as soon as possible, we have to implement it in stages and segments like building a building, if we only want to sell products online, we need to implement customer management, product management, shopping cart, and order management to lay the foundation of a system, everyone wants to turn their systems into the most powerful systems, but this idea is almost impossible. If we have laid the foundation, we can improve it and add bricks and tiles, based on Customer or market needs, I think this system will gradually become a successful system. For B2C websites, the business needs can be fulfilled and the company's processes can be smoothly implemented, that is a good system. There is no best system, but only the most suitable system.
Phased implementation can save costs or speed up implementation. Whether as a company administrator or developer, you can see the results as soon as possible and increase confidence. For example, in addition to customer management, product management, shopping cart, and order management, we also want to add functions such as advertising management, promotion management, CPS, statistics management, user points, virtual coins, gifts, logistics, and interfaces. If the development cycle is only two months and four people, from system design to system launch, how can this problem be solved? How can this problem be completed on schedule? If your team has never been familiar with systems like B2C, it is very difficult to develop them. Under such circumstances, we must implement them in segments, grasp the backbone, and complete the core things, the system can be launched, although not as powerful as it is ideal, but at least it can make money. In another two months, it can improve the main functions of customer management, product management, shopping cart and order management, the company's business can be carried out. Although the following functions are necessary, they can also be implemented in different stages. The system is launched, so that you can see and use them. We suggest more features, this is an endless solution to system optimization and improvement. If you don't have these basic things, someone will call you every day. When have you been online for so long, how did you do it and put a lot of pressure on your team? Even if you have completed the development task within two months, have you passed the test, the more features there are, the more problems there are, and the more maintenance problems at the end of the process. There is no way to restructure it, which is not a loss.
1.7 confirm the first-stage solutions to those problems
In a new environment, a new team, what system do you say you want to complete in a certain period of time, how do you make the Leaders trust you and the company trust you, A bigger software system is a few months old, and a little more is a year and a half. Can they wait? Besides, they don't know the code and won't ask you after your ass every day, what's wrong with the system, even so, I think you have entered the crazy people's court, so we have to take the first shot in the system so that we can get more people's support and understanding. If you cannot understand, let's take a look at the story of "man Mu Yu" in the Shang Xi changfa.
As for what needs to be done in the first stage of software development, we need to understand the core functions of a system. Only after a framework is established, we should not be too eager to seek success. There is no benefit. We should lay the foundation well, it is not difficult to think about packaging.
1.8 members of the system development team
A good team must give full play to the advantages of everyone in the team. In the development team, you are the most valuable person, not your technical skills, I believe that no developer in the development team can support it from start to end. No, no, no, I think it is impossible. Maybe I say some people are not satisfied, in fact, I also have my reasons. A person may have the opportunity to go through every step of the team and be able to go deep, but it is definitely not an opportunity. If there is, it is a person's development, I can't think of a person as a team for development. Sometimes, a person can do anything. If I have another person, I can't do anything. But in the face of big projects, I have to work with my team.
My company, when I went in, I got a project task and I started to feel a little confused, because I had no contact with some jobs, but I had to do it again, however, when I was surprised, there was a project assistant in our team. Her appearance gave our team a good implementation of coordination and management, and planned tasks, which could be well arranged, but tracking management, I can collect allocation, but after specifying people, it is difficult for me to see the progress, because I still have a lot of work, I started to deploy the project management system, collection of requirements and bugs is also designated to people, but feedback is often not timely, because I sometimes go up to see it one day later, and then I handed over the project work to the Project Assistant, let her manage this. I found that she did a good job. She spent only a few minutes checking with me every day. In case of an accident, I solved the problem, her appearance connected me to the work of every developer in the team, so that the project management can be smoothly implemented.
The development team consists of specific members, which are determined based on the company's strength, project progress, and project size. Now we can flexibly allocate several jobs:
Project Manager: locates the decision-making issues of the project. If a function is done or not done, the manager calculates
Constructor: control technical issues, solve technical difficulties, analyze and evaluate assigned tasks, report to the project manager, and then confirm.
Project Assistant: record the content of team meetings and coordinate daily affairs
Development Team lead: allocates development team members, assists group developers, and supervises member work. Generally, the main process is responsible
Developers: write code and complete tasks as needed
Tested by: test the Function
If each project is assigned to an individual, I think it is best to coordinate and manage the development team.
1.9 What is the system runtime environment?
In the system architecture, define the system architecture, program environment, and network environment as needed, such as distributed storage, average daily access volume, system security, and cost budget.
The development cost of Asp.net is lower than that of Java.
The operating cost of SQL Server is lower than that of Oracle, But Oracle is better than SQL Server in terms of large data processing. If it is an SNS site, I think Oracle will be better.
If there is no specific requirement for the environment to be selected, I think it is almost the same if I think it is based on the current situation of the team.
When we have a destination to sail, we need charts, ships, Captain ships, captors, sailors, water, and food. Although we can ensure that we can complete the task by 100%, no one knows about the accidents in the sea, but our ideal is that we can arrive safely. If the conditions are not allowed, even if we know where the destination is, it goes out of the sea, we will face a difficult and risky journey.
2. collection requirements
The collection of requirements is a very tedious process. The collection is not enough and there will be many changes in the development process. Especially after you go to a demo version, there will be no comments from others, when you look at your demo, you will have a lot of comments. I want to see such problems in many projects, so I should first confirm with the customer or relevant departments when collecting requirements, we need to consider requirements from two perspectives: user and developer. Therefore, when talking about requirements, you must chat and remember, record the talk. If you are afraid of omission, you can record it, and then express it in the form of a document. Analyze the proposed requirements and make a technical evaluation, if there are special problems, developers can make technical pre-research in advance. After the evaluation, they need to implement it in segments, make a good plan, and then confirm it with the personnel who raise the requirements, the functions of the requirement document can be written in more detail. Based on the development of the Enterprise, you can consider all the features. In this way, you can give more reference when locating the lifecycle of the system in the system architecture, after the requirements are determined, we need to put the functions to be implemented immediately at the current stage, strengthen, refine, and repeat. When conditions permit, we should make some demos to confirm.
Experiences in Requirement Analysis of Software Development Projects