1. 逻辑架构
逻辑架构的重点是考虑软件功能性需求。
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 |
部署方面:集中式还是分布式;组件部署 |
部署图
|
|
|
实际在执行时有两种观念:一是五种视图按逻辑架构、开发架构、数据架构、运行架构、物理架构顺序进行;二是五种视图穿插进行设计,尤其是复杂系统,五种视图穿插进行思考更有利于思考的全局性和完整性。
来源:https://www.cnblogs.com/doit8791/p/9434549.html