zoukankan      html  css  js  c++  java
  • 遗留系统维护的思考

         不像发达国家,我们现在还在处在软件开荒时期,不断在开发着新的软件。但随着软件已经成为各行各业中的重要的基础设施,我觉得软件维护这个话题将变得越来越重要。

         据统计,可能80%的维护人员都不是以前的开发人员。所以,软件维护首要面临的是对当前软件系统的理解,这次我就这个话题说一下我自己的理解。目前只能想到几点,希望大家能够补充。 

         那么应该从哪几方面来理解呢?我觉得主要是理解业务,理解依赖,理解架构,理解设计,理解代码,理解Hot Spot。

    1)理解业务。

          问题1:这个系统是干什么的? 功能

          问题2:谁使用这个系统? 角色

          问题3:主要流程是怎么样的?流程,一般用泳道图

          问题4:有哪些主要概念?glossary,词汇表

          问题5:概念和概念之间的关系?概念模型,领域模型。

          问题6:业务所涉及的专业知识有哪些? 可以找专业知识学习,比如理解财务系统需要会计知识。

    2)理解架构。

         问题1:逻辑上系统是如何组织的?逻辑架构

         问题2:系统主要用了哪几种技术?技术架构

         问题3:系统如何部署的?部署架构

    3)理解依赖。

         问题1:系统依赖外部哪些系统?

         问题2:系统被哪些系统所依赖?

         一般用系统用例图表示。

    4)理解设计。

         问题1:数据库是如何设计的?ER模型。

         问题2:主要有哪些模块组成?概要设计。

         问题3:模块之间的关系?概要设计。

         对遗留系统,设计文档一般是过时的,过时的文档就像鸡肋。

    5)理解代码。

         问题1:有哪些主要类?

         问题2:有哪些主要接口?

         问题3:继承层次?

         问题4:关系?(关联,组合,聚合)

         问题5:职责?类的职责?接口的职责?

         问题6:依赖?依赖哪些包(组件层次),依赖哪些类(类层次)

         问题7:单元测试?有吗,跑跑看,单元测试是一个很好的视角,我阅读Spring的源码就是从单元测试开始。

    6)理解插座上的孔。

         问题1:业务上,系统本身可以满足哪些扩展? 比如可以通过配置,支持新的功能

         问题2:技术上,可以满足哪些扩展?比如可以继承哪些类,实现对新功能的支持。

         标记这些Hot spot(热点),使你对系统的可预见性有充分了解。

    7)理解你想要做的。

         问题1:本次修改,主要是对哪些业务的修改?

         问题2:本次修改,会影响到哪些模块?

         问题3:本次修改,要修改哪些类?

         问题4:本次修改,会影响哪些类?

         问题5:本次修改,会修改哪些方法,有什么影响?

         问题6:到底要不要改?

         问题7:修改哪些文件?配置文件,.java文件,数据库等。最好列出checklist。

         总之一句话:就是尽可能的获取信息。

         简单把上面的总结一下,就认清需要 (了解你想要的,到底想改什么),然后外面看看 (系统角色,外部系统依赖,架构,概念模型),里面看看 (类图,依赖关系,调用关系,数据库表,配置文件),到处摸摸 (试用一下功能,跑一下单元测试,debug一下)。

    (原文:http://gurudk.javaeye.com/blog/336571)

  • 相关阅读:
    我的架构经验系列文章 前端架构
    我的架构经验系列文章 后端架构 安全层面
    Adhesive框架系列文章报警服务模块使用和实现
    Adhesive框架系列文章Mongodb数据服务模块实现(上)
    在Silverlight程序中使用Thread一个很容易被忽略的问题
    .net(偏web) vs j2ee的一些框架选型
    Wcf扩展
    Adhesive框架系列文章内存队列服务模块使用和实现
    【翻译】C#编程语言和JAVA编程语言的比较(下)
    在测试Adhesive的时候发现一个Mongodb官方驱动1.1.0.4184比较严重的BUG
  • 原文地址:https://www.cnblogs.com/Mainz/p/1400239.html
Copyright © 2011-2022 走看看