admin管理员组

文章数量:1663034

目录

0.前言

1.软件体系结构的概念

2.系统、企业和软件体系结构

3.体系结构和视图

4.体系结构模式Architectural Pattern

5.怎样才是好的体系结构


0.前言

        本系列文章旨在软件设计与体系结构的知识点,资料来源四川大学授课内容,可用于期末复习,笔者理解尚浅,文中不正之处静待批正。加粗部分为重点。

第二章整体框架

1.软件体系结构的概念

软件体系结构(software architecture)的定义:系统的软件架构是对系统进行推理所需的一系列结构,包括软件元素、它们之间的关系以及两者的属性。

software architecture的作用:架构是业务目标与最终系统之间的桥梁

架构的解释:

①架构是一套软件结构

结构(structures)是通过某种关系连接在一起的一组元素

三类体系结构(architecture structures):

1)模块结构(Module structure)

模块结构将系统划分为多个执行单元;静态结构;支持可修改性

2)组件和连接器(C&C)结构(Component-and-connector(C&C) structure)

侧重于各元素在运行时相互作用以执行系统功能的方式;动态结构;支持性能、安全性和可扩展性。

3)分配结构(Allocation structure)

将软件结构映射到系统环境中;支持性能

②架构是一种抽象(abstraction)

接口将元素的细节划分为公共部分和私有部分,而架构则关注接口的公共部分

③每个软件都有一个软件架构

每个系统都由元素及其之间的关系组成。架构可以独立于其描述description(源代码)或规范specification(文档)而存在

④架构包括行为

⑤并非所有架构都是好的架构

一个架构可以允许或阻止系统实现其行为、质量属性和要求

2.系统、企业和软件体系结构

①系统体系结构System architecture(比如数据采集和分析系统)

系统架构将功能映射到硬件和软件上

系统架构涉及整个系统,包括硬件、软件和人

②企业体系结构Enterprise architecture

企业架构是对一个组织的流程、信息流、人员和子单位的结构和行为的描述

③The relationship of three architectures

系统和企业架构为软件架构提供了环境和限制;软件架构必须融入系统和企业

3.体系结构和视图

①对于架构为什么我们需要这么多结构

现代系统往往过于复杂,难以同时掌握

我们在任何时刻都只关注软件系统的一个结构

②视图view

定义一个视图是一组连贯的架构元素的表示,由系统利益相关者编写,也由系统利益相关者阅读。

视图与结构的关系:架构设计结构;架构记录这些结构的视图;视图是结构的一种表示方法

③模块结构Module structures(Elements:module of some kinds,Relation:is a...or use

模块结构是一个系统的组成结构;用UML图来表示:类图、对象图和包图等

模块结构的作用:每个模块的主要功能是什么;允许使用哪些其他元素;使用和依赖哪些软件;通过通用化或专业化与其他模块相关联

Decomposition structure

Element: Module

Relation: Is a submodule of

Quality Attributes affected: Modifiability可修改性

Uses structure:

Element: Module

Relation: Uses( i.e., requires the correct presence of)

Quality Attributes affected: Subsetability, extensibility子集性、可扩展性

Layer structure

Element: Layer

Relation: Uses the services of

Quality Attributes affected: Portability便携性

Class structure

Element: Class, object

Relation: Is an instance, shares access methods of是一个实例,可共享访问

Quality Attributes affected: Reusability,extensibility可重用性,可扩展性

Data model structure

Element: Data entity

Relation: Data generalizes, specializes

Quality Attributes affected: Modifiability

④C&C structures(Elements: runtime component,Relation: connector)

由 UML 图表表示:顺序图、活动图和状态图等

C&C结构的作用:有哪些主要执行组件;有哪些主要共享数据存储;系统的哪些部分被复制;数据如何在系统中传输;系统的哪些部分可以并行运行

Service structure(动态结构)

Element: Service, registry

Relation: Runs concurrently with, excludes, precedes同时运行\排除运行\先于运行

Quality Attributes affected: Interoperability, modifiability互操作性、可修改性

Concurrency structure(动态结构)

Element: Processes, threads

Relation: Can run in parallel

Quality Attributes affected: Performance, availability性能、可用性

⑤Allocation structures(Elements: module, environmental elements,Relation: map)

由 UML 图表表示:部署图和组件图等

作用:每个软件元素在什么处理器上执行;在开发、测试和系统构建过程中,每个元素都存储在哪些文件目录中?各软件要素在开发团队中的分配情况如何?

Deployment structure

Element: Components, hardware element

Relation: Allocated to, migrates to分配到,迁移到

Quality Attributes affected: Performance, security, availability

Implementation structure

Element: Modules, file structure

Relation: Store in

Quality Attributes affected: Development efficiency发展效率

Work assignment structure

Element: Modules, organizational units模块、组织单位

Relation: Assigned to

Quality Attributes affected: Development efficiency

⑥The relationship among different structures

每种结构都为系统提供了不同的视角和设计方法

这些结构相互依存,一个结构的元素与其他结构的元素相关联

个别项目有时会认为一种结构占主导地位,而忽略其他结构

4.体系结构模式Architectural Pattern

架构模式是一种通用架构

①Layered pattern分层模式

层layer是一组连贯的相关功能

分层模式使用的软件元素之间的关系是严格单向的

层的设计通常是为了隐藏彼此的实现

②Shared-data pattern共享数据模式

共享数据模式包括创建、存储和访问持久数据的组件和连接器

The elements is a repository存储库usually takes the form of a database

The connectors are protocols for managing the data管理数据的协议, such as SQL

③Client-server pattern客户端-服务器模式

客户端-服务器模式是最常用的实用模式

The components are the clients and servers

The connectors are protocols and messages that share among each other to carry out the system’s work

④Multi-tier pattern多层模式

多层模式描述了如何在不同的硬件和软件子集中分配系统的组件

该模式将通用部署结构(generic deployment structure)特殊化

⑤Competence center and platform pattern能力中心和平台模式

该模式专门用于软件系统的工作分配结构

5.怎样才是好的体系结构

①流程建议Process recommendations

单个建筑师或小组被确定为领导者

必须有系统技术要求和明确、优先的定性属性

必须使用所有人都能理解的约定符号,对架构进行详细记录

应评估架构提供系统重要质量属性的能力

架构应允许创建一个骨架系统,并在此基础上逐步增加功能

②产品建议Product (or structural) recommendations

使用信息隐藏、关注点分离和定义明确的接口实现定义明确的功能模块

质量属性应使用众所周知的架构模式和针对每种属性的特定策略

切勿依赖于特定版本的商业产品或工具

将数据生产者与数据消费者分开

不要期望模块与组件之间是一一对应的

每个进程的编写都应使其对特定处理器的分配可以轻松更改,甚至可以在运行时更改

体系结构应以少量的组件交互方式为特征。系统应以相同的方式做相同的事情,这将有助于理解、缩短开发时间、提高可靠性

架构应包含一组特定的资源争用区域,并明确规定和维护其解决方法

本文标签: 第二章体系结构知识软件Architecture