写点什么

软件架构基础

用户头像
dapaul
关注
发布于: 2020 年 06 月 08 日

什么是软件架构

软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各方面的设计。(维基百科)

与软件架构相关的概念及关系如上图。

软件架构是构建这个系统所需要的一组结构,可以拆解为架构元素(组件)和元素间关系。软件架构由不同的视图来描述,不同的视图的关注点不同。架构文档应当根据不同的相关方用不同的架构视图描述。



软件架构工具

4+1架构视图

单一的视图难以完整地表达架构,因此需要完备的视图集。

Philippe Kruchten在他的论文《Architectural Blueprints—The “4+1” View Model of Software Architecture》中提出了软件架构的4+1视图,里面4个不同的架构视图,每个都描述架构的一个重要方面。

逻辑视图

设计的对象模型。



开发视图

描述了在开发环境中软件的静态组织结构。



物理视图

描述了软件到硬件的映射,反映了部署特征。



过程视图

捕捉设计的并发和同步特征。



场景

场景负责把视图串联在一起。每个场景负责描述在一个视图中的多个架构元素如何协作,以完成一个该场景需求。



扩展阅读 4+1架构视图

C4模型

C4 模型也是描述软件框架的一种模型,由一系列分层的软件架构图组成。

C4 代表上下文(Context)、容器(Container)、组件(Component)代码(Code)。可以用这些图表来描述不同缩放级别的软件架构,每种图表都适用于不同的受众。

系统上下文

描述所构建的软件系统,以及系统与用户及其他软件系统之间的关系。

容器

将软件系统放大,显示组成该软件系统的容器,如应用程序、数据存储、微服务等。

组件

将单个容器放大,显示其中的组件,这些组件映射到代码中的真实抽象。

代码

将单个组件放大,显示组件的实现方式。

包括:

  • 类图

  • 时序图

  • 状态图

...



参考 C4架构模型

UML

统一建模型语言(Unified Modeling Language),以图形的方式来描述软件的概念。



UML可用来描述:

  • 某个问题领域

  • 构思中的软件设计

  • 描述已完成的软件实现

UML静态图

通过描述类、对象和数据结构以及它们之间的关系来描述软件要素中不变的逻辑结构。

静态图有:

  • 用例图

  • 对象图

  • 类图

  • 组件图

  • 包图

  • 部署图

UML动态图

通过描绘执行流程或实体状态变化的方式,来展示软件实体在执行过程中变化的过程。

动态图有:

  • 协作图

  • 序列图

  • 活动图

  • 状态图



通用模型元素

在图在使用的概念统称为元素。模型元素以及对应的符号如下图:



模型元素关系

模型元素间的关系也属于模型元素,常见的关系及符号如下图:



软件架构方法

软件设计需要根据具体场景和需求设计,不能单纯地应用新的或酷炫的技术。



软件架构设计可以分为三个阶段:需求分析, 概要设计以入详细设计。

需要分析

  • 用例图

  • 活动图(关键的业务流程)

  • 状态图

  • 时序图(系统间的调用关系)



概要设计

  • 部署图

  • (子系统级)时序图

  • (子系统级)活动图

  • 组件图

  • (组件)时序图



详细设计

  • 类图

  • (类)时序图

  • 状态图

  • (方法)活动图



阅读材料:

软件架构入门

软件架构编年史

《UML精粹》



用户头像

dapaul

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
学习了
2020 年 06 月 08 日 09:18
回复
没有更多了
软件架构基础