首页 > 技术文章 > 集成对接项目的经验

chaos77 2017-07-14 14:26 原文

  现在很多的国家院所、事业单位都使用了多种办公系统,如OA,邮件、集中文印、加密文档管理、门禁考勤等。因为这些软件是不同厂商开发的,最初它们之间是没什么联系的,后来在使用过程中用户发现,同步管理不同软件之间的数据特别麻烦。比如新增一个员工,需要在每个子系统都添加一遍;又例如在集中文印的文件,到OA审批里又看不到等等,所以产生了各子系统间的数据同步的需求。在这些系统软件中,有一个“主系统软件”,一般是该单位最先采购,或使用频率最高的软件,或客户关系最好,以OA办公最常见,暂且称其为集成商。数据同步时,一般是数据产生者向使用者推送。比如新增用户信息,在OA办公中手工录入,然后自动同步到其他子系统;如集中文印的打印文件,由文印系统同步到OA系统。
 
  此类开发项目,涉及到不同公司和业务之间的交互,相对于内部项目来说会复杂很多,一旦出现问题,最常见的就是互相推卸责任。下面按照项目的各个阶段,介绍一下此类项目与内部项目的区别。
 
1.方案阶段
  这一阶段实际包含了需求分析、概要设计和讨论、商务谈判签订合同等环节。客户自己是没有技术能力来协调各个厂家的,一般只与集成商或代理签订合同,再由他们与子系统供应商签订合同。所以一般的过程是,由客户单位向集成商提出需求,然后集成商提出设计方案,与其他子系统供应商讨论。经过各种细节讨论后,子系统也提出相应的设计方案,并评估工时费用,然后进入商务阶段。集成商掌握了客户,当然利润是最多的,他与子系统供应商必然有一番讨价还价,焦点就在技术复杂度对应的工时费用上。集成商会倾向于把需求描述得比较简单,从而压低技术复杂度,并把后续问题压到免费的调试维护期,子系统商则相反。
  从子系统商的角度,在需求分析和方案设计上,需要比内部项目花更多精力,因为内部项目没有合同交易,设计和时间计划上就容许了少量的变更,但外部项目因为有合同的制约,变更起来就很困难。在这一阶段,需要尽量与客户和集成商多沟通,明确应用场景和规格。另外还需要给对方说明,“规格文档中未列出的应用场景,默认是不支持的”,这样迫使集成商细化产品规格。
 
  在诸多的数据对接功能中,需要明确每个功能的责任方,一般集成商是需要总的负责。但另外一点很重要,就是数据的使用者也是负主要责任的,一旦出现问题,就有解决问题或证明对方有错误的义务。例如用户同步功能,主集成系统向子系统同步用户数据,一旦出现问题,用户首先发现子系统的信息有问题,就会天然的认为是子系统的问题。即使子系统经调试后发现是主集成系统未发送数据过来,也需要把这些日志信息拿出来并证明给对方看。
 
  一般在对接功能中,最好双方都有单元测试工具,来开发测试和查找问题。比如用户同步功能,数据发送方要提供一个接收测试工具,接收方也要提供一个数据发送测试工具,这样既方便开发调试,也有利于问题的定位。这一点在商务阶段要尽量争取,将其写入到合作协议中。
 
  集成测试环境也要明确写入合作协议中。如果集成商有条件提供测试环境,则子系统商只需要在这个环境中安装测试通过即可,后续的实施有集成商负责。如果集成商没有条件提供,则子系统商都必须在客户的实际环境中调试,难度和成本都会增大。
 
2.开发阶段
  搭建开发调试环境。最好是能安装一套对方的软件系统,进行开发与调试,不过这一点未必能做到,这时候必须先开发测试工具,模拟对方的的系统。开发过程中,各种问题会逐步细化,还需要与对方继续沟通,更新接口文档。在与对方系统的交互中,每一步都要假定对方无法正常工作或效率很差,并有日志输出以及对应的处理方法。
  对接功能一般在内部无法真实地测试,只有开发人员编写测试用例来自测,不过最好还是让其他人来做这个测试。
 
3.调试阶段
  我们知道,在公司内部的跨部门协作都比较麻烦,不同公司之间就更加如此。在开发和内测完成后,大家可以约定时间地点进行联调了,之前一定要与对方的开发人员先行沟通调试的内容与计划。很常见的情况是,对方开发的功能根本不完善,或未经测试,或者只派出非研发的技术人员来沟通,所以这些情况都需要提前确定好,否则联调很容易超期。
 
4.维护阶段
  经过联调和实施,产品上线后,用户在使用过程中很可能会遇到问题,当然数据的收发双方系统会互相推卸责任。如前面提到的,用户首先会认为是“数据使用者”的问题。这时候一般需要技术人员上面检查日志,并利用双方各自的单位测试工具,快速定位问题。
 
以上是我在这类项目中遇到的各种问题和心得。

推荐阅读