一线架构师实践指南第五章阅读笔记
第五章内容为确定关键质量与关键功能。
软件需求=功能需求+质量属性+约束,由此可见确定关键质量与关键功能是十分重要的。
架构设计之初,要是制定了错误的质量属性目标(包括遗漏重要的质量属性),那么开发的过程可能会很痛苦。
在“需求结构化”的基础上,“确定关键质量” 着重完成如下两项任务:
1.根据系统所在领域的特 点及系统规模等因素,确定架构设计重点支持哪些质量属性(例如重点支持高性能、可扩展性)
2.分析上述质量属性之间的制约关系,第一时间指定权衡折衷的具体策略(例如明确高性能是第一位的,可扩展性与高性能相矛盾时应照顾高性能要求,是否引入支持可扩展性的设计须经架构组评审)。
那么,如何确定关键质量呢?答案是,遵守和运用5大原则:
1.分类合适+必要扩充。
2.考虑多方涉众。
3.检查性思维。
4.识别矛盾+划定优先级。
5.严格程度符 合领域与规模特点。
确定关键质量的五大规则不是孤立的,他有一定的思路。
那么关键功能又如何确定呢,他同样有以下几点规则,那就是确定关键功能子集:
1.核心功能。2.必做功能。3.高风险功能。4.独特功能(覆盖了上述3类功能没有涉及的职责)。
核心功能。
识别“核心功能”的标志是:业务层的接口要反映这些功能。例如,项目管理系统中,项目信息查看、添加项目任务等都是核心功能。
必做功能。
识别“必须实现的功能”主要依据客户方的背景。
高风险功能。
基于务实考虑,还应该把“风险高的功能”选入关键功能子集。例如,你在设计-一个网上书店系统,书籍的全库搜索功能就须要特别关注:从用户角度讲,极慢的搜索速度,甚至直接收到“系统忙,请稍后再试”的提示都是不满的:
独特功能
覆盖了上述3类功能没有涉及的职责。
在课堂中老师通过一道例题提高我们对于章节内容的理解:
某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。她每周都收到一份过期未付款的账户名单。这份报告已经从两年前的250个账户增加到现在的1250个账户。
为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。严重拖欠债务的账户由几个不同的规则确定,每个规则都要求Liz检查客户的一项或几项数据。过去半天的工作量现在增加到了每周三天。即使在确定了严重拖欠债务的账户后,如果没有查阅该账户三年内的历史资料,Liz也不能做出最后的信用决定(例如严厉的催款电话、断绝信用或将这个账户转给一个收账代理)。另外,Liz需要报告所有账户中过期未付款的、拖欠债务的、严重拖欠债务的和呆死账的比例。目前的报告中并没有给她提供这个信息。
我的答案如下(如有不足可交流):
关键属性:
运行期质量:
鲁棒性:对变换的数据能够进行处理
持续可用性:能长期使用
可伸缩性:几乎没有上限
性能:即强调速度,又强调吞吐量
易用性:最便捷的选择方式
安全性:数据安全可靠
互操作性:含公司各系统间互操作
开发期质量:可扩展性
关键功能:
能够快速查询客户账户;
能够分析一个客户是否为问题账户;
能够给出一个问题账户的三年内的历史数据
能够计算问题账户所占比例