I recently bought several design books on the design model. I have been reading the essentials and patterns of software design over the past two days. this book is a series of blog Park developers and is written by Zhang Yi.
Chapter 1: Design.
1.1 plan design and evolution Design
In fact, I did not realize that the design is still divided into two methods. Here, the author proposes two methods: Plan Design and evolution design. I personally think that the trade-off between designs can be determined based on the software development model, for example, it is easier to use the waterfall model plan (because the demand changes are small or the expansion is unlikely), and the evolution model can be used for the spiral model/iteration model. Some people may have some questions about whether to design or determine the model first. I personally think it is to determine the model first (because the model is the whole process of project development, but the design is only a link in it ). In fact, both design and development models are demand-driven. Here I need to quote a few words from the author "torture himself:
"Have I understood all the customer's needs ?"
"Can I determine whether the customer's requirements will not change ?"
"Can the software architecture I designed really meet your needs ?"
1.2 Architectural Design Standards
This section can be used as a reference for Architecture Design:
(1) program organization)
(2) Data design)
(3) Security)
(4) Performance)
(5) scalability)
(6) Reliability)
(7) Availability)
1.3 over-design, or simple design
In this section, I will quote a sentence to summarize: "Simplicity does not mean simplicity. The so-called" simplicity to simplicity "means that self-simplicity is not difficult. Only simplicity can be simplified ."
1.4 do I need a design pattern?
Nonsense. Why am I still reading this book?
Note: "What is important is not how many models you have memorized, but how to use them in practice ."
"You must talk about 'model'. You cannot be a good architect. A really good designer knows how to judge the timing of using the model ."
1.5 restructuring is inevitable
Let's take a look at refactoring-improving the design of existing code. I bought at least one, but I am deeply touched by the recommendation when there is time for improvement in the project.
1.6 is UML important?
The author mentioned here that "the evolution design reduces the importance of UML. According to the development principle of extreme programming, we only need to encode, test, and reconstruct the current needs ", in fact, if we really follow the evolutionary design, will the UML design be in the middle? Here we are talking about design. Why do we need to pull the development principle of extreme programming into the evolutionary design? UML is an implementation of design. How to use UML is what we need to consider, not whether to adopt extreme programming!
1.7 test-driven development
"'Bold design, verify with caution. 'The Essence of test-driven development ." "The main spirit of test-driven development can be summarized as" test first, quick feedback '."
How much test-driven development can truly achieve? Although it is a good thing, it still takes time to do it.
The Design and evolution of the plan "they will not be on the battlefield, but rather a cooperative force that complements each other and works in parallel. When we face a large system, 'divide and conquer 'is the only solution we can choose. It is precisely the design of the plan that needs to focus on how the points are located. The hierarchy, structure, and relationship between the systems are reconstructed, and the entire system is divided into the ability to communicate with the outside world, at the same time, it is an independent integration of different modules. How to 'governance 'can create customer needs from the constant evolution of Application Evolution design with simplicity and applicability as the design premise ." I have some questions. Can the two designs coexist completely? Or does the process coexist locally? If the design is used as a process, do two processes interchangeably or interchangeably? Which design is dominant? I have too many questions here.