分类: 项目管理
2015-09-06 17:20:34
产品从开发到上市,一般分为需求分析,方案设计,开发方案设计(概要设计,详细设计),测试,交付。
敏捷开发(Agile Development)是一种以人为核心,迭代,循序渐进的开发方法。是以用户的需求进化为核心,利用它迭代,循序渐进的方法进行软件开发,在敏捷开发中,软件项目在构建初期被切分为多个子项目,每个子项目的成果都经过测试,具备可视,可继承和可运行使用的特征。
敏捷开发致谢有必要的文档,或者尽量少写文档,敏捷开发注重的是人与人的交流,强调以人为核心。
迭代是指将一个复杂的且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就一次迭代的过程,同时每迭代一次,就会生产或者开发出一个新的软件产品。
敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和相应能力,除了原则和实践。
敏捷建模定义了一系列的核心原则和辅助原则,他们为软件开发项目中的贱魔实践奠定了基石。
主张简单:当从事开发工作时,你应当主张最简单的解决方案就是最好的解决方案,不要过分构建你的然间。
拥抱变化:需求时刻在变,人们对于需求的理解也时刻在变,项目进行中,project stakeholder可能变化,会有新人加入,也会有救人离开
可持续性:基石你的团队已经把一个能够运转的系统交付给用户,你的项目也还可能是失败的,其中就包括你的系统应该具有的鲁棒性,能够适应日后的扩展。
有目的的建模
Scrum和XP:敏捷开发是一种开发方式,但是没有明确说明用什么样的流程进行开发,而Scrum和XP则是具体方式。Scrum方式或者XP方式。Scrum侧重于过程,XP则侧重于事件。实际中,两者结合的。
1. Scrum中的三个角色产品负责人(product owner)负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,有权利接受或拒绝开发团队的工作成果。流程管理员(Scrum Master)主要负责Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的障碍。沟通客户和开发。开发团队(Scrum Team)人数控制在5-10人,每个团队可能负责不同的技术方面,但是每个成员必须有很强的自我管理能力,同事具有一定的表达能力,成员可以采用任何方式,只要能达到Sprint的目标。
2. Sprint的意思是短距离赛跑,这里指的是一次迭代,每一次迭代的周期是1个月时间,也就是把一次迭代的开发内容以最快的速度完成它。这个过程称为sprint
如何进行scrum开发
1. 我们首先要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这是product owner负责的。
2. Scrum Team 根据Product Backlog列表,做工作量的预估和安排。
3. 有了Product Backlog列表,通过Sprint Planning Meeting从中挑选一个Story作为本次迭代完成的目标,这个目标一般为1-4个星期,然后把Story进行细化,形成一个Springle Backlog
4. Sprint Backlog 是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成功效的任务。每个任务的工作量在两天内能完成
5. 在Scrum Team完成计划会议上选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成了什么,并且向所有成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);
6. 做到每日集成,也就是每天都要有一个可以成功编译、并且可以演示的版本;很多人可能还没有用过自动化的每日集成,其实TFS就有这个功能,它可以支持每次有成员进行签入操作的时候,在服务器上自动获取最新版本,然后在服务器中编译,如果通过则马上再执行单元测试代码,如果也全部通过,则将该版本发布,这时一次正式的签入操作才保存到TFS中,中间有任何失败,都会用邮件通知项目管理人员;
7. 当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行 Srpint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品(这个会议非常重要,一定不能取消);
8. 最后就是 Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中;
敏捷开发的优点:
1. 对于全新的软件,在项目早起测试人员参与并实现自动化测试脚本,但实际上软件的界面就非常稳不稳定,导致测试人员返工的工作量很大。
2. 对于全新的瑞案件,资料人员过早参与,后期返工工作量大。
3. 自动化系统测试工作量大,测试人员过早参与,后期返工的工作量大
4. 由于跨苏搭建圆形,没有在构架上进行严谨的设计,导致后期已知堆砌代码
5. 由于开发模式下无法实现快速构建,快速交付,团队普遍感觉很疲劳