Address: http://www.kuqin.com/system-analysis/20080424/7472.html
In my opinion, there are two definitions of system analysts: one is defined from the perspective of position: this person is a system analyst of our company; the other is defined from a professional perspective: this person has professional knowledge in system analysis. But no matter from which perspective they are defined, they all have the same feature: they all need to complete the system analysis work.
Over the past few days, I have been reading more than six hundred pages in the soft exam's "system analyst tutorial" and more than two hundred pages in more than pages. Now I feel very complicated. In addition, I had to write something when talking about the design of the software system when I had a meeting with a few former colleagues a few days ago. I hope this article can be shared with Chinese counterparts engaged in software development.
Preface
Unfortunately, I graduated from Sichuan Foreign Language Institute and have never been educated about formal computer courses in universities. All the skills in software design are basically the code of people, and look at those tokens on the Microsoft website. One of the reasons why I chose an English school to read the technical documents of other people was that. After all, from the popular Windows to Unix, most of their technical documents are written in English. As a matter of fact, it is a factor to develop a good system and understand valuable technical materials. A more important factor lies in the analysis and design of the system.
Since I have not received real theoretical education in computer science, I was very careful when I was writing code, for fear that the written program is unreasonable in structure and inefficient in execution. After working for a while, I began to design part of the software system. At that time, I was afraid that the system I designed was not reasonable in structure, so that later development could not be carried out. Therefore, I am constantly thinking about the software design methods and summing up them.
I have always regarded system design and analysis as a sacred task. Although I have heard of such an exam certification long ago, I still did not register for it, I didn't even buy an exam book. The reason is that I think I should first write more code, engage more with engineering practices, accumulate more experience, and then accept the engineering method of system analysis. Now, I have been in this line for five years. I think my experience should allow me to accept the formal system analysis method! Therefore, I want to write down my learning process and some of my previous experiences in system analysis at work. I hope you will criticize and advise me!
What is the first analysis?
In a word, system analysis is "analyzing a software system in its life cycle and environment, each object and itsLink"Remember the relationship. This is the conclusion that I have read books over the past few days and have drawn from my development experience.
A large software system involves many relationships, so it is complicated to do. A small software involves few relationships, so it is easy to do. However, in general, these relationships need to be discovered by system analysts through various means: reading materials and interviewing relevant personnel. If more relationships are discovered by system analysts, the more comprehensive the system design is possible, and the system structure may be more adaptable to future uncertainties.
Here, I have been emphasizing "possibility ". Before I began to think about system design, I felt that as long as I had mastered the correct system analysis method, the system I designed was the most reasonable in terms of structure, the performance is the most stable, and the system is almost perfect. Now it seems that this idea is naive. As an analysis of the relationship, it is directly and closely related to personal experience and values. Therefore, we must treat the profession of system analysts correctly. He is not a god, but a person who minimizes the development risk of the system as much as possible.
Article 2 how to analyze
Not every company has its own specialized system analyst, but every company has its own system analysis work. I think this is what most software companies in China face. We cannot leave the objective existence that requires us to analyze without the existence of system analysts. In the end, we can only put the stone on our own feet.
After reading the "System Analysis tutorial", I have a new understanding of how to perform system analysis. However, the various methods mentioned in it require group support and meeting arrangement, these activities are too high-grade, and the systems we usually do cannot afford to play with them. Is that why we give up system analysis? The answer is no. In my opinion, the scale of a software system is large and the scale of system analysis is also large. The analysis methods of different systems should be different. Below I will write out my analysis methods, I hope you will criticize and advise me.
- After receiving a project, I had a rough number of projects in my mind, and then I opened the development tool and started to work. (This method is very earthy and is contrary to the software engineering method ). However, when the code is written to a certain extent, you must stop and record the development in progress. What is recorded? For example, an important processing process, the name of the form, its function description, and what you thought was useful at the time. Then continue to write the code. In the subsequent development process, when you reply to the code that was written some time ago and cannot understand it immediately, you have to record it immediately. When the software is almost half open, you have a clear overall architecture of the Software. Then, you can analyze the basic modules of the software and review the previous documents, check whether other modules have the functions of the basic modules you have analyzed. If so, you have to adjust the program. After the adjustment is completed, you can continue the subsequent development. If the system achieves this point, it will generally be 90% successful. This method is only suitable for small-sized systems, such as general invoicing systems and small software with a single function.
Later, I named this analysis method as a rock-climbing analysis. As a crawler, what I needed was strength and courage to face the mountains before, and then took the first step, when the climbing is completed, the next nail is fixed, and then the climb continues. Even if you accidentally lose your foot, the front nail is fixed, and it will not fall into the abyss.
Without the support of the system analysis team, this method can reduce the risk of software system development and maintenance to a certain extent.
- When you get a system development task, first sort out the data objects in the development task, and then analyze the relationships between them. Through the Relationship Analysis, you can find hidden data objects; determine the functional framework of the software, draw a data flow diagram and a control flow diagram based on the functional framework, analyze the basic functional framework, create a basic system, and then show it to the "Leader.
The above description shows how to deal with the actual situation. This method combines the easy-to-operate part of Structured Analysis and prototype development.
In many cases, we may receive a relatively large development task, but what we get is a piece of "Demand Analysis", which may be problematic. Because the content written on that page is actually the data in the scope of system analysis, but it contains the function description, data Entity description, data storage description, and so on. What should we do?
At this time, the first thing to do is to pick out the nouns in it and make them into a matrix, mark the nouns that have a relationship, and specify the relationship. In this analysis, we will certainly encounter problems. What we need to do is to record these problems first. It is best not to immediately ask "leaders" about these problems, because they may not know.
Next, based on the "requirement analysis", specify the functional framework of the system, analyze the most basic framework, and start with the most basic framework, the functions of the framework are further decomposed, and then the data flow diagram and control flow diagram are drawn. When the data flow diagram is drawn, the data entity is extracted, to create a basic database (if you need to use a database), of course, this approach is quite different from the method mentioned in the system analyst tutorial, but there is no way to do it, because we haven't even figured out the relationship between objects, where is the logical analysis of rigorous data entity analysis? For the sake of work, we need to stick to the head.
The next step is to develop the system according to the above design, and then ask the leaders to look at the system, so that the leaders can give more comments, saying that the leaders are looking at the opportunity of the program, and take out the questions in hand by the way, how much can the problem be solved? Then, continue to develop and review the problem. The more happy the lead is, the shorter the problem resolution cycle is, and the longer the problem resolution cycle is.
These are my methods. There is no way to do this. You have to continue to do your work and do it well!
Article 3 is it a system analyst or a programmer?
I was going to set the title of this article as "Relationship between system analysts and programmers". After I read the comments from two netizens, I decided to give up the title. One netizen commented, system analysts should disappear because the current prototype development has made system analysts lose value. A netizen commented that he is working in a small company of 70 or 80 people, the necessity for the existence of system analysts is very high, and it is said that if there is no system analyst team, it may lose competitiveness. I think these two ideas are too radical, because they have not considered that system analysts, programmers, and other developers are part of the software company.
As a software company, as an enterprise, all have their own survival rules. Large companies have the active laws of large companies, while small companies have the active laws of small companies. A large company has a large number of people and can receive large projects. Therefore, he must have a dedicated system analyst team to maintain the normal business operations of the company. small companies, generally, the number of projects received is small and the number of people is limited. It is impossible to support a professional system analyst team. I am now working in a small company. After receiving the task, I am dealing with the customer directly, obtaining the required information from the customer directly, and then sorting out the information and analyzing the system structure, then code and test. No one will complete these tasks for me.
Therefore, I think there are two definitions for system analysts: one is defined from the perspective of position: this person is a system analyst of our company; the other is defined from a professional perspective: this person has professional knowledge in system analysis. But no matter from which perspective they are defined, they all have the same feature: they all need to complete the system analysis work.
Analysis itself is a complex activity. Its complexity is not only reflected in the objects it involves, but also involves the methodology of guiding analysis. These are general philosophies. He can also know that we can better carry out activities in other fields. Therefore, it is good for us to study and practice this activity as a programmer.
Therefore, no matter what the environment we are in, big companies or small companies, at least we should be our own system analysts.
At this point, I have finished writing my feelings about the system analyst. This article is just my personal opinion on the system analyst. It has many limitations and I hope you will give me more advice.