Recently, I have organized training materials within the department. I hope to improve the analysis and design capabilities of the entire team through training and project practices. I also want to summarize some of my knowledge.
When talking about software development, the key factor for a project's success or failure is the human factor. People are everything, or almost everything. The quality and organization and management of project personnel are more important than other tools or technical methods for project success. The quality of the Team directly determines the project's success and failure. The communication and collaboration skills of the team are particularly important. An efficient team must be a team with strong communication skills. The software project we are engaged in, in fact, it is not about developing new technologies, but about using others' research results. It is just about the application of the results. To put it bluntly, there is no "pure" technical content. Here we just put a quotation mark on it, today is an era of knowledge explosion. The Internet is highly developed. You can find relevant information whenever you have time. Therefore, the development of software projects focuses more on the social nature, rather than the scientific nature. Software development is a complex activity. The famous "no silver bullet" has introduced that complexity is the fundamental attribute of software development, in the short term, no tools or methods will increase the software productivity by an order of magnitude. It is a complex pure-thinking activity, and tens of thousands of software projects are being carried out in the world, but none of them are exactly the same. There can be hundreds of implementations for the same function. One function may be implemented using one class, or five or ten classes. But why are there five classes instead of three, there are no advantages or disadvantages of stereotypes. Only by mastering appropriate methods, summarizing previous experiences, researching good or classic designs, and applying them in projects can we gradually improve our capabilities.
The problems we encountered in our previous projects are mostly in terms of requirements. If we did not master a good requirement method, most of our programs are process-oriented, that is, structural analysis methods, or use object-oriented tools to perform process-oriented activities. This is directly related to the personnel level. In terms of requirements, how can we mine deep-seated requirements? Is it true that the statement is used? How can we confirm the positive nature of the requirement for certification? There are a series of problems. There is actually a solution. System analysts need to understand or even be proficient in the user's business field and become business experts, but this is often not the case. How can we verify the requirements? In fact, the user's goal is sometimes not too clear to the user. The system analyst needs to guide the user through some methods and help the user gradually clarify the goal together with the designer, this is an iterative process. It is not done after the requirement stage is completed by signing the requirement specification. We can frequently involve users in feedback through prototypes and products of different iteration cycles, emphasizing user feedback and rewriting. Reduce critical risks in the early stages and finally provide the system that the user wants.
As we all know, the structured analysis method is fast and efficient when processing some systems that are not too complex, but it is difficult to handle complicated businesses, this will cause a lot of trouble in subsequent maintenance. This involves the problem of system analysis methods. process-oriented and object-oriented are not good or bad, but they are suitable or not. To see where you are used, they are essentially methods we know the world. These technologies are important, but what is process-oriented? What Is Object-Oriented? What is the difference between the two? It's not too early today. We will discuss it again next time.
To be continued