Reading Notes 06 Software Architecture

To resolve the issue of who?

  As mentioned earlier, the software is actually to simulate real life into the computer, and the software is required to run up the hardware in the computer. To do this need to solve two problems:

  A business problem

  Under specific real-life state, not the software, who is the main problem is to solve what the problem is how to solve, how does it work?

  Second, computer problems

  1. How to use software to simulate real life?
  2. Simulated software and hardware facilities which need to be able to meet the requirements? And when the traffic is getting bigger, the software can support hardware was growing up, the performance of linear expansion?
  3. Service may fail because the hardware is, and how the software in case of a hardware failure, still be able to ensure the availability, allowing users uninterrupted access software provided?
  4. How to collect data generated by the software, provide the basis for the next phase?

  Who are the problem?

  1. The business owner needs to enhance business efficiency, reduce the cost of business, which is the motivation. This is actually a question of business, so the starting point for general software development here.

  2. Software engineer is a problem, the problem to solve business owner to business virtualization problem, and to solve software development and lifecycle of operations.

  What problems are there?

  1. The nature of the business problem, is the object of the business interests they serve, understand this, it is easy to figure out the concept and organization of the business. Emphasize once again, with the software, you can reduce the cost of business, without software, the business is the same as running. If only to follow the trend to use the software, but maybe increase the cost, this is the use of software first of all have to figure out before. We often say software and technology is the enabler of business, is in fact the original high cost fell to a low degree only, not with any new business. In addition, the software is not the only way to reduce the cost of doing business.

  2. In order to allow the software to run up a good, software engineers must understand the business objects serve their interests, namely business problems. Faced with these business problems to solve is how to split? What comes to the concept? These concepts which were solved What problems? We can not follow their own understanding, with its own set of conceptual system to express. If you do so, it can lead to two problems:
    1) the business can not communicate with us, because they can not understand the concept of what we've created, so they could not confirm that our understanding is correct.
    2) what we expressed, and not practiced in real life, we do not know whether these concepts can solve business problems.

  3. Software engineers also have to consider what kind of hardware the software up and running, how to run good, run fast, and can gradually grow with the flow of traffic?

  analyse problem

  For 2, in a limited time, there is no doubt not be a software engineer people to do so many things, so we need to get things done listed for analysis.

  First, the virtualization business needs to be done these things:

  1. Learn about the business, the core interests of the stakeholders involved in understanding business requirements described, and how the business is a spin-off benefits to meet these demands, and to complete the core interests of the entire organization through what kind of organizational structure, business operations and processes, which involve The concept, which has the right and responsibility.

  2. Through the study of business knowledge, for these concepts corresponding rights and responsibilities as well as organizational structure, business modeling, and the results of modeling with programming language. This is a business model, usually the result of real-life struggle of interests, is very stable.

  3. The business of learning how to participate in the stakeholder and business dealings, and complete the rights and obligations of each person, and through the programming language, combined with the business model to achieve those dealing with communication channel. This part is the most frequent change, are a combination of relationships. Knowing this, the follow-up to achieve very helpful.

  4. How to run the business result of persistence, and by appropriate means the data persistence, load out at the right time right place. This part of the infrastructure and related changes may also be more frequent.

  Second, how to run the code, you need to accomplish these things:

  1. How many hardware devices need to meet the needs of access?
  2. Code to be divided into a number of components to be deployed on what hardware devices?
  3. How these codes connected to each other through a hardware device?
  4. When traffic grows beyond the capacity of a machine, the software can be deployed to support the new machine by the way, support the expansion of the business?
  5. When a table or some hardware failure, software is still not able to affect the user's access.
  6. Data generated by software running, can support extracted and analyzed to provide a basis for the next round of business decisions.

  Third, if divided into different roles to do these things, we need an organizational structure to organize the preparation and operation of the code and what needs to be done:

  1. The completion of I and II listed in these things, what roles need to participate?
  2. These are basic things need to happen in order, how to ensure that there will be no loss of information transfer different roles in the process? Or even if there is a loss, you can quickly correct?
  3. How is coordination between these roles, in order to complete the common needs of virtualized business?

  What architecture will generate

  If the business is simple enough, small enough user traffic, time requirements are not urgent, then one person, one machine is enough, this is generally not the time to discuss architecture. As more and more traffic to the machine it will be more and more, the deployment unit code will split more and more.

  Also more and more people will need to complete an increasing number of deployment unit spun off, even with a deployment unit also needs to be split into more than collaboration. But we need to be aware that the entire concept of the system, or that the business model will not have any change, or do the same these things. The only difference is that increasing the amount, exceeding the capacity of a single people and a single machine, continue to grow. This will result in the following framework:

  1. As the flow increases, we will find that the software subordinates machines will begin in accordance with the structure of the tree began to spin, will form the hardware architecture of subordinates. This is why the formation of hierarchical deployment.

  2. In order to achieve and landing operations in software, requiring different techniques distal, business people codes, like the memory layer simultaneously al., Need be cut into the structure of the code. This is why the formation of layered code form of the code architecture. Of course, when these roles are done by one person, does not necessarily have the code architecture, they tend to be more chaotic.

  3. As more and more people involved, the organizational structure will be formed to develop the system. Because the code development process is a continuous process that will use the process to different roles in series, which is software engineering.

  4. In order to complete the business work, they need to be identified business structure and support business organizational structure, processes and business operations. This is virtualized business structure and organizational structure, but also need to be reflected in the code, and to maintain the same in real life.

  What is a software architecture

  This is where software is more complex, involving business system software itself, and the virtual business system. Based on the above analysis, the resulting architecture, whether it be software architecture that it?

  1. Software increases because the flow split into different operating units, the deployment architecture formed on different machines, belongs to the software architecture.

  2. Each execution unit in order to allow people in different roles, such as front-end service, data storage can be operated in parallel, the divided code structure, also belong to the software architecture.

  So when we say software architecture, we must talk clearly, whether talking about the deployment architecture or code architecture. Software architecture floor, organizational structure and processes need to protect the software and left the software architecture is an empty word.

  Also a lot of people say that architecture has evolved. Architecture actually is constantly increasing in volume, exceeding the capacity of a single server, and gradually spin-off, while the ability to cause more than a single person, continue to increase staff, work content constantly spin-off formation. This in itself is the meaning of architecture lies. No matter how the spin-off, reached the target without any change in the computer business it is to complete virtualization.

Guess you like

Origin www.cnblogs.com/z245894546/p/11037395.html