Definition of architecture

Let’s look at a general definition of software architecture:

Program and computing systems software architecture refers to one or more structures of a system. This structure includes the build of the software, the external visible properties of the build, and the relationships between them.

The architecture is not operational software. Specifically, this is an expression that enables software engineers to:

Analyze the effectiveness of the design to meet regulatory requirements. At a stage where design changes are relatively easy, consider possible architectural options. Reduce the risks associated with software builds.

The importance of software architecture

Why do I say software architecture is important? Direct programming direct development, please see the following points? :

Software architecture can satisfy the quality of the system architecture design allows the beneficiaries agreed target architecture design can support the planning process architecture design to guide the system development architecture design effective management complexity architecture design has paved the way for the reuse of architectural design to reduce the maintenance cost architecture design can support conflict analysis

What is a good software architecture

This question may be asked by everyone, including some IT companies, and the answer to this question may be more than a simple sentence or definition. Let’s take a look at some examples of pictures:

What is this stuff? Legos, Legos, did we all play? It can be sold to you as a complete model, or you can break it all down and freely reassemble it from one model to another, because each Lego module has a horizontal and firmly oriented standard. Interfaces, that’s what we call high cohesion and low coupling.

What is a bad architecture

Let’s take a look at the picture above. One is eight letters from the Qing Dynasty, and the other is Kong Yiji. Remember the four ways of writing? Then, you looked specifically at four ways to write words back, but did you ever think I could turn words into words? Is this a good discount?

Know that the most fashionable is not always the best

Why not the A8 processor or the latest Pentium processor in the M1A2 and Apache helicopters? Practical, testing is the best!

What about successful software

We talk about software architecture. The ultimate embodiment of this architecture is software. What is a successful architecture? What is successful software?

If we look at the picture above, this is the Ali Baba Class Aegis destroyer. On the right is India’s “Delhi-class” destroyer Curry Shield, designed and built by AEGis itself. What’s the difference between the two ships?

One is modular design, the overall line is smooth, the module can be replaced at will. One is patchwork, where the lines are exposed and the deck is filled with electronics and antennas. Once damaged, it’s very difficult to maintain.

Related technologies in the JAVA general domain

Of course, we’re focusing on JAVA here. So, as a JAVA and J2EE architect, what skills do you need to reach the architect level?

The picture above, if we look at it this way, is divided into three parts:

At the top, we need to master some knowledge of technical areas, which can enable us to solve solutions such as e-commerce, corporate OA, banking, insurance and finance and design common areas in other fields. In the middle, in order to get to the top of these technologies, we need to know something about middleware, databases, development frameworks, it’s a pillar. Bottom, bottom? This is our foundation, a building block for reaching the middle or upper level, which is why people sometimes find the difference between my blog and other blogs, not only programming, but also the “middle” layer. That said, database, security and framework building are all mixed up because I don’t want everyone to stop at the level of code, code and screws by reading my blog.

The functions of an architect

Having said so much about architecture, let’s talk about architects.

If you see it, the architect’s primary responsibility is to focus on: non-functional requirements, that is, non-functional requirements.

Many people still don’t know the line between functional and non-functional requirements. Here are two examples to illustrate:

Functional requirements

When the page is queried, which database table is associated with the query, because my business is such A requirement, there is A button in interface A, then pop up window B, what kind of data is displayed in window B, after the end of the final interface point K, which data has changed when opening interface B.

Nonfunctional requirements

The query speed of our system is less than 2S, shall we consider using asynchronous query and team queuing mechanism, and the system needs to accommodate 1000 concurrent requests? The system should be made into a plug-in, which can be horizontally extended and comply with XXX protocol, and whether the Web service should use SOAP HEAD and BASIC authentication? NTLM authentication or token ring authentication? The drop-down box can be entered and can be pulled down. Can this authentication access LDAP?

Many business-oriented project companies think of architects as firemen when it comes to problem solving (that is, troubleshooting, troubleshooting, errors, and then finding the architect). You don’t think for yourself why the problem architect has shown up for two seconds, two minutes, or a day and a half to solve problems that couldn’t be solved in the last few months. Okay?

Solve this is the problem that people should solve, to say that the human architect failed? Should we find the problem in this original framework of software and architecture?

Architect, it’s not a problem to solve a problem.

I also did some interviews before the festival. From a purely technical point of view, I chose the candidate of architect TECH LEADER.

I still find a lot of problems. This is a common problem in China: our programmers often don’t do programs, but more often they do business logic and become business people in some area.

Of course, our programmers spend the first three and four years of their careers writing code for an area. That’s not a problem, but keep in mind that we’re coders, IT and programmers. “Rather than” business people “!

What is it? What is a programmer? What is a technology leader? What is an architect?

We have to do a good job of asking ourselves that question. Think about it. What were the architects’ requirements?

I’ll say anything here: I’m sure it’s helpful for students who want to follow a technical path:

TCP/IP protocol, encryption and decryption, computer principles (additional complement), JPG code, MPEG2-3 protocol, logical electronic circuits, computer compilation principles (stack, stack, queue), these things are always used when working? Are these the ground floor that you’ve been focusing on?

If you are going the technical route, keep in mind that “database + ASP/JSP” is not a technology. It’s just a little more powerful than table making. The report author is a bit powerful.

Keep in mind that the technical line focuses on non-functional requirements. Non-functional requirements are a one-stop shop. With this foundation, any requirements are clear. You have nothing. “Difficult,” or if you go to school, you can do it differently.

I’ve been interviewing candidates and working as an architect. I am deeply disturbed by this process. It’s not difficult to find a programmer to develop and recruit an architect. It’s hard… Well, I think we need to think about, if I take the technical route, what am I missing, how can I supplement it, and what else should I look out for?

Science and technology are the primary productive forces. The so-called Six Sigma management methodology is the first of six Sigma. “Technical personnel are the primary productive force of current enterprises.” Let’s see which companies can make a fortune. Ali, Taobao, Alipay, GOOGLE, Tencent, Internet, High-tech, etc., and some others, they rely not on business logic, but on real technology, which is enough to explain the problem, so if you want to go the technology route, please pay attention to more details and lower level things.

Skills that architects need to learn

The following six knowledge systems are based on my experience in the industry and are the most mainstream technologies. Those who want to learn these techniques can add my framework group: 697579751. Inside will share these technical knowledge points for everyone to learn free download



First, read the source code

Distributed architecture

3. Micro-service architecture

Fourth, concurrent programming

Fifth, performance optimization

6. Actual combat of the project

Conclusion:

The above is my summary of the architect needs to master the learning knowledge system, I hope the above content can help is silently difficult, encountered bottle disease and do not know how to do Java programmers, I can help you only so much

Feel small preparation of the article is good, said right, everyone please pay attention to me, thank you.