Scrum学习心得
什么是敏捷开发?
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的 开发方法。它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发。
老师上课曾说过瀑布开发模型,瀑布开发模型是通过写大量文档,开发人员以文档为依据进行开发,然而敏捷开发则是注重的是人与人之间,面对面的交流,它只写有必要的文档,或尽量少写文档。它还会将一个复杂且开发周期长的开发任务分成若干小周期能完成的任务,每一次开发或生产的小任务都可以进行检测。`
什么是Scrum?
Scrum是一种敏捷过程模型,它的原则和敏捷宣言一致,应用Scrum原则指导过程中的开发活动,过程由“需求、分析、设计、演化和交付”等框架性活动组成。每一个框架活动中,发生于一个过程模式中的工作任务称为一个冲刺。冲刺中进行的工作适应当前的问题,有Scrum团队规定并常常进行实时修改。
Scrum开发流程中的三大角色:
产品负责人(Product Owner)
流程管理员(Scrum Master)
开发团队(Scrum Team)
流程图如下:
如何进行Scrum开发?
- 首先需要确定一个Product Backlog(按优先顺序排列的一个产品需求列表),这个是由Product Owner(产品负责人) 负责的;
- Scrum Team根据Product Backlog列表,做工作量的预估和安排;
- 有了Product Backlog列表,我们需要通过 Sprint Planning Meeting(Sprint计划会议) 来从中挑选出一个Story作为本次迭代完成的目标,这个目标的时间周期是1~4个星期,然后把这个Story进行细化,形成一个Sprint Backlog;
- Sprint Backlog是由Scrum Team去完成的,每个成员根据Sprint Backlog再细化成更小的任务(细到每个任务的工作量在2天内能完成);
- 在挑选出的Sprint Backlog过程中,需要进行 Daily Scrum Meeting(每日站立会议),每次会议控制在15分钟左右,每个人都必须发言,并且要向所有成员当面汇报你昨天完成的任务,并且向所有成员承诺你今天要完成什么任务,同时遇到不能解决的问题也可以提出,每个人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃尽图);
- 做到每日集成,使用TFS的自动化集成功能,当服务器获得最新版本,便会编译,若全部通过则发布新版本,则将该版本发布,这时一次正式的签入操作才保存TFS中,中间有任何失败,都会用邮件通知项目管理人员;
- 当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行评审会议,产品负责人和客户均要参加,每一个Scrum Team的成员都要向他们演示自己完成的软件产品;
- 最后就是 Sprint Retrospective Meeting(回顾会议),以轮流发言方式进行,每个人都要发言,总结并讨论改进的地方,放入下一轮Sprint的产品需求中。
团队项目
1.团队名称
BUGG
2.团队信息与分工
开发:周斌 、舒 溢
测试:许嘉荣 、唐 浩
Product Owner,产品负责人:黄欣欣 、廖帅元
3.计划实施:
- 选题
在线评测系统(Online Judge)起源于国际大学生程序设计竞赛(ACM/ICPC),是一种采用黑盒测试原理进行计算机程序正确性判题的自动化程序。该系统具有比赛公平性好,评测自动化程度高、节约人力成本等优点,广泛应用于各类计算机程序设计比赛和教学。几乎每一个大学都拥有自己OJ重点内容,像国内的北京大学和杭州电子科技大学国外的Codeforces和LeetCode都是一些著名的刷题网站,里面有众多的高质量的算法题供你练习,但是很遗憾,我们长沙学院没有属于自己的一套OJ系统,作为学校的一员和一个伪ACMER想建立自己学校的OJ,所以这就是我们这次选题的来源。
- 计划
由于以前没有类似的项目经验,所以在开源HUSTOJ基础上进行实现,HUSTOJ分为两大部分,core和web,分别对应判题和数据管理两大功能。
core分为三部分,judged,judged_client,sim。
①juded是一个服务进程,负责轮询数据库或web端,提取判题队列
②judge_client进程为实际判题程序,负责准备运行环境,数据,运行并监控目标程序的系统调用,采集运行指标,判断运行结果
③sim为第三方应用程序,可进行语法分析判断文本的相似度,通过检验的程序将由judge_client复制进题目数据的ac目录,成为新的参考样本。
4.团队中实践scrum
根据所选题目,挑选出多个小故事作为迭代完成的目标,一个一个有规划的完成,尽量按照敏捷开发的流程规划,做到快速,迅捷开发。