CBB软件复用的基石
CBB重用和软件重用
软件开发从顶尖科学家的工作,日益成为一种人力密集型的产业化工作。产业化工作人们很自然的想到重复制造----工业界的成功例子——零部件标准化,且自动化地大量生产。对于软件来说这就是软件重用,软件CBB。
软件重用之路在企业中不平坦的, Common Build Block也就是CBB,则是铺路的基石,我们结合近几年咨询服务与PLM系统开发实践,从开发软件CBB的角度提供几点管见如下:
CBB规划,需要从领域分析和特征建模
企业需要建立平台开发部门,致力于可重用组件(CBB)的开发,同时产品线应以重用为目的开展重用开发工作,从CBB规划分析的角度来看,成功的CBB应着重考虑领域分析和特征建模。
软件CBB有别于硬件CBB。一个组件(从重用组件的角度讲,平台本身也就是CBB)需要一个良好定义,有清晰的边界;比如砖头是建筑这个过程的CBB而不是汽车制造这个生产过程的,所以应该采取类似SEI领域分析的方法,明确CBB所需支撑的服务范围。否则定义的CBB太大建设不成,或定义的CBB太小无法支撑使用者要求。
软件CBB针应对各种目标客户需求特征的变易点、易变点进行建模,弄清这些变易点的特性,从需求的角度,解决平台、公共组件的建设关系,这个模型是有效地区分平台和产品的边界。
CBB软件设计着重考虑依赖性
软件CBB重用是有代价的。CBB设计目标是供重用的软件,其质量的要求更高,同时其生命周期也更长——意味着可能面临更多的新增需求和需求变更,这样,在设计和实现过程中,必须对这些方面有特别的考虑。相同功能的软件,质量的高低,除了过程管理方面,自身在可维护性、易测试性方面做得如何有极大关系。
软件CBB设计作为从特征模型向实现模型的演变这样重要一环,对于CBB的设计,尤需注意针对各种设计方案取舍准则——重点考虑内部依赖性这个因素。
软件CBB设计关注开发工作易用性
出于安全的原因,企业CBB一般采用二进制发布。这样二次开发的易用性尤其需要考虑,从我们的实践看,解决这个问题最有效的方式是提供增强的IDE上针对CBB的定制部分。
有一实际案例:CORBA一直以复杂难用而为人诟病,始终没有积累其足够数量的开发人员,反观J2EE或者.NET,各自有数千万的开发人员,其复杂程度超过CORBA何止十倍,其成功的关键在于.NET, Eclipse这样优秀的IDE,大大降低了用户重用其产品的门槛。