深色模式
Introduction to Software Architecture 软件架构简介 📐
目标 🎯
在观看本视频后,您将能够:
描述 软件架构是什么;
解释 精心设计的软件架构的重要性;
阐述 软件架构如何影响技术栈选择及生产环境决策;
列举 软件架构设计过程中产生的若干文档或工件。
软件架构定义 🖥️
软件设计与文档化发生在软件开发生命周期(SDLC)的设计阶段。简单来说,软件架构 是系统的组织结构。它作为软件系统的蓝图,供程序员开发系统内各个交互组件时参考。
架构包括了软件系统的基本结构,并解释了该系统的行为。软件架构定义了系统中各个组件如何相互作用、操作环境以及设计时所遵循的原则。

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

精心设计的架构为何重要 💡
一个精心设计的软件架构对多个方面至关重要:
平衡利益相关者的需求:架构作为团队成员之间沟通的基础,帮助协调不同的需求。
早期设计决策的影响:架构代表了开发过程中的初步设计决策,这些决策会影响后续的编码实现。
支持灵活应变:良好的架构设计可以在需求变化时保持敏捷。
延长软件生命周期:即使实施细节有所变化,结构清晰的架构仍能延长软件系统的生命周期。

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

| 技术栈 | 组成部分 |
|---|---|
| 软件 | 数据库、操作系统等 |
| 编程语言 | Python、Java、C++ 等 |
| 框架 | React、Spring 等 |
| 库 | Lodash、TensorFlow 等 |
架构师必须清楚各个栈的优缺点,以便预见到开发过程中的需求。
架构设计阶段的工件 📝
在软件架构设计阶段,通常会产生几个关键工件,用于将设计方案传达给各方利益相关者。常见的架构设计文档包括:
软件设计文档(SDD)
架构图
统一建模语言(UML)图

软件设计文档(SDD) 📄
软件设计文档是技术规格的集合,指明了设计的实现方式。它提供了软件的功能描述,并包括设计时考虑的事项,如:
假设
依赖关系
限制条件
需求
目标
方法论

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

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

生产环境部署考虑 ⚙️
软件架构还与生产环境的部署决策密切相关。架构决定了软件发布时所需的运行环境。
生产环境 包括了支撑应用程序运行和交付给最终用户的基础设施,例如:
服务器
负载均衡器
数据库

结论 ✨
通过本视频,您了解了:
软件架构 作为蓝图,代表了应用程序的基本组织结构。
精心设计的架构对于团队沟通至关重要。
软件架构代表了最早的设计决策,这些决策一旦开始开发就很难改变,但可以适应不断变化的需求。
架构设计影响了技术栈的选择和生产环境的部署。
软件架构设计阶段产出的工件包括:SDD、架构图和UML图。
