软件设计原则扩展

news2025/2/24 9:29:34

一、引言

经典的软件设计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. 技术选型:在软件开发过程中需要选择合适的技术栈和工具,以保证软件的高效开发和优秀质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣刷题-82. 删除排序链表中的重复元素

题目来源:力扣82 题目描述: 代码及思路: class Solution {public ListNode deleteDuplicates(ListNode head) {/**判断下一个节点的值与下下个的值是否相同,相同:循环到没有相同 下一个节点指到值不同的节点上不同&a…

C语言进阶第三课-----------指针的进阶----------后续版

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

构建自动化测试环境:使用Docker和Selenium!

随着软件开发的日益复杂和迭代速度的加快,自动化测试被越来越广泛地应用于软件开发流程中。它能够提高测试效率、减少测试成本,并保证软件质量的稳定性。在构建自动化测试环境方面,Docker 和 Selenium 是两个非常有用的工具。下面将介绍如何使…

肖sir__mysql中数据库后端无法展示

mysql中数据库后端无法展示: 错误现象 解决方法: mysql中数据库后端无法展示:my.cnf (5,7数据库) 在 mysql 配置文件中加入: sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 或者重启数据库

一文读懂 Redis 缓存系统

【摘要】本文介绍了Redis缓存原理、详细解析了缓存模型、缓存一致性和缓存异常场景。 【作者】李杰,专注于Java虚拟机技术、云原生技术领域的探索与研究。 尽管(关系型)数据库系统 (SQL) 带来了许多出色的属性,例如 ACID&#x…

APP产品经理岗位的具体内容(合集)

APP产品经理岗位的具体内容1 1、负责项目产品团队的管理工作,对项目产品团队考核目标负责; 2、全面负责“工务园”所有产品,全方位负责其生命周期管理; 3、按照产品管理相关的计划和规范,对产品版本的更新及发布负责,完善产品的…

MyBatis 反射模块

文章目录 前言反射模块实现ReflectorReflectorFactoryInvokerMetaClassMetaObject 反射模块应用SqlSessionFactory执行SQL 前言 MyBatis在进行参数处理、结果集映射等操作时会使用到大量的反射操作,Java中的反射功能虽然强大,但是代码编写起来比较复杂且…

MSTP+VRRP vlan接口作为网关(2)

SW2 g0/0/2 g0/0/5 g0/0/3 g0/0/4 shutdow 链路失效, vlan 3 的 根桥、master 依然是sw2 PC3的数据包会什么还会到达外部环回口? SW2: dis stp instance 2 brief dis vrrp brief vlan3的主机PC3访问3.3.3.3.数据包发给网关(master)Sw2 pc3 : tracert …

go语言unsafe.Pointer与uintptr

以下内容来源go语言圣经 1、unsafe.Pointer,相当于c语言中的void *类型的指针,如果需要运算需要转成uintptr类型的指针 2. uintptr uintptr是一个无符号的整型,它可以保存一个指针地址。 它可以进行指针运算。 uintptr无法持有对象, GC不把…

新能源汽车运行安全性能检验规程需要哪些CAN数据才符合标准

新能源汽车的前生命周期包括了整车制造、使用、转让市场及报废回收这几个主要阶段,在政策大力扶持下,国内新能源汽车的制造产业链完善,补贴培育市场取得丰硕的果实。目前来说,我国新能源汽车有着技术领先、设计先进、低成本优势&a…

Android集成微信支付

​ 打开微信开放平台登录账户后点击创建应用 根据提示填写完相应的内容提交审核通过后,需要开通支付权限。 1.接着在你的项目工程build.gradle文件中添加微信支付依赖库 ​api com.tencent.mm.opensdk:wechat-sdk-android: 2.在你的包的根目录下,创建w…

Nodejs+vue体育用品商城商品购物推荐系统_t81xg

本课题基于协同过滤算法,主要采用nodejs技术和MySQL数据库技术以及vue框架进行开发。功能主要包括首页、个人中心、用户管理、商品分类管理、商品信息管理、交流论坛、留言板、系统管理、订单管理等功能,从而实现个性化智能体育商品推荐方式,…

MyBatis基础之动态SQL

文章目录 动态 SQLif 元素choose-when-otherwise 元素where 元素set 元素foreach 元素 动态 SQL 简而言之,动态 SQL 就是在 Mapper 中使用分支、循环等逻辑。常见的动态 SQL 元素包括: if 元素choose-when-otherwise 元素where 元素set 元素foreach 元…

2024年中国计量大学MBA最新招生计划公布:有哪些看点?

中国计量大学MBA项目立项于2023年,第一年招生就顺利完成开班任务,虽然人数不多,但是因为其有自身的项目培养定位,因此未来的市场中还是可以保持自身的优势。从2024年最新的招生计划来看,中国计量大学的总体计划依然采取…

大数据-离线项目

第一章 需求分析 需求分析与设计 项目需求背景 "某APP上线后 经营得当 使用户 日活量增多 出现以下问题""营销分析断层:"市场营销成本居高不下,投放拉新的效果追踪出现断层,无法追踪各渠道实际转化率,难以…

应用在摄像头对焦镜头中的马达驱动芯片

摄像头(CAMERA或WEBCAM)又称为电脑相机、电脑眼、电子眼等,是一种视频输入设备,被广泛的运用于视频会议、远程医疗及实时监控等方面。普通的人也可以彼此通过摄像头在网络进行有影像、有声音的交谈和沟通。另外,人们还…

记录uniapp 微信小程序胶囊分享bug处理 (第一次点击分享的时候不能修改标题或者路径)

问题复现情况: 以下为博主代码: 问题原因: 因为博主的业务需求,需要在分享的时候调用后端的接口来实现分享挂载推广关系。也就是因为调用了接口导致 重新给分享赋值标题或者路径的时候赋值不上。(刚开始怀疑是微信分享的问题,后面…

HarmonyOS创作激励计划启动:助力技术创作突破边界

即日起推出HarmonyOS创作激励计划,成功投稿并入选的文章将在HarmonyOS开发者公众号上线,9大技术社区同步宣发,不仅有丰厚稿酬,还有机会赢取创作奖品! 活动时间 即日起-2024年12月31日,每季度按照活动规则评…

RabbitMQ 几种模式

一、Hello World 模式 在这一部分中,我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者。模型如下所示: 在下图中,“ P” 是我们的生产者,“ C” 是我们的消费者。中间的框是一个队列 RabbitMQ 代表…

灞桥论“健” 共话康养 灞桥康养论坛取得圆满成功

随着我国“老龄化”的加速,养老资源的匮乏已经成为一个十分严峻的社会问题。同时随着生活水平的大幅提高,康养产业应势而生。涵盖了养老、医疗、体育、养生、旅游等多个领域的康养产业,不仅要为老人们实现“老有所乐、身体健康”的理想&#…