版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件过程管理论文101250163 魏云申【内容摘要】 随着用户对软件要求的提高 ,需求的变化性和不确定性已成为软件行业的显著特点。要在应对需求不断变化的情况下保证软件质量成为软件开发过程发展趋势。本文首先根据Oral History of Watts Humphrey一书提取了Humphrey关于现代软件过程管理的观点,进而结合公司实践探讨了敏捷开发方法Scrum结合传统软件过程管理PSP在软件开发项目中的应用。【关 键 词】 软件过程;PSP;Scrum1. 文献读后感 Oral History of Watts Humphrey这篇文献以对话的方式记录了Humphrey的生平,主持人Bo
2、och和Humphrey从童年家庭生活聊起,逐渐谈论到Humphrey在IBM的工作以及其凭借积累多年的行业经验所产生的一些感悟和对当下软件工程发展的想法。Humphrey谈到目前软件行业的趋势是开发有质量的软件,所谓质量,即为能够完成它所需要实现的功能,评判的标准很简单,就是客户的满意度。质量差的软件满足不了客户的需求,也就占领不了市场。在回忆他在IBM工作的那段时间时,Humphrey提到他刚入职时就被分派管理一个项目,在对管理流程和开发技术都没有太熟悉的情况他选择了耐心询问。Humphrey以他的自身经历告诉我们虚心求教是一个非常卓有成效的方法,因为工程师一般都喜欢讨论他们自己做的事情。
3、他们喜欢解释他们正在做的事情。当然Humphrey也抱怨到在IBM工作期间市场压力往往导致既定的软件开发计划不能如期实施。并且在传统软件开发过程中,编码和测试占据了太多的时间,前期的设计和计划往往只占一小部分。这通常都导致团队在后期总需要花大精力去修补之前没有发现的缺陷和漏洞。随着聊天的深入,Humphrey主要讨论了传统软件开发模式中的个人软件过程(PSP)和敏捷软件开发中的Scrum软件管理过程。Humphrey在谈到Scrum时提到根据自己的实际经验来看传统软件开发过程和敏捷软件开发两者并不存在冲突,甚至当两者结合运用时在软件度量管理和质量管理方面都做得非常出色。scrum提高了编程效率
4、,而PSP给出一系列度量和质量管理框架。基于上述文献观点,我准备结合实习工作内容谈下对PSP和Scrum的认识。2. 公司介绍2.1 公司现状我所实习的公司是魔迅信息科技有限公司,是一家体感健身游戏公司,公司的网址为“/”。魔迅信息科技有限公司于2010年4月成立于上海张江高科技园区。企业的目标是利用计算机图像处理最新最前沿的技术,开发一个基于普通摄像头的物体运动识别引擎,并利用该引擎开发一系列体感游戏投放于老年人健身和幼儿教学两个主要领域。公司总部在上海,并且在香港,台湾,新加坡,马来西亚,泰国,菲律宾,澳大利亚,新西兰等地方已经开展业务。今年四月
5、魔迅在南京建立南京分公司,主要专注于3D体感游戏的开发。魔迅公司是由多位在国外深造的科学家归国创建的高科技公司。2010年年初被中国国家级软件园区上海张江高科技园区浦东软件园评为目前最有投资价值的成长性企业而引进园区孵化器。企业的核心技术是利用计算机图像处理最新最前沿的技术,开发物体运动识别引擎,并围绕该技术开发一套体感健身游戏。并且其核心技术依赖的硬件设备仅仅是一个内置或外接的摄像头。魔迅公司为了顺应游戏平民化的趋势,在北美设立的研发中心根据中国的特点围绕着中国市场的需求研发了新一代体感引擎。该引擎适用性广,可以跨平台应用在各种不同硬件和软件环境中,从高端专用机到山寨机手机都可使用;该引擎使
6、用成本低廉,出了普通USB摄像头以外无需任何外设硬件,大大降低使用成本;该引擎的功能强大,可以实时进行人脸识别跟踪,运动检测跟踪,还可以支持多摄像头进行立体识别跟踪。该引擎对硬件要求的降低并没有使得性能下降。总之,魔迅是一家正在成长的发展空间很大的创业公司,全体魔迅员工都在为了更好的丰富人们的业余休闲生活而努力着。2.2 公司业务介绍作为一家体感游戏公司,公司的目标旨在让中国所有的百姓都可以在家进行体感运动。目前魔迅专注于医疗康复和幼儿教学两大领域,提供医疗康复、体感健身、互动教学、休闲游戏等方面的产品。据有关调查,我国有将近20%的老龄人口,已正式步入老龄社会。这些人口中除了有老年慢性病但可
7、以达到生活自理者之外,一部分人则需要通过康复的治疗和训练来恢复和达到最大可能的健康程度,其常见的疾病有:脑中风、脊髓损伤、严重的颅脑外伤、各种慢性肿瘤、老年人常见的椎管狭窄症、髋、膝关节的骨性关节炎及其脏器的疾病。然而在相关门诊,患病老人及家属却大多只为治病而前往就诊,很少将专业康复训练和治疗看得同等重要。为了给中老人提供更好的康复医疗服务,魔迅将传统康复医疗手段结合现代虚拟现实技术推出了虚拟医疗康复系统。虚拟现实技术引导下的情景互动式康复训练是一种创新且发展迅速的康复医疗技术,利用计算机和三维摄像头生成具有多种感官效应的虚拟情景,借助于视频体感技术,人可以与虚拟情景中的对象进行互动训练,创造
8、出最佳的康复结局。魔迅虚拟康复训练系统是国内首个集视频体感技术、虚拟现实技术和现代康复医学于一体的、包含躯体粗大运动、脑高级功能、日常生活活动、作业能力与保健的多功能康复训练专业系统。魔迅虚拟康复训练系统通过灵活便捷的程序设定生成出标准化和个性化的康复训练方案,改善康复训练的效率,有效解决了现有康复训练手段的局限性和康复医疗资源的的不足,极大地提升了康复医疗机构的专业形象。另一方面,幼儿教学也是魔迅重点拓展业务的领域之一。中国拥有超过1亿的06岁学龄前人口,占世界同龄人口的五分之一。中国的幼儿教育服务着世界上最庞大的学龄前人口,但是与之相对应的是,幼儿教育的质量却不能满足受教育者日益提高的教育
9、需求。我们都知道“三岁看大七岁看老”的道理,所以说三岁以前的教育犹为重要。而很多人认为教育就是教孩子认字、学英语、学画画。其实这不是教育的本质,只能是片面的、表面的上的理解,学龄前孩子教育的重点应该是培养孩子探索自然的兴趣和能力,沟通和融入社会的能力。因此,为了开发幼儿大脑培养其沟通能力,帮助父母提升与子女的情感交流,现阶段魔迅正着手开发针对幼儿教学的迅动乐园大厅项目,这也是我目前所在的项目组,我花了一个月的时间做好了网站设计,现在正在编码迭代阶段。3. 工作流程介绍与传统的CMM+TSP+PSP工作流程不同,作为一个只有几十名员工的创业公司,魔迅采用更加快速轻巧的开发流程。在产品整体开发上引
10、入敏捷开发技术,减少传统限制,提高开发效率,优化整个开发流程。在具体到个人的开发过程中采用PSP框架,提高个人开发效率,减少项目缺陷,提高产品质量。3.1 使用敏捷开发,采用Scrum骨架敏捷方法强调以人为本,专注于交付 对客户有价值的软件。在高度协作的开发环境中,使用 迭代式的方式进行增量开发,经常使用反馈进行思考、 反省和总结,不停地进行自我调整和完善。 众所周知,Scrum是一种迭代式的增量软件开发过程,通常用于敏捷软件开发。作为一个软件过程骨架,其核心在于迭代。团队首先浏览开发需求 ,考虑可用技术 ,并对自身技术及能力做出评估 。然后共同确定构建功能的方案 ,并每日调整方法 ,以应对
11、新的复杂问题 、困难和出乎意料的情况 。团队找出并 选择最佳方案去完成任务。此创造性过程便是 Scrum 生产力的核心 。Scrum的核心价值观是承诺、专注、公开、敬重和勇气。它提倡自我管理、涌现机制、可视性和评估/适应循环的根本原则。Scrum包括了一系列实践和预定义的角色。在我们的这个团队中,scrum的主要角色包括以下三种: Scrum Master,即团队的scrum教练和团队带头人,需要对Scrum过程负责,其主要职责是负责实施Scrum,向所有项目参与成员讲授Scrum方法,确保团队合理正常的运作scrum,并督促全体成员遵从Scrum规则和实践,帮助团队移除实施中的障碍。我的me
12、ntor就是在项目组中担任master的角色。 Product Owner,即产品经理,他代表项目中每位利益相关者的权益,并为项目产出的软件系统负责。他的职责是确定产品的方向和愿景,定义产品发布的内容、优先级和交付时间,利用产品Backlog督促团队优先开发最具价值的功能,并在此基础上继续开发。在项目组中担任产品经理角色的是在上海的同事,我们每周都会有召开视频会议进行项目交流,平时依靠邮件进行沟通。 开发团队,一个跨职能的小团队,按照标准的Scrum来说,该团队的每一个人,都应该要独立完成自己的模块,包括开发和测试等工作。他们是自我管理、自我组织和跨职能的,在实际工作中找出可在一个迭代中将产品
13、待开发事项转化为功能 增量的方法。在我们项目组,对团队成员的工作进行了小小的调整,我们的团队成员主要分为前台和后台,依托Django框架和ajax进行开发。在scrum开发模式中,sprint是scrum的核心,表现为一个迭代周期。在每一个周期中,都会要求有产品的一个发布版本需要完成,这个版本通常是一个可以独立使用并测试的产品。在迅动乐园项目组中,两周作为一个sprint,在每一个sprint中,都会有需要实现的功能(feature)。每个sprint中整个团队成员都需要参加项目例会,包括SM,PO,所有开发团队人员。每周的例会大概持续一个半小时。在例会上,SM首先说明一下会议的日程,然后从总
14、体上概括一下项目过去一周的进度,遇到的问题以及接下来一周的计划安排。然后,SM会要求所有团队成员报告过去一周的进度,完成了哪些具体的工作,还有哪些工作是没有完成的,在完成工作的过程中遇到了什么样的问题,对遇到的问题采用的解决方案,以及接下来一周的计划、任务。Scrum的开展分为以下几个阶段:(1) 制定sprint计划1) 确定user story本次sprint的开发团队(包括sprint master,即本次sprint的主要负责人),产品经理,一同坐在会议室。产品经理向大家展示已经划分了优先级的user story(即用户需求),并明确了本次sprint的开发周期,默认是3个周。接下来,
15、产品经理逐条向团队成员解释user story的要求,然后由开发团队共同为每条user story打分,叫做point。假设将本次sprint周期映射为100个 point,即在本次sprint周期大家最多能做完100个point的任务。团队成员按照优先级为user story打分,直到打过分的user story的point相加达到或接近100个point,基本上就确定在本次sprint周期内将对这些user story进行开发。为了防止突发情况,可以多给几个user story打分,一旦提前完任务,可以继续开发接下来的user story。整个过程中若出现分歧,由开发团队和产品经理进行协商
16、。2) 细化user story确定好本次sprint周期内要开发的user story后,开发团队要对每个user story进行细化,将其拆分成更细小,更清晰、明确的任务,方便开发。细化好user story后,再对产生的更小的任务进行打分。这个过程中,可能会发现某些小功能存在技术等方面的难题,可能会花费大量时间,然而团队在此次sprint周期内拿不出这么多时间给它,可以与产品经理进行协商,协商后给出比如简化该功能,制作一个简单版本作为替代等解决方案。(2) sprint执行公司里每个sprint团队都有一块白板,成为任务版,每个团队都将sprint周期内的backlog贴在上面,每天更新
17、一次。如下图所示:1) 编写backlogBacklog即任务的执行状态的快照。Sprint开始时,先在纸条上写下每个任务以及它的子任务,按照优先级的顺序贴在白板上,状态标注成start。Backlog的编写要清晰、简单。2) 每日的stand meetingSprint团队在sprint开始执行后,每天都要在任务版前进行一个stand。meeting,时间大概在10-15分钟,主要内容是团队成员叙述自己一天的工作,已完成的任务,遇到的问题等等,以便sprint master以及团队成员之间相互了解工作进度,实时调整开发计划。会议之后,更新backlog,有些小任务的代码编写完了,则把代表该任
18、务的小纸条挪到相应的一栏,将它的状态标注成code 完成等。3) 执行Sprint的任务开发过程通常也要采用高效的开发方式,主张开发人员、测试人员搬到相近的位置,并且开发时采用结对编程的方式。另外,sprint master也要和其他成员坐在一起,及时了解团队的工作状态。(3) sprint演示每个sprint周期结束后,由sprint master组织一次sprint演示,并告知公司内的所有员工,欢迎他们一起来参加演示,分享他们的工作成果。演示时由sprint团队的某一个或几个成员上台使用本次sprint的成果,边使用边讲解,使sprite团队以外的公司员工了解他们的工作,了解他们对此次工作
19、成果的意见与建议,以便以后开发出更好的成果。(4) sprint回顾sprint演示结束后,由sprint master组织团队成员以及产品经理一起对本次sprint进行回顾,总结工作中的优点和不足,记录下来,供以后进行参考。3.2 通过PSP规范开发过程PSP是一种可用于控制、管理和改进个人工作方式的自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。 它制定了一系列软件过程来指导软件工程师提高工作效率和保证软件质量,为软件工程师提供了发展个人技能的结构化框架和
20、必须掌握的方法。具体来说,它能够1、 说明个体软件过程的原则;2、 帮助软件工程师作出准确的计划;3、 确定软件工程师为改善产品质量要采取的步骤;4、 建立度量个体软件过程改善的基准;5、 确定过程的改变对软件工程师能力的影响。PSP 的核心思想就是通过不断地改进软件的过程,使之不断的得到改善,已达到按时按质地完成软件开发任务。其总体策略就是通过提供一个详细的个体过程框架,保证所有组成部分都是高质量的。它在开始阶段对整个过程进行计划,在结束阶段对收集的数据进行分析,以便调整过程;具体就是收集过程中涉及的数据( 时间、缺陷等),提高软件项目的计划和跟踪能力,对设计和代码均进行回顾,以尽早发现并排
21、除缺陷。具体过程结构为:n 计划程序的规模、资源,确定进度计划 ;n 将计划存入计划和总结报告中以便与实际的进行对比;脚本用于指导工作及数据的收集;n 经过设计 、设计回顾 、编码 、编码回顾、编译、测试等阶段实施开发;n 将设计和编码所需时间和发现的缺陷记入日志中n 在后置处理阶段收集日志中的时间、缺陷等数据;n 度量程序的规模记入计划总结表格n 将日志记入产 品计划总结报告中在我所在的迅动乐园项目组,前期我们花了将近一个月的时间进行需求获取整合和项目计划讨论。我们制定了一份指导项目进行的计划脚本和项目进度表,并估算了程序规模和编码时间,我们预计要花费一个月的时间进行编码,然后转入测试。目前
22、项目正在编码迭代阶段,前后台开发在同时进行。4. 工作流程优点及分析4.1 采用Scrum的敏捷开发方法,开发效率更高并且能快速适应变化公司在工作流程中的开发上引入了敏捷开发技术,开发团队可以将开发中的一些传统限制降到最小,找出最有利于实施开发的方案,然后进行快速的迭代开发,最终完成开发目标。总而言之,它提供了一种经验方 法 ,使得团队成员能够独立地 、集中地在创造性的环境 下工作 敏捷开发打破了传统瀑布模型开发的阶段与阶段之间的严格界限,最大化可以并发进行的工作,快速得实现部分功能,如此循环直至开发出符合需求的产品。它大大地提高了开发效率,优化了整个工作流程。 scrum极大地简化了 Scr
23、um 管理者 重的责任与权利的问题。它独有的对user story进行估分的方式,使得开发团队能较为准确得估算工作量,制定出更合理的开发计划。scrum要求开发团队要进行每日stand meeting,大家可以了解整体进度,互相了解碰到的问题,共同讨论,使得开发更加高效。 另外,scrum建议sprint周期相对较短,并且在制定sprint计划时,建议多考虑几个不再本次sprint范围的任务,这样在遇到突发情况时,可以及时调整,能够快速适应外界的变化。 由于Scrum的引进,我们的开发效率得到了提升,而 开发的周期明显缩短。开发人员间加强了交流,并且由于能很快地得到用户的反馈和认可,大大提高了
24、开发人 员的积极性和成就感。同时客户由于能及时看到产品的模型和演示,并且提出的意见能很快地被执行和产品化, 大大提升了参与的积极性,客户关系也大大改善。4.2 采用PSP结构化框架,指导并改善个人软件开发过程 PSP使用自底向上的方法来改进过程,指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人表现,管理自身的软件过程和产品质量。同时,PSP能够帮助开发人员在个人的基础上运用过程的原理, 借助于PSP提供的一些度量和分析工具,了解自己的技能水平,控制和管理自己的工作方式,使自己日常工作的评估、计划和预测更加准确、更加有效,进而改进个人的工作表现,提高个人的工作质量和产量
25、,积极而有效地参与高级管理人员和过程人员推动的组织范围的软件工程过程改进,为基于个体和小型群组软件过程的优化提供了具体而有效的途径。 PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。曾经有科学家对参加PSP培训的工程师们进行过数据统计,结果显示在应用了 PSP后,软件中总的差错减少了58.0,在测试阶段发现的差错减少了71.0,生产效率提高了20.0。研究结果还表明,绝大多数软件缺陷是由于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。而且根据多年来的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段引发了3
26、一5个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。 在这几个月的实习期内,自己的设计开发生产率究竟如何,完成一个项目的时候用于实际开发时间,解决问题和查找资料的时间,沟通的时间,修复BUG和维护时间究竟比例是如何的,每完成一个项目自己对自己整个项目阶段活动是否进行了评估了总结,确认自己的技能提升和改进点,这些内容在以前往往仅仅在我们头脑里面有个模糊的概念而没有一个确切的数据支持,这样的话这些概念就很难去指导我们个人的行动和改进计划。在采用了PSP来管理日常开发过程后,个体在实际工作中真正的数据收集成为了
27、最准确和可以参考的经验数据,帮助我们每个开发人员减少软件缺陷,提高计划 能力和生产效率,更好地估计和规划自身的工作,保证了项目整体的进度和质量。项目组的每位成员都在不断的发现自己的不足,不断地改进,以实现自我的不断改善。4.3 Scrun-PSP两者结合,优势互补尽管Scrum和PSP在软件过程分类上完全不同,但是在实践中我们发现其实两者是能够互相弥补的。一方面,Scrum提供了敏捷开发的软件管理框架;另一方面,PSP为以个人为单位的软件开发提供了准则和度量。在敏捷快速开发过程进行的过程中同时也保证了传统软件开发过程中度量和质量管理。5. 工作流程缺点及分析5.1 沟通成本高由于魔迅是个创业公
28、司,工作规范还不是特别完善,并且员工分布在上海、南京、北京以及海外。由于时差的原因,互相在一起交流的机会比较少。同时由于我所在的项目组同事分布在上海南京两地,平时只能通过视频会议沟通,影响了沟通效率,双方交流存在一定程度上的偏差,有时会导致各方的信息不全,可能会导致重复开发、错误开发等问题 。另外,公司采用的敏捷开发中的scrum技术,要求团队每日进行stand meeting,并且要互相了解彼此的工作,需要大量的沟通;由于需要在一个较短的sprint周期内开发出相应的功能点等,sprint团队成员大部分都忙着做实际的工作,而对文档等的记录工作比较忽视,这样就需要团队之间有更多的更细节的沟通。
29、5.2 用户需求不详细每个sprint开始时,都是由产品经理给出一个user story的列表,这个列表上只是简单的用模拟客户的角度列出的需求,在大家选定好user story,并对每个user story进行任务细分后,也仅仅只是简单的用开发团队熟悉的方式记录了详细的任务,但并没有一份详细的需求说明。在开发进行过程中,有人会碰到一些细化后的任务里并没有作出说明的情况,甚至有可能是严重的问题,这时由于没有详细的需求说明,并且我所在项目组的产品经理在上海,不能及时当面交流做出决定,导致sprint任务完成不了。这类问题也会导致sprint预估偏差过大,使得团队信心受损。因此,没有详细的需求说明是
30、个非常严重的问题。5.3 缺乏统一的培训魔迅的实习生刚入职时,没有进行一个系统的培训,对部门的工作流程以及个人职责主要靠个人的摸索和尝试进行熟悉。然而,每个人想法会有出入, 并且产品的需求获取和分析阶段也没有参与,于是对于一些产品的功能很难理解正确,甚至无法正确的使用功能,所以更加谈不上去做开发改进。在我刚进入魔迅实习的那段时间,基本上每天都处在自我学习中,master在给我一系列需要掌握的技能和知识后我就开始自己查资料进行学习。所以我建议还是应该对新员工进行一些必要的培训,能够让他们尽快熟悉工作的流程和事务,能够向正确的方向理解使用自己的产品。6. 软件开发过程改进方案6.1 针对问题1 沟通成本太高解决方案:(1) sprint团队成员在平时增加私下的工作交流,这样的话不用等到每日的stand meeting才能了解到其他人的工作状况,通过平常的简单交流就能了解。(2) sprint
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论