Coursera 笔记

Module 04 · Software Architecture, Design, and Patterns

Introduction to Software Architecture软件架构简介

Coursera ↗

目标

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

  • 描述 软件架构是什么;
  • 解释 精心设计的软件架构的重要性;
  • 阐述 软件架构如何影响技术栈选择及生产环境决策;
  • 列举 软件架构设计过程中产生的若干文档或工件。

软件架构定义

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

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

架构的功能

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

  • 性能
  • 可扩展性
  • 可维护性
  • 互操作性
  • 安全性
  • 可管理性

精心设计的架构为何重要

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

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

架构与技术栈的关系

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

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

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

架构设计阶段的工件

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

  • 软件设计文档(SDD)
  • 架构图
  • 统一建模语言(UML)图

软件设计文档(SDD)

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

  • 假设
  • 依赖关系
  • 限制条件
  • 需求
  • 目标
  • 方法论

架构图

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

UML图

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

生产环境部署考虑

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

  • 服务器
  • 负载均衡器
  • 数据库

结论

通过本视频,您了解了:

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