当前位置:网站首页>Software architecture discussion
Software architecture discussion
2022-06-21 10:38:00 【Longcheng deficit】
What is software architecture ? What is software framework ? A lot of times , We often mix the words architecture and framework . actually , In a broad sense, architecture and framework are very different in concept , The feeling of Architecture , More inclusive , So in fact, architecture includes the concept of framework . The generalized architecture should be the architecture of a system , It's not just about skills in software , There are more systematic concepts and perspectives ; Not just the code , It is more important to lay out non code factors ; It's not just about technology , There are more management contents in it . And for the sake of discussion , The architecture here often refers to the pure technical architecture in the narrow sense , We need to express , Mix it with the frame .
In terms of a simple framework , Its core is abstraction . Abstraction is the process of unified modeling . The highest state of language should be a high degree of abstraction . Like , We think of trees as a kind of abstraction , And specifically speaking of cypress 、 Poplar 、 The pine tree 、 Gingko, etc , Is a kind of concretization . This abstraction will strip out the commonalities of such things . For example, for trees , It has roots 、 trunk 、 The branches of the 、 These characteristics of leaves . For a child who has never been trained , Draw a tree with the above characteristics , He can also tell you , This is a tree . This is the power of abstraction . On language 、 For programming , We also need this kind of realistic 、 Abstract the unrealistic things , Find common ground , Build a unified completion body . here , We mentioned the unrealistic things , for instance ,Android An application component is a pair of APP An abstraction of , And unified abstract as Activity To interact with users ; And yes Apple Of IOS for , There is another abstraction . Both are abstract descriptions of unrealistic things , It's different , But it's all about exploring human interaction APP Common characteristics of . The greatest benefit of abstraction is the ability to cope with change , Achieve the effect of responding to changes with constancy .
One , The framework itself is complex , But it is used to simplify complex things
software design , When it comes to getting bigger , When it gets complicated , Framework or architecture , Is an important piece . A small test program , There is no serious structure . however , Once it becomes a big system , Then architecture or framework is the top priority . This is the difference in architecture design , Could lead to very different results . Good architecture , The system is stable and flexible , High scalability , Development 、 High operational efficiency , Long life cycle . contrary , Bad architecture , Maybe the system hasn't been designed yet , It died prematurely because of various pits exposed in the middle of the journey . Even if you stumble to delivery , It may also be difficult to maintain and reduce the life cycle .
Understand the design idea of large software :
The design of software is the core of software . What is the difference between writing a small program and designing a large system ? We can explain it by analogy . Such as building houses , The simplest way to build a kennel , Just a few boards and pushpins ( Examples from the code encyclopedia ) You can do it . If the building is not good-looking , You can do it all over again , If the selected position is not good , You can also dismantle it and start over . Build a house , It's a little different , You need to think about how to do it in advance . Drawings are not required to build a kennel , Just keep your head down . You can't build a house like this , Not only do you have to think it over , And it may need a simple design if you think about it , Draw a picture , Field measurement , Wait a minute . After that, we need to prepare materials , Stone sand , cement , brick , Steel and so on , When the materials are ready , The construction is ready . A foundation needs to be built , One meter deep is enough , Need some tools to measure horizontal and vertical . Building houses is no longer allowed to be demolished and rebuilt . Further , Let's take a look at designing high-rise buildings . This is not something that one can accomplish , Requires multi person collaboration , Design carefully and completely , And output the standard drawings as the basis for consensus . The foundation is not easy to do , How many meters , How to layout , All need strict calculation and measurement . Various construction tools need to have , To start building . Software design is similar , If you just write a test applet , There is no need to pay attention to naming , Writing , Just have the function , Of course, you can write better , Having a nice kennel still gives people a different feeling . Further back , Design a larger module , Or a program with certain functions , Complete operation interface , Then we need a simple design . In addition, you may need some scripts and other language assistance . Maybe one person can complete it . Bigger , A large software or system , The situation is very different . It is similar to building high-rise buildings , Detailed design is required . Interface requirements , Code style and so on , All need to ask . Every connection structure must be consistent , Everyone can use it . A function module , What does a component do , What are the requirements , characteristic , Interfaces, etc. , Must be strictly designed , It's like what type of steel bars should be used in the building , What shape to make and so on , All need to be designed . All of this comes together , To form a powerful and stable system . System at this time , Maybe it can't be done by one person .
But this analogy , Or metaphors , There's still a problem . Because the software design is different from the building . Covered building , It's a real thing , Can really see , What do many things look like , It can be completely determined by drawing . Software design is different , It's an abstract thing , A system that exists purely in our brains . And software design is not only facing the problem of the system itself , There are also limitations in the area of problem solving , Many things cannot be reused like building construction . But the point here is to highlight that a powerful software system needs careful design , At this point , It is appropriate to metaphorize the two .
As a designer , You must have profound skills . It is said that , Maybe everyone can be a good admirer , Judge , however , Not everyone can be a good Creator . in other words , Good things are easy to see , But it's not easy to do . Like a building , I can live in , You can see , Can judge , however , To design , It's just another thing .
As a software developer , An experienced software developer , I often think , Those that work well 、 The designer of a huge system , How to understand the system architecture ? How did you come up with a design plan ? Like the operating system ,Office Office software , Integrated development environment Eclipse,Android Cell phones and so on , Which one is not developed by investing a lot of human and material resources ? Which is not the crystallization of human wisdom , Existence like a work of art ? Maybe many people in the world , This life is doomed to be just a sigh of hope . At the end of this chapter , Attached are the records of the author's thinking process on the understanding of architecture .
stay 《 Self cultivation of programmers 》 In this book , The author mentioned such a paragraph in the preface :CPU Architecture 、 assembly 、C Language (C++) And operating systems , It will always be the magic weapon of programming masters , Just like the Shaolin Temple 《 Yijinjing 》, It is the best martial arts ; Learned to 《 Yijinjing 》, You will be omnipotent , You can create martial arts ; Learned to program “ Yijinjing ”, Masters can develop operating systems at will 、 compiler , Even developing a new programming language !
On the network , Some take learning martial arts as an example , An example of a programmer's realm . The first stage is to learn various languages , It's similar to learning martial arts moves ; The second stage is to apply what we have learned , Similarly, you can simply apply the learned martial arts in practice ; In the third stage, I have a certain in-depth understanding of the specific language platform , Have the elementary ability , That is to say, there is a sword in the hands of martial arts students , No sword in heart ; The fourth stage has entered the advanced stage , No longer restricted by specific language , Language is just a tool , At this time, why the sword in hand is no longer important ; The fifth stage enters the system architecture level , At this time, it can be said that there is no sword in the hand , The realm with sword in mind , System development is no longer the case ; The sixth stage is the highest level , At this point, the problem in my eyes is irrelevant to the software , You have reached the point of no sword in your hand , There is no sword in my heart , The so-called "no move wins with move" . It's like the breeze in Xiaoao's Jianghu , It doesn't matter whether you have a sword in your hand .
I think the designers of framework and architecture should also have experienced all the above “ Practice ” The process , Just reached the peak . What we don't understand , It can also be simply explained as "you can't see the world without climbing the mountain" .
But it is different from the best martial arts in martial arts stored in the secret script , Software system development seems to lack such a secret . Frame designer , It should be that you have reached the state of "no sword is better than sword" . But , Even if there is no sword in my heart , The design of the framework is not achieved overnight . A framework is generally the basis for a class of scenario development , The design can only be carried out after sufficient and complete consideration . Because once formed , A small change makes a small pain , Great changes cause great pain . Even so , During the framework implementation , In need of change 、 Dismantling and mending are inevitable , Need continuous improvement , Constant reconstruction , Constant iteration , Only then gradually complete takes shape .
So visible , Design of software framework , Compared with martial arts cultivation , It seems more difficult . however , In the world of computers , There's another oddity , It is language , Can be redesigned , So as to raise the angle of the frame . Whether it is a compiled language or an interpretive language , Without exception . such as , image Javascript This kind of language , It can also be changed into a framework through design , Show great ability . I can only say one thing here , No, I can't , Only unexpected .
Said so much , So the framework here , What is it , And what is the use ? As mentioned above , Large scale software development is very complicated , The frame design is also very complicated , And the core of the framework is abstraction , Something that extracts the core essence of something , Nature cannot avoid complication . that , Why should we go to great pains , To extract the common characteristics of things , To abstract , In fact, the ultimate goal is to simplify . In summary , All complexity is for the sake of simplicity . such as , The operating system can be seen as a framework , This framework simplifies the use of system resources by developers , Include CPU、 Memory 、 Disks and various peripherals ; The database can also be seen as a framework , It simplifies the management of various large amounts of data by developers ;Android in Framework The design of is more like a framework , It provides various components for application development , It simplifies all kinds of APP Development of . In addition to these large systems , There are other frameworks within the application , image jQuery It's a JavaScript frame , It is convenient for us to do Web Related design and development ;ZeroMQ It's a message framework , It is convenient for us to develop message communication ; besides , There are also a wide variety of applications specific 、 Language specific 、 A framework for a specific development direction , Make it easier for us to build more reliable 、 More complicated 、 Larger systems . This kind of framework , It is also a framework closer to developers .
Two , Examples of several different types of frameworks
In this part , The author takes several frameworks commonly used in his own development , Make a simple example to illustrate . In fact, the development of software is changing with each passing day , The types and number of frames are also increasing rapidly , I want to select some typical examples to put here , It is really powerless . And in terms of software development , The word "typical" seems to have no place . Simply , It is better to choose what you are familiar with , Brief introduction , The right should be for the integrity of the whole structure .
Example a , Event based framework libuv.Libuv Encapsulated operating system IO, Asynchronous operation supported , Support network interface , Timer , Tasks and many other features , It can be used as an underlying framework . Based on this framework , It can simplify the way to deal with the system , Focus on the development of business-related functions , And the asynchronous feature will not slow down the performance of the whole software . classical NodeJS The bottom is based on libuv Of .
Example 2 , Middleware based framework . Middleware usually acts as a bridge , But it also provides a kind of encapsulation of complex functions . As a bridge , Middleware usually needs to provide interfaces from top to bottom . Right , For the operating system , Encapsulate the relevant resource interfaces of the operating system . For example, tasks 、 Memory 、 disk 、 Network, etc . Downward interfaces are mostly used across operating systems or platforms . Right up , Is to provide the calling interface for the actual business application . As a functional body , The middleware itself implements specific complex functions , For example, the functional realization of a certain field . such as ERP middleware ,3D Modeling middleware , Browser middleware, etc .
Example 3 , Application framework based on multi process and multi thread . It is a small framework created by the team in the actual development work . Meet the needs of specific applications . Different modules are implemented by processes , If the module is simple , It's a single thread , Otherwise, it is a multi-threaded implementation . This mechanism implements two message mechanisms , Interprocess and interprocess .
Another blog post specifically describes the framework :
https://blog.csdn.net/wwwyue1985/article/details/119428234
Example four , be based on Binder Of Android Platform Framework frame .
About Android frame , Here I want to say more , Let's see. Android The role of the framework in the platform construction .
First , At the bottom is the hardware , There is no need to say much about it .
Above the hardware is the operating system , Contains many drivers , It's easy to understand .
On the operating system ? The operating system provides hardware encapsulation , Then go on , Software functions . But in Android Inside , This layer is the hardware abstraction layer . This is it. Google The wisdom of . We use hardware resources through system calls provided by the operating system , however ,Google There is a separate one here HAL layer , It is used to isolate the use of hardware by the operating system and upper software . The reason for adopting this scheme , I think there are several reasons :
1 Linux After all, it's not Google Their own . If you feel that some interfaces are not good , To modify or add to , It's not that easy ;
2 Google Position yourself to make software , No hardware , Make a plan , Don't make products . Here is no hardware product , This point is open , otherwise , There may not be so many enterprises to throw themselves into their arms . however , Hardware manufacturers are not necessarily willing to put their hardware drivers into open source Linux The kernel . Essentially , Hardware manufacturers are unwilling to open source their own drivers , So what to do ? One way is to use the hardware abstraction layer , stay Linux The kernel only provides the interface for reading and writing devices , For example, register read / write interface , And the specific use of logic , Is provided outside the operating system , For example, dynamic libraries are provided in the hardware abstraction layer . At this time ,Linux The kernel just acts as a channel to access the hardware devices . The upper application uses the device through the dynamic library in the hardware abstraction layer . Because of that ,Google and Linux There are contradictions in the community .
3 Google adopt HAL layer , Isolated hardware and software . stay HAL layer ,Google Tell the hardware manufacturer , What are your interfaces for using various hardware resources , As for how these interfaces are implemented , That's your business , Be willing to make it public , If you don't want to be public , Anyway, the scheme provides , Please help yourself . and , Through this layer , It also constrains all equipment suppliers , Ensure that the evolution of the upper software does not take into account the differences of the underlying hardware . such as A Manufacturer's cameras and B The hardware interface of the manufacturer's camera is different , But you all have to provide what the camera should have , I Google Only the commonness of the camera is abstracted as the interface , Give me the upper application . You only need to satisfy my interface , Again , If C Manufacturers also want Android Support its camera , The dynamic library meeting the above interface requirements can also be provided . Final , Through the abstract interface layer , Isolate changes , The upgrading of the underlying hardware and the iterative evolution of the upper application can be carried out independently without burden .
Above the hardware abstraction layer is the runtime layer . This is the module set , Various support modules , Exists here , and , Many are open source components . Like browser kernel , Audio and video codec 、 Encryption system , wireless WIFI Management and so on . This layer can be called the supporting layer . The content of this layer , Most of them are provided in the form of dynamic libraries , Available to all applications ; in addition , An application , Multiple modules may also be used . therefore , These modules , Are basic modules . We know ,Android Early applications were based on Java Language development , So there is a similar one on this floor Java Runtime module , Used for processing Java Bytecode , Convert it into machine code .
Up again , That's the framework . It is a connection module , Up , Simplifications written for applications , Provide components and interfaces ; Down , Manage the modules of the support layer . This layer is the whole Android The most sense of design in , Extensive use of design patterns . As a connecting layer , Encapsulate the functions of the support layer as Java Components , For upper level applications , It's characterized by simplicity , Many complex state processing, etc , Are hidden by this layer of encapsulation . The design of the whole floor , It's all similar Client-Server Mode .Activity Yes ActivityManager,Package Yes PackageManager,Window Yes WindowManager, also ServiceManager,MediaServer wait . All of these Java Or C++ Of manager perhaps server Provide specific implementation management of service functions , The caller communicates between processes or threads , complete RPC call . In order to provide an efficient communication interface ,Android Based on shared memory Binder Mechanism , This is the whole Framework Basic framework of :Binder+RPC. Service callers and implementers rely on the abstract interfaces provided by the interface description language , Complete their respective tasks . Interfaces are shared , Realize that the shelf is a unified template , The specific filling content is purely functional logic , This is what a framework should look like . Constantly encapsulating and hiding , You just need to focus on what you should focus on , Highly related to specific business logic functions , Other systems can be put forward in a unified way , As a part of the framework, it can be implemented in the hidden place .
complete Framework This floor , The basic frame of the whole platform comes out . For software developers , Is how to use the framework , Develop a variety of fun applications .
The whole hierarchy , Here's the picture ( This picture has been shown in the overall catalog before , But there was no specific explanation ):

From the above description , You can put the whole Android The platform is understood as hardware plus system plus framework . Hardware and systems are the foundation , For application fields , Add related extensions —— Foundation extension , Then encapsulate its management into the framework layer , To facilitate application developers . thus , With a framework , An ecological platform has been built .
These frameworks , Mainly around the terminal level . Actually , In the Internet Ecology , The use of frameworks is more diverse , There are also many good examples worth learning . however , It is a framework developed for whatever business, technology and purpose , Its overall goal is to abstract , Simplify and clarify the complicated things , For the whole system “ Building blocks ” To facilitate the construction of .
3、 ... and , Further description of the framework
In the first part, we have mentioned , The existence of a framework , To develop complex software , Componentization , modularization , simple , Several examples are shown in the second part . Here we go further . Such as VC++ Provided in MFC Class library , This is a framework . Use MFC Development Windows Applications for , It's better than using it directly Windows Operating system API The interface is simple . however MFC It's also based on Windows Of API Interface completed , However, it implements some frame blocks , These frames and pieces , It is easier to use in actual development , therefore , Used by developers , For simplification Windows Program development . The framework itself is not intended to implement some of the functions of the application , It provides the basis for application , Will be some cumbersome things , hidden , Provide simple interface , So as to liberate application developers . Under simplicity lies complexity , It's like iPhone, Easy to use , But the cost of this simplicity is the complex implementation behind it .
From the lowest machine language to assembly language , Program development approach CPU The physical working principle of , Also limited by this mechanism , Too many things at the bottom of the machine need to be considered , Thus affecting the development of logic functions . The emergence of high-level languages , Well solved this point , This itself , It is the abstraction from physics to logic . And the frame , On the basis of high-level language , Again the abstraction . The development of software , Become modular , Component development . A simple example , Using assembly language , Develop programs according to the idea of object-oriented , This process is very awkward , While using C++, Then the chapter will be formed smoothly , But the final program is compiled , It is also a compilation one by one .
frame , It gives people a feeling of hardware softening and software hardening . The so-called hardware softening , It is to use the idea of software to manage hardware . like Linux Inside to drive 、 Bus 、 The abstraction of the device . Think of them through software , Abstract it out , Achieve the purpose of flexible management . The so-called software hardening , Is to put software development into , Some cumbersome , Common things , Fixed , You don't have to move it , Don't worry about it . such as , Design the elements of the graphical interface , Click on what control , What interface to call , All fixed , Developers only need to concentrate on completing the logic in the interface .
Four , The combination of abstraction and reality
This part , Let's continue with a very simple example , To feel the complex principles behind the framework .
First , From the perspective of compiling links . Generally, there is no framework main Function entrance , The "no" here means that the developer cannot see main Entry function . The process is provided by the framework ,main The entrance is also enclosed by the frame . Modules developed by developers , For the whole software module , It is equivalent to a part of the machine , Or a personalized embedded room in the building , The models of components and rooms have already been designed . If you compare software to a jigsaw puzzle , Then the whole system is divided into several pieces , Some blocks in the frame or SDK in , Some blocks need to be implemented by the users of the framework , Some blocks are even in the compiler . These blocks are combined as a whole , To form a program that can actually run .
The specific term , For compiling and linking programs , The developer's code is integrated with the framework's code to compile Links , For example, the final compilation link may be like this :
g++ framework1.cpp framework2.cpp userfile1.cpp userfile2.cpp -l support.so ...
userfile Not only has it realized the logic it needs , It may also implement the logic and interfaces required by the framework . such as , A virtual function is defined in the framework , The developer needs to implement the virtual function again .
Of course , The actual situation may vary , Here's just a simple example , Easy to understand .
secondly , From a process and life cycle perspective . With C++ and Android Of Activity For example . Framework implementation main The pseudo code logic of the interface should look like the following
Main{
thisAc= new Activity();
thisAc.oncreate();
...
while(get msg from queue) {
switch (msg)
{
case on_click_msg:
thisAc.onClick();
break;
case on_xxx_msg:
thisAc.onXXX();
break;
...
default:
break;
}
}
}In the above example ,Activity Is a base class implemented by the framework , Encapsulates the general characteristics of the activity . The developer inherits the base class , Implement the general actions defined by the base class , That is, the virtual function interface . utilize C++ Dynamic execution characteristics of virtual functions of , The code can implement the calling process first , That is, when to call that interface , But the concrete implementation of the interface , When the developer completes the specific task, it will be implemented . So compile time , The framework code and the developer code are compiled together ; Runtime , The framework executes the virtual functions of the base class , In fact, the final execution is the code that the developer inherits the implementation , So as to achieve the framework design mechanism process , Requirements for developers to implement specific actions .

As shown in the above figure , The framework defines the big process , The user implements... At a specific point UserPoint What needs to be done , As for when and how to call , Don't worry about it .( Of course , This is just an example , In fact, it is not so absolute )
Again , From a message interaction perspective . Usually , An application is a process . The process completes a specific task , To achieve specific functions , So as to solve the specific problems that customers need to solve . But the implementation of a specific functional task , Multiple subtasks may be required to help complete ( Divide and rule ). If the implementation mode is multi process , It is inconvenient for subtasks to interact and communicate with each other , And it's not efficient . Such as using threads as the carrier of subtasks , An application is a multi thread model for one process , It can solve most practical problems . Based on this , Consider implementing this module in the framework . Multi subtask mode , The most important problem to be solved is communication and synchronization , This can generally be solved using the message queue model . It can realize convenient message communication mechanism , It can be said that half of the basic problems have been solved .( here , Let's take the example between threads , Just for the convenience of understanding . The implementation , It can be universal without distinguishing between processes and threads . Like the message queue framework in Internet applications , Not just across processes , Even across hosts , Although the differences between different processes and hosts are essentially not different in the eyes of implementers , But when it is implemented , There are still many details .)
The message queuing mechanism can be easily passed through C++ Virtual function mechanism to solve . The framework defines a base class for processing message queues , Complete the following logic
While(1){
aH = new Handle();
aH.get_msg_from_subtask();// Get message from message queue
aH.handler_msg(); // Process the message
}Subtasks get their own handler, And call it h.send_msg() Send a message to the message queue ,main Capable of traversing all tasks handler, And call handler General purpose virtual functions handle messages .
here handler_msg and send_msg All are handler Virtual function of base class , Inherited by developers handler Class time override implementation . The actual execution is similar to the previous task process , Through the virtual function table , The framework actually implements the implementation logic written by the developer , And can determine the message flow path . On the whole , The framework completes the call process scaffold , and YOU Complete the processing on specific nodes .
With this message driven model , Combine the previous compilation and activity lifecycle management sections , The rudiment of a small frame has been preliminarily established . When developers develop applications , Inherit Activity class , Complete the response processing of specific actions ; Inherit Handler class , Complete the distribution of message events ; Use compilation to organize , Complete the construction of the entire application .
In addition , Language also has some influence on framework design . You can feel it clearly , be based on C++ Object technology and polymorphism , It can bring convenience to the frame design to a certain extent .
5、 ... and , Architecture research methods
The mastery of any subject , It's all about learning 、 imitation 、 Go beyond these three processes , Ancient and modern Chinese and foreign , without exception . The so-called transcendence , It doesn't have to be more narrow than the predecessors , Can be a school of its own , Is transcendence . Like poetry , The first is to learn the rules of rhythm , Then imitate the famous works , Finally, I will give full play to myself . Other art forms 、 This is true of scientific research .
here , What we want to emphasize is the imitation in the above process . This is a very important process . By imitation , To realize the connotation of excellent classics , To internalize your own things . A famous philosopher 、 Mathematician Russell once said , Life is not without beauty , It's a lack of discovery .
Back to software architecture , Research on the framework , No exception . Through the research of excellent framework , It can not only deepen the understanding of the framework , Can also improve their own design ability .
First , With MFC Framework for example . The author was the first to MFC Understanding , Or through Houjie's simple explanation MFC That book . By means of simulation , Yes MFC The mechanism behind the cocoon , Show its core skeleton to the reader , It's like letting readers wear a pair of contact lenses , See the essence of the interior through the gorgeous appearance . Through this process , It saves a lot of valuable time that may be confused by details , It also reduces the burden of memory , Instead, I can see more clearly , Remember more firmly .
The book is right MFC Class level of 、 Runtime identification 、 Dynamically create 、 Message mapping 、 Message passing and other key technologies are explained in detail and simulation programs are provided . Interested readers can look up relevant materials . If given the chance , I would like to add this part .
secondly , With Android For example .Android As an open source , Market tested , Mature operating system , It is also an excellent learning object . We have already made a brief introduction to its overall structure . There are many in the market Android Related books , Although many are about application development , But there are also stories Android Core implementation . But these books are either biased to one level ( Like driving ), Either the code heap is too large , Too detailed , Some are simply code translations . There are four problems with this kind of explanation : First, it has become a reference book , Except for work reasons , Some details or problems with related modules need to be solved , You may need to look it up ; Second, it is easy to be lost in the ocean of details , It's like knowing every word , I don't know what it means to put them together , Only trees, not forests , Lack of mastery of the whole ; The third is Android Version update is fast , Too many details can easily become outdated ; The fourth is to forget after reading , There are too many details to build a complete system view .
Actually , Yes Android Research on learning from , It needs more Tao than magic . Things can never be learned , China has been learning in the field of science and technology for a long time , Part of the reason I think is the influence of this kind of education . So I also consider imitating MFC like that , Do a Android Simulation . Skeleton things are not easy to change , That's it Android The reason is Android Where are your genes . Through skeleton , We can see the origin of design more clearly , Only then can we talk about imitation, breakthrough and innovation .
6、 ... and , Multiple perspectives
Anything complex , They are all multifaceted , Need to look at it from multiple perspectives , The architecture of software is even more so . The side of a ridge makes a peak , Far, near, high, low . For Architecture , It is often necessary to go into both details and the overall situation . Trees and forests should be seen . In the field of software architecture , For the better 、 More comprehensive 、 Show the system architecture more clearly , People have summarized some common perspectives to describe architecture , Usually we call it a view . Commonly used 4+1 View ,4 Is a logical view 、 Process view 、 Development view 、 Physical view, etc ,1 Is a use case view . In practice, we can consciously use the above 4 View analysis software architecture .
边栏推荐
- Unity中的地平面简介
- Huawei releases wireless innovative products and solutions to build 5gigaverse Society
- 简易的安卓天气app(三)——城市管理、数据库操作
- Mythical games announced its cooperation with kakao games, a leading Korean game publisher, to promote business expansion in the Asia Pacific Region
- Eureka's timedsupersortask class (periodic task with automatic interval adjustment)
- The first phase of takin open source training camp is coming! Teach you to complete the full link voltage test hand in hand!
- Polymorphic & class object & registered factory & Reflection & dynamic proxy
- Original code, inverse code, complement calculation function applet; C code implementation;
- 记一次协程环境下类成员变量污染的问题
- 121. Redux detailed summary + effect drawing + Case
猜你喜欢

123. deep and shallow copy of JS implementation -- code text explanation

WCF RestFul+JWT身份验证

中部“第一城”,网安长沙以何安网?

Celsius 的暴雷,会是加密领域的“雷曼时刻”吗?

ESP8266/ESP32 +1.3“ or 0.96“ IIC OLED指针式时钟

The first phase of takin open source training camp is coming! Teach you to complete the full link voltage test hand in hand!

DSP online upgrade (1) -- understand the startup process of DSP chip

还在直接用localStorage么?全网最细:本地存储二次封装(含加密、解密、过期处理)

燎原之势 阿里云数据库“百城聚力”助中小企业数智化转型

中国国际电子商务中心与易观分析联合发布:2021年4季度全国网络零售发展指数同比增长0.6%
随机推荐
poi实现操作生成word表格和操作word中的图表数据
多态&Class对象&注册工厂&反射&动态代理
Es composite query workload evaluation
The more AI evolves, the more it resembles the human brain! Meta found the "prefrontal cortex" of the machine. AI scholars and neuroscientists were surprised
JobService的使用
Vuforia引擎支持的版本
The "first city" in Central China. How can Changsha be built?
Application configuration management, basic principle analysis
New programmers optimize a line of code on Monday and are discouraged on Wednesday?
Underlying principle of Concurrency: thread, resource sharing, volatile keyword
2. MySQL index optimization
Concept of naive Bayes
Unity vuforia recommended equipment
并发底层原理:线程、资源共享、volatile 关键字
安全百强 中坚力量!美创科技入选《2022年中国数字安全百强报告》
东方甄选双语直播火爆出圈,新东方转型初见端倪
What USB driver needs to know
uni-app进阶之创建组件/原生渲染【day9】
Mid 2022 Summary - step by step, step by step
Optimisation des performances - compression, chargement et formatage des images