文件编码文件密级最新发布日期当前版本XX软件股份有限公司公共代码及组件管理规范郑重声明:XX软件股份有限公司版权所有。本文档中任何部分未经XX软件股份有限公司书面授权,不得将材料泄露给第三方,不得以任何手段、任何形式进行复制与传播。变更履历版本日期变更理由/变更内容变更人备注1.0创建管理规范框架1.0根据研发中心公共代码管理规定对组件管理规范文档进行修改1.0增加了组件评审等流程以及对于跨部门代码复用目的的相关阐述1.0根据吴家仲等人的想法进行了修改1.0根据与sun的沟通结果进行了修改目录1总则31.1宗旨.....................................................................31.2原则.....................................................................31.3适用对象.................................................................32术语定义......................................................................33组件开发过程..................................................................43.1通用组件开发..............................................................43.2第三方组件采购............................................................54组件提交过程..................................................................64.1组件提交流程..............................................................64.2组件入库标准..............................................................64.2.1组件库组件的纳入标准..............................................64.2.2评审通过的必要准备................................................75组件维护升级过程..............................................................85.1组件维护管理的几种情况....................................................85.1.1组件部维护的组件..................................................85.1.2其他部门维护的组件................................................85.2组件升级.................................................................96组件取用过程..................................................................96.1组件的取用流程............................................................96.2组件取用情况统计规定.....................................................107组件撤销过程.................................................................10总则宗旨1.代码的复用水平是体现软件企业研发管理水平高低的重要标志。而组件的定义、管理则可以看作是代码复用的一个具体表现。2.随着公司组织结构的日益壮大,研发部门的数量也日趋增多,方向性(技术、业务)也趋向明朗化,而或多或少的重复性开发也屡见不鲜,此时,跨部门代码复用的重要性和艰巨性也就日渐突显。3.为提高公司内部跨部门代码复用水平、促进各技术人员加强技术交流、分享开发经验,特制定此组件管理规范。原则1.组件管理的原则(目的)是:提高公司内部跨部门代码复用水平、促进各技术人员加强技术交流、分享开发经验。2.按照组件在公司内可维护的能力,将组件分成三类:1)通用型组件2)业务型组件3)第三方组件3.研究院组件部是组件库归口管理部门,研究院组件部负责人是组件库主管人,组件库主管人必须作好组件代码的登记、整理、统计和分发工作,并定期将组件代码库的有关信息发布到公司内部的portal上供其他员工查询4.配置基线库是组件代码存放地,配置管理员要定期作好组件代码库的备份工作5.组件代码的管理由以下几个过程来控制:1)组件开发过程2)组件提交过程3)组件维护升级过程4)组件取用过程5)组件撤销过程适用对象组件部成员、公司其他研发人员以及配置管理员等。术语定义No.术语定义No.术语定义1公共代码具有完整功能逻辑、能被应用于两个或两个以上的软件产品或项目的程序片段及其附属资料。公共代码可以是用某种程序开发语言书写的源代码及其的设计文档、使用说明资料,也可以是以二进制形式存在的、能被复用的程序组件及相关的设计文档、使用说明资料、演示程序等。2组件为了解决功能或机制层面相较于类更大粒度复用的问题,引入了组件的概念。简而言之,我们可以把组件理解为对于一组具有某种或某些通性(如某种功能或某种机制等等)的公共代码的封装,对外暴露一个或多个接口,供外界调用。在本规定中,组件包括三种类型:通用型组件和业务型组件以及第三方工具组件。3通用型组件与业务无关、能够被专人进行升级、维护的组件。通用型组件通常是支持一些公共控件、通用算法等。4业务型组件与业务有关、在某一业务领域或多个业务领域有普遍意义的组件。5第三方组件从第三方厂商购买或从网上的开放源码团队中获得的公共代码,根据公司研发实际需要进行再次封装,形成组件。这类组件通常核心部分在公司内不能维护升级,只有再次封装部分可以进行维护升级。组件开发过程组件的功能开发过程应符合公司的软件开发规范,具体这里就不进行描述了,主要对通用组件开发申请及第三方组件采购的一些过程进行规定。通用组件开发通用组件开发流程的说明如下:提交申请讨论协商功能实现同意开发是否1.决定开发某个组件之前首先需要提交某组件的开发申请至组件部(申请方式可以为口头申请,申请部门可以是组件部也可以是其他部门)2.收到申请后组件部组织讨论协商,如果经讨论认为可以进行该组件开发,原则上开发部门以组件部为主(如果组件部处于精力不足等状态可以组织协商来决定开发承担部门)3.组件开发申请通过后,根据协商结果来组织相关人员进行功能实现第三方组件采购第三方组件购买流程说明如下:1.该流程主要针对其他部门发起的第三方组件购买申请2.组件部负责对申请的组件进行核实,核实内容主要包括查找组件库中是否已经存在类似的组件,如果发现有类似组件则走组件取用过程3.如果组件库中不存在类似组件,则组织采购申请评审,如果评审不通过则退出该流程4.如果评审通过,组件部负责进行组件的采购相关事宜5.采购成功后,组件部负责入库相关事宜,参见组件提交过程6.新采购的组件提交入库之后,组件部负责通知相关申请部门进行组件取用过程提交申请存在类似组件组件部核实评审组件取用否是评审通过组件部购买组件入库组件提交过程组件提交流程组件的提交过程说明如下:1.组件提交流程主要包括:提交、评审、入库2.提交过程主要包含两种方式:1)其他兄弟部门同事推荐2)组件部主动收集(代码及需求)3.提交评审由组件部来进行组织,评审遵循的组件入库标准请参见2.1组件入库标准。4.评审人员包括:组件部相关人员、项目组相关人员(组件由其他项目组提交)、相关领导。5.组件基本信息文档在评审通过之后由组件部整理,并最终交由提交人签字确认(如果评审未通过则需要相关提交人员根据评审结果来查漏补缺,如完善代码注释、补充必要的资料文档等等,修订后重新提交组件部,由组件部再次组织评审)6.组件部会同配置管理员利用配置管理工具在配置基线库中预留目录,并将组件必要的源码、资料等一并入库。7.组件入库之后组件部需要进行验证和完善的过程8.组件部需定期整理“公司组件信息表”并发布到公司内部的portal供员工备查,组件部可以根据实际需要将组件库的相关资料也一起发布到公司内部的portal网上备查9.配置管理员需定期对公共代码库备份组件入库标准组件入库标准旨在规范允许纳入组件库的组件的鉴定标准及通过评审的必要准备。组件库组件的纳入标准鉴定一个组件是否属于可以纳入组件库主要遵循如下原则:1.属于通用型组件类型的组件可以纳入组件库进行管理,具体请参见“1.2.3提交评审入库是否通过是否修改通用型组件”,如不包含业务含义的打印组件等。2.属于第三方组件类型的组件可以纳入组件库进行管理,具体请参见“1.2.5第三方组件”,如公司购入的图表组件等。3.业务型组件类型的组件,除了根据“1.2.4业务型组件”鉴定其业务普遍性之外,还需要对于业务普遍性的跨部门复用进行界定,即如果某个业务组件的业务普遍性仅仅是体现在某个部门内部,则不允许纳入组件库进行管理,纳入组件库的业务组件前提是至少“已经”被两个或多个部门在相关项目的业务功能上被复用。如ezreport报表组件等。评审通过的必要准备为了更好的通过组件的入库评审,组件提交者(可能是组件部成员,也可能是其他研发部门成员)需要完成如下准备:序号考核条目通过标准是否必须备注1代码注释API注释完成率为100%,核心算法注释完成率为100%,其它代码注释完成率为30%以上是2编码规范组件代码编写符合公司制定的编码规范是3单元测试单元测试覆盖代码率达到40%以上是4功能测试提供功能测试用例,覆盖需求率为100%否业务组件必须提供5API文档为对外公开的接口、方法等提供API文档是6使用手册提供使用手册,并且满足公司使用手册规范是7demo程序提供demo程序,可以很好的演示组件的使用情况否视具体情况定注:以上考核条目可以视具体情况通过提交部门与组件部进行协商来决定具体有谁提供,如提交部门精力不允许的情况下可以协商组件部进行demo程序的开发等等组件维护升级过程这里的组件主要指纳入公司组件库的组件,其维护管理主要分为如下几种情况:组件维护管理的几种情况组件部维护的组件1.组件的维护管理原则上以组件部为主2.通用型组件维护的负责部门是组件部。组件部须指派专人对通用型组件整合、维护和升级,并完成有关的说明文档、使用手册和演示程序的编写。3.第三方组件维护的负责部门也是组件部。具体情况与通用型组件类似。其他部门维护的组件1.在需求非常紧急而组件部又精力不够的情况下,组件部可以授权给其他部门对相关组件的部分进行修改,修改人员对修改或更新部分需要提供给组件部必要的更新说明,并对修改部分重新入库,组件部需要定期进行检查、核对。2.业务型组件由于业务领域的特殊性(也有可能因为组件部精力不够等情况),某些业务型组件入库后经评审决定维护人员允许指定为其他研发部门成员。当第三方部门需要取用该组件时,可以提交申请给组件部,组件部从中进行组件发布、维护的相关协调工作3.第三方部门也可以直接提交申请给维护人员,并进行相关的协调工作,但需同时通知组件部,组件部负责对相关情况进行确认,核实后计入组件取用统计范畴,否则不计入组件取用统计范畴(参见组件的取用过程)。组件升级4.组件每发布一个新版本(如果是其他部门维护的组件,发布新版