敏捷式项目团队管理的构想与实践作者:simy.chen(重庆长安)时间:2012-7-9目录1-需求分析................................................................................................................................21.1-早期.................................................................................................................................21.2-中期.................................................................................................................................31.3-后期.................................................................................................................................32-预研与设计............................................................................................................................42.1-简单的日构建.................................................................................................................42.2-复杂日构建(验证+提醒+代码走查+部署)...............................................................52.3-项目管理平台.................................................................................................................63-实现........................................................................................................................................83.1-简单的日构建.................................................................................................................83.1.1-自动化打包..............................................................................................................83.1.2-自动化部署............................................................................................................113.2-复杂的日构建(验证+提醒+代码走查+部署).........................................................133.2.1-验证+提醒..............................................................................................................133.2.2-代码走查................................................................................................................223.2.3-部署........................................................................................................................233.2-项目管理平台...............................................................................................................243.2.1-集成构建平台........................................................................................................243.2.2-项目管理平台........................................................................................................283.2.3-单元测试框架........................................................................................................323.2.4-SVN资源配置库....................................................................................................361-需求分析对于大部分团队来说,敏捷式的项目团队管理就意味着及时、快速、自动的完成项目需求到项目实施部署的全过程管理,这里面涉及到的工作有:需求分析、系统设计、开发框架搭建、开发、部署测试、测试、发布、部署、意见及问题反馈、计划及跟踪等等。团队里每个角色都有很多需求,特别是团队中的管理层,那如海的需求可能给你带来不可能实现的压力和沮丧。让我们来看看团队会提出哪些需求。1.1-早期早期的项目团队估计在管理上基本都不会太多需求,甚至是自身管理制度都很不完善,这个时候表格式的管理模式是最好的推行管理方法的时候,这样使用的时间长了,团队就会意识到在什么时候需要做什么事情,渐渐的形成自身管理的方法和制度。这里我就不再上传表格了大致列出名称,大家可以自己去网上搜索,应该很多可以借鉴:变更及软件问题日志变更申请表配置状态统计报告评审报告模版项目开发计划项目质量跟踪报告用户需求信息记录表项目配置管理计划项目配置管理指南同行评审规范及指南项目质量保证计划。。。对于早期的项目团队一般投入资源不足,什么时候都需要节省,因此有一个需求还是需要实现自动化管理的,那就是日构建。日构建的功能是自动完成每日上传的代码的发布,这样可以让开发与测试同步,且节约大量人工发布的成本,毕竟我们的系统发布经常也还是比较复杂和浪费时间的,而且反复人工发布也容易因为疲乏而产生失误。而且我们开发往往还分了开发环境和测试环境,这样要浪费2个人力去专门做这个事情,多浪费成本啦!最好的解决办法是使用ANT实现简单的日构建,而对于.net的团队也有MSBuild,它的其实也是用的ant,只是为了兼容visualstudio,而做了个接口,那就是MSBuild。ant的集成能力非常强,几乎什么环境、工具都可以通过它操控,因此对于复杂的项目部署基本都可以满足需求,具体实现见后面2、3章节。1.2-中期中期的团队已经意识到日构建的威力和强大了,提出了更佳苛刻的需求,而项目管理上也形成了非常完整的管理体系。如:语言编码规范、代码基本质量规范、技术体系及规范、系统日志规范、工程结构及使用规范、产品研发相关流程(程序公共资源变更流程、关键技术使用申请流程、数据库变更申请流程、产品打包流程、产品发布申请流程)。而自动化项目管理上也提出了具体需求:日志周报阶段计划及跟踪测试及跟踪总结日构建及监控、及时提醒中期的敏捷项目团队需要对项目计划更严谨的管理和跟踪、而质量管理部分更需要有统一的平台实现项目缺陷的统一管理、日构建方面更需要全面的验证和出错提醒功能,以防止异常事故发生时,无人察觉。1.3-后期这个阶段的项目团队管理已经非常严谨和稳定,每个成员也非常自觉的遵守管理制度,只是在项目集成开发和测试、系统部署、以及项目沟通和管理上的成本逐渐凸显出无法承受的压力。大致需求有:a)项目计划管理:计划制定、汇总、监控统一化管理,规范化多级计划管理及审批流程,计划的版本控制,计划外任务的管理等。b)复杂团队的项目管理:跨组织的合作式项目管理,以及相关的计划及跟跟踪、计划负荷和进展、ROI投资回报、资源及项目分类统计。c)项目管理分级视图:项目管理要体现出实际的组织架构下的项目情况,可以按行政级别和组织单位进行项目计划和资源的统计。d)项目及风险管理:建立项目问题收集跟踪门户及流程规范、风险管理(风险分类、风险统计分析、风险数据报告)e)开发流程:能够反映出设计、设计审核、编码、单元测试等细化的开发流程f)测试管理:对于测试设计到执行全面管理,可完整反映出一个测试如何从设计到执行、完成的全过程。g)工作任务管理:任务登记及历史经验库,并且可以反映出任务相关成果内容及出处。h)报表需求:燃尽图、分级视图(按组织、角色、登记统计项目情况)i)代码及文档管理:完整的资产及版本管理、与计划、问题、风险可以建立关联,项目产品管理支持项目级管理需求,可跨团队、项目、组织共享和分享资料等。j)知识库:支持项目标准知识库的建立、能够和项目阶段相互对应k)部署需求:自动编译、打包、部署,自动测试(单元测试、功能测试、性能测试)、代码走查。l)模版定义:支持快速自定义各种项目报告、即支持统一模版,也支持项目级模版、可以根据提供的参考模版自行适度修改。m)兼容性支持:兼容eclipse、.net、jdeveloper等开发工具。n)易用性:开发环境可以让普通开发人员快速上手、门户环境能够让普通项目成员快速上手,维护编辑数据方便快捷。由于版权问题,详细需求我不能贴出来给大家,这里是我选择的部分内容。看了这么多需求后,相信大家跟我当初一样,感觉前路茫茫,即使有现成的平台也是非常难以实现所有需求,且工作量巨大。2-预研与设计2.1-简单的日构建这样的平台需要上配置库,目前比较流行的是Git、SVN,对于产品研发的团队如果面对的客户多、版本多,或者干脆就是开源研发团队,那请直接使用Git,对于像我们单位这样版本控制严格的自研自用的团队就使用SVN比较合适。对于简单的日构建,也是需要分析整个项目发布过程中会接触到那些工具和平台,比如:Windows、tomcat、solaris、WebSPhere、JDK等。比如:JDK5、Tomcat5产品打包和发布该如何。以这么简单的配置,当然是比较简单的,很多网上的xml代码都是以此为例进行讲解的,我们这里再重复一遍。对于自动打包应该注意以下几点:a)公共资源:有些项目需要保留原始的xml文件,如appconfig.xml、web.xml等,这样可以保障对应环境的安装包打包出来就可以用,节省人工修改配置xml的成本。b)项目类库:项目需调用的jar包c)需保留的代码,如:*.propertiesd)编译代码的范围e)项目编译后的jar包需包括的代码f)