文章目录
壹、核心思想
软件架构评估方法的核心思想是在系统开发前通过系统化的分析手段,提前发现架构设计中的潜在问题,确保软件系统在多个质量属性之间达到最佳平衡。这就像建筑师在设计大楼前会进行结构分析、承重计算、抗震评估一样,软件架构师也需要在编码前对架构方案进行全面评估。
软件架构评估方法的发展体现了从单一关注到全面权衡的演进过程。
- SAAM最初专注于可修改性评估,就像医生最初只关注单一症状一样;
- ATAM在此基础上发展为多属性权衡分析,如同医生需要综合考虑患者的各项指标;
- CBAM进一步引入经济模型,就像现代医疗不仅要考虑治疗效果,还要考虑成本效益。这种演进反映了软件工程从技术导向向业务导向的转变。
通过场景驱动的分析方式,将抽象的质量属性转化为具体的测试场景,使得架构评估从主观判断转向客观分析。同时,敏感点与权衡点的识别机制,帮助架构师理解不同设计决策对质量属性的影响程度,从而做出更明智的架构选择。
软件架构方法分为上下两篇:本文我们先分析软件架构质量与权衡的艺术:敏感点与权衡点识别机制。
贰、软件质量属性体系
软件质量属性体系体现了从内部质量到外部质量的递进关系。
- 开发期质量属性关注的是软件内部结构的设计质量,如代码的可理解性、可测试性等,这些属性直接影响开发效率和维护成本;
- 运行期质量属性关注的是软件对外提供服务时的表现,如性能、安全性、可用性等,这些属性直接影响用户体验和业务价值。这种分层设计确保了软件质量的全方位覆盖。
- 质量属性之间存在着复杂的相互影响关系。提高安全性可能会降低性能,增强可扩展性可能会增加系统复杂度,这种权衡关系要求架构师在设计中必须综合考虑多个质量属性,找到最佳平衡点。通过系统化的质量属性分析,可以提前识别潜在的质量冲突,制定合理的架构决策。

二、开发期质量属性
开发期质量属性关注软件开发过程中的内部质量,这些属性直接影响开发效率、代码质量和后续维护成本。
| 质量属性 | 定义与特点 | 具体表现 | 设计原则 |
|---|---|---|---|
| 易理解性 | 开发人员理解系统设计的难易程度 影响开发效率和代码质量 |
设计文档清晰、代码逻辑规整 分层架构职责明确 |
遵循设计模式、统一编码规范 提供充分的文档和注释 |
| 可扩展性 | 系统应对新需求时添加功能的能力 影响系统的适应性和发展潜力 |
预留接口和扩展点 模块化设计支持功能扩展 |
面向接口编程、插件化架构 预留配置和扩展机制 |
| 可重用性 | 软件模块被重复使用的难易程度 影响开发效率和代码复用率 |
通用模块设计、标准化接口 组件化开发模式 |
抽象通用功能、标准化设计 建立组件库和工具集 |
| 可测试性 | 软件测试的便捷程度 影响缺陷发现和验证效率 |
模块独立性强、接口清晰 支持单元测试和集成测试 |
依赖注入、接口隔离 提供测试工具和框架 |
| 可维护性 | 软件修改时的难易程度 影响维护成本和系统稳定性 |
代码结构合理、注释完整 遵循设计模式和最佳实践 |
单一职责、开闭原则 建立维护文档和流程 |
| 可移植性 | 软件在不同环境间迁移的难易程度 影响系统的部署灵活性 |
跨平台代码、标准化接口 减少环境依赖 |
使用标准库、抽象平台差异 提供多环境配置支持 |

三、运行期质量属性
运行期质量属性关注软件对外提供服务时的表现,这些属性直接影响用户体验和业务价值。
| 质量属性 | 定义与特点 | 关键指标 | 实现策略 |
|---|---|---|---|
| 性能 | 系统提供服务的及时性 涵盖速度、吞吐量、容量等指标 |
响应时间、并发数、吞吐量 资源利用率、延迟分布 |
算法优化、缓存机制 负载均衡、资源池化 |
| 安全性 | 保障系统只对合法用户服务 阻止非法访问和攻击 |
身份认证、授权管理 数据加密、攻击防护 |

最低0.47元/天 解锁文章
4157

被折叠的 条评论
为什么被折叠?



