Software Architecture: A summary of basic concepts

Source: Internet
Author: User
Tags relative java web

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.



Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.