软件架构概述
- 什么是软件架构
- 软件架构在软件开发过程中的位置
- 需求和架构的关系
- 需求分类
- 关于功能需求
- 关于质量属性需求
- 小结 功能需求/质量属性需求与架构关系
- ==质量属性需求可以引出架构决策==
- 架构是设计的载体
- 本文参考《Software Architecture in Practice 3rd》
最近在了解软件架构,结合一些学习资料和自身的思考有了一些体会,现记录如下以备今后查阅:
什么是软件架构
软件架构是一套用于推理系统的结构,这套结构由系统元素、元素之间的关系、元素和关系两者本身的属性构成。
- 架构在需求(业务)分析与设计(概要设计/详细设计)之间搭起了一座桥梁
- 架构是需求的具体化,设计(概要设计/详细设计)的抽象化
- 架构是设计(概要设计/详细设计)的载体
软件架构在软件开发过程中的位置
需求之后—>软件架构—>设计(概要设计/详细设计)之前, 如下图
需求和架构的关系
要明确需求和架构的关系,需要先了解需求的分类:
需求分类
系统需求可来自各种形式:文字需求、原型、现存系统、用例、用户描述等,不管来源是什么,所有的需求可分为如下几类:
关于功能需求
- 在所有的需求中,功能需求和架构的关系是最奇怪的。
- 首先,功能需求并不决定架构:因为只给定一组功能需求,可以创建无数种架构来满足这些功能点。
- 如果功能是唯一的关注点,那根本就不需要将系统划分成一些小的结构,一个没有内部结构的单一整体就可以了。
- 但是:
尽管功能独立于任何特定的结构,但功能是通过将职责分配给架构元素来实现的,从而产生最基本的架构结构之一。
关于质量属性需求
我们将系统设计成协作的架构元素的结构化集合——模块、逻辑层、类、服务、数据库、应用程序、线程、对等体、物理层等等——使它们易于理解,以支持各种质量属性需求。
小结 功能需求/质量属性需求与架构关系
尽管职责可以任意分配给任何模块,但当其他质量属性很重要时,软件架构会限制这种分配。例如,系统经常被划分,以便几个人可以合作地构建它们。架构师对功能的兴趣在于它如何与其他质量属性进行交互和约束。
质量属性需求可以引出架构决策
从一些业务目标可以引出一些质量属性需求,而这些质量需求会引出架构决策,这些业务目标也可以直接引出架构决策或者引出非架构解决方案。
架构是设计的载体
设计(概要设计/详细设计)会在架构设计/策略的基础上进行细化设计。
本文参考《Software Architecture in Practice 3rd》