软件系统设计-作业3
作业要求
https://jinqiqing-bucket.oss-cn-nanjing.aliyuncs.com/pdf/assignment-3.pdf
https://jinqiqing-bucket.oss-cn-nanjing.aliyuncs.com/pdf/assignment-3-reading-c4.pdf
你需要负责为以下系统设计一个软件体系结构。你应该使用属性驱动设计(Attribute Driven Design,ADD)方法,并以多个视图来记录最终的体系结构。在这个作业中,三到四名学生需要组成一个小组共同完成作业。每个学生在这个作业上的得分将根据小组的表现来确定,包括个人对工作的贡献和反思。
本作业的补充阅读材料是“呼叫中心客户服务(C4)案例研究”,该案例介绍了一个大型电信公司使用的系统的初始(“一级”)架构分解。该系统包括五个主要子系统,如阅读材料中所述。一级架构在阅读材料中的图1中显示。
作业提交要求
每个小组应提交一个单独的PDF文件。你的报告应该是不超过20页(A4大小)的,并包括以下内容:
关于你如何遵循属性驱动设计方法的报告(20分)。在设计体系结构时,你需要进行至少两次迭代(每次迭代10分)。这部分包括两个组成部分:
- 一个以场景形式提出的重要非功能性需求(和约束)的列表,这些需求是你已经识别或假设的。
- 你在执行ADD方法的第3步(选择一个ASR)和第4.2/4.3步(选择体系结构模式/策略)时选择的所有具有架构重要性的需求(ASRs)、设计关注点和架构模式/策略的列表。这应该包括所有可能没有包含在最终体系结构中的中间候选方案。应提供对选择的简要解释。
最终的软件体系结构文档(15分):
- 使用第18章的模板提供的视图(模型)和交叉视图。至少应有三个视图(其中至少一个是模块视图)以及一个交叉视图。不能省略“基本原理”部分。有关更多信息,请参阅[2]。
- 鼓励使用适合的UML图。请参考[3]。有关UML的更多信息,请参阅[4]。然而,你也可以选择使用其他你感到更舒适的替代建模语言符号。
每个小组的每个学生都应提供完整的个人评语(每人大约半页)(5分),包括以下两个组成部分:
- 关于使用ADD方法的个人经验的描述。
- 对你在小组工作和报告中的贡献的总结。
注意事项:
- 你可以使用中文或英文编写和提交报告。使用英文时,你不需要完全正确。然而,你应确保以清晰易懂的方式传达所有内容。
- 当你需要更多信息来做出设计决策时,你应该做出假设,并记录下来,然后再做出设计决策。
- 这个作业没有最小长度要求,但不应超过20页。请简明扼要地陈述观点。
- 你将根据你应用设计方法和文档设计的能力而不是设计的绝对正确性来评估。
交叉图

组件和连接器视图(Component-and-Connector View)
主表视图
元素目录
元素名 | |
---|---|
User Interface | 用户使用系统服务的接口,包括直接对话、自主呼叫,以及未来自助服务台和客户端中的用户界面 |
Agent Client Interface | 代理客户端接口,公司业务熟悉人员与系统服务交互的界面 |
Gateway Service | 负责用户的登录授权,保证用户与系统交互的安全性 |
TP Monitor | 对事务处理进行监视,负责事务分配 |
C4 Business Service | C4业务服务,处理服务协商、账户管理、故障呼叫管理等业务 |
Message-oriented Middleware | 面向消息的中间件,提供对C4与NOSS之间信息交换的支持 |
NOSS Service | 提供对网络运行的支持服务 |
Publish/Subcribe Message Broker | 发布订阅消息代理,负责发布订阅模式中消息的接收与转发 |
Downstream Systems | 下游系统,诸如长途运营商服务、911服务、语音邮件、电话簿接口和收入收取(信用评分和检查)等 |
Security Service | 安全服务,提供对系统与外界交互的安全性保障 |
On-line Enterprise DB | 在线企业数据库 |
Batch Billing DB | 批计费数据库,是On-line Enterprise DB的批处理副本 |
Billing Service | 计费服务,负责计算、打印发票和账单查询、调整等服务 |
上下文图
可变性指引
目前用户接口主要有与公司代表的直接对话和自主呼叫服务,这些都需要手工登入到系统的代理客户端接口,未来加入自助服务台和互联网服务后,需要增加基于TCP/IP的通信方式。C4业务服务与NOSS的通信是依赖是一组以“named-tag/value”形式的的消息接口,具体的消息交互方式和数据格式都可能会发生改变。
基本原理
用户和业务人员的所有请求都要经过GateWay Service的检验,以提供用户与系统交互的安全性。系统与外界的交互通过Security Service的安全校验。C4业务服务不直接与计费服务交互,而是C4与公司的在线数据库交互,计费服务与批处理数据库交互,其中批处理数据库是在线数据库的副本,以此保证两者数据之间的解耦。
分配部署视图(Allocation View)
主表示图

元素目录
元素名 | |
---|---|
Agent Client | 部署代理客户端,公司业务熟悉人员与系统服务交互的接口 |
Gateway Service | 部署网关服务,外界请求需要经过网关进入企业局域网 |
TP Monitor Service | 部署事务处理监视服务,负责服务器的负载均衡 |
C4 Business Service | 部署C4业务服务,处理服务协商、账户管理、故障呼叫管理等业务 |
Network Operations Support Service | 部署网络运行支持服务,负责网络创建、网络管理、网络配置等业务 |
Publish/Subscribe Message Broker Service | 部署发布订阅消息代理服务,负责发布订阅模式中消息的接收与转发 |
Downstream Systems Service | 部署下游系统服务,负责处理下游系统有关的事物 |
On-line Enterprice DataBase | 部署在线企业数据库,存储C4业务所需和产生的数据 |
Batch Billing Database | 部署批计费数据库,是在线数据库的批处理副本,存储计费业务所需的数据 |
Billing Service | 部署计费服务,负责计算、打印发票和账单查询、调整等服务 |
Security Service | 部署安全服务,负责系统与外界交互的安全性 |
上下文图

可变性指引
C4业务服务目前部署在一组运行UNIX操作系统的HP9000服务器上,未来可能会增加或改为使用其他新型号的服务器,或是选用分布式云服务。在线数据库和批数据库在未来随着系统的发展与扩张可能需要进行升级,以适应更大的数据量和更频繁的访问。
基本原理
部署视图结合 ADD 方法中迭代一和迭代二的分析,描述了各个服务模块的实际部署与在部署中的关联,将整个大系统部署到各个对应的服务器上,是构建与连接件对硬件的映射。
团队中的个人工作
在本次软件系统设计作业中,我承担了最终软件架构文档中组件和连接器视图(Component-and-Connector View)和分配部署视图(Allocation View)的编写任务。此外,我还与团队成员一起参与了对C4系统资料的讨论与分析,从中提取出关键的功能需求、质量属性和约束。
在这次作业中,我收获了许多,我学习了ADD(Attribute-Driven Design)方法,并对其有了一定的认识和掌握,并深刻认识到它在软件架构设计中的重要性。ADD方法是一个系统化的架构设计过程,注重需求驱动和质量属性的关注。在这个过程中,我学会了如何识别并提炼出架构中的重要要素,特别是对系统的架构决策具有重要指导作用的ASRs,这些ASRs是设计过程中需要特别关注和解决的关键需求。
在本次作业中,我也学习并实践了如何画出清晰和有效的架构图。 例如在绘制分配部署视图(Allocation View)的过程中,我学会了如何描述系统的部署和分配情况,如何将组件和资源之间的关系呈现出来,以及描述它们在物理环境中的布局和配置。
总之,在这次大作业的过程中,我学习到了软件系统设计的方法和流程,特别是对ADD方法的学习,以及如何绘制出软件系统中的各个视图,真的受益良多。