学习设计模式的必备先导知识——软件质量属性及设计原则

发布时间:2024年01月11日


前言

[1]通俗而详细地阐释了23种设计模式,笔者在阅读过程中收获颇丰。原书是使用Java语言描述的,笔者在本专栏使用C++语言进行转述。

在学习设计模式之前,需要对软件质量属性有充分的认识和理解。实际的工程并不像LeetCode、洛谷、POJ等OJ的算法题,远远不是跑得通就行,必须确保软件需要具备足够的质量。笔者查阅了一些文献,对软件质量有了一定的认识,在本博客中将得到的这些知识进行分享。

一、软件质量属性

综合[2][3][4][5]的观点,可将软件质量属性总结为以下这些方面:

1. 运行期质量属性

  • 功能性(也就是能否实现需求,能否“跑得通”,是最基本的要求)
  • “三高”:高并发、高可用、高性能(简单来说,高并发就是能满足海量用户同时使用;高可用就是系统发生故障的概率小,即使发生故障,也能很快恢复;高性能就是系统“快不快”,可以用响应速度、吞吐量等指标度量)
  • 安全性(网络安全)
  • 可伸缩性(能不能灵活地扩大或缩小系统规模,例如增加服务器节点或减少服务器节点)
  • 能源效率

2. 开发期质量属性

  • 易理解性(代码易读性强,容易理解)
  • 可重用性(代码可重用,无需反复“造轮子”)
  • 可修改性(代码可灵活地进行修改,以适应需求的变化)
  • 可扩展性(能在现有的代码的基础上灵活地进行扩展,增加新功能)
  • 可测试性(能够方便地对代码进行测试)
  • 可部署性
  • 可移植性
  • 可集成性

在实际工程中,斜体的质量属性的“优先级”较低。

保证软件质量最终就是为了最大化程序员的生产力,最小化系统的总运营成本[2]。

二、设计原则

学习设计模式之前需要明白这样一条逻辑:软件质量属性→设计原则→设计模式

软件质量属性→设计原则:为了满足上述的软件质量属性,特别是易理解性、可重用性、可修改性、可扩展性、可测试性等开发期质量属性,提出了六大设计原则,即单一职责原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、迪米特法则。其中,前5个原则合称为SOLID原则。

设计原则→设计模式:所有的23种设计模式都是在这六大设计原则的基础上构建出来的。

三、参考文献

[1] 刘韬. 秒懂设计模式[M]. 北京: 人民邮电出版社, 2020.
[2] [美] Robert C. Martin. 架构整洁之道[M]. 孙宇聪, 译. 北京: 电子工业出版社, 2018.
[3] [美] Len Bass, 等. 软件架构实践[M]. 周乐, 译. 北京: 机械工业出版社, 2022.
[4] 希赛教育软考学院. 系统架构设计师教程[M]. 北京: 电子工业出版社, 2017.
[5] [印度] Anand Balachandran Pillai. 软件架构:Python语言实现[M]. 李必信, 等, 译. 北京: 机械工业出版社, 2018.

文章来源:https://blog.csdn.net/weixin_46410229/article/details/135511933
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。