Gavin,程序员、软件架构师、企业架构师,关注智能制造。
最近团队作架构评审,所以整理一下架构评审要考虑的问题。很多时候,软件项目在进度和预算的压力下经常会优先考虑业务功能实现,尽量先把功能做出来,同时会忽略掉一些其它问题,考虑后续根据情况再逐步完善。特别是搞敏捷的团队,经常拿迭代当万金油,遗留一些问题给后续迭代,随后就成了技术债。最后发现,填坑的成本奇高无比,更有甚者干脆推翻重做。所以架构评审集合一些有经验的人,提前识别出重要的问题,做好规划,对于产品或者项目很有好处。并且,架构评审的过程团队成员可以共同学习,共同成长。
架构评审的目的是为了识别出影响产品质量的风险,所以架构评审的问题点也是围绕产品质量要求。业界有一些相关的总结或者标准,以ISO 9126为例,对软件质量模型定义了如下属性以及相应的评估问题如下:
质量属性 |
质量子属性 |
评审点 |
Functionality 功能性
|
Suitability 适合性 :系统提供了满足需求的功能 |
|
Accurateness 准确性 (包含数据一致性、事务性) :系统执行的结果是正确的(用户需要的) |
|
|
Interoperability 互操作性 :产品与产品之间交互数据的能力 |
|
|
Compliance 合规性 :符合国际/国家/行业/企业 标准规范 |
|
|
Security 安全性 :允许经过授权的用户和系统能够正常的访问相应的数据和信息,禁止未授权的用户访问……. |
|
|
|
||
Reliability 可靠性
|
Maturity 成熟性 :防止内部错误导致软件失效的能力 |
|
Fault tolerance 容错性 :软件出现故障,自我处理能力 |
|
|
Recoverability 易恢复性 :失效情况下的恢复能力 |
|
|
|
||
Usability 易用性
|
Understandability 易理解性 : 决定系统功能能够被理解的难易程度。 |
|
Learnability 易学性 :用户的学习成本。 |
|
|
Operability 易操作性 : 特定用户在特定环境下操作的难易程度 |
|
|
|
||
Efficiency 性能 (包括可伸缩性)
|
Time behavior 时间特性 :平均事务响应时间,吞吐率,TPS(每秒事务数) |
|
Resource behavior 资源利用性 :CPU 内存 磁盘 IO 络带宽 队列 共享内存 |
|
|
|
||
Maintainability 软件维护性
|
Analyzability 易分析性 : 分析定位问题的难易程度 |
|
Changeability 易改变性 : 软件产品使指定的修改可以被实现的能力 |
|
|
Stability 稳定性 : 防止意外修改导致程序失效 |
|
|
Testability 易测试性 : 使已修改软件能被确认的能力 |
|
|
|
||
Portability 软件可移植性
|
Adaptability 适应性 : 系统切换到新的规格或环境的能力 |
|
Installability 易安装性 : 部署软件需要花费的工作 |
|
|
Replaceability 易替换性 : 在特定环境下更换指定组件的难易程度 |
|
参考资料
- http://www.sqa.net/iso9126.html
- https://www.cnblogs.com/lovecindywang/p/9688523.html
- Software Systems Architecture, 2nd. 中文版 《软件系统架构》
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!