zoukankan      html  css  js  c++  java
  • 系统设计笔记

    在不稳定的需求面前,尽量保持灵活性。

      多年的经验告诉我,国内软件开发的需求是极其不稳定的。比如说,原先某个字段是必填,后来又变成可选。又比如说原来实体类A和实体类B是一对多关联的,后来又变成多对多。

    虽然很多开发人员都非常反感这种需求变化,也包括我自己,但是不得不承认,这是现状,是一种常态,我们要去接受他。造成这种结果的原因有很多,由于篇幅有限,在这里我就不详细展开了。

      还记得在某本书里面看到过,软件开发需要考虑扩展性,要不是仅仅为当前功能而实现。当时没有太多感触,现在细想起来,的确非常有道理。看样子很多道理都需要亲身经历过才会有深刻体会。

    不是道理不够深刻,而是你没有经历过。那么考虑扩展性的优势何在呢?

      第一,适应需求变化更敏捷。这里用敏捷这个词来形容扩展性,是非常贴切的。很多系统就像意大利面条一团,扯也扯不开。在这样的系统里面,你想增加一个新的功能或者一个新的特性,需要付出很大的努力,而结果往往未尽如人意。而对于考虑了扩展性的系统来说,只需要很少的改动便能增加一个新的功能或者特性,感觉非常敏捷。

      第二,更少的Bug。因为软件开发不是一项孤立的工作,代码之间都是有依赖关系的,没有代码是能够孤立存在的。我们习惯于垂直划分系统来进行开发。这种设计方法有很多优点,比如开发人员之间的依赖比较少,大家可以并行开发。但是这个方法的缺点也是非常明显的,代码重复率高。为什么这么说呢?因为越上层的代码依赖越多,但是由于代码是垂直拆分的,就意味着所有代码都需要开发人员自己写,有个戏谑的说法叫“一揽子工程”。由于事先没有约定,很多开发人员都实现了同样的方法,这就造成了重复代码。

    当然缺点也是有的。

      第一,需要更多的开发测试时间

      第二,需要更强的专业技能

  • 相关阅读:
    2016.11.9 小测试
    【noip】跟着洛谷刷noip题2
    【长沙集训】2017.10.10
    【noip】跟着洛谷刷noip题
    Oracle-函数-translate
    bit,byte,char,string区别与基本类型认识
    通俗地讲,Netty 能做什么?
    oracle判断一个字符串中是否包含另外一个字符串
    Oracle导入导出数据库(exp/imp和expdp/impdp的区别)
    同步异步以及阻塞和非阻塞的区别
  • 原文地址:https://www.cnblogs.com/mkxzy/p/7058305.html
Copyright © 2011-2022 走看看