Code niche, a platform for technology sharing in the Android field
Author: android Grassroots king
Links: https://www.jianshu.com/p/30bfa1f73532
Disclaimer: This article is Android Grassroots original, forwarding, etc. please contact the original author authorization. definition
Software architecture refers to the design decisions that are made on various aspects of the software, both behavioral and structural.
Structurally:
Represents how a product divides multiple parts, and the relationships between those parts.
On the behavior:
Includes external behavior and internal behavior.
External behavior describes how a product interacts with users, other systems, and external devices.
Internal behavior describes the interface between product components.
Attention:
A schema can be used as a noun or as a verb.
As a noun, it represents a set of abstractions, rules, the structure constraints of a product, such as a blueprint or a document for building a specification, which describes the object to be built;
As a verb, the process of making these abstractions and rules; the relationship between architecture and design .
Architecture is part of the design, highlighting some of the details through abstraction, while ignoring the other details.
Outstanding details: such as structure, behavior rules, how to assemble components, apply rules, etc.
Neglected details: How the component is designed, developed, and so on; Architecture main focus
Functional performance
What functionality the software provides to the user.
Variability
What changes the software may need in the future. Which may not need to be changed.
Performance
What performance the software expects to achieve in the future.
Capacity
How many users are using. How many users need to save the data.
Build-up
How to build into a set of components. Ability to independently implement, validate, reuse, etc.
Modular
How to break down a software task into a separate module. Support for independent development, etc.
Security
How data security is guaranteed. Permissions control. Withstand attacks. such as
Eco-System
How to interact with other systems and devices. a good architecture
For a software architecture, the architect's usual approach is to compromise.
In addition to considering basic functional requirements and quality requirements, they also need to consider the cost of inputs (human, financial, time, etc.). Therefore, the architecture design is optimal, there is no absolute answer or correct answer.
From our experience, the architecture should be evaluated to determine whether it meets our needs.
The architect can explain how to support each scenario by asking the architect to ask questions to assess the architecture and find the risk that the architecture does not meet the quality concerns.
You can also determine the properties of a schema to determine whether the schema is satisfied by modeling or simulating one or more aspects of the system. class Library, framework, design pattern, architectural concept differences
In the development of some regular projects, the number of words will be mentioned above,
So, what is the specific difference between them?
Class Library
It can also be called a tool library, which is an encapsulation for solving a problem.
What it does: get developers out of the bottom code (without having to reinvent the wheel), focus on specific issues and business logic, and bring convenience to programmers.
Frame
Relative to the library more macro, is a group of collaborative work of the class, to a certain extent, the control of the overall structure and process, is to serve the business.
Role: Enables designers to reuse the overall design in a particular area (without having to reinvent the wheel), and to bring coding constraints to programmers.
Design Patterns
is an effective solution for a class of problems.
Role: For developers, it is the reuse of ideas (problem solutions), but only for the local.
Architecture
is a software of the highest level of overall structure and planning.
Relative to the design pattern, it is a "solution" for the software as a whole.
A schema may contain multiple (0 to N) frameworks and multiple (0 ~ n) tool libraries,
A framework may contain multiple (0 ~ n) Design patterns.
A schema may contain multiple (0 ~ n) frameworks and multiple (0 ~ n) ToolPak
For example:
A Java Web project that can contain SPRING/SPRINGMVC + Hibernate/mybatis + ... and many other frameworks;
Tool Library is more, such as: JSON library, XML library, date library, picture library, etc.;
A framework may contain multiple (0 ~ n) Design patterns.
In general development, there are many kinds of common frame patterns, such as MVC/MVVM/MVP/MTV/CBD and so on.
MVC is a framework pattern rather than a design pattern, and generally MVC can be seen as a combination of 3 design patterns: The Observer pattern, the strategy pattern, and the combined pattern.
--Frame is a great wisdom, used for the division of Software design;
--Design pattern is a small skill, propose a solution to the specific problem, in order to improve the code reuse rate, reduce the coupling degree.
The code you write can also contain multiple (0 ~ n) Design patterns, except that this section compares the class libraries, frameworks, design patterns, and architectural concepts. Reference:
The beauty of architecture
"Enterprise Architecture Application"
......
This article refers to a number of data, a more conceptual, if there is a problem, please correct me in time.