Software Architecture Design

Source: Internet
Author: User

Software Architecture Overview

Software architecture is a certain form of structured elements, that is, a collection of components, including processing components, data components and connection components. The processing component is responsible for processing the data, the data component is the information that is processed, and the connecting component connects the different parts of the architecture. Software architecture is a level of software design process, which transcends the algorithm design and database design in the process of computation. Architectural issues include overall organizational and global control, communication protocols, synchronization, data access, assigning specific functions to design elements, organization of design elements, scale and performance, selection among design options, and so on. Software architecture processing algorithms and data structures on the whole system structure design and description of some problems, such as the global organization and global control structure, communication, synchronization and data access protocols, design component function definition, physical distribution in the composition, design options, evaluation and implementation.

Software architecture includes one or a set of software artifacts, the external visible features of software artifacts, and their interrelationships. Among them, "software external visibility" refers to the services provided by software components, performance, characteristics, error handling, sharing resources and so on. For the development of complex systems and large-scale systems, the design of software architecture is the fundamental measure to ensure the quality of software. Specifically, the software architecture has the following effects:

(1) Software architecture is the means by which project stakeholders communicate with each other.

(2) Software architecture is the embodiment of early design decision.

(3) Software architecture is a model that can be transferred and reusable.

Software Architecture Modeling

The first problem in designing software architectures is how to represent software architectures, that is, how to model software architectures. According to the different emphases of modeling, the model of software architecture can be divided into 5 kinds, namely structure model, frame model, dynamic model, process model and function model.

(1) Structural model: This is one of the most intuitive and common modeling methods. This method depicts the structure with architecture components, connectors (connector) and other concepts, and tries to reflect the important semantic content of the system through the structure, including the system configuration, constraints, implied assumptions, styles, properties, etc. The core of the research structure model is the architecture description language.

(2) Framework model: The framework model is similar to a structural model, but it is less focused on describing the details of the structure and more on the overall structure. The framework model mainly aims at setting up the structure of the problem and adapting it to some special problems.

(3) Dynamic model: Dynamic model is to complement the structure model and frame model, and to study the behavior nature of "large particle" of the system. For example, describe the reconfiguration or evolution of a system. Dynamic can refer to the overall structure of the system configuration, the establishment or removal of communication channels or calculation process. This type of system is motivational.

(4) Functional model: The model holds that the architecture is composed of a set of functional components, and the lower layer provides services to the upper layers. He can be seen as a special framework model.

In 1995, Kruchten proposed a "4+1" view model. The 4+1 view model describes the software architecture from 5 different perspectives, including logical views, process views, physical views, development views, and scene views. Each view concerns only one side of the system, and 5 views are combined to reflect the entire contents of the system's software architecture.

(1) Logical view: The main support system functional requirements, that is, the system provided to the end user services.

(2) Development view (development view): Also known as Module View, which focuses on the development and management of software modules.

(3) Process view: Focus on the operating characteristics of the system, focusing on some non-functional requirements, such as system performance and availability.

(4) Physical view (physical view): The main consideration is how to map software to hardware, it usually takes into account the system topology, system installation, communication and other issues.

(5) Scene (scenarios): can be regarded as the abstraction of those important activities, it makes four views organically linked, in a sense, the scene is the most important requirement abstraction.

Software Architecture Style

One of the core issues of software architecture design is the ability to use repetitive architectural patterns, that is, the ability to achieve schema-level software reuse. This means that the same architecture can be used in different software systems. A software architecture style is a idiomatic pattern (idiomatic paradigm) that describes how systems are organized in a particular application domain. Architectural style defines a system family, a schema that defines a glossary and a set of constraints. The glossary contains a number of artifacts and connector types, and this set of constraints indicates how the system combines these components and connectors. Architectural style reflects the structure and semantic characteristics common to many systems in the domain, and guides how to effectively organize each module and subsystem into a complete system. In this way, the software architecture style defines the terminology used to describe the system and a set of principles that govern the component system.

The general architecture style is categorized as follows:

(1) Data flow style: Batch sequence, pipeline/filter.

(2) Call/Return style: Main program/subroutine, object oriented style, hierarchical structure.

(3) Independent component style: Process communication, Event system.

(4) Virtual machine style: Interpreter, rule based system.

(5) Warehouse style: Database system, hyper-text system, blackboard system.

Software Architecture Design

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.