The preface
Analogical mode of thinking?
How can students majoring in software technology communicate with non-technical students? First recommend a way of thinking: analogical thinking, popular saying is “metaphorical”. This is a particularly useful way of thinking for technical students. In the research and development chain, technical students need to communicate with people from different specialties such as product/design/testing/operation, so how to explain the technical advantages and disadvantages of a certain function is a special test of a technical person’s comprehensive ability.
This attempt uses analogical thinking to summarize the logic behind the architectural design.
above
What is software architecture design?
Take the above question to ask others, I believe will get a lot of different answers. Searching for “software architecture design” on the Web brings up a lot of answers, not just in practice, but in different ways. Compared with “design pattern”, design pattern is mostly “GOF design pattern” in everyone’s answer. Even if there is a change, it will not break away from some ideas of GOF design pattern, which shows that architectural design itself is not a simple problem.
In the architectural design process, “design” itself strictly does not contain functional code, at most only pseudo-code level, so what does architectural design actually do? Students who write code sometimes joke that architects are PPT architects, and PPT architects are correct in one dimension.
What are the differences between a chef and an architect?
What are the chef’s abilities? A dish needs to be made according to a recipe, but in most cases the recipe is not original by the chef. Similar to the components or components of most architectural design are taken from the industry, the originality of architectural design is very little. Those who innovate at the base level of the industry can be considered lucky, so the design we are talking about here is more about software architecture design based on business applications.
For a good dish, the ingredients are already there the recipe is already there what is the chef’s ability? Maybe some students will say cooking, what is software architecture cooking?
The body of the
The architect vs. master chef analogy
Chef’s ability
Question: How do you put an elephant in a refrigerator?
Answer: The first step is to open the refrigerator door, and the second step is to put the elephant in.
How to make a good meal? The first step is to create your own recipe, and the second step is to use tools to create it. Take fried rice with eggs, for example.
The recipe
material | Fried rice with egg |
---|---|
Main ingredient | Overnight rice, eggs |
Supplementary material | Carrots, chives, ham |
seasoning | Salt, pepper, sesame oil |
making
The chef’s ability is to use the “recipe” to produce “food”, so the question is, is the “recipe” important or the “making” important? In the Age of Internet information, there are countless recipes on the Internet. The ability of a chef is not to know how many recipes, but to make dishes based on the recipes and in combination with the ethnic and regional habits of users.
The Art of Design
Architectural design is a multidimensional problem (complexity problem), the nature of multidimensional problem is to contain multiple elements and the non-linear correlation between elements influence each other, so there are many kinds of answers to what is architectural design, can not be wrong can only be said to be not comprehensive.
Architectural design = Architecture + design
Architecture is commonly said to be shelf, structure, analogous to the construction industry is a variety of components (roof frame, beam, plate, column, etc.) composed of a system that can withstand various effects; For the software industry, various components are development Language, Component, Framework, Middleware, Server, Network and so on.
Design is commonly thought, plan, generally refers to “an idea through reasonable planning, careful planning, the use of a variety of ways to express the process”; For the software industry, it refers to the process of using the above technical components to support the expression of business requirements. The expression result of software is Code, and the expression result of design is View. And PPT is a tool for non-art professionals to draw professional drawings, so it is reasonable to say “PPT architect”.
Combining the above two points, the architectural design can be summarized as follows
A variety of technical components (Language, Component, Framework, Middleware, etc.) are used to form the function system that can support business, and the process is expressed in the way of View through reasonable planning.
For architecture chefs, the materials they have are “industry technology” and “user business”, and design is based on the logical reasoning of the View.
Architecture Design recipe
material | Software architecture Design |
---|---|
Main ingredient | User business, industry technology |
Supplementary material | Functional design |
seasoning | Nonfunctional design |
What’s wrong with this recipe? It’s too easy. How to design functional design? What is the non-functional design? There is no industry standard definition of these design processes, which is why it is difficult to articulate architectural design. The difficulty of architectural design is how to define a design process that is suitable for you, your team, and the company stage by combining industry technologies.
Model mapping method
Model mapping design method is an architectural design process. One important difference between being a professional and a non-professional is the terminology. Let’s define design materials in terms of terminology.
User business → user story, industry technology → technical solution
Model mapping design method is the process of abstracted business requirements to user stories, and then started from user stories, supported by technical stories, and finally mapped to technical solutions through the logical design of four views, namely domain model, development View, deployment architecture and key process.
The design process is summarized as follows
link | expression | role |
---|---|---|
The business requirements | Documents/videos/pictures | Define the scope of business requirements |
A user story | UserStory | Define the business design scope |
Technical solution | Cloud Computing Architecture | Define the scope of technical artifacts |
Technology story | UserStory | Extend the technical constraints |
The domain model | Model View | Business mapping model data |
Development view | Hierarchical architecture View View | Business mapping technology module |
Deployment architecture | Physical deployment Architecture View View | Service mapping network deployment |
The key process | Process View | Complex process analysis definition |
The visual architecture design drawing board is as follows. Starting from the business requirements on the left, the process of the final mapping to the professional technical solution is model mapping design method after the abstraction of the two UserStories in the middle and the logical design of the four views.
Throughout the design process, non-functional constraints run throughout.
Output view
Question: What is the output of architectural design?
A View is a graph that abstractly describes a section of a system through points, lines and planes, focusing on boundaries.
The following is a typical hierarchical architecture view. The hierarchical architecture view is a manifestation of the “development view”. It mainly divides services based on business requirements and defines technical module subsystems and associated relationships, facilitating division and cooperation among r&d teams.
In addition to the layered architecture diagram, there is a typical design view.
Here is another widely used device network architecture diagram. The device network Architecture diagram is a form of “deployment architecture” that describes the structure of software systems at the hardware network level.
Nonfunctional constraint
Question: What is the difference between functional and non-functional?
Answer: Functional is the characteristics that the software system must have to meet the business needs of users, while non-functional is the characteristics that must have in addition to functional.
There is no industry-standard definition of a non-functional feature, partly because the non-functional constraints are related to business requirements and partly because of specific technical solution choices. For example, the non-functional constraints of a single-machine system for Intranet use are significantly higher than those of a software and hardware system that supports remote use on the public network. In general, points that need to be paid attention to are summarized here.
Five constraint
Complexity design
Question: Why is architectural design a complex issue?
Answer: In addition to the above business and technology, the design process also needs to consider team capabilities, delivery cycles, and other factors.
Architectural design is a complex problem, so it is also called “complexity design” in some articles. The following are two typical types of uncertainty.
Business and technical uncertainty
Team and cycle uncertainty
conclusion
Architect chef’s menu.
material | Model mapping design |
---|---|
Main ingredient | User stories, technical solutions |
Supplementary material | Technical story, domain model, development view, deployment architecture, focus process |
seasoning | Availability, reliability, security, maintainability, scalability |
recommended
Six words for software design: High cohesion and low coupling.
Advanced portal
Advanced structural architecture design.
- Architectural design is a problem
- Architectural design = Architecture + design
- Model mapping design method
- The output is the design view
- Architectural styles and patterns
- Domain model services
- Architecture design sketchpad