Logo
Section 1 / 4

软件架构简介

本节课将讨论软件架构和REST。

导入

软件架构简介

本节课将讨论软件架构和REST。

在本章中,我们将介绍构建基于 REST 的软件架构的基本要点。

  • 我们将探讨什么是软件架构。
  • 接着,我们将学习如何为 RESTful Web 服务选择合适的框架:Web 框架、业务层技术以及持久化机制。
  • 最后,我们将回顾一些常见的设计模式与最佳实践,并了解本课程涵盖的应用架构。

本章的目标是为后续关于使用 REST 架构风格进行数据驱动开发的讨论建立背景。

什么是软件架构?

软件架构指的是软件系统的高层级构成要素。如同现实世界中的建筑结构,软件架构定义了软件组件的高层系统结构,规范了组件层次的设计方法,并对这一结构进行文档化。它还形成了一套架构设计决策,展示系统的结构及其背后的逻辑依据。

在产品开发初期,架构师会创建一个软件架构,作为项目技术需求的设计与开发基础。

非功能性需求

回顾软件开发的发展历程,早期主要关注功能需求和数据驱动的流程。然而,现代应用开发已将关注点扩展到一系列质量属性,包括:

  • 可扩展性
  • 可靠性
  • 性能
  • 可伸缩性
  • 可维护性
  • 可用性
  • 安全性
  • 向后兼容性
  • 易用性

这些属性在软件架构中起着关键作用,通常被称为非功能性需求。

随着时间推移,出现了许多针对功能与非功能性需求的架构模式与风格。软件架构通常建立在这些经过验证的架构机制之上,具有坚实的基础。

...
non-functional requirements

如何选择合适的架构

不良的架构可能带来诸多风险,例如系统不稳定、无法满足当前或未来的业务需求,或难以管理生产环境。

当架构师最初分析新系统的需求时,应评估是否可以利用现有的成熟架构模式来设计和实现该用例。

由于在项目后期更改架构需要耗费大量时间和成本,因此这一初始阶段至关重要。在构建软件架构时必须格外谨慎,因为架构不仅成本高昂,而且难以修改,一旦出错可能危及整个应用。

软件架构的目标不应仅限于基本功能,还应具备灵活性,能够适应新的业务需求和挑战。例如,正在开发的系统可能需要在一年内将注册用户数量翻倍。

  • 架构中的每个组件应具有单一职责,或聚合一致的功能。
  • 特定组件不应了解其他组件的内部细节。
  • 应避免重复,特定功能应在唯一且相关的模块中实现。

选择正确软件架构的重要性

利益相关者之间的有效沟通是良好架构的关键。正如软件架构设计有成熟的模式与最佳实践可供参考一样,降低复杂性的最常用方法是分离关注点和视角,使不同利益相关方能够分别处理各自关心的部分。

现代产品开发不再采用“一次性大设计”的方式,而是倡导敏捷方法,将设计拆分为更小的单元。这种方法还能通过建模技术和可视化手段降低风险。例如,系统可首先使用企业建模工具(如 Enterprise Architect 或 Rational Rose)进行草图设计。

整个团队可以并行工作,利用这些工具描述设计与架构。最终,所构建的架构可通过成熟的技术进行评估,例如 软件架构分析方法(SAAM)。

SAAM 是 20 世纪 90 年代首次被记录的软件架构分析方法,用于分析非功能性需求以及系统的可变更性。关于这些技术的深入讨论超出了本课程的范围。


下一课我们将开始探讨 REST 架构。

REST 简介