基于Scrum敏捷开发的软件实训设计.docx

上传人:b****3 文档编号:12902864 上传时间:2023-04-22 格式:DOCX 页数:7 大小:21.27KB
下载 相关 举报
基于Scrum敏捷开发的软件实训设计.docx_第1页
第1页 / 共7页
基于Scrum敏捷开发的软件实训设计.docx_第2页
第2页 / 共7页
基于Scrum敏捷开发的软件实训设计.docx_第3页
第3页 / 共7页
基于Scrum敏捷开发的软件实训设计.docx_第4页
第4页 / 共7页
基于Scrum敏捷开发的软件实训设计.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

基于Scrum敏捷开发的软件实训设计.docx

《基于Scrum敏捷开发的软件实训设计.docx》由会员分享,可在线阅读,更多相关《基于Scrum敏捷开发的软件实训设计.docx(7页珍藏版)》请在冰豆网上搜索。

基于Scrum敏捷开发的软件实训设计.docx

基于Scrum敏捷开发的软件实训设计

基于Scrum敏捷开发的软件实训设计

  摘要:

针对采用传统过程控制的软件实训类课程中开发文档与编码脱节,学生无法深入理解和应用分析与设计理念等问题,介绍敏捷开发过程的基本思想以及Scrum敏捷开发过程引入软件实训教学中的现状,阐述新的基于Scrum敏捷开发过程的软件实训教学方案以及一套完整的软件实训案例,并总结分析该教学设计方案的有效性。

  关键词:

软件实训;Agile;Scrum敏捷开发;教学设计

  引言

  互联网时代急需大量软件人才,如何实现高校与产业界的衔接是软件人才培养的一个核心问题。

软件实训作为理论联系实际的桥梁,具有举足轻重的作用。

目前,国内大部分高校软件实训课程以项目为载体,以编码结果为导向,让学生通过完成项目锻炼动手能力。

信息技术发展飞速,当下完成一个程序或是软件(也就是说编写代码)对于多数大学生而言并不困难,真正的难点在于如何开发一个具有可扩展性、可维护性的优质软件,这也是目前以及未来软件实训课程转换思路的方向。

  从产业界看,优质软件的前提是过程控制,这也意味着高校软件实训课程的导向应侧重于课程过程控制。

笔者在十几年软件实训课程的教学中发现,传统教学中采用的过程是瀑布模型,因为此模型采用分阶段的方式,适合学生逐步完成项目,但这仅是理想状态,瀑布模型在教学中同样也面临产业界相同的问题。

学生在经历了需求和设计等文档撰写阶段后,往往难以将其与编码匹配,到实际编码阶段又已临近课程结束,只能草草完成。

  2015年笔者在美国佩斯大学访问期间,旁听了佩斯大学计算机系主任ChristelleScharff教授的软件工程课程,她在课程中引入Agile开发过程,以Serum敏捷开发过程结合先进开发应用工具,使得学生将开发、管理和工具应用在一个实际项目中联结起来。

Christelle教授采用Serum敏捷开发过程进行教学已经多年,成功实现了美国学生与柬埔寨、印度等地学生的同步开发和教学。

受此启发,笔者回国后将Serum敏捷开发过程应用于软件实训课程中,从实践中体会到基于敏捷开发过程的软件实训的有效性,也发现了其存在的问题。

  1敏捷软件开发

  软件过程模型是软件开发过程控制的向导。

传统过程模型注重建立软件过程中的软件产品,尤其是软件文档,采用此类过程模型的软件工程方法被称为“重型软件工程”。

“重型软件工程”通过建立完善的文档系统,实现细致的过程建模及检测,以备维护与修改。

另一类以人为核心的软件开发思想“敏捷开发”,被称为“轻型软件工程”。

敏捷开发强调开发人员的沟通、可持续交付可工作的软件,以及对软件需求和开发问题的快速灵活响应。

2001年,以KentBeck等为代表的敏捷开发拥护者共同签署了“敏捷软件开发宣言”。

据VersionOne公司2013年的调查显示,在全球收集的3501份调查报告中有88%的公司采用敏捷开发方法,Google、华为等大型软件公司也采用了敏捷开发。

  1.1敏捷开发基本原则

  敏捷宣言的价值陈述中,从过程和工具、文档、合同谈判以及遵循计划4个基本原则,体现出一种现实的开发价值观。

软件开发的终极产品是软件,软件产品的度量者是客户,实现产品的是开发者,围绕这3部分是开发的重点。

所以,敏捷开发强调开发者的自主协作,强调可运行软件的快速迭代,强调对于软件需求的适应性。

这要求敏捷开发团队成员的平衡性,也即只有具有自主开发意识、编程能力对等的成员才能够较好地践行敏捷开发过程。

虽然敏捷开发适用于需求变化的场景,但对于大型项目而言,敏捷开发的实现还需要更为具体、完善和有针对性的过程。

根据不同的应用场景有不同的敏捷过程,如极限编程、Serum敏捷开发等。

软件开发中应根据项目的具体情况选择适当的开发过程。

  1.2Scrum敏捷开发过程

  在众多敏捷开发方法中,成长最快的方法之一就是Serum敏捷开发过程。

KenSchwaber和JeffSutherland于1993年正式确立Serum,这一过程已经被Yahoo、微软、谷歌、摩托罗拉、思科等公司使用。

许多使用Serum的团队表示,Serum极大地提升了团队的产能和士气,是一种有效的团队工程控制方法。

  1.2.1Scrum基本要素

  Serum是一个迭代增量框架,采用周期方式完成产品开发,Serum将这些周期性的工作称为Sprint,整个Serum框架都围绕Sprint进行。

Sprint的持续时间通常是1~4周,且一个紧接一个,一旦确定Sprint的完成周期,不论工作是否完成,结束时间都是特定的,永远不会延迟。

Sprint开始之初,项目团队从需求的优先列表中选择需要完成的条项(item),并在Sprint结束前完成这些需求;Sprint期间,所需要交付的结果不会改变,每个工作日,团队成员简要汇报彼此的进度,并根据剩余工作更新燃尽图(bumdownchart);结束后,项目团队演示他们所做的工作,并且反馈需要融入下次,Sprint的工作。

  1.2.2Scrum角色

  Serum有3类角色:

产品负责人(productowner)、开发团队(theteam)和流程管理员(Serummaster)。

产品负责人收集来自顾客、终端用户、项目团队等多方面的需求信息,以获得最大化商业价值为原则,得出需求优先列表,以供后续开发团队实现。

开发团队是软件的实现者,具有高度自组织性。

开发团队决定了最终提交产品的质量。

一个软件项目中的开发团队包括分析师、开发者、接口设计者、测试员等。

流程管理员是Serum成功最重要的元素,他需要全力以赴帮助开发团队成功完成项目。

流程管理员和产品负责人不能是同一人。

做流程管理员的人可以是以前的项目经理,但所做的工作却与项目经理非常不同。

流程管理员不是开发团队的管理员,而是为开发团队提供服务的,旨在保障开发团队不受干扰并引导团队使用好Serum,他并不分配任务也不指挥人工作,其职责核心本质就是服务Serum项目团队的所有成员,为Serum过程扫清障碍。

  1.2.3Scrum过程

  Serum过程包括3大部分:

  

(1)开始Serum。

由产品负责人列举所有产品需求,根据全部需求明确优先级,形成productbacklog,开始Sprint迭代。

  

(2)Sprint迭代。

每个Sprint之前,先进行Sprint计划会议(Sprintplanningmeeting)。

第一件事由产品负责人和开发团队一起回顾productbacklog,彼此交换对此backlog的看法。

第二件事由开发团队从productbacklog中选择此次Sprint结束需要提交完成的需求项,通常按照优先级顺序来完成。

第三件事由开发团队估计每个成员在此次sprint中完成任务需要投入的时间。

确定时间后,开发团队将优先级最高的需求项分解为单个任务,并记录到Sprintbacklog文档中。

任务确定后,团队成员自愿认领任务,需要考虑任务顺序,估计每个任务的时间并确保每个成员工作负载平衡,然后顺序完成各项需求。

Sprint迭代开始后,开发团队还需进行每日Serum――个15分钟以内的站立会议,每个开发团队中的成员都要参加。

这个会议主要是开发团队成员一个接一个汇报进展和困难,由流程管理员记录问题并在会后解决问题。

站立会议不讨论,只汇报,会议结束后开发团队成员更新完成每项任务的剩余时间,由流程管理员绘制燃尽图来显示到提交还剩多少工作。

一个Sprint结束后有一个Sprint评审(Sprintreview)。

在评审时,开发团队需展示此次Sprint完成的demo,产品负责人、团队成员、流程管理员、客户、专家、投资人都可参加评审会并提问。

评审结束后,项目团队一起进行Serum回顾(Serumretrospective),发现此次Sprint中做得好或不好的地方。

在Sprint评审结束后,产品负责人要为进入下一个Sprint做准备,根据上次完成的结果修改productbacklog,重新确定优先级,完成新的productbacklog后,进入新Sprint过程。

Sprint不断迭代,直到产品负责人明确可以发布产品则停止迭代,进行发布。

  (3)发布产品。

  1.3Scrum敏捷开发教学应用

  上述scrum过程由于迭代周期短,迭代时间可控,学生在整个学习过程中都可不断看到可运行的程序,减少了学习的挫败感,非常适用于具有固定时间(通常2~4个月)的软件实训教学。

目前Scrum在软件实训教学中已有不少应用。

文献针对高职软件开发课程提出了引人敏捷开发对于实训模式的创新优势。

文献从启动项目、实施项目和量化考核3个方面论述了引入Serum的软件实训,但其提供的方案过于笼统,操作性不强。

文献从分组、实践和评价3个方面给出了一套Serum软件实训教学方案,并进行了2个学期的教学实践,其方案基本遵循Serum的标准过程,在评价上采用了小组互评的方式,并且以小组互评方式为主(80%),教师评价为辅(20%)。

此种评价方式从学生角度获得相对公平的评价结果,但是学生的视点不同于教师,其评价具有更大的主观性而缺少专业性,且单次评价方式缺少教师反馈,难以较好实现过程驱动与控制。

文献在同济大学软件工程课程中进行了一学期的软件工程实验实践,提供了一套较为完整且有体系的Serum敏捷应用框架,但该应用框架主要是对Serum基本过程的细化。

笔者在美国学习期间发现,Serum过程的成功实施,更依赖基于软件的过程控制以及教师的评价控制,因此,如何充分利用先进信息技术以及合理评价机制,是Serum成功应用于软件实训类课程的关键所在。

  2基于Serum的软件实训设计方案

  将Serum过程引入软件实训类课程的核心要点是明确教学目标。

软件实训类课程的教学目标是通过教师引导与管理,使学生能够运用和掌握所学习的软件开发原理和技能。

基于Serum的软件实训设计方案的精髓是把教师定位为教练,利用毕博平台、Github、XX云盘等工具来实现项目管理控制,方案主要包括教学内容、组织形式和评价方式。

  2.1软件实训内容

  软件实训以项目为主导。

项目选择对于实训有很大影响,决定项目以及开发规范是软件实训的主要内容。

实训项目选择原则如下:

  

(1)项目来源:

与学生生活和学习息息相关的领域。

相关领域的需求可以让学生作为使用者体会需求的有效性,作为开发者体会完成需求的难度。

  

(2)项目规模:

小型可扩展项目。

项目应具备几点核心功能,学生根据自身能力在Serum过程中调整扩展。

  (3)开发规范:

包括文档规范和编码规范。

虽然Serum过程不强调文档作用,但应对productbacklog和Sprintbacklog中的内容进行编号,在表达设计理念中应采用UML描述。

编码规范推荐采用Google的lava编码规范。

  2.2软件实训组织

  基于Serum的软件实训教学组织包括整体过程组织和过程实践组织。

整体过程分为3部分――基础学习、过程实践和评价反馈,如图1所示。

  在软件实训的教学组织中,可以借助毕博平台、GitHub管理、XX云盘等工具实现过程控制。

毕博平台负责学生的整体管理。

作为教练,教师通过在毕博平台上发布学习资源、学习时间进度和学生阶段评价来控制学习过程;作为学习者,学生通过Github实现软件版本控制,通过Wild实现文档保存与更新,通过XX云盘实现团队内部文档共享。

评价反馈来自两个部分:

毕博平台,在关键时间节点上,教师根据学生的项目完成情况,给与分数评价;Github,在学生提交代码和文档到Github资源库后,教师根据提交内容进行点评。

  2.3软件实训评价

  软件实训课程通常由多个学生组成团队完成项目开发工作,最大的难点就是如何量化每位成员的工作,无法公平地量化学生的工作量则很难驱动不自觉的学生参与项目学习过程,这将导致由团队中某一人全权负责项目的情况出现。

基于Serum的开发则不存在这样的问题,因为Serum的会议中每位成员都需要总结自己在项目开发中所做的工作以及遇到的问题,这样教师就可以根据学生的记录进行控制。

  项目的最终评价主要包含3部分内容:

过程、代码和演讲展示。

过程评价是针对学生对于Serum实践的完成情况;代码是针对学生完成的软件及其结构的合理性;演讲展示针对学生对于该次开发的认识、陈述与总结。

高质量的实训应该具备4点要素:

团队精诚合作;迭代式开发不论修正软件;软件的代码结构可维护性与扩展性强;演讲陈述逻辑思路清晰。

一个项目由团队完成,所以一切评价的基础是团队,团队成果强则评价基点高。

在团队评价结果之上,再根据组员对项目的贡献度来进行区别式评价。

组员的贡献度体现在3个方面:

Serum总结;组员自身贡献评价;Github代码贡献度计量。

在Github中,对于每位组员所提交的代码都有量化,但由于代码的难度不一,所以此部分的评价比重应更为弱化。

基于相信原则,可由组员自身给出贡献度评价,再由Serum总结给出最终评价。

  3教学实践分析

  为了验证该教学理念和设计的有效性,在广东财经大学三年级软件工程专业的软件工程课程设计中进行教学实践试点。

具体教学方案见表1。

  之所以选择开发App项目是因为其快速的特点,App开发周期短,同时其开发已经具备较好的结构。

选择儿童游戏App和公益项目App是因为这两类App的需求都是由学生自身决定和修正的,贴近他们的生活,学生更容易体会开发出的软件的可用性。

之所以将项目规模确定为4~6个功能,是因为开发周期为8周,除去头尾的讲解与考核,只有6周可用于迭代,则每两周完成一次Sprint迭代,对于学生而言,4~6个功能是6周的迭代可以控制的。

本次实践试点通过毕博平台提供完整规范的文档模板,学生直接填写模板即可记录整个开发过程。

  一个学期的基于Scrum的软件实训实践后,学生反馈学会了使用有效工具来辅助管理,而且迭代式的开发降低了开发的难度,减少了实践挫败感,当需求不明确时,完成少量的工作增加了后续开发的信心。

最为重要的是,学生能发现所做的需求和设计工作能否和后续的代码联系起来。

但是,实践中也存在一些问题,主要体现在两点:

工具使用(尤其是Github的使用),学生还不能很好地利用版本控制工具提高合作效率;软件结构性问题,由于采用的是迭代增量开发,学生暂时不具备良好的设计能力,往往在初期以完成为导向,在后阶段的Sprint过程中发现软件结构的缺陷时难以及时修正,导致最终的软件结构可能存在不合理性。

对于这两点问题,最佳的解决方案是由教师介入,指导学生使用工具并提供合理的设计结构。

  4结语

  基于Serum的软件实训教学方案在大三学生中进行实践应用后显示,引入敏捷过程的软件实训课程可以使学生收获更多有关软件开发的应用体会,且可视的软件成果也为学生进行开发增强了信心。

但是,此方案有正向反馈的同时,也存在一定的不足。

目前,该教学方案的瓶颈是如何在有限时间内将软件工程的基本理论与技术充分引入,这也是下一步工作需要考虑的问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1