How to analyze problems and demand is difficult, and there is no complete analysis of demand. The system is very difficult. In the face of the project, how do we ask questions, how to define the problem, which issues must be defined, which issues can be temporarily ignored ... (Dream Lang personal point of view)
I. Propose a problem 1. Tree traversal look for problems, every problem is not single, it has related problems, like a tree, the main problem is the main trendy rod, the main problem is accompanied by other issues, the tree The rod is pushed at times. First don't be afraid of trouble, every time a question is proposed, you must make trying more related questions. Method of proposing questions: Cocho is touched. For example: Write a general editor program, this program is a reliable and stable basis for the development of other professional editors. 1) Problem: What is a general editor. The object oriented by the editor should be uncertain. 2) If the data type is uncertain, how we determine the object written by the program. Some possible hypothesis can be mentioned. Suppose we use this general editor as a program source code editing, then there should be interrupts, single-step execution, and other settings, which caused data that the data cannot be encapsulated inside the editor and should be developed later. 3) If it is a program editor, the keyword is essential, so the displayed attribute should give an interface. 4) If there is any other need for such a keyword, then it should be noted that the special class is not just one, the program is designed, it is best to abstract the special method and data structure (regardless of the future How much unpredictable special content). It can be given to how the special display should be given to support any special feature, which information is needed. 5) When an abstract development is explicit, it should be given as possible to consider it. 6) Problem: What are the need to be special. The editor is difficult to know that the data class should know yourself. Therefore, the definition of special content must have a mechanism to use it in later development. 7) Problem: The source code editor has automatic regeneration, lexical, syntax analysis, how these operations are reflected in the editor. Consider the grammar interface. Is there a contraction and development operation, how the interface is. 8) Also assume that: the later expansion of the word processing program. Data has text, image, special formula editing, paragraph concept, table, etc. 9) Data to send the editor may be a set of data containing control words, question: How to get different display operations that make the editor know different data. The editor must not know all, so it is simply handed over to the post-development demand. 10) Unknown data should have: display method, cursor positioning processing, etc. 11) cursor positioning requires current coordinates, so there must be an interface to let the editor know the data width. 12) Comprehensive conclusion: There should be an interface mechanism. Where a special operation is handed over, the general editor should do data management and transfer work, and these work, no matter which editor needs. First, let's go deep into questions, although the problem may be very complicated or messy, but it is absolutely helpful to the upcoming system design, it is best to have a clear understanding of each problem, do not rush to design the system. Through these questions and assumptions, what should our software we do should implement, which content is difficult, and the general method of implementing these contents, what is a general editor? Through the list of series, we can think that the general editor is just an editor tattoo on the basic editing unit. The editor not only has edit operations, but also allows external to provide an editing operation of special data objects, and finally implement text editing, graphic editing, table editing, formula editing integration. Data external implementation will allow later determination of content properties.
The above method basically ensures that software has good reliability, expansion capability, performance, reuse and systematic. Thinking high-efficiency production series software should do more. 2. Direct entry target problem directly proposes a series of tasks to be completed, through considering the implementation of the task, the roll-to-list problem, reflecting the needs of the task during the problem's answer. Such methods can quickly design software development solutions. Still in an universal editor: 1) Editors are: text, graphics, images, tables, etc. 2) Operation: focus movement, increase, delete, access disk, selection block, paste copy, indent, unfolded shrinkage, bookmark, interrupt setting, single step execution tag, etc. Operation with the editing of sub-text, graphic image, table, etc. 3) Display: Different font styles of text display, display of graphics, display of images, tables, etc. 4) Status setting: Remote Insert, Paragraph Format Setting, Title Control, Editor Specialization Settings, etc. 5) Consider the implementation of the functions and find problems. 6) If there is no consideration, it will increase. 7) After many programming, comprehensive considerations, and optimization programs, the final design is proposed. , Display and typesetting analysis. After a series of scheme definitions, the problem is gradually decreasing, and finally a larger system design is an early program. We can enter the system design earlier, and enter the program level development work in advance, and gradually implement the content. This method analyzes the demand, which helps us achieve ideas as soon as possible, and simultaneously control the progress of the procedural development direction and the basic function completion. But unfortunately, increasing the cost of development is to reduce the reliability, scaifeism and reuse of the program. In the past, we often feel that the procedures do basically cannot be used again, the reason is that there is no abstract problem, looking for a fundamental solution for problems. In the process of implementing problems, the process of in-depth analysis issues is ignored. For applications for developing a professional application, the analysis is appropriate, but the system-stronger software, it is best to use a tree traversal search problem. Second, analysis issues and demands are very dangerous in rushing in a hurrying without analyzing problems and demand. Ignore problems and demands may have a potential program or system design problem. We also often make such mistakes: due to no analysis of problems and demand, the result is to change the system design. The problems and needs that can be proposed must analyze it, otherwise the consequences are difficult. Analysis of the problem and the capacity of the demand are related to ideas and experience. Good ideas comes from rigorous, logic, and jumping thinking habits. Strict requirement not to let go of any small problem, logic requires the process of thinking that it should be a rule, and the road to jump thinking is not a way to go, but a plurality of roads. Experience comes from writing a large number of programs and good at summary, requiring programmers to continue to develop new processes and create new ideas, and dare to try and receive failure, and of course there is an important aspect: track the latest technology. How to correctly analyze the problem, have the following elements worth noting: 1. All issues and needs have the root causes. The surface phenomenon of problems and needs is always related to the developer's idea. If the entry point is narrow, the analysis of problems and needs is often limited to their own ideas, problems and demand. It is difficult to find out. So when you can't understand questions and demand, you may wish to find any problems and needs, it's reasonable, and then analyze it is not difficult. I must jump out of the practice.
2. Alternately analyze multiple issues and needs, find the commonality and characteristics between the problems, the seemingly problematic and inter-demands are not connected, and the analysis is unclear, then it is recommended to alternate repetitive analysis. Don't worry about it, don't worry about how much time it takes to spend developers, only developers carefully analyze the problem demand, and the future work is getting more and more simple. 3. Complexization issues, complications, is an abstract problem or demand inverse process, and many possible hypotheses that make problem needs, enrich the form of problems. It is possible to complicate the problem, it reflects the ability to analyze problems and demand. For example: Do a addition program, two numbers, return results. Simple questions, but we generally press two integer additions, sometimes considering floating point addition. Why isn't it two multiple plits, or two strings add equal. This is a simple example of using operator overload or class template, here my intent is that many issues should be used to verify issues from more aspects. 4. Ask questions yourself: If the problem can abstract, then simplify the problem. Many issues and demand becomes the process of program code, is formulating problems and needs. If the above example is the same, no matter what the three seven twenty eleven, what kind of data is written, and the addition of different types of data will also write a code, so it can't finish it. Abstract problems, simplified problems, class templates are a good example of abstract problems. In the process of analyzing problems and demand, the object-oriented thinking is used to solve a very satisfactory demand report. 5. Problems and Demand Classification Division 1) The performance indicators of software products: reliable, full, speed, easy to expand. Easy to expand: One is a fast-selling product upgrade. The other is the reproduction function of the secondary development of the user. Speed: Indicates that the software execution speed is not only fast, and the speed in operation is equal to it. Function all: Big, not necessarily bad, capable and strength, it is best to do it as much as possible. Functionality directly reflects the strength of software developers. Reliability: This is the most important point, the software is primarily considered should be reliable. When testing, the limit and abnormal operation should take into account. 2) Problems and requirements According to the performance indicators of software products and achieve difficult classification: core needs, basic functional requirements, advanced functional requirements, combined functional requirements. Core requirements: Directly affect the speed, reliable, easy to expand the indicator. For example: CAD brush screen requirements, CAD command line mechanism improves easy-to-extension performance, and the management mechanism of CAD internal data structure directly affects software reliability. The core needs will define the essential content of the software, which is mainly based on program design principles, combined with software task requirements to define data structure and management mechanisms. The core needs are the first to be determined, and it is the main job. Basic functional requirements: Complete the most basic operational set of operations of the task, these basic functions are the underlying processing function of the software product, which is a common part of many problems and abstract demands, which is the foundation of other functions. Basic functional demand is also very important, it directly affects the quality and ability of the back advanced features. Advanced Features: It is a numerous problem and the characteristics of the characteristics, which is very useful for an application, but may not be used in another application. For example: graphical computing in CAD: Sproducts or volume, is not used in the construction drawing design, but is very useful in calculating subgrade.
The demand for advanced features should be placed next to the next position, combined function: functions after combining basic functions and advanced features. For example: the Lisp language in CAD, the CAD batch command input, the capture of the CAD, and the like. These combinations of basic functions and advanced features are a later behavior. Without these functions, the software can be used, so these demand development does not need to be urgently implemented, but must consider the combination mechanism in the core. In short, demand analysis is a key to the quality of software products, leading to an absolute factor of software development difficulties. It is better to give the demand analysis to sufficient, and I don't want to supplement the demand in the programming phase (although modified demand is inevitable). Melang