《让子弹飞》里,马邦德说:“步子大了容易扯着蛋。”
到底有多少系统是因为过度设计而成废品的,谁也说不清,过度设计带的影响很明显:
1、开发成本过高
2、开发周期变长
3、功能逻辑交织混乱,模块耦合程度高
4、用户使用复杂,用户体验不好,学习成本高
5、系统稳定性低,维护成本高
6、系统扩展性差
7、设计和开发人员出力不讨好
到底是什么原因造成过度设计的,我的亲身体会是:
1、系统功能设计时,过于注重细节,太过完美主义,试图作出一个功能,百分百满足用户需求。
而对于系统的主旨重视程度不足。
2、系统功能设计时,超前考虑,为了处理系统中很少存在的问题,花费大量精力,而且替用户考虑并不存在的推断。
3、系统设计时,考虑使用从未用过的技术进行实现,以为新技术可能为系统带来较多优点,但是又对新技术的认识程度不够,开发时,为使用新技术完成原有功能特点作各种变通。
实际,用户的需求可能很简单,他们只需要在短时间内拿出一个带有可以忍受的bug,但是可以完成大多数功能的系统,帮助他们完成业务,然后再对使用的系统进行持续修改和完善。
有两点需要注意的是:
1、开发要以实际情况为主,不能过多推断
2、开发周期要短,用户可以尽快使用和改造
说到最后,这种开发模式可能是敏捷开发的特点。
到底有多少系统是因为过度设计而成废品的,谁也说不清,过度设计带的影响很明显:
1、开发成本过高
2、开发周期变长
3、功能逻辑交织混乱,模块耦合程度高
4、用户使用复杂,用户体验不好,学习成本高
5、系统稳定性低,维护成本高
6、系统扩展性差
7、设计和开发人员出力不讨好
到底是什么原因造成过度设计的,我的亲身体会是:
1、系统功能设计时,过于注重细节,太过完美主义,试图作出一个功能,百分百满足用户需求。
而对于系统的主旨重视程度不足。
2、系统功能设计时,超前考虑,为了处理系统中很少存在的问题,花费大量精力,而且替用户考虑并不存在的推断。
3、系统设计时,考虑使用从未用过的技术进行实现,以为新技术可能为系统带来较多优点,但是又对新技术的认识程度不够,开发时,为使用新技术完成原有功能特点作各种变通。
实际,用户的需求可能很简单,他们只需要在短时间内拿出一个带有可以忍受的bug,但是可以完成大多数功能的系统,帮助他们完成业务,然后再对使用的系统进行持续修改和完善。
有两点需要注意的是:
1、开发要以实际情况为主,不能过多推断
2、开发周期要短,用户可以尽快使用和改造
说到最后,这种开发模式可能是敏捷开发的特点。
发表评论
-
find 的正则表达式
2020-03-11 13:33 802‘findutils-default’ regula ... -
bat 位运算
2020-03-09 14:35 479必须要用引号括起来 set /a "resul ... -
bat 正则替换
2020-03-09 14:00 1534这是一段javascript,通过bat替换为指定字符串 ... -
U盘自动压缩复制小程序
2020-02-28 10:35 400经常需要复制文件到U盘,或者从U盘复制出来,基本上是同一个文件 ... -
解决maven-metadata.xml文件下载卡死问题
2019-04-11 14:02 4007http://192.168.1.110:8081/nexus ... -
svn输出本次变动的文件列表
2017-09-08 15:46 945eclipse的svn里,无法复制本次修改的文件列表,命令行里 ... -
centos 安装git版本管理工具
2016-12-05 17:03 571yum -y install gcc yu ... -
jenkins中集成sonar,使用findbug、pmd、checkstyle提升代码质量
2016-09-29 14:58 6186实际上jenkins单独也 ... -
jenkins 集成sonar
2016-09-18 10:14 0jenkins集成sonar可以从插件中心直接更新安装 son ... -
iteye博客内容搜索
2016-06-16 09:28 1277iteye的搜索功能,实在是太弱了,自已博客里的东西,基本 ... -
在centos中安装jenkins
2016-07-15 09:55 446在centos中安装jenkins 1)安装目录 pwd ... -
svn swtich命令
2015-10-09 18:29 671该命令会切换SVN目录到一个新的SVN URL上,切目录内的内 ... -
轻领导力 | 什么是高级主管的管理思维?
2015-09-24 14:58 0轻领导力 | 什么是高级 ... -
maven 处理资源文件的方式
2015-09-07 17:15 3865maven 默认情况下,对/main/resources/下的 ... -
当前是第几周
2015-08-03 17:48 822如果一周开始于星期一:=weeknum(date,2),反之一 ... -
vbs的xmlHttp.responseText无效的调用过程
2015-02-27 16:20 1032vbs真是门恶心人的语言, set xmlhttp = C ... -
maven 执行ant 任务
2014-12-25 14:59 857<build> <plugins> ... -
subclipse tree conflict
2014-12-04 12:30 1110最近合并分支代码时,总是报tree conflict ... -
subclipse merge Missing ranges解决办法
2014-10-31 17:34 5259引用 merge https://repo.ds.sss.co ... -
svn subclipse 的Change-set base merge
2014-10-31 16:19 2129Change-set base merge 名词:Col ...
相关推荐
面向方面编程(AOP)作为一种补充面向对象编程(OOP)的设计模式,旨在解决软件开发中常见的耦合问题,特别是那些在大型企业级应用中尤为突出的问题。在《AOP解决紧密耦合的难题》这一文档中,作者深入探讨了AOP如何...
10. **反模式与最佳实践**:了解常见的设计反模式,如过度设计、紧密耦合等,可以帮助我们避免这些问题。同时,遵循最佳实践可以提高设计质量,如模块化、解耦、松耦合等。 通过对以上知识点的掌握,开发者能够更...
同时,也会介绍一些反模式,比如过度设计、紧耦合等,以警示读者避免在设计过程中陷入这些陷阱。 针对不同的应用场景,教程会讨论如何选择合适的架构解决方案。例如,在高并发场景下,可能会涉及负载均衡、缓存策略...
### 系统分析与设计复习知识点详解 #### 一、面向对象的特点 - **知识点概述**:面向对象编程是现代软件工程中非常重要的一个概念,...通过对这些知识点的理解和掌握,可以更好地应对系统分析与设计领域的学习和考试。
嵌入式系统软件架构设计是针对特定环境下的软件开发模式,与传统的PC软件开发有着显著差异。嵌入式系统的架构设计需要考虑硬件紧密耦合、稳定性、资源限制、处理器性能和存储特性等因素。 首先,嵌入式系统软件设计...
研究中构建了一个由三个弹簧-阻尼小车系统组成的物理模型,每个小车之间通过弹簧相互连接,形成一个典型的耦合系统。通过与传统的控制算法进行对比实验,研究结果表明,提出的DMPC策略不仅在计算量上具有优势,同时...
- 保持简洁:避免过度设计。 - 遵循设计原则:如单一职责原则、开闭原则等。 #### 四、软件设计中的关键概念 1. **耦合与内聚** - 耦合:衡量不同模块之间相互依赖的程度。 - 松耦合:模块间的依赖关系较弱,有...
9. 精简性:只包含必要的功能,避免过度设计。 10. 层次性:采用分层结构,如三/四层架构,有利于分工和后期重构。 软件架构的定义在不同人眼中可能有所不同,有人认为它是组件及其交互,有人认为是关键决策的集合...
例如,系统复杂性增加,导致内部模块间耦合度过高,运维困难,变更和升级的影响分析变得复杂,一个小的修改可能会影响整个系统的稳定运行。 微服务架构作为SOA的一种现代实现,旨在解决这些问题。微服务架构强调将...
1. 可扩展性:设计应考虑未来可能的扩展,避免过度设计,同时保证系统能够适应需求变化。 2. 可维护性:模块化设计,提高代码复用,减少耦合,便于维护。 3. 高内聚低耦合:各组件内部功能紧密相关,组件间交互尽量...
总的来说,系统分析课件中的内容强调了单一职责原则在面向对象设计中的核心地位,以及它对软件系统质量和可维护性的重要影响。理解并熟练应用这个原则,可以帮助开发者创建更加高效、灵活的代码结构。
2. **最小化设计**:只做必要的设计,避免过度设计。在需求不明确或变化频繁的情况下,只设计当前最需要的部分,随着对问题理解的深入,再逐步扩展设计。 3. **反馈驱动**:通过测试驱动开发(TDD)和持续集成(CI...
在设计阶段考虑性能问题可以帮助开发者更好地平衡系统架构与性能之间的关系,确保在不影响系统架构完整性的前提下,尽可能地提升系统的性能表现。 #### 第2章 软件架构设计原则 **2.1 单一职责原则** 单一职责...
- **非必要的复杂性**:系统中包含了大量当前并不需要的功能,这通常是由于开发者对未来需求的过度预测所造成的。这些额外的功能不仅增加了系统的复杂性,还可能引入新的错误。 #### 总结 面向对象的软件设计技术...
文档提出的架构规范需要考虑系统的需求、设计、开发、实施四个层面的影响,并对技术选型进行评估,确保技术的透明性、封装性、易用性和可维护性。同时,强调技术的标准化、开放性、稳定性以及是否满足当前及未来业务...
在软件工程领域,架构设计是一项至关重要的工作,它不仅关乎系统的稳定性和性能,还直接影响着项目的长期可维护性和扩展性。架构设计的过程实际上就是一系列权衡的过程。在面对同一个问题时,往往存在多种解决方案,...
信息隐藏则强调模块内部细节对外部的不可见性,提高模块的独立性,防止修改带来的影响扩散。软件复用则是利用已有的组件,减少重复劳动。 4.3 模块化设计是软件设计的重要手段。分解是模块化的基础,将大问题拆分为...
三、信息系统分析与设计 在系统开发前,需进行需求分析,明确农场的业务流程和管理需求,绘制ER图(实体关系图)来描述数据实体及其关系。接着,进行系统设计,包括数据库设计、界面设计和接口设计,确保系统功能的...
此外,过度设计也可能导致不必要的抽象层次,影响开发效率。 ### 4. 组合/聚合复用原则(Composite/Aggregate Reuse Principle,CARP) #### 4.1 原则描述 组合/聚合复用原则提倡通过组合或聚合的方式复用已有类...