第一部分:
什么是软件开发过程?什么是敏捷开发?
软件开发过程是指设计软件开发过程中涉及的一系列活动,指导开发组一步一步的进行软件开发。
包括传统的瀑布过程、螺旋过程、原型过程、敏捷过程等。
敏捷则是一类过程的统称。之所以把他们都称之为敏捷,是因为它们有共同的特点。
敏捷过程讲究快速迭代快速试错,将一个大的项目分解成一个一个独立的小项目,每个项目实现一定的功能,每个项目的成果物
都是可以运行的软件。经过多次迭代之后完成整个项目。
这里有两个关键点:
1.独立的小项目
2.每次交付可以运行的软件。
与瀑布开发方法的对比:
1.粒度更小,更容易施加控制,降低复杂度。
2.更好的适应需求的变化。传统瀑布方法需要经历需求获取、需求分析、设计、开发、测试、交付、运维等。上下步存在严格的依赖关系。一旦中间有任何一步出现问题则会导致难以估量的错误,越到后期修改的成本越大。而敏捷方法及时的引用开发和测试以及客户参与,可以及时调整偏差。及时出现问题也只需要付出很小的代价。因此更灵活。
3.人的认知过程是循序渐进的,敏捷方法推崇增量式需求获取。符合人类的认知习惯。经过多次迭代对需求认识越来越清晰,可以及时纠正原有的认知错误。而瀑布方法妄图在开始时一次性花费巨大的代价获取所有需求。而且获取的需求也不一定是准确和完整的。
4.瀑布方法上下步是串行的,具有严格的次序关系。因此在执行前面的步骤时负责后面任务的人员都处于闲置状态。人员利用率不足。
敏捷宣言
1.个体和交互胜过流程和工具
面对面沟通是最有效率的方式,人才是最重要的。胜过繁琐的流程和工具。
2.可以运行的软件胜过面面俱到的文档
文档只是工具不是结果。不能为了文档而文档。而应该将主要精力放在如何构建正常运行的软件上。
3.客户参与胜过合同谈判
多和客户沟通,让客户参与到项目中来,有助于交付满足客户期待的软件。
4.响应变化胜过遵循计划
拥抱变化,面对变更应及时调整策略
敏捷方法是一系列过程的统称,都包括哪些过程呢?
XP(极限编程)、RUP(统一软件过程)、Scrum等。
其中scrum在近些年越来越流行。因此我们专门介绍下。
Scrum英文意思是橄榄球,这里用橄榄球运动来代表这种开发方法激烈、刺激。
Scrum是敏捷的一种,因此符合敏捷过程的所有特点。但是敏捷中的每种方法在具体实施时还是有一些不小的差异。
这里我们着重介绍Scrum。
Scrum讲究以人为本,采用迭代方法、循序渐进的开发软件。
具有三种角色:
Product Ower:产品owner,类似于产品经理。负责收集需求,定义优先级,确定需求实现程度
Scrum Master: Scrum教练,负责项目按照scrum流程执行,处理在项目执行中遇到的各种困难和阻力,把控质量、跟踪进度。类似于传统PM的角色但又有比较大的差异。
Scrum Team:Scrum开发组,在scrum的框架下执行项目开发工作。
Sprint
英文是冲刺的意思,代表一次迭代过程。每次迭代2-4周。
几种活动:
Sprint plan meeting:冲刺计划会议,在每次冲刺前进行。由scrum master product ower、scrum team和高层参加,时间一般为
4-8小时。Product owner将product backlog中的任务划分优先级,同时进行需求澄清。scurm团队成员对本次sprint要完成的user story进行分解成task,挑选感兴趣的任务并接进行工期估算。
Sprint daily meeting: 每日站会,两个主题:昨天做了什么,今天计划做什么。进度如何。
Sprint review :sprint 评审,每次冲刺结束时由Scrum team将本次冲刺完成的任务进行展示,检验执行情况和质量。长度控制在两个小时左右,不需要ppt。与会人员根据sprint计划会议的目标来评审目标的完成情况。
Sprint 回顾会议:回顾整个冲刺,总结和反思,促进团队持续成长。
燃尽图:横轴表示sprint花费的时间,纵轴表示sprint中所有的任务。燃尽图可以体现sprint的进度。
User Story:sprint backlog中的每一项都使用一个User Story来描述。一个User Story就是站在用户的角度对系统的每一项功能的一项简短描述。User Story粒度不要太大,一般需要在一个sprint内完成。Scrum team会将User Story拆分成一个或多个task。
scrum开发流程。
Product Owner在项目开始时将任务放进Product backlog,由于需求是增量式获取的,因此这个过程也是增量式的向Product backlog中添加任务。
在每次sprint开始时,进行sprint plan meeting,会议上由product owner确定product backloug中任务的优先级,scrum团队决定本次sprint要完成的任务,将任务分解成工作项并进行工期估算,同时将任务从product backlog转移到sprint backlog。冲刺阶段每日进行sprint daily meeting,每次在15分钟左右。两个主题:昨天完成了什么,今天计划做什么。有困难提出但会后和相关干系人讨论,不占用会上时间。冲刺结束时进行冲刺评审,对本次冲刺完成的任务进行演示。检查完成情况。冲刺评审之后进行冲刺回顾,回顾过去的冲刺存在的问题,提出改进方案。重复以上过程,直到完成所有任务。
第二部分:
小组作品的github源码地址:https://github.com/orgs/fifthteam/projects/1
开发项目:生活在长大
成员
分工
蹇龙远
模块搭建,安排任务
张柱
数据库管理
李波
前端开发
邓晓翔
后端程序调试
陈沃尧
测试反馈