当前位置:网站首页>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 .

原网站

版权声明
本文为[Longcheng deficit]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202221440142724.html