专栏首页java架构师我们的软件出了什么问题------《敏捷软件开发:原则、模式与实践》(一)

我们的软件出了什么问题------《敏捷软件开发:原则、模式与实践》(一)

最近一直在读《敏捷软件开发:原则、模式与实践》,做做笔记。

第一篇 软件设计存在的问题

我们知道,系统的设计,是存在于头脑中的衣服至关重要的图像。

即使我们在一开始的设计阶段,就非常清晰的了解了需求,甚至于在发布的时候,依然清楚。但是在接下来,随着不断的使用,弊端、不足会一一的被暴露出来。系统变得越来越难以维护,最后,即使仅仅进行最简单的更改,也需要花费巨大的努力。

笔者提出了一下观点:当软件出现了下面任何一种气味时,就表明软件正在腐化:

1、僵化性:很难对系统进行改动。因为牵扯到其他太多部分的改动。

2、脆弱性:对系统的改动会导致心痛中和改动的地方在概念上无关的许多地方出现问题。(开发人员就像是一只不停追逐自己尾巴的狗)

3、牢固性:很难解开系统的纠结,使之可重用。

4、粘滞性:做正确的事比做错误的事要困难。

两种表现形式:软件的粘滞性和环境的粘滞性

面临一个改动时,开发人员发现,有一些方法会保持设计,但是实施起来困难,另一些方法会破坏设计,但是实施起来相对简单。而我们希望的是,可以更容易地进行哪些保持设计的变动。

5、不必要的复杂性:设计中包含有不具任何直接好处的基础结构。

6、不必要的重复:设计中包含有重复的结构,而该结构本可以使用单一的抽象进行统一。

7、晦涩性:很难阅读、理解。

待续.....

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hadoop学习3--安装ssh服务

    题前语:为什么要安装这个东西呢? 是因为我们要在多台机器之间通信,这个服务就相当于支持这种通信的一个桥梁,打个比喻,相当于windows里,通过远程桌面连接到其...

    小端
  • MVC几种找不到资源的问题解决办法

    在MVC中,controller中的Action和View中的.cshtml文件名称有一个对应的关系。 当不对应时,有以下几种情况发生: 一、找不到视图的错误 ...

    小端
  • Javascript无阻塞加载方法

    看了《高性能JavaScript》的读书笔记 几个原则: 1、将脚本放在底部 <link>还是在head中,用以保证在js加载前,能加载出正常显示的页面。 <s...

    小端
  • Java虚拟机详解(六)------内存分配

      我们说Java是自动进行内存管理的,所谓自动化就是,不需要程序员操心,Java会自动进行内存分配和内存回收这两方面。

    IT可乐
  • Windows IIS OCSP的开启和检测

    题目虽然是“Windows IIS OCSP的开启和检测”,实际上检测方法是通用的,Web Server不限于是IIS还是Apache、Nginx等。

    shawyang
  • 混合云策略的5个专家建议

    混合云的动态特性要求组织具有意愿来定期审查和更新其战略以及执行情况,因此可以考虑采用专家的一些建议。混合云需要建立一些重要的基础,其理想情况是从一开始就建立,这...

    静一
  • Memcached 及 Redis 架构分析和比较

    Memcached和Redis作为两种Inmemory的key-value数据库,在设计和思想方面有着很多共通的地方,功能和应用方面在很多场合下(作为分布式缓存...

    joshua317
  • AMD:NVIDIA DLSS抗锯齿是封闭技术 没得玩儿

    RTX实时光线追踪、DLSS深度学习抗锯齿,这是NVIDIA RTX 20系列显卡的两大核心技术特性,也是对手产品所缺乏的。如今随着《战地5》、《地铁:离去》开...

    Zip
  • 博客 | 为什么量子处理器的性能会有涨落?谷歌找到的答案是材料有缺陷

    雷锋网 AI 研习社按:量子处理器作为前沿的研究课题,即便各大世界顶级实验室和企业研究院们都在不断做出新的进展,亟待解决的问题仍然层出不穷。谷歌量子 AI 团队...

    AI研习社
  • redis_3.0.7_sds.c_sdsclear()

    青木

扫码关注云+社区

领取腾讯云代金券