互联网敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。本场 Chat 着重介绍互联网 Agile 敏捷的模型以及常用项目管理流程等内容。
本场 Chat 您将学到如下内容:
- 介绍 Agile 敏捷以及项目管理流程;
- 互联网常用敏捷工具和平台以及实战;
- Agile 敏捷以及项目管理总结。
互联网敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。本场 Chat 着重介绍互联网 Agile 敏捷的模型以及常用项目管理流程等内容。
本场 Chat 您将学到如下内容:
- 介绍 Agile 敏捷以及项目管理流程;
- 互联网常用敏捷工具和平台以及实战;
- Agile 敏捷以及项目管理总结。
介绍 Agile 敏捷以及项目管理流程
什么是敏捷开发?
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发。
为什么说是以人为核心?
我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。
什么是迭代?
迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。
关于 Scrum 和 XP
前面说了敏捷它是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而 Scrum 和 XP 就是敏捷开发的具体方式了,你可以采用 Scrum 方式也可以采用 XP 方式;Scrum 和 XP 的区别是,Scrum 偏重于过程,XP 则偏重于实践,但是实际中,两者是结合一起应用的,这里我主要讲 Scrum。
什么是 Scrum?
Scrum 的英文意思是橄榄球运动的一个专业术语,表示 “争球” 的动作;把一个开发流程的名字取名为 Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。
而 Scrum 就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。
Scrum 开发流程中的三大角色
- 产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
- 流程管理员(Scrum Master)
主要负责整个 Scrum 流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
- 开发团队(Scrum Team)
主要负责软件产品在 Scrum 规定流程下进行开发工作,人数控制在 5~10 人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到 Sprint 的目标。
Scrum 流程图:
互联网常用敏捷工具和平台以及实战
无论是创业软件团队,还是企业级规模化软件研发,都会遇到提升管理能力、提升研发效率的问题。为了解决这两个问题,许多软件研发工具平台也营运而生:微软、IBM、HP、Atlassian、Rally、Collabornet、Polarion…… 等厂商都推出了各具特色的产品,而近年来新生的 Slack、teambition 等平台也带来了新的理念和产品,受到了许多团队的欢迎。作为软件研发的团队或企业,我们该如何根据自身发展情况,对这些产品和工具进行合理的选择?一个支撑软件高效研发的工具平台应该具备哪些特点?未来又将向什么方向发展呢?
世界范围内软件研发工具平台产品发展迅速,国内产品仍是空白。
当我们在学校里用 Visual Studio 编写 hello world 的时候,我们就已经开始使用工具进行软件研发。只是那个时候,工具的作用还很单一,对管理能力、研发效率的整体提升还没有特别关照。
在 80 年代,国内的计算机、软件行业刚刚萌芽的时候,国外的同行已经开始研究使用工具提升软件研发效率,微软、Rational(后来被 IBM 收购)推出了各自的 IDE,并在不断增强 IDE 功能的同时,向需求管理和质量管理方向拓展。
90 年代,又有一些厂商加入到了开发软件研发工具产品的行列中,其中国内同行非常熟悉的莫过于 Mercury(后来被 HP 收购)的产品,90 年代末和 2000 年前后,大家经常使用的研发工具组合一般是:需求管理用 Rational Request Pro,开发 IDE 用 Micosoft Visio Studio,代码库用 collabnet subversion 或 Rational Clear Case,测试管理用 Mercury Test Director,软件性能测试用 Mercury LoadRunner。这些工具在软件研发的每个方面都提升了个人和团队的效率,也让越来越多的人看到了工具平台对软件研发效率提升的重要性。
进入 21 世纪,敏捷思想及敏捷软件研发方法开始逐渐改变人们对软件研发的认识。在软件研发工具平台方面,ALM(Application Lifecycle Management)逐渐成为各工具厂商产品努力的方向。在短短的 10 年内,涌现出一大批优秀的软件研发工具平台厂商,如 Atlassian、Rally、Polarion、Versionone、Serena…… 一些老牌厂商,如微软、IBM、HP 通过收购、合并、开发新的工具产品等方式,更加完善了软件全生命周期管理的工具平台。有了新的软件研发方法,配合众多优秀的软件研发工具平台,软件行业得到了快速的发展。此时国内同行也广泛认识到工具平台对提升研发效率的重要性,有条件的企业或采购,或自主研发,搭建起自己的研发工具平台。
2010 年前后,随着互联网的蓬勃发展,互联网软件研发逐渐成为新的焦点,DevOps 很快成为大家普遍的共识。很多传统软件研发工具厂商打着 “DevOps” 的旗帜适时地推出了一些产品或升级版本,同时又有一些新的厂商加入竞争的行列。在如何能够更好地管理软件研发活动的问题上,像 Slack 这样的产品向 “传统” 研发工具平台发起了新的挑战,在看到越来越多的软件研发团队更愿意使用 Slack 进行日常研发工作时,我们不禁陷入思索:未来软件研发工具平台将何去何从?
下面我主要介绍市场上最活跃的 2 款产品:JIRA、BugFree 和禅道。
JIRA 敏捷管理软件
JIRA 是 Atlassian 公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域,其配置灵活、功能全面、部署简单、扩展丰富。
JIRA 也可定义为 Professional Issue Tracker,即它是一个专业的问题跟踪管理的软件。这里的“问题”对应的英文单词是 Issue,所以含义比较广,包括 Bug、Task、Enhancement、Improvement 等等跟软件开发相关的名词。跟踪管理即对问题的整个生命周期进行记录和管理。一个问题从创建到解决到关闭涉及到很多相关信息,包括是什么问题、谁发现的问题、谁处理了这个问题、如何处理的、相应的代码有什么改变等等,JIRA 可以方便的记录这些信息,并且在问题的不同状态呈现在相应的责任人面前。相似的软件有 Bugzilla、Trac、Mantis、Clear Quest、Streber 等。
Bugfree 和禅道
BugFree 是借鉴微软的研发流程和 Bug 管理理念,使用 PHP+MySQL 独立写出的一个 Bug 管理系统。简单实用、免费并且开放源代码(遵循 GNU GPL)。 命名 BugFree 有两层意思:一是希望软件中的缺陷越来越少直到没有,Free 嘛;二是表示它是免费且开放源代码的,大家可以自由使用传播。
禅道是第一款国产的优秀开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程。先进的管理思想、合理的软件架构、简洁实效的操作、优雅的代码实现、灵活的扩展机制、强大而易用的 API 调用机制、多语言支持、多风格支持、搜索功能、统计功能。
Redmine 是用 Ruby 开发的基于 Web 的项目管理软件,是用 ROR 框架开发的一套跨平台项目管理系统,据说是源于 Basecamp 的 ROR 版而来,支持多种数据库,有不少自己独特的功能,例如提供 wiki、新闻台等,还可以集成其他版本管理系统和 BUG 跟踪系统,例如 SVN、CVS、TD 等等。这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线索和各种动态的报表形式来自动给成员汇报项目进度。
禅道项目管理软件的功能列表:
- 产品管理:包括产品、需求、计划、发布、路线图等功能。
- 项目管理:包括项目、任务、团队、build、燃尽图等功能。
- 质量管理:包括bug、测试用例、测试任务、测试结果等功能。
- 文档管理:包括产品文档库、项目文档库、自定义文档库等功能。
- 事务管理:包括 todo 管理,我的任务、我的 Bug、我的需求、我的项目等个人事务管理功能。
- 组织管理:包括部门、用户、分组、权限等功能。
- 统计功能:丰富的统计表。
- 搜索功能:强大的搜索,帮助您找到相应的数据。
- 灵活的扩展机制,几乎可以对禅道的任何地方进行扩展。
- 强大的 API 机制,方便与其他系统集成。
案例分析:IBM的敏捷转型之路
IBM 软件集团是一个庞大而复杂的组织,从 2009 年的软件部规模来看,全球 26065 名员工广泛分布在世界各地,拥有超过 500 个于各个时期收购的小公司以及相互独立的产品线,大量的独立工具和开发平台在公司内被采用。IBM 的五大品牌行事作风迥异,很难用一种流程、一种组织结构来进行统一。
为了促进发展,各品牌组织均开发了自己的经营策略,以适合其业务所在的市场。然而,IBM 为所有的品牌都定义和秉持了一套共同的技术策略。
- 开放的计算:为了创新并确保客户体验的自由度,客户端必须保持灵活性,这种持续的发展和推演需要基于技术和产品自身的价值而非自身的局限性。
- SOA:为了实现产品的灵活性和资产的重用,SOA(Service Oriented Architecture)是一套可以在分布式系统的设计和实现中将系统的业务模式与 IT 实现紧密关联起来的方法。
- 彻底简化:尽最大可能增强产品的实用性。
- 产品整合力:从商业价值出发,确保中间件的产品能够易于集成,并提供适于客户环境的完整解决方案。
- 产品研发的 3C 品质:消费性(Consumablility)、模块化(Componentiza-tion)和社区(Community)三个原则,聚焦于改进开发流程和开发过程本身。
3C 原则带来的产品的质量提升,还仅仅是在以产品为中心的主流市场获得的成功体验,但是,当市场发生巨大变化时,战略又将产生变化。2006 年的互联网高潮后,软件部受到全球 IT 经济低迷的冲击,股票开始下滑,面对开始失去信心的股东、董事会,为了生存,IBM 不得不将战略导向从稳定业务转向了动态业务,提出“随需应变”的核心战略,软件部由此提出了敏捷研发方法,最大化地提高生产力,将产品更快、更好地推向市场。
Agile 敏捷以及项目管理总结
敏捷项目管理架构(Agile Project Management Framework,APMF),估计是普遍大部分公司所需要的、也比较认可的模式,可以很好的实现传统项目管理向敏捷项目管理转型。这本书很值得推荐,从现代项目管理的发展趋势,到对软件项目管理发展史的剖析,到敏捷项目管理架构的推崇,到敏捷项目管理的企业导入,到敏捷创新创业模式讲解,让你在软件项目管理方面有了更加开阔的视野。如果你对敏捷项目管理感兴趣,在拜读本书的过程中会有茅塞顿开的感觉,同样也为你以后的软件项目管理路提供了更好的参考和借鉴。
通过对许博士这本书的研读,加入个人的理解,对敏捷项目管理架构,做了简单的梳理,希望对敏捷项目管理感兴趣的你带去更多帮助。敏捷项目管理架构(APMF)共包括 5 个阶段,分别为:立项阶段、启动阶段、发布循环阶段、迭代循环阶段、收尾阶段。
Agile 和 Watefall 开发模式的一些对比
经过敏捷实施后,我们的生产力提高了很多,员工的积极性提高了,业务的参与使整体需求把控也很好,大家沟通多了,30 天的任务提前了 5 天完成。我们多出来的时间,让大家每周有一天或者半天研究自己感兴趣的领域,但是这些研究最终必须体现出成果。比如后台开发想研究一个新技术,最后做完需要写个 ppt 给大家分享下。既能让大家做自己想做的事情,也给大家创造了一个互相学习的氛围。
本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。
阅读全文: http://gitbook.cn/gitchat/activity/5b222d37e4f51376b59dad57
您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。