1、需求描述
描述该特性要做什么
可以包含需求背景,目标,竞争力等
1.1、受益人
围绕特性价值,该特性实现后给哪些角色带来益处,哪些角色会使用,这里可以是逻辑上的受益者,比如:系统管理员,前端界面等
| 角色 | 角色描述 |
|---|---|
1.2、依赖组件
| 组件 | 组件描述 | 可获得性 |
|---|---|---|
1.3、License
2、架构和关键质量属性目标
2.1、架构目标
简要描述架构设计所要达到的目标,比如:需要重点考虑性能,灵活的可扩展性等
2.2、关键架构需求
该模块的关键需求,作为对架构设计要求的输入
| 需求名称 | 需求描述 | 需求类别 | 需求优先级 |
|---|---|---|---|
| 功能 | |||
| 可靠性 |
2.3 假设和约束
描述该模块在运行环境,软件依赖,限制条件,业界规范等方面的限制
2.4 架构原则
制定该特性的架构设计理念,方法,规则等
| 原则 | 原则描述 | 举例 |
|---|---|---|
| 单向依赖原则 | 不同层级之间的模块,仅允许上层调用下层 | 反向依赖采用hook方式实现 |
3、用例视图
3.1、上下文模型
关注系统边界,定系统与外部环境的交互,定义系统的范围,职责和边界
3.1.1、 上下文视图
3.1.2、 外部接口描述
| 接口编号 | 类型 | 接口描述 | 规格 |
|---|---|---|---|
| 模块-x | 消息/接口调用 | 查询主机列表 | 1分钟内完成 |
3.2、 USE-CASE模型
3.2.1、 USE-CASE视图
内部实现为黑盒,识别外部功能
包括主要业务流图,动态视角识别功能点
4、逻辑视图
结合USE-CASE,分解软件功能模块,识别架构需求,比如解耦
包括软件逻辑架构和模块之间的交互关系,识别模块间接口
5、开发视图
逻辑视图到代码模型的映射,比如:目录与特性的对应关系,模块怎么构建
6、部署视图
真实环境如何部署,网络和存储如何划分,业务程序如何部署,如何扩展、备份等
7、 运行视图
对关键服务/组件/模块运行时的动态交互以及运行时的进程、进程组、线程、进程间通信等进行建模
8、质量属性设计
8.1、性能规格
| 规格名称 | 规格指标 |
|---|---|
| 内存占用 | |
| 启动时间 | |
| 响应时间 | |
| xxx |
8.2、系统可靠性设计
8.3、系统安全/韧性/隐私需求设计
8.4、兼容性设计
8.5、可服务性设计
8.6、可测试性设计
9、特性清单
| 序号 | 特性描述 | 代码估计规模 | 实现版本 |
|---|---|---|---|
10、接口清单
10.1、外部接口清单
| 接口名称 | 接口描述 | 入参 | 输出 | 异常 |
|---|---|---|---|---|
10.2、内部接口清单
| 模块 | 接口名称 | 接口描述 | 入参 | 输出 | 异常 |
|---|---|---|---|---|---|
11、修改日志
| 版本 | 发布说明 |
|---|---|