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.

  1. Architectural design is a problem
  2. Architectural design = Architecture + design
  3. Model mapping design method
  4. The output is the design view
  5. Architectural styles and patterns
  6. Domain model services
  7. Architecture design sketchpad