软件项目经理不但要用管理知识管理整个项目,还要为他们的团队选择更好的技术实践。在软件开发的众多技术实践中持续集成已经被越来越多的团队所采用,持续集成对于软件项目管理的各个领域的管理有着积极的作用。持续集成的使用会给开发尉队的管理带来很多的好处,做为管理者的项目经理以及团队成员都可以从中受益。
一、持续集成与软件项目管理
1、什么是持续集成
“持续集成”起源于极限编程开发,是它的12个基本原则之一。“持续集成”是一种软件开发实践,它要求开发小组的每个成员频繁的集成他们的工作成果,这个频度通常是至少每天一次有时甚至每天多次。开发团队的成员频繁的整合他们之问的工作,这种整合不是简单的组装软件,每次的集成通过一个包含测试的构建去尽快的探测潜在的错误,保证软件现有的功能不被破坏,自动分析现有代码的状态(有无重复逻辑,代码的复杂度等)并发布相关的报告。通过快速反馈,开发人员可以了解软件集成的情况,对不成功的集成进行快速的修改,从而提高软件开发的效率和质量。
2、什么是软件项目管理
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Protess)和项目(Project)进行分析和管理的活动。
为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数,掌握整个软件的开发进程。
二、持续集成对软件项目管理的作用
l、对项目目标管理的作用
软件项目的目标是开发出可运行的、客户满意的软件系统持续集成有统一的代码库。要求开发人员定期地、不断地向代码库提交代码。新近提交的代码会经过编译与测试,与代码库中旧有的代码相整合,形成安全稳定运行的代码库,既软件系统。这样。能够在最快、最短的时问内形成结果代码,逐步实现项目目标。这样的代码提交形式对软件项目的目标管理有利,项目经理能够最快速度地得到项目的最新代码库,并且新提交代码的问题也会及早地暴露出来,在最短的时间内得到解决。
持续集成已经被证明对于小到中型规模的项目目标的实现是有价值的,对于大的项目,仍然是有用的。
2、对项目时间管理的作用
生产力的发展过程是不断采用物化劳动取代人自身的劳动的过程,是不断自动化的过程。开发的构建过程中如果大量的采取手动过程不仅降低了团队的生产率,更严重的是它将许多不确定的因素引入到产品的构建过程,这使得发现以及解决问题变得异常困难。这样会更加地降低了团队的开发效率。持续集成的构建都是使用构建工具自动化地进行的通过使用持续集成工具将构建过程自动化,便于分析并找出问题,大大提高了团队的开发效率。
稳定而高效的开发效率保证了开发团队在一个轻松愉快的环境中工作,同时团队成员可以有更多的时问和精力学习新技术并将其应用在软件开发中,自动化测试,集成将开发人员从简单、繁琐的低级脑力劳动中解放出来,从而进行更高层次的思考持续集成的自动构建过程,极大的提高了软件的开发效率,对项目经理的项目时间管理有利。
3、对项目质量管理的作用
持续集成过程要求编程人员事先编写好很多的测试用例,在代码的提交过程中就对代码进行测试,这样的及早测试能够最快速地发现软件代码中的错误和缺陷,及时修改,从而提高软件的质量。
持续集成的测试包括:单元测试、功能测试、集成测试,进行部署等等持续集成要求有一个全面的单元测试验证集,使持续集成能够获得短集成周期。在一般的项目中,编写测试代码都至少会额外增加30%的工作量。初看,在时间和资金上这也许是很大的开销,然而,在持续集成过程中,编写测试代码是必要的,而且这样也省去了人工测试的时间,确保了软件产品的质量,对软件项目的质量管理有利。
4、对项目风险管理的作用
持续集成过程通常在开发人员提交代码后开始,服务器自动更新代码,编译,运行单元测试、功能测试、集成测试,进行部署这个持续集成的过程可以帮助开发人员快速发现并解决问题(编译失败,测试失败等)。与开发人员的机器相比,持续集成服务器运行在相对稳定、干净的环境中减小跟踪调试的难度,持续集成过程的失败通常意味着最近一次更新破坏了软件现有功能或引入了新的缺陷。在持续集成过程结束后,除了构建结果(War,Jar等),通常会生成代码分析报告(测试覆盖率等),帮助项目管理人员更好的了解并改善项目。
这种快速反馈集成结果,并进行快速修改的工作方式,在第一时间消除了代码中的Bug,极大地减小了系统发生错误、不能在用户环境中运行、系统集成时涌现大量问题的风险。这样使整个的项目进度完全掌握在项目经理手中,减少了项目的风险,有利于项目经理的风险管理。
5、对项目人力资源管理的作用 软件开发过程最终表现为人与人之间各种形式的合作。安全感与信心是合作最基础也是最重要的部分通过使用持续集成工具,开发人员可以了解到新的代码是否引人了缺陷。管理人员可以通过使用各种形式的报告对项目进行评估。不断发布的构建结果,使测试人员得以自始至终的参与到整个开发过程中,而不是在软件开发的最后阶段才加入团队。