What is the difference between a software framework and a software architecture？
Software frameworks are reusable "semi-finished" software for domains (such as ERP, computing, etc.) that implement common parts of the domain and provide well-defined points of variability to ensure flexibility and extensibility. In other words, the software framework is the softwarenation of the results of domain analysis and the template for the final application in the domain.
With the expansion of software scale, wide application and the development of software reuse technology, the software reuse based on subroutine and class has a lot of shortcomings:
(1) The library of the subroutine is becoming more and more huge, which makes it difficult for its users to master
(2) Most classes are too small to do all the useful work by themselves
It is for these reasons that a set of classes (modules) are considered as a whole in reuse, resulting in a software framework. The software framework contains at least the following components:
(1) A series of modules to complete the calculation become components
(2) The relationship between components and the interaction mechanism
(3) A series of variable points (hot spots, or adjustment points)
(4) Behavior adjustment mechanism of variable point
Developers through the software framework behavior adjustment mechanism, peculiar to the general application domain software module bound to the variable point of a software framework, and got the final application system, this process is called software example of a software framework, the existence of software framework allows developers will be the main energy on the development system of the module, so as to improve software productivity and quality.
The behavior adjustment mechanism of the software framework refers to how to adjust the variable part of the framework for the specific application and how to add the method and rules of the specific application module at the variable point.
Ii. Software architecture
Software architecture is a sketch of a system. The objects described by software architecture are abstract components that directly constitute the system. The wires between the components describe the communication between the components explicitly and in relative detail.
Software architecture, by definition, is divided into two camps of 'constituent' and 'decision-maker', which are described as follows:
The componentized view of software architecture is that the system is described as computing components and their interactions. It has two very obvious characteristics:
Focus on the object of architectural practice -- software, with the software itself as the object of description.
This paper analyzes the composition of the software, and shows that the software is not a whole in the sense of "atom", but a whole composed of different parts connected through a specific interface, which is very important for software development.
Decision-makers believe that software architecture involves a series of decisions, mainly including:
Organization of software systems
Choose the structural elements that make up the system, the interfaces between them, and the behavior that these elements exhibit when they cooperate with each other
How do you combine these elements so that they gradually synthesize into larger subsystems?
The architectural style used to guide the organization of the system: these elements and their interfaces, collaborations, and combinations
Software architecture is concerned not only with the structure and behavior of the software itself, but also with other features: usage, functionality, performance, elasticity, reuse, understandability, economy, and technical constraints and trade-offs.
Personal understanding: When software engineering has a certain scale, software development does not exist in the form of data structure + algorithm, but "divide and conquer" software based on many factors such as technical choices and user needs. The main task of the architect is to divide the software into different modules and define the interfaces between modules.