软件架构概述

  • 什么是软件架构
  • 软件架构在软件开发过程中的位置
  • 需求和架构的关系
  • 需求分类
  • 关于功能需求
  • 关于质量属性需求
  • 小结 功能需求/质量属性需求与架构关系
  • ==质量属性需求可以引出架构决策==
  • 架构是设计的载体
  • 本文参考《Software Architecture in Practice 3rd》



最近在了解软件架构,结合一些学习资料和自身的思考有了一些体会,现记录如下以备今后查阅:

什么是软件架构

软件架构是一套用于推理系统的结构,这套结构由系统元素、元素之间的关系、元素和关系两者本身的属性构成。

  • 架构在需求(业务)分析与设计(概要设计/详细设计)之间搭起了一座桥梁
  • 架构是需求的具体化,设计(概要设计/详细设计)的抽象化
  • 架构是设计(概要设计/详细设计)的载体

软件架构在软件开发过程中的位置

需求之后—>软件架构—>设计(概要设计/详细设计)之前, 如下图

产品app架构说明文档 软件产品架构_功能需求

需求和架构的关系

要明确需求和架构的关系,需要先了解需求的分类:

需求分类

系统需求可来自各种形式:文字需求、原型、现存系统、用例、用户描述等,不管来源是什么,所有的需求可分为如下几类:

产品app架构说明文档 软件产品架构_软件架构_02

关于功能需求
  • 在所有的需求中,功能需求和架构的关系是最奇怪的。
  • 首先,功能需求并不决定架构:因为只给定一组功能需求,可以创建无数种架构来满足这些功能点。
  • 如果功能是唯一的关注点,那根本就不需要将系统划分成一些小的结构,一个没有内部结构的单一整体就可以了。
  • 但是:
    尽管功能独立于任何特定的结构,但功能是通过将职责分配给架构元素来实现的,从而产生最基本的架构结构之一。
关于质量属性需求

我们将系统设计成协作的架构元素的结构化集合——模块、逻辑层、类、服务、数据库、应用程序、线程、对等体、物理层等等——使它们易于理解,以支持各种质量属性需求

小结 功能需求/质量属性需求与架构关系

尽管职责可以任意分配给任何模块,但当其他质量属性很重要时,软件架构会限制这种分配。例如,系统经常被划分,以便几个人可以合作地构建它们。架构师对功能的兴趣在于它如何与其他质量属性进行交互和约束。

质量属性需求可以引出架构决策

产品app架构说明文档 软件产品架构_产品app架构说明文档_03


从一些业务目标可以引出一些质量属性需求,而这些质量需求会引出架构决策,这些业务目标也可以直接引出架构决策或者引出非架构解决方案。

架构是设计的载体

设计(概要设计/详细设计)会在架构设计/策略的基础上进行细化设计。

本文参考《Software Architecture in Practice 3rd》