软件设计原则扩展

2023-09-21 11:07:25

一、引言

经典的软件设计7大原则

开闭原则(Open Close Principle, OCP)
依赖倒置原则(Dependence Inversion Principle, DIP)
单一职责原则(Simple Responsibility Principle, SRP)
接口隔离原则(Interface Segregation Principle, ISP)
迪米特法则 (Law of Demeter, LoD,又作:最少知道原则,Least Knowledge Principle, LKP)
里氏替换原则 (Liskov Substitution Principle, LSP)
合成复用原则(Composite/Aggregate Reuse Principle, CARP)

这是程序设计的经典原则。这些原则又演化出了23种设计模式。

创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实这是一个演进的过程。7大原则的设计是针对早期的程序设计,而23种设计模式专门是为了设计框架所用。但是我们现在很多时候都是架设复杂得到系统,不单单是简单的程序,也不是某些组件和插件。对于大型系统我们应该也有设计原则。它是架设在7大原则和23种设计模式之上的。

二、复杂系统设计原则

1、通用性原则

通用性指的的是系统的设计可进行复用,复合行业规范。

2、隔离性原则

隔离性指的是系统具有单独的调用流程,单独的数据库。

3、权限控制原则

权限控制原则指的是系统功能的调用应该设计权限。

4、安全性原则

安全性原则指设计系统需要充分考虑网络安全性,运行安全性。

5、可扩展原则

可扩展原则只系统应该具有可扩展性,在进行扩展时不影响旧功能的运行。

6、可配置原则

可配置原则是指系统设计应该考虑系统参数可配置性

7、开闭原则

开闭原则和程序设计的原则一样,对修改应该关闭,对扩展应该开放。

8、兼容性原则

兼容性原则指新版本的系统应该兼容旧版本的系统、

9、易开发易部署原则

易开发易部署原则指开发系统应该考虑团队协助,便于开发和上线部署。

三、设计原则扩展

1. 模块化:将软件划分为小模块,每个模块应该尽可能独立和可重用,以便于修改和维护。这样可以提高软件的可扩展性和可维护性。

2. 松散耦合:减少模块之间的依赖性,降低耦合度,使得每个模块更加独立,易于维护和测试。

3. 高内聚:将具有相同功能的代码组织在一起,减少代码的重复和冗余,提高代码的可读性和可维护性。

4. 可扩展性:在设计阶段就应该考虑到软件的可扩展性,即能够满足未来需求的变化和扩展。

5. 可靠性:软件应该具备高可靠性和健壮性,能够在各种情况下正常运行,并且不易受到攻击。

6. 性能:系统应该具备良好的性能,能够处理大量的数据和用户请求,以及具有快速的响应时间。

7. 简洁性:架构和代码应该简洁明了,易于阅读和理解,避免过度设计。

8. 可移植性:软件应该具备跨平台和跨系统的能力,以便于在不同的环境中运行。

9. 可测试性:系统应该易于测试,包括单元测试、集成测试、系统测试等,以确保软件的质量和稳定性。

10. 易于使用:软件应该具备良好的用户体验和易于使用的界面,以提高用户满意度。更需要易于理解、易于学习等。

11. 安全性:软件应该具备良好的安全性,能够防止非法入侵、防止数据泄露等安全问题。保证用户数据和隐私的安全,避免被黑客攻击和恶意软件的侵入。

12. 代码可维护性:软件应该易于维护和修复,包括代码的可读性、可理解性和可扩展性等,以降低维护成本和提高代码质量。

13. 可靠性:软件应该具有高度的可靠性,即软件在正常运行的情况下能够保证正确性和准确性,同时在出现异常情况时能够有效地处理和恢复。

14. 可伸缩性:软件应该具有良好的扩展性和可伸缩性,以便于在用户数量和数据量不断增加的情况下保持性能和稳定性。

15. 可复用性:软件应该具有高度的可复用性,即软件中的模块和组件可以在其他项目中重复使用,以提高开发效率和代码质量。

16. 可追溯性:软件应该具有高度的可追溯性,即软件中的所有行为都应该能够明确地记录下来,以便于进行审核、审计和追溯。

17. 可配置性:软件应该可以方便地进行配置和管理,以适应不同的环境和需求。

18. 可移植性:软件应该可以易于迁移和移植,以适应不同的操作系统、平台和设备。

19. 可扩展性:软件应该可以方便地进行扩展和升级,以适应不同的业务需求和功能需求。

20. 可靠性:软件应该具有高可靠性,即能够稳定运行、不易出错,同时能够有效地处理异常和错误情况。

21. 可访问性:软件应该具有易于访问和使用的特点,以便于不同人群和不同能力的用户都能够使用。

22. 可安装性:软件应该可以方便地进行部署,维护和管理,以降低维护成本和提高代码质量。

23. 可定制性:软件应该具有良好的可定制性,允许用户根据自己的需要进行自定义设置,以满足个性化需求。

24. 可信度:软件应该具有高度的可信度,即用户可以信任软件的准确性、可靠性和稳定性,从而满足用户的需要。

25. 文档和注释:软件开发过程中需要撰写相关的文档和注释,以便于开发人员和用户了解软件的功能和使用方法。

26. 团队协作:软件开发过程中需要进行团队协作,包括任务分配、代码共享、交流沟通等。设计软件架构要易于团队合作和开发。

27. 技术选型:在软件开发过程中需要选择合适的技术栈和工具,以保证软件的高效开发和优秀质量。

更多推荐

简单 php结合WebUploader实现文件上传功能

WebUploader资源下载http://fex.baidu.com/webuploader/download.htmlWebUploader使用方法http://fex.baidu.com/webuploader/getting-started.htmlphp上传代码<?phpheader('Content-typ

MFC主框架和视类PreCreateWindow()函数学习

在VC++生成的单文档应用程序中,主框架类和视类均具有PreCreateWindow函数;从名字可知,可在此函数中添加一些代码,来控制窗口显示后的效果;并且它有注释说明,ModifytheWindowclassorstylesherebymodifyingtheCREATESTRUCTcs在这里通过修改CREATEST

​Qt for Python 入门¶​

本页重点介绍如何从源代码构建QtforPython,如果你只想安装PySide2。与你需要运行:pippipinstallpyside2有关更多详细信息,请参阅我们的快速入门指南。此外,您可以查看与项目相关的常见问题解答。一般要求¶Python:3.5+和2.7Qt:建议使用5.12+libclang:libclang

Leetcode.486 预测赢家

题目链接Leetcode.486预测赢家mid题目描述给你一个整数数组nums。玩家111和玩家222基于这个数组设计了一个游戏。玩家111和玩家222轮流进行自己的回合,玩家111先手。开始时,两个玩家的初始分值都是000。每一回合,玩家从数组的任意一端取一个数字(即,nums[0]nums[0]nums[0]或nu

掌握ls命令:完整指南、高级用法与常见问题解答 | 理解文件管理的关键工具

文章目录引言1.1关于ls命令1.2ls命令的作用和用途ls命令的基本用法2.1命令格式和语法2.2列出当前目录内容2.3列出指定目录内容常用选项和参数3.1列出详细信息3.2列出隐藏文件3.3按不同方式排序3.4显示文件大小3.5递归列出子目录内容文件类型和权限4.1文件类型的表示4.2权限的表示和解读4.3更改文件

Java基于微信小程序的青少年健康心理科普平台

第一章简介青少年心理健康科普平台为用户提供心理医生咨询服务,系统包括微信小程序端和后台。微信小程序用户可以先进行注册,填写个人的基本信息提交到服务器,服务器把数据保存到数据库。管理员对青少年的信息进行验证后,青少年通过验证后的用户名和密码进行登录,登录之后查看健康知识。心理医生在首页展示,查看心理医生具体信息后,可以进

贪心算法的思路和典型例题

一、贪心算法的思想贪心算法是一种求解问题时,总是做出在当前看来是最好的选择,不从整体最优上加以考虑的算法。二.用贪心算法的解题策略其基本思路是从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都要确保能获得局部最优解。贪心算法的关键在于贪心策略的选择,而不是对所有问题都能得到整体最优解。若下一个数据和部分

Django实现音乐网站 ⒅

使用PythonDjango框架做一个音乐网站,本篇主要为歌单列表、歌单详情及推荐页-歌单内容改动。目录歌单列表设置路由视图处理模板渲染歌单-单曲列表设置路由视图处理模板渲染推荐页-歌单列表模板渲染修改总结歌单列表可通过导航>歌单或者推荐歌单中分类跳转到歌单列表。设置路由path('songsheet',views.s

多台群晖实现按计划WOL网络自动唤醒数据冷备份

几年前买了2盘位的DS218+,但是随着照片的增加已经不够用。年中购入了4盘位的群晖DS923+、2块16T西数数企业级硬盘、1块2Tintel企业级SSD1.什么是冷备份冷备是离线备份,备份好的数据可以单独存取,定期冷备可以保证数据安全,适合家庭场景2.为什么不用Raid1Raid不是一个备份方案,Raid1是做1:

matlab GPR高斯过程回归与股票价格预测

1、回归回归分析是统计分析领域的重要分支。利用回归分析模型可以进行预测。一个典型的预测问题是:给定自变量xxx的某些值处对因变量的一些噪声观测值,对新值x∗x^*x∗时因变量的最佳估计值是多少?如果我们期望底层函数是线性的,且可以对输入数据做一些规范化假设,那么我们可以使用最小二乘法来线性回归(直线拟合)。对于一些规律

【DevOps核心理念基础】3. 敏捷开发最佳实践

一、敏捷开发最佳实践1.1项目管理1.2需求管理1.3技术架构1.4技术开发1.5测试二、敏捷开发最佳实践2.1敏捷开发的执行细节三、全面的DevOps工具链四、版本控制和协作开发工具4.1集中式版本控制工具4.2分布式版本控制工具一、敏捷开发最佳实践1.1项目管理迭代开发技术团队的人员素质,人员配备完整及时有效的沟通

热文推荐