逻辑架构的重点是考虑软件功能性需求。
No. | 考虑的方面 | 产出物 | 工具 | 说明 |
1 | 系统功能划分为几个子系统与功能模块? | 系统功能树 | 树型结构图 | |
2 | 向什么用户提供什么样的功能? | 用例模型 | UML用例图 | 体现用户和行为 |
3 | 每个功能都是怎样的操作流程与分支? | 用例描述 | 用例描述表 |
含输入输出、事件流分析; 不要有界面描述 |
UML活动图 | 进行业务流程分析,包括泳道图 | |||
4 | 如何通过界面与用户交互?怎样交互? | 鲁棒分析 | 鲁棒图 | 通过对“用例描述表”进行原文分析法拣出名词和动词 |
5 | 应当设计哪些类与界面?怎样设计? | 领域模型 | UML类图 | |
6 | 与哪些外部系统接口?怎样接口? | 接口描述 | UML类图 |
2. 开发架构
开发架构重点关注的是开发编码实现方面的问题。
No. | 考虑的方面 | 产出物 | 工具 | 说明 |
1 | 分层结构设计 | 分层架构图(开发架构图) | 各种绘图工具 | 好的分层结构支持自动化测试 |
2 | 开发技术选项 | 开发语言 开发框架 开发工具 |
考虑商用产品、开源框架、自研框架 | |
3 | 模块划分 | 源码工程;Project目录结构; 分包(分库) |
||
4 | 开发规范 | 开发/编码规范文档; | ||
5 | 软件质量属性 | 分析和决策结果 | 考虑运行期和开发期软件质量属性,并权衡利弊进行决策。 |
3. 数据架构
数据架构不仅仅要考虑开发中涉及到的数据库,实体模型,也要考虑物理架构中数据存储的设计。
No. | 考虑的方面 | 产出物 | 工具 | 说明 |
1 | 数据是集中还是分布存储的?如何考虑分布式存储? | 数据架构图 | ||
2 | 领域模型到数据库表的转换?表结构关系的设计? | 逻辑模型 物理模型 ER图 |
Power Designer Visio |
|
3 | 实体如何设计?充血模型和贫血模型? | UML类图 | ||
4 | 使用什么数据库?关系型还是非关系型? | 选型结果 |
关系型数据库 | 非关系型数据库(NoSQL) |
Oracle(首次发行:1980年) MySQL(首次发行:1995) MS SQL Server(首次发行:1989) PostgreSQL(首次发行:1989) IBM DB2(首次发行:1983) Microsoft Access(首次发行:1992) Sybase ASE(首次发行:1987) SQLite(首次发行:2000) …… |
MongoDB(首次发行:2009) Cassandra(首次发行:2008) Apache CouchDB Hbase Redis db4o BaseX …… |
4. 运行架构
运行架构关注的不再是全局而是局部,着重关注那些关键点与难点,常常需要技术攻关与预研。主要考虑控制流、通讯机制、资源争用、锁机制、同步异步、并发、串行,同时也要考虑质量属性。
No. | 考虑的方面 | 产出物 | 工具 | 说明 |
1 | 运行:同步vs.异步;并发vs.串行 | 考虑开发架构中代码的实现。 | ||
2 | 交互:对象间交互;状态转换 | 考虑开发架构的合理性,到类、到接口、到代码。 | ||
3 | 质量:安全;可靠;可伸缩 | 考虑开发架构的合理性 | ||
4 | 性能:响应时间;吞吐量 | 估算: 在线人数、并发人数; 每秒事务量; 响应时间。 |
5. 物理架构
物理架构主要考虑硬件选择和拓扑结构,软件到硬件的映射,软硬件的相互影响。
考虑的方面 | 产出物 | 工具 | 说明 | |
1 | 网络方面:网络拓扑;网络设备;安全机制 | 拓扑图 安全规范 |
||
2 | 性能方面:可靠性、可伸缩性 | 需要什么样设备性能 | ||
3 | 部署方面:集中式还是分布式;组件部署 | 部署图 |
|