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

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

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

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

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

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

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

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

    当然缺点也是有的。

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

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

  • 相关阅读:
    解决win10家庭版打不开组策略gpedit.msc
    Centos7上安装配置Redis
    Typora配置图片自动上传到图床
    SSM静态资源访问不了问题
    SSM整合
    opencv基础学习 小知识--绘图+小实战训练
    opencv基础学习详细笔记【1】--读取并显示图片
    Scikit-Learn 源码研读 (第二期)基类的实现细节
    Scikit-Learn 源码研读 (第一期)项目结构介绍
    在Win10上搭建fastai课程环境
  • 原文地址:https://www.cnblogs.com/mkxzy/p/7058305.html
Copyright © 2011-2022 走看看