MindMap Gallery Chapter 5 Overall Design
Software engineering structured design - overall design, can take a global perspective, spend less money, analyze and compare multiple possible system implementation plans and software structures from a relatively abstract level, and select the best plan and software structure from them. Software structure to achieve the development of higher quality software systems at less cost.
Edited at 2023-10-31 18:37:17This is a mind map about bacteria, and its main contents include: overview, morphology, types, structure, reproduction, distribution, application, and expansion. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about plant asexual reproduction, and its main contents include: concept, spore reproduction, vegetative reproduction, tissue culture, and buds. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about the reproductive development of animals, and its main contents include: insects, frogs, birds, sexual reproduction, and asexual reproduction. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about bacteria, and its main contents include: overview, morphology, types, structure, reproduction, distribution, application, and expansion. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about plant asexual reproduction, and its main contents include: concept, spore reproduction, vegetative reproduction, tissue culture, and buds. The summary is comprehensive and meticulous, suitable as review materials.
This is a mind map about the reproductive development of animals, and its main contents include: insects, frogs, birds, sexual reproduction, and asexual reproduction. The summary is comprehensive and meticulous, suitable as review materials.
Chapter 5 Overall Design
Task:
The basic purpose is to answer "In summary, how to implement a software system?"
Another important task is to design the structure of the software, which is to determine which modules each program in the system is composed of and the relationship between these modules.
necessity:
You can take a global perspective and spend less money to analyze and compare multiple possible system implementation solutions and software structures from a more abstract level, and select the best solution and software structure to achieve low cost. Develop higher quality software systems.
5.1 Design process
system design stage
1. Consider alternative options 2. Select a reasonable option 3. Recommend the best option
structural design stage
1. Functional decomposition 2. Design software structure 3. Design database 4. Develop test documents 5. Write documents 6. Review and review
5.2 Design principles
5.2.1 Modularity
Module: Module is the basic building block of the program
Modularization: It is to divide the program into modules that are independently named and can be accessed independently. Each module can complete a sub-function. When the modules are combined to form a whole, the specified functions can be completed to meet the user's requirements.
Function (advantages):
1. Modularization can make the software structure clear, which is not only easy to design but also easy to read and understand.
2. Modularization can make software easy to test and control
3. Modularization can make software easy to modify
4. Contribute to the organization and management of software development projects
5.2.2 Abstraction
abstract:
Abstraction is to abstract out the essential characteristics of things without temporarily considering their details. Each step in the software engineering process is a further refinement of the abstraction level of the software solution.
Abstract applications:
In the feasibility study stage, the software is used as a complete component of the system; in the requirements analysis stage, the software solution is described using a familiar method within the problem environment; in the transition from the overall design to the detailed design stage, the level of abstraction is gradually reduced; Finally, when the source program is written, it reaches the lowest level of abstraction.
Advantages of abstraction:
Allocating control in a top-down manner from abstract to concrete simplifies the design and implementation of software, improves the understandability and testability of the software, and makes the software easier to maintain.
5.2.3 Gradually seek refinement
definition
Try to postpone consideration of the details of a problem so that you can concentrate on solving the main problem
The difference between abstraction and gradual refinement:
subtopic
[The difference between abstraction and gradual refinement:
abstract:
Definition: The process of reducing complex problems to basic questions or concepts
Purpose: Reduce the complexity of the problem and facilitate understanding and processing
Methods: classification, induction, generalization, etc.
Gradually refine:
Definition: The process of gradually refining a problem from a high level to a low level
Purpose: Decompose complex problems into manageable small problems to facilitate design and implementation
Methods: decomposition, refinement, optimization, etc.
the difference:
Abstraction is a top-down process, while step-by-step refinement is a bottom-up process.
Abstractly focus on the overall structure of the problem, and gradually refine and focus on the specific details of the problem.
Abstraction emphasizes classification and induction, while gradual refinement emphasizes decomposition and refinement.
Abstraction and stepwise refinement complement each other and are used together to solve complex problems]
5.2.4 Information hiding and localization
[Information hiding and localization
information hiding
definition
Hide system internal details
Expose only necessary information
advantage
Reduce complexity
Improve security
Improve maintainability
localization
definition
Place related features or data together
Reduce dependencies
advantage
Improve efficiency
Reduce coupling
Improve maintainability ;]
5.2.5 Module independence
Module independent
module independence
Module independence refers to the low degree of interdependence between parts within the module and the low degree of coupling between modules
Module independence helps improve system maintainability and scalability
A measure of module independence
Module independence can be measured by cohesion and coupling
Cohesion refers to the closeness between the various parts within the module. The higher the cohesion, the better the independence of the module.
Coupling degree refers to the degree of mutual dependence between modules. The lower the coupling degree, the better the module independence.
Methods to improve module independence
Use information hiding technology to hide the implementation details inside the module and expose only the necessary interfaces
Adopt a modular design method to divide the system into multiple modules, each module is responsible for specific functions
Use interface design methods to design the interactive interfaces between modules to be concise and clear, reducing the coupling between modules
Adopt a layered design method to divide the system into multiple levels, each level is responsible for specific functions, and reduce the coupling between modules
The importance of module independence
Module independence is one of the important indicators to measure the quality of software design
Module independence helps improve system maintainability and scalability, and reduces system maintenance and expansion costs.
Module independence helps to improve the reliability and stability of the system and reduce the probability of system errors;
Use data coupling as much as possible, use less control coupling and feature coupling, limit the scope of public environment coupling, and do not use content coupling at all.
5.3 Heuristic rules
1. Improve the software structure and improve module independence
2. The module size should be moderate
3. Depth, width, fan-out and fan-in should be appropriate
4. The scope of the module should be within the control domain
5. Strive to reduce the complexity of module interfaces
6. Design a module with single entrance and single exit.
7. Module functions should be predictable
5.4 Graphical tools for describing software structure
5.4.1 Hierarchical diagram and HIPO diagram
5.4.2 Structure diagram
5.5 Data flow-oriented design method
structured design approach
5.5.1 Concept
concept
Two types of information flow
1. Exchange flow
2. Logistics
5.5.2 Transformation analysis
5.5.3 Things analysis