2016-03-22-信息系统实践手记3-按业务展开的代码剥离


layout: post
title: 2016-03-22-信息系统实践手记3-按业务展开的代码剥离
key: 20160322
tags: 测试 重构 方面编程 优化 持续集成 master PO 开发 剥离
modify_date: 2016-03-22
---html

信息系统实践手记3-按业务展开的代码剥离

说明:git

正文:github

  • 信息系统实践手记系列是系笔者在平时研发中前后遇到的大小的问题,其中比较典型的内容加以收集和分享。
  • 信息系统实践手记目录:博客园(或查看源码的README.MD文件)

摘要:web

  • 介绍一下业务相关的代码优化(比较抽象,偏系统分析和设计)。

正文编程

1. 问题出现

如前面2次手记提到的这个既有视频功能也有地图GIS业务的客户端,它的确有瑕疵(要开发的面面俱到,毫无问题的确困难)。
此次遇到了其实能够归为“面向方面编程”的问题。问题的出现实际上是一个研发老大难问题,典型的患病过程以下:

1. 开始先作客户端软件的原型(研究大框架,大应用场景,平台互通状况,模块调用个状况等);//没啥问题
2. 逐的添加单一的功能来迎合需求的增加(相对独立的功能);//没啥问题;
3. 功能开始增多,场景也多了,开发人员从1个变为2个,4个,6个,并且遇到了全国各地多处研发节点的联合开发;//代码开始冗余,但问题不大;
4. 为快速发布到现场拿合同和项目,产品经理最关心的是快速实现功能,而不是重构和优化,因大框架优秀才勉强支撑主体开发,代码细节开始走上不归路;//代码冗余加重,开始患病;
5. 开始出现张三在实现功能A时引发功能B失效,只能不断回归测试,投入巨大人力,高手介入后发现代码冗余问题,开始抱怨;//代码问题不能再忽视和忍受了;
6. 勉强通过添油加醋,让产品经理(掌控人力)认识到问题严重,赞成开始作细腻的代码剥离;也就是今天的主题,优化;//越晚重构代价代价越大,几何增加!不划算!
7. 得到人力支持,选高手1枚,普通开发1枚(其余高手还要应付主线同步开发呢!),带上系统和测试各一枚,咱就开始梳理和剥离代码,原理和过程较多,仅列举核心步骤以下:

2. 问题解决

1. 会诊启动:找(系统,开发,测试)各角色会诊问题,明确解决路径和目标,及大体时间要求和尺度;
2. 检视源码:开发集中review相关代码块,作到心中熟悉(功能上百个,通过十来人开发多年,早就忘记谁开发过什么);
3. 场景梳理:从测试角度,按功能不一样,区分不一样的场景入口及功能展示,将它们做为线头,梳理成文档;
4. 场景分类:从之前一味的实现大量功能,到如今按场景类别,区分出几种典型的场景{S1,S2,...,Sn},符合:
5. Sx间具独立性(低耦合):不互相依赖,使用上运行存在时空重叠状况而互不影响的;这涉及到:
5.A. 客户端代码角度:Sx的代码片断应该互相独立,不该该公用公共变量,数据结构或共享CACHE,以便互不干涉,支持同时GUI呈现;
5.B. 服务器代码角度:要考虑Sx的功能接口互相独立,各自运行;
5.C. 通常来讲,SERVER的设计原则老是“service on demand/按需服务”以及“independent/独立性”!
6. Sx内的依赖性(高内聚):在Sx的同类场景内,几种细分的功能或业务不能同时展示GUI,互斥状况。
6.A. 客户端代码角度:Sx的同类场景只能单选激活,代码上容许(甚至应该)共享公共变量,相同逻辑或数据结构,CACHE等,框架上应提高关联性。
6.B. 服务器代码角度:要考虑对Sx同类的场景提供服务时的鉴权,状态变迁,各类约束等状况,以避免出现场景混乱和互相影响。
7. 剥离代码:按不一样业务场景分类Sx,开始剥离代码,对客户端代码作检视,扫描实体动做代码依赖的“CACHE缓存,数据结构,上下文依赖,等等程序片断和元素”,而后该复制的复制,该用框架整合归并的归并。
8. 代码测试:剥离后,开发层面本身作MT(模块测试),而后打包给测试同事作SIT(系统集成测试),最终将分支合并到主线(若是以为控制得住版本及发布节奏,可不拉分支,直接在主线同步作新开发和代码重构;
   这省去了合并分支的巨大effort,但风险是一段时间内没法发增量版本,这方面的软件工程内容及敏捷实践,笔者另篇详述。

3. 多说几句

这里的剥离其实算是重构的一种,对敏捷开发来讲重构是极其重要的内涵,而重构最大的秘诀就是master(敏捷教练)的执着;

一个优秀的master一般应该具有:很是熟悉开发技术+善于找“茬”+喜欢“折腾”+完美主义者+能守住“程序之魂”的人;
master最好仍是:测试老法师,开发老法师,沟通老法师,设计老法师,架构老法师,文档老法师;这基本是不可能的;

祝全天下用血肉实践着敏捷开发的人们!

END

相关文章
相关标签/搜索