Differences between outline design and detailed design
The outline design is to design the software structure, including the component module, the hierarchy of the module, the call relationship of the module, and the functions of each module. At the same time, we also need to design the overall data structure and database structure of the project's application system, that is, the data to be stored in the application system, the structure of the data, and the relationship between them.
The detailed design stage describes the functions completed by each module, and changes the function description to a precise and structured process description.
The outline design stage usually gets the software structure diagram
Detailed design stage commonly used descriptions include: flow chart, N-S diagram, pad diagram, pseudocode, etc.
Overview design and detailed design
In software design, we often ask the following question: what should be the outline design method, and how should the detailed design be?
This problem is frequently asked within the company. Let's make a statement.
Our company's R & D process is waterfall. The analysis and design stages in this model are based on classic structured methods.
The basic idea of the structured design method is: According to the problem domain, the software is refined step by step and decomposed into modules that do not need to be further decomposed. Each module completes certain functions, A service of one or more parent modules (that is, calls are accepted), and services of one or more sub-modules (that is, sub-modules are called) are also accepted ). The concept of a module corresponds to a subroutine or function in a programming language.
In this way, the design can be clearly divided into two phases:
Summary (structure) design phase: the software is divided into module layers according to certain principles, assign tasks to each module, and determine the call relationships and interfaces between modules.
Detailed design phase: design the algorithms and processes in each module based on the decomposition of the outline design phase.
Outline design phase:
At this stage, the designer will roughly consider and take care of the internal implementation of the module, but it is not entangled here. It mainly focuses on dividing modules, assigning tasks, and defining call relationships. The interface and parameter passing between modules must be very detailed and clear at this stage. A rigorous data dictionary should be prepared to avoid any confusion or misunderstanding in the subsequent design. In general, the outline design can be done not once, but the structure is adjusted repeatedly. A typical adjustment is to merge modules with duplicate functions or further decompose Reusable Modules. In the outline design stage, reusable modules should be extracted to the maximum extent, and a reasonable structure system should be established to save the workload in subsequent stages.
The most important part of the outline design document is the hierarchical data flow diagram, structure diagram, data dictionary, and corresponding text description. Based on the outline design document, the detailed design of each module can be carried out in parallel.
Detailed design phase:
At this stage, each module can be divided into different persons for parallel design. In the detailed design stage, the designer's work object is a module. According to the outline design, the local tasks and external interfaces are assigned, and the algorithm, process, and status conversion of the module are designed and presented. Note that if structural adjustments (such as splitting sub-modules) are necessary, they must be returned to the outline design phase and reflected to the summary design document, but it cannot be solved in the local environment. Do not say hello. The most important part of the detailed design document is the module flowchart, status chart, local variables, and corresponding text descriptions. A module and a detailed design document.
The outline design document is equivalent to the assembly drawing in the mechanical design, and the detailed design document is equivalent to the part drawing in the mechanical design. For the document arrangement and binding method, refer to the mechanical drawing method.
Our company's understanding of the module is different from the traditional definition. We think that a large software functional unit can be called a module. This understanding leads to a chaotic understanding of the division of work between the outline design and the detailed design, which reduces the availability of the document and should be corrected.
The top-level part of the outline design is the so-called solution. The purpose of the solution document is to maintain the rationality of the design from a macro perspective.
Some projects adopt object-oriented analysis and design methods. There may be more questions about the overall design and detailed design division. In fact, object-oriented analysis and design methods do not emphasize the stages of structured methods. Therefore, the concept of outline and detailed design is generally not introduced. If there is such a division of labor according to the company's document system, we can consider package division, relationships between classes and objects, external attributes, methods, and collaborative design of classes as a summary design; the internal implementation of class attributes and methods is considered as a detailed design.
1. Requirement Analysis-generate software functional specification, and determine the user's requirements for the software, which should be clear and unambiguous. No specific implementation method is involved. You can see that developers can also perform the following work (Outline Design) accordingly ).
2. Outline Design-generate the software outline design specification, describe the system module division, and select the technical route, and explain the overall implementation ideas of the software. Key Technical difficulties need to be pointed out.
3. detailed design-generate detailed software design specifications for further refinement of the Outline Design, generally completed by the responsible person of each part based on the outline design respectively, and then in the integration, is the specific implementation details. Theoretically, this encoding is required.
Differences and links between outline design and detailed design
The software design adopts the top-down and successive functional expansion design method. First, the overall design is completed, and then the design of each organic component is completed.
Depending on the nature and content of the work, software design can be divided into brief design and detailed design. The outline design implements the overall design, module division, user interface design, database design, and so on of the software. The detailed design is based on the module division made by the outline design to implement the algorithm design of each module, the user interface design and data structure design are refined.
The outline design is the basis of the detailed design. It must be completed before the detailed design, and can be started after the summary design is reviewed and confirmed. The outline design document must be completed, including the overall design documents of the system and the summary design documents of each module. The design documents of each module should be written independently.
The detailed design must follow the outline design. Changes to the detailed design scheme do not affect the outline design scheme. If you need to change the outline design, it must be approved by the Project Manager. Detailed design documents should be completed, mainly the detailed design scheme description of the module. Like the outline design, detailed design documents for each module should be written independently.
The Database Design in the outline design should focus on describing the data relationship to explain the ins and outs of the data. Here we should combine our results data to explain the source points of these results data, the purpose and reason of this design. The Database Design in the detailed design should be a complete data structure document, which is a data dictionary that includes the type, name, accuracy, field description, table description, and other content.
The features in the outline design should focus on functional description, interpretation and integration of requirements, overall division of functional modules, and detailed graphic description of each functional module, readers should be given a general understanding of the structure and operation mode after the system is completed. The detailed design focuses on describing the implementation method of the system. Each module describes the classes and methods required to implement the function, including the involved SQL statements.
Summary design. What is the relationship between detailed designs?
Q:
My opinion:
The outline design only describes the number of modules in the system, the interfaces between modules, and the functions of modules.
Detailed design details how to implement a specific module, the granularity should be slightly higher than the program
However, the problem is that each module has a hierarchical and sequential logical relationship. This shows that the implementation details of the module must be taken into account in the outline design. Otherwise, how do you know that the molecular modules under this module are required? How do you know the call sequence of each sub-module?
This shows that the outline design overlaps with the detailed design, and the software engineering book says it is indeed sequential. I don't know if it is a problem with my understanding.
For example, for sorting programs, if two modules are designed:
A main module is used to sort sub-modules and exchange two variables. The main module calls sub-modules. But how is the sub-module designed? It must be because you first thought that data needs to be exchanged when sorting by bubble. This has already considered enough details of the main module. It seems to be a "Detailed design, however, the current design is a summary, which leads to what I call overlap.
A:
Look at the post above, most of which are interesting.
Some friends mentioned above mentioned that the example of building is used as a metaphor.
The outline design of the software is mainly to build the overall architecture of the software system, that is, when we build a house, we need to first build the entire shelf of the house.
The detailed design of the software is mainly to express the specific design methods, logic, and functions of each part of the software system in words. In this way, coding personnel strictly follow this in principle to implement the Code.
The simplest example is that we can deliver code to a third party. Verification and tracking are designed.
I think another friend said: "quick code. This is not worthy of criticism. But just think about it. The code you write does not have any design ideas or documents left behind. How can you maintain it once you leave? Re-design? Or do I spend several times researching thousands or tens of thousands of lines of code you have written? If so, you are right. The key is that your boss is right. What is the money.
Another question is: why are there no giant software products in China because the Chinese are so smart? Personal heroism is still very serious, and the boss's short-sighted interests are very popular.