I want to talk to everyone talk about what we do in software engineering: system analysis. I hope our China
Code people can learn more and practical experience in compliance with our actual situation, developer
Method, steps, and documentation. System analysis, I personally think it should be a document that can reflect the soul of the system. This article
What should I do, what I mean, I want to discuss it here with everyone. I think the system analysis book
There should be the following content (depending on the project):
1. System Demand Description Description System What is a system, with an existing system in the market,
What kind of system needs to be required to use the customer (or we own) to explain it. And the development of the system
Scalability is described (no system now is OK). Explain what is the same as the existing system?
Different, explain what the development of the future system and the ability to remarkable value can be foreseen.
2. System Resources Description The software and hardware resources required by the system are described. Describe the required system
All TCO costs. Including personnel, time, equipment, system, one-time investment, sustainable investment
All resources.
3. Systematic feasibility analysis analysis of resources in the implementation of the system, illustrating the rationality of inputting and inevitably
Sex, for all the unpredictability of the inner seeability, the feasibility of the implementation of the system
.
The top three documents that should appear in the system analytical manual I think, I don't know what I have,
Please enlighten me.
As a job in the development, it should also include: overall design and detailed design.
The key issue that must be answered at this stage: Summary, how should I solve this problem?
First, several possible solutions should be considered. For example, some of the main functions of the target system are calculated
The machine is automatically completed or used for manual; if you use a computer, then use batch processing or human machine interaction
Formula; Information Store Use Traditional File System or Database ...
Usually at least a few possible scenarios should be considered:
Low cost solution
The system can only complete the most necessary work and do not do more work.
Sino-cost solution
Such systems can not only complete the predetermined tasks well, it is very convenient to use, and may also have
There are no specific specified features and features of the specific specified. Although the user does not propose these specific requirements, the system is divided
The lifelong is determined according to its own knowledge and experience, which will prove to be valuable in practice.
High-cost "10th Beauty" system
Such systems have all functions and features that users may want. System analyst should use system flow
Figure or other tools describe each possible system, estimate the cost and benefits of each program, should also be fully committed
Based on the pros and cons of various programs, recommend a better system (best solution), and develop realization
Recommended system detailed plan. If the user accepts the system recommended by the analyst, you can do this stage.
Another main work.
The above work identifies the problem of solving the problem and which procedures are needed, but how to design these programs
?
A basic principle of structural design is that the program should modular, that is, a large program should be moderately moderate.
The module is tissue in a reasonable hierarchy. The second main task of the overall design phase is the design software
Structure, it is to determine which modules consists of the program and the relationship between modules. Usually use a level map or structural diagram depiction
The structure of the pieces.
detailed design
The overall design phase proposes a solution to the problem in a comparative abstract summary. The task of the detailed design phase is
Confirmizing the solution, that is, answering the following key issues: "How should I realize this system specifically?"
Stage tasks are not written programs, but a detailed specification description of the program. This specification
It is very similar to engineers using engineers in other engineers, and they should include the necessary details, and programmers can write actual program code according to them. Usually use HIPO map (level graph plus input / processing / output map)
Or PDL Language (Process Design Language) Description Detailed Design.
I think the idea of the document system is a process that slowly accumulates, such as JJX comrades say, there are too many
The formal Dongdong, it is not a systematic analysis / design book that the programmer truly needs, for the design of the system
There is too much change and change in the final code and acceptance, we are survive in an extremely irregular system.
So we can't have too many choices, you can only copy things. So to discuss a true suitable as everyone
Our document mode, this mode or template can reduce the burden for our code, bring more kinetic energy
:)
For the current development idea, application environment and programming methods, traditional demand analysis - system analysis - Summary design - Details
Fine design - ... is getting closer, because:
1. The current application is not the same before. The current application is a huge integration, including cross-platform, network,
Database, etc., and the emergence of new technologies is getting faster and faster, anyone is unable to master all technologies. simple
Single example: There are now platforms such as Windows, UNIX, Linux, SQL Server, Oracle, Sybase, etc.
There are Tools such as C , VB, Delphi, who can be fine? If you can't, how can I determine that Windows SQL S?
ERVER DELPHI is good or Unix Oracle C is appropriate?
2, customers have no needs. I have made big customers such as banks, telecommunications and various small customers, they have no other words "I want
Be an OA system, "I want to be a business network", "I want to be a ...". Can they not determine what to do
Because few users are doing projects because of the needs of the business; and they don't know what to achieve
(Because they don't understand Notes, I don't understand the enterprise network).
3, changes in demand and environment. Since the customer has no substantial needs in front of the project development, add software developers
Not familiar with the business, leading to the continuous change in demand during development, will lead to analytical and design
Waste.
4, the objective tools and procedural procedures now develop tools are very object, and our development procedures
It is very process. That is to say, although the modularity, hierarchy, you can also change the environment, you still
To constantly modify and modify it.
The actual situation above shows that we really need to modify the practical practice. If a project has achieved 80%
Time to really clarify what this system is like, I think it is the failure of the designer. So in the design phase
But you should do a variety of documents and arguments for traditional practices, and you should do some specific design work. For example,
The specific design of the overall operation design and system function modules. And these design should have a detailed design
English book. When these instructions are completed, they should be able to do: Just find a programmer, he can only look at a function module.
The design manual can start the development of the code without rethinking how to do it, the programmer is here
Really just a designer's implementation tool. Of course, it is also like some brothers, the current system is getting more and more
It is more complicated, increasingly huge, increasingly integrated nature, seems to be not how many people can master the specific use
How is it, but the key is here. Can you really do this? Not too! It is just the current display.
The situation is that the level of designers is low, and some company designers do not have much experience, how can he learn too much system.
The system design seems to be a lot of work, which is a lot of work, which is abnormal. Cultivate a procedure
If you don't have to spend more effort, you will not be too stupid, give him a chance, believe it can master some
Door technology or method. But to master a number of methods, it is not possible to solve it. The problem is also here.
It seems that all system designers can design all things. actually not. Many people have knowledge of knowledge
Limit, this decides that he can only make decisions and design to something in some directions. Customers don't know what he wants to do.
But we should know. If you can contact the user in the previous period, more detriments, regard the designers as a client.
One member of the work, he can truly understand the customer's needs, of course, you can make a proper design for him.
As for the probaches between various systems, I think anything is absolute, some are just some aspects.
trade off. Such as the trade-off, price and performance trade-off and the trade-off of the functional focus, etc.
There is no such thing as the thing in the computer does not contain this weighted. Although it seems to be always ideal
Convincing the user, what is good, in fact, it doesn't matter if it is good, some is just the difference and
The problem is targeted by the difference. This is like someone always arguing that Linux and Window are good. Maybe
Technical ", Linux is better than Window, but this is actually unfair, because of the beautiful GUI interface and friendly interpersonal
The same part should be considered in "technology". Combine all things and look at it without absolute
Yes. Therefore, it is not necessary to make a row for various programs before the user designs before the user decides.
Team, just understand the needs of users, then determine the direction in one direction from the generous direction.
Here I only exemplified from the past practical perspective, as in theory, there is no time to go deeper. First, agree with two
A statement:
1. There are three main aspects: function, time, cost.
2. Tasks for system analysis: transform the user's business logic to program logic, calculate time, and cost.
Let's make a profile design:
1) Function: Simple information distribution system.
2) The system analyst is based on the time and cost of the project, and proposes SQLSE based on the pros and cons of various programs.
RVER CORBA DELPHI program ... Users are very satisfied, OK, start detailed design:
1) Use three-layer structure to facilitate the installation of the user.
2) The client contains information distribution and queries two modules.
3) Describe various functions, processes, modules, layers ... all goes well, start coding ...
The code is completed, the user tried, when the user proposed: At the client, you must track the change in information in real time, but you find DE
LPHI's CORBA does not support callbacks! Transfer to other parties is impossible, remedial measures are not unlike (such as using Time
R, but the customer's network environment does not allow multiple users' frequent refresh), what should I do?
Analyze where the problem is:
1) Some people will say that the system analyst does not really understand the customer's needs, but this is impossible (the project time limit) is not realistic.
(It is impossible to let the analyst go to each post).
2) Some people will say that the system analyst has insufficient knowledge and experience, but reality is the analyst, the customer thinks that the customer feels no need.
To, and customers feel that the analysts must not understand. This is caused by different work, as the saying goes, such as the mountain
.
3) Some people will say that the system analyst is not enough, and most of the problems are in detail rather than generous. Do you master all the details? This is a question that has long bothering me: Details (rather than direction) often become successful and lost
The key to defeat (note that the success here contains time and cost), and the details are not possible to find and analyze
clearly.
How to construct a complete system in this incomplete requirement? Or is it impossible? I have encountered this problem.
Many times - of course is the design of others. But I think the place in this process is: dying things.
There is no real way to think about the user. Many people are doing the most designed, and it is possible to achieve the most convenient implementation.
Not a system extension and update. You need to know that the user's demand is constantly changing, if you always be "good before design
It is difficult to expect the ending of the future. So I think, I can appear in the design phase.
The problems are all discussed on the desktop, including their characteristics, effects and consequences, not self-righteous, so he is instead.
Household "hypothesis". In fact, a systematic design is in particular, its system's extension performance is a very important indicator, a single
Pure things do not have any vision of the "dedicated" system for something for something.