Skip to content

Introduction to Software Architecture 软件架构简介 📐

目标 🎯

在观看本视频后,您将能够:

  • 描述 软件架构是什么;

  • 解释 精心设计的软件架构的重要性;

  • 阐述 软件架构如何影响技术栈选择及生产环境决策;

  • 列举 软件架构设计过程中产生的若干文档或工件。

软件架构定义 🖥️

软件设计与文档化发生在软件开发生命周期(SDLC)的设计阶段。简单来说,软件架构 是系统的组织结构。它作为软件系统的蓝图,供程序员开发系统内各个交互组件时参考。

架构包括了软件系统的基本结构,并解释了该系统的行为。软件架构定义了系统中各个组件如何相互作用、操作环境以及设计时所遵循的原则。

image 57.png

架构的功能

软件架构捕捉了早期的设计决策,这些决策一旦实现后通常很难修改。架构不仅涉及功能性设计,还包括应用程序的非功能性要求,如:

  • 性能

  • 可扩展性

  • 可维护性

  • 互操作性

  • 安全性

  • 可管理性

image 58.png

精心设计的架构为何重要 💡

一个精心设计的软件架构对多个方面至关重要:

  • 平衡利益相关者的需求:架构作为团队成员之间沟通的基础,帮助协调不同的需求。

  • 早期设计决策的影响:架构代表了开发过程中的初步设计决策,这些决策会影响后续的编码实现。

  • 支持灵活应变:良好的架构设计可以在需求变化时保持敏捷。

  • 延长软件生命周期:即使实施细节有所变化,结构清晰的架构仍能延长软件系统的生命周期。

image 59.png

架构与技术栈的关系 🛠️

架构设计也指导了所选择的技术栈。技术栈 是指为构建系统所使用的所有技术,包括软件、编程语言、库和框架。
架构决策关注非功能性要求,因此,在设计阶段选择满足这些需求的技术栈至关重要。

image 60.png

技术栈组成部分
软件数据库、操作系统等
编程语言Python、Java、C++ 等
框架React、Spring 等
Lodash、TensorFlow 等

架构师必须清楚各个栈的优缺点,以便预见到开发过程中的需求。

架构设计阶段的工件 📝

在软件架构设计阶段,通常会产生几个关键工件,用于将设计方案传达给各方利益相关者。常见的架构设计文档包括:

  • 软件设计文档(SDD)

  • 架构图

  • 统一建模语言(UML)图

image 61.png

软件设计文档(SDD) 📄

软件设计文档是技术规格的集合,指明了设计的实现方式。它提供了软件的功能描述,并包括设计时考虑的事项,如:

  • 假设

  • 依赖关系

  • 限制条件

  • 需求

  • 目标

  • 方法论

image 62.png

架构图 📊

架构图展示了系统各组件、它们的交互、约束和局限。它清晰呈现了设计中使用的架构模式。架构模式是针对常见问题的通用、可重用解决方案,这一部分将在接下来的内容中深入讨论。

image 63.png

UML图 🖼️

UML图使用通用的编程语言独立符号来表达系统的结构和行为。UML图也将在后续的讲解中详细探讨。

image 64.png

生产环境部署考虑 ⚙️

软件架构还与生产环境的部署决策密切相关。架构决定了软件发布时所需的运行环境。
生产环境 包括了支撑应用程序运行和交付给最终用户的基础设施,例如:

  • 服务器

  • 负载均衡器

  • 数据库

image 65.png

结论 ✨

通过本视频,您了解了:

  • 软件架构 作为蓝图,代表了应用程序的基本组织结构。

  • 精心设计的架构对于团队沟通至关重要。

  • 软件架构代表了最早的设计决策,这些决策一旦开始开发就很难改变,但可以适应不断变化的需求。

  • 架构设计影响了技术栈的选择和生产环境的部署。

  • 软件架构设计阶段产出的工件包括:SDD、架构图和UML图。

image 66.png