Path to Architect: initial knowledge of software architecture

Source: Internet
Author: User

Source: http://brighter.iteye.com/blog/224582

Software Architecture ):

1. It is a system sketch and the basis for building computer software practices.

2. It is a series of abstract patterns used to guide various aspects of the design of large-scale software systems.

3. The description directly forms the abstract components of the system and communication between components.

4. In the implementation phase, these abstract components are refined into actual components, such as a specific class or object. In the Object-Oriented field, interfaces are usually used to connect components.
Software Architecture refers to the combination and arrangement of different parts of the system from different perspectives on the basis of certain design principles, forming multiple structures of the system and forming an architecture, it includes the components of the system, the external visible attributes of components, and the relationship between components. The external visibility attribute of a component refers to the assumptions made by other components on the component.
In the "Software Architecture Introduction", David Garlan and Mary Shaw think that software architecture is a design level related to the following issues: "In addition to computing algorithms and data structures, designing and determining the overall structure of the system becomes a new problem.

Structural issues include the overall organizational structure and global control structure; Communication, synchronization and data access protocols; functional allocation of design elements; physical distribution; composition of design elements; calibration and performance; select an alternative design."
However, the architecture is not only a structure. IEEE Working Group on Architecture defines a system as the highest level concept in its environment ". The architecture also includes "compliant" system integrity, economic constraints, aesthetic needs and styles. It not only focuses on internal considerations, but also on the overall considerations of the system in the user and development environments of the system, that is, it also focuses on external considerations.
A software architect must have extensive theoretical knowledge and experience to implement and manage the advanced design of software products. Software architects define and design software modularization, interaction between modules, user interface style, external interface methods, innovative design features, and object operations, logic, and processes of high-level things.
Based on our concerns, we can divide the architecture into three types:

· Logical architecture. Relationships between components in software systems, such as user interfaces, databases, external system interfaces, and commercial logic components.

· Physical architecture. How software components are placed on hardware.

· System architecture. Non-functional features of the system, such as scalability, reliability, robustness, flexibility, and performance.

The design of the system architecture requires the architect to have excellent knowledge of the functions and performance of software and hardware, which is undoubtedly the most difficult task in architecture design.

In addition, from each perspective, we can see two elements of the Architecture: component division and design decision. Just as the software has its own goals, what are the goals of architecture design?

In general, the software architecture design should achieve the following goals:

· Reliability ). Software systems are extremely important for users' business operations and management. Therefore, software systems must be very reliable.

· Secure ). The business value of the transactions undertaken by the software system is extremely high, and the security of the system is very important.

· Scalable ). The software must be able to maintain reasonable performance when the user's usage and number of users increase rapidly. Only in this way can we adapt to the possibility of expanding the user's market.

· Customizable ). The same set of software can be adjusted based on different customer groups and changes in market demands.

· Extensible ). When the emergence of new technologies, a software system should allow the import of new technologies, so as to extend the functions and performance of existing systems and maintain the Maintainability (maintainable ). Maintenance of software systems includes two aspects: first, to eliminate existing errors, and second, to reflect new software requirements to existing systems. An easy-to-maintain system can effectively reduce the cost of technical support-customer experience ). Software systems must be easy to use.

· Time to market ). Software Users must face intra-industry competition, and software providers must also face intra-industry competition. It is very important to compete for market opportunities as quickly as possible.
----------- Slightly modified according to entries in Baidu encyclopedia

Related Article

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.