这几天一直在思考几个问题,现在提出了SCA(面向构件)的思想。而现在提出的SCA是在SOA的基础上建立的。而我就我们目前产品的状况,谈一谈我使用古老的技术实现SCA的思想,当然不是建立在SOA上的。因为我们每个模块和每个模块的联系甚小(不好抽出共享service)。还考虑到SOA一些成本的问题。还是用比较本,但应该行之有效的方法解决,以下为解决方案。
产品背景:研发人员频繁的出差,主要是因为产品在各地市(移动,联通,网通,电信)的业务需求不同导致,需要在主版本上修改功能以满足各地市的需求。这样我们的产品无疑是湖北移动,湖北电信,福建电信,福建移动等等,各出一个版本。其实我们做了很大一部分重复的工作。我们的产品也就不能称为产品,而我们一直在做项目。
现在就可定制、可复用以节省开发成本提出一些我的想法。
我想我们的产品应该面向组件,也就是说要松偶合,可复用,可定制。我们的平台(基础模块)只包括系统管理(用户、权限及公用工具、也可以用portal)一部分。而其他模块,像作业计划,值班管理,信息发布等等。每个都是一个单独可以部署在主版本(系统管理)的应用。而平台向外发布web servie接口以及也可以传统java方式调用,这些是可配的。这样可以做到每个模块各布署到单独的应用。如果这样我们可能还需要一个单点登陆(除portal)。这些工作是由研发人员进行控制。研发人员提供实施人员页面操作,实施人员通过配置可以将模块(组件也就是作业计划,值班管理)配到平台(基础模块)上。这样我们来维护一个组件库,组件库中包括各模块的应用。组件库的丰富是一个漫长的过程,也就是说,假如我们现在有一个福建移动的作业计划,而不满足福建电信的要求的,若需要新增功能,我想应该在原来版本上进行新增(由研发人员控制),若要修改功能,如果功能修改量比较小,而又对业务要求不是很合适。我们可以试着让项目经量说服客户。如果二义性比较大,这样我们可以在原来版本上新建一个版本,形成一个新版本。OK,现在我们有两个版本的作业计划了,随着时间的增加。我们的组件库越来越丰富。如果某个地市说要上产品一期,我们会拿出需求去比对,按照每个相应的组件去配置形成一个满足某地市的需要。而这些工作完全可以不用研发人员做。而这样,我们就实现了一个可定制的版本。如果这个地市要上二期,我们保持主版本的向后兼容,可以直接将新要上的模块挂上去。
目前面临的问题:
1.平台(基础模块)要修改,会改动很多模块。而我的想法是,基础模块的修改应该保持向下兼容。若修改应明确记录,其我们的多个组件也应修改。这样才能使已经上线的产品可以很容易的升级或新增组件。
2.需要有一个组件管理库,它用来管理组件,组件的版本,主要实现内容啦。修改组件的log,发布的组件啦。这是一个非常重要的事情。应该由研发人员撑控。
总之主要面临的问题就是版本的管理。
我目前也只是构思。也希望听听各位的意见。希望能给出意见。可能我的思想很老套了,但确实可以解决我们现在的问题。