基于敏捷开发模式的嵌入式实验教学探索
——以农业院校为例
2017-03-29王钧
王 钧
(甘肃农业大学 信息科学技术学院,甘肃 兰州 730070)
基于敏捷开发模式的嵌入式实验教学探索
——以农业院校为例
王 钧
(甘肃农业大学 信息科学技术学院,甘肃 兰州 730070)
“嵌入式系统”是一门涉及范围广、综合性、实践性强的课程。针对农业院校嵌入式系统实验课程建设的总体目标及特点,分析了该课程在实验教学过程中存在着实验内容简单、课程设置不合理、过分强调实验结果等问题。通过阐述敏捷开发模式的意义,以提高学生的实际应用能力为目标,提出了“敏捷开发模式”结合嵌入式案例教学的实验教学改革思路,并探讨了在农业院校实施此教学方法的组织与实施策略。实践证明,该教学方法在提高学生学习兴趣、加深知识理解、培养实践及创新能力等方面都具有积极的作用。
嵌入式系统;软件工程;实验教学;敏捷开发
DOI号:10.13320/j.cnki.jauhe.2017.0021
“嵌入式系统”作为一门理论与实际应用紧密结合的课程,实验教学在其中发挥了至关重要的作用。嵌入式系统实验作为该课程在教学过程中的重要组成部分,不但可以加深学生对嵌入式相关知识的理解,还能从多方面发掘学生的创造力,全面培养学生发现问题、分析问题以及解决问题的能力,对于全面提高学生的综合素质和能力,都具有极其重要的意义[1]。
目前,大多数高校的嵌入式系统实验教学都以传统的验证性实验为主,在设置实验教学内容的时候,普遍忽视了嵌入式软、硬件的开发特点,只是简简单单的将理论知识与实验方法进行了融合,学生在学习后普遍反映该课程的学习较为枯燥,整体教学效果不佳。因此,针对嵌入式系统课程的特点,如何提高实验环节的教学质量,是培养高素质嵌入式人才的关键所在。
(一)嵌入式系统课程教学特点
嵌入式系统是一门理论与实际应用紧密结合的课程,该课程的应用性相对较强,通过学习,要求学生全面了解和掌握嵌入式的相关理论知识,以及嵌入式的软、硬件开发设计的一般方法,提升学生的动手能力和解决实际问题的能力。在实际的教学过程中,强调课程的“基础性+应用性+综合性”。基础性是指授课内容应该涵盖嵌入式系统的基础理论知识,通过课堂讲解和实验环节加深学生对基础知识的理解。应用性是指该课程的实践性较强。甘肃农业大学信息科学技术学院通过“实验教学+课程设计”的实践教学模式,使学生能够很好的将理论知识与实际应用紧密地结合起来,从而进一步加深学生对嵌入式开发的理解。综合性是指该课程所涉及的知识面广、课程内容多。学生在实际的学习过程中普遍感觉到该课程抽象且难以理解,教师讲授起来较为困难,授课过程难以掌控。嵌入式系统课程在实际教学过程中所面临如下问题。
1.专业跨度大。该课程所涉及的专业相对较多,不但包括通信工程、计算机工程、电子信息工程、自动控制、机电工程、和仪器仪表等,而且还与其他研究领域相互渗透,形成了新的研究方向。因此,该课程可以作为一个基础性的研究平台课,为其他相关专业提供服务。
2.综合知识运用性相对较强。嵌入式系统的开发设计需要将软、硬件相互结合,并且涵盖了计算机网络、软件工程、计算机组成原理、计算机操作系统、自动控制原理等诸多专业的相关课程。如程序设计语言(汇编,C/C++,JAVA等)、操作系统、数字电路、微机原理、和芯片设计等课程,课程内容的综合性相对较强。因此,该课程可以被认为是计算机类相关专业本科阶段所学各种知识的综合运用,学习该课程,可以有效提高学生对所学知识的综合运用能力。
3.与实际应用紧密结合。该课程强调理论与实际应用紧密结合,实践教学作为该课程的重要组成部分,它的质量将直接影响到该课程的实际教学效果。缺乏实践教学环节的嵌入式系统课程只能算是“纸上谈兵”,只有经历了大量的实践教学,才能使学生深刻地理解嵌入式系统的基本理论,熟练掌握嵌入式系统的开发方法。
二、农业院校嵌入式实验教学存在的突出问题
(一)实验内容简单
目前,大多数农业院校的嵌入式实验安排多以验证性实验为主,相对复杂的综合性开发设计性实验偏少,在实验教学环节中,学生常常根据实验教材上的内容机械地对实验步骤进行模仿,由学生自己亲自动手设计的实验内容偏少;实验内容的更新滞后,大多数实验内容往往要使用多年,不能与嵌入式的最新技术结合,同时实验内容的设置与社会实际需求联系的不够紧密。由于以上多种原因,造成目前的嵌入式培养模式不利于学生综合能力和创新能力的培养。
(二)过分强调实验结果
目前,大多数农业院校都存在着嵌入式实验课时安排不足的问题,由于时间所限,教师为了完成教学任务,在实验环节的设置上多以培养实验技能为主。通过实验,学生也只是学会了如何机械地使用和调整各种设备仪器,以及如何按部就班地按照实验步骤进行实验和处理实验数据。学生在整个实验过程中更加关注如何得出符合理论的实验结果,而对实验中出现的各种现象和结果很少进行独立的思考、分析、研究。嵌入式系统实验对学生掌握和理解嵌入式技术的帮助很小,无法从中深刻的体会到嵌入式技术的生命力以及应用前景。因此,整个实验教学的实际教学效果欠佳。
(三)实验课程设置不合理
目前,大多数农业院校将嵌入式系统实验的课时设置为16学时,相对课程的难易程度以及重要性来说,学时分配相对较少,加之学生在思想上没有意识到嵌入式实验对嵌入式软、硬件综合能力培养的重要性,实验前期的准备不够充分,学生在实验过程中对实验指导教师的依赖性较强。实验课上,指导教师花费了大量的时间和精力来讲解嵌入式实验的基本原理以及实验平台的使用和操作方法,仅从剩余时间来看,学生只能按照老师的具体要求进行操作,没有任何的自行设计。除此之外,学生对亲自动手实践缺乏积极性,很难对嵌入式系统实验提起任何兴趣,特别是当他们遇到新的技术或新的难题就更加缺乏信心了。
针对以上问题,为了在有限的课时内提高嵌入式实验教学质量,应该对嵌入式实验课程教学内容进行改进,在课程设置上通过引入敏捷开发模式,并结合嵌入式案例教学等教学手段和方法,激发学生的学习兴趣,在实验课程中,转变老师与学生的角色,强调“学生”在整个实验中的主体地位,培养学生应用所学知识解决实际问题的能力和创新能力。
三、敏捷开发法
2001年雪鸟会议后,敏捷开发法开始获得各界的认可,特别是受到软件开发者的普遍欢迎。到今天,这种开发法已经在大量软件项目当中得到了广泛的应用,并且获得了成功。敏捷开发通常以用户的需求进化为基础,利用反复迭代、循序渐进等方法完成相关项目的开发。在敏捷开发的开始阶段,整个项目将分为多个小的子项目,每个子项目都具备可集成、可视以及可运行、使用的特征,开发人员对每个子项目分别进行开发,并且其成果都必须经过独立的测试。也就是说,这种开发方法是将一个大的开发项目进行分割,将它分成多个独立运行、相互联系,并且在整个开发过程中处于可用状态的小项目,对它们分别完成开发。极限编程是一种近螺旋式敏捷开发方法,同时也是一种灵巧的、轻量级的软件工程开发方法。在项目的开发过程中,开发人员会将一个复杂的开发过程分解为许多个相对较为简单的小的开发周期,并且强调项目开发的严谨性和周密性[2]。它以交流、朴素、反馈和勇气为基础和价值观,使得在整个项目的开发过程中,可以使客户与开发人员及时了解和掌握项目的最新开发进度、变化以及待解决的问题和困难等,并根据开发项目的实际情况及时调整项目的开发过程,即认为软件项目的开发都可以从简入手、加强相互交流、寻求反馈以及勇于实事求是4个方面入手来进行改善[3,4]。
四、农业院校嵌入式实验教学与敏捷开发方法的融合
在实际嵌入式开发过程中,嵌入式企业管理者为了提高嵌入式系统的软、硬件开发质量,往往会制定许多项目开发管理规则以及设计方法,嵌入式系统的开发质量也随之得到了较大幅度的提升。但伴随着嵌入式理论的不断发展,整个系统的软、硬件开发流程和规范也逐渐变得越来越复杂,且让人难于理解和实施。
极限编程方法由于具有轻载、基于时间、紧凑、并行且基于构件的项目开发过程的特点,使得这种开发方法可以被应用于嵌入式系统的开发设计和实验教学环节。通过极限编程方法与嵌入式系统实验教学的结合,在整个实验教学过程中,要求学生结对成组,以强带弱;指导教师在整个实验教学环节中,根据具体的案例进行实验内容的设置,并且将实验教学内容巧妙地隐含在嵌入式系统的开发项目中,让学生自己发现实验过程中所存在的问题,并且通过自己的独立思考和教师的指导独立解决这些问题[5]。在完成实验项目的同时,也掌握了相关的知识,提高了学生自行解决问题的能力。整个实验的设置,既要考虑如何让学生学会发现问题、分析问题以及解决问题,也要充分考虑如何培养学生的创新意识、创新能力以及自主学习的能力。
基于敏捷开发的嵌入式实验教学首先指导教师会根据课程教学大纲和知识点来确定每节实验课的实验内容,同时按照知识点将实验内容分解为多个简单的模块,然后由学生自行完成各个模块的开发、测试,最后寒碜系统的集成及集成测试,在测试过程中如果发现问题,要求学生及时进行改进,直至整个系统能够正常运用(如图1所示)。
图1 基于敏捷开发的嵌入式实验教学模式示意图
目前,典型的嵌入式系统往往包括:应用层、系统软件层、中间层和硬件层[6](如图2所示)。因此,嵌入式系统的开发也是在以上几个层次之上发生的。我校的嵌入式系统实验课根据嵌入式开发内容与嵌入式平台间的相互关系,大致地将嵌入式系统实验分为4种类型,即基于应用层开发实验、基于硬件的纯软件开发实验、基于软硬件协同开发实验以及纯硬件开发实验,4种开发实验的类型与特征描述如表1所示。
图2 嵌入式系统层次架构
农业院校采用敏捷开发模式进行嵌入式实验教学,其主要特色可以归纳为以下几点。
1.在农业院校嵌入式实验教学中引入敏捷开发模式不但可以降低实验的难度,而且可以培养学生应用软件工程思想进行嵌入式开发的习惯,包括如何运用敏捷开发的方法来发现、分析、解决嵌入式开发过程中所遇到的各种难题,从而提升学生运用所学知识解决问题的能力和创造力。
2.结合农业院校的特点,该课程在实验题目的选择上,多以解决具体农业问题为主,将农业与嵌入式系统有机的结合起来,让学生在掌握嵌入式和农业知识的同时,又培养了学生如何运用所学知识解决实际问题的能力。
3.整个实验教学过程中,以具体的案例为线索,让学生了解和掌握案例中所涉及的相关理论知识,并且通过运用其中的技术手段来效仿该案例,完成新系统的开发设计。
4.学生通过参与实验掌握极限编程的基本方法,增强学生的团队合作意识,提高他们的自学能力和动手解决实际问题的能力。
五、农业院校实验教学组织及实施过程
(一)组织与实施策略
在遵循敏捷开发方法核心思想的基础上,充分利用极限编程的理念,结合嵌入式系统实验课程的特点,将嵌入式系统课程实验教学与敏捷开发方法相互结合,可以帮助学生理解嵌入式系统软、硬件开发需求与嵌入式系统测试及开发的关系,使学生在掌握和应用嵌入式的关键性技术的同时,了解和掌握响应客户需求变化、结对编程、测试驱动以及重构等敏捷开发方法中的关键技术。同时,嵌入式实验课采用“案例驱动”的教学模式,向学生讲授敏捷开发方法在实际项目开发中的应用,指导教师组织学生组成项目小组完成规定题目的敏捷开发,在整个实验过程中鼓励小组成员之间加强沟通与合作,并对结对编程、测试驱动、重构、持续集成等敏捷方法进行指导,协助项目组完成实验项目。
(二)实验教学实施过程
1.案例的选取。目前,大多数农业院校都存在着嵌入式系统实验教学环节设置不合理的情况。我校嵌入式系统实验课所涉及的题目一般由教师指定,同时也鼓励学生向指导教师推荐,但要征得指导教师的认可方可使用。由于该课程实验学时相对紧张,实验选题的难度不宜太大,同时结合农业院校的特点,在实验题目的选择上偏向精准农业、设施农业以及智慧农业等相关方向,课程教学的目标就是通过利用嵌入式系统课程的实验教学环节,让学生深刻体会嵌入式系统的软、硬件开发方法,在实验过程中注重完成质量,要求作品的质量能接近或达到实际使用的程度。已有的选题包括:农产品冷链配送测控系统、智能温室测控系统设计等。实验题目的选择更多地考虑到学生知识的综合运用以及创新能力的培养。
2.构建敏捷开发实验环境。由于在实验环节引入了敏捷开发方法,将现有的实验箱和计算机摆放将做相应的调整,使得新的实验环境便于小组成员间以及各小组间的高效率交流,并且在实验室中配备了白板,方便学生针对某一问题展开充分的讨论。
除此之外,实验小组的每一位成员都将以客户、开发人员、项目经理、测试人员等角色出现在同一个开放的环境中。指导教师通常以“客户”的身份出现在实验中,并且负责对实验小组进行指导,每个实验小组将从中挑选一名组织、沟通能力相对较强的学生作为该组的项目经理,其主要职责是负责对项目进度和资源进行控制和管理,其余两名同学按照“以强带弱”的原则组成编程小组。在项目的开发设计完成后,挑选其他组的编程人员组成本组的测试小组,测试小组的人员交叉负责项目的测试、验收和管理。
3.需求分析与管理。指导教师全程参与并指导学生进行实验,按照敏捷开发方法的核心思想,指导教师和学生将把各种需求转换成多个小的模块,这些模块根据条件的不同有可能又会被实验小组再次拆解成更小的模块或者将它们组合起来,所有被重新整合的模块都会被记录在一些小卡片上,每个模块的功能将被学生在每周一次的实验课上完成。在实验项目的开始阶段,指导教师会帮助各个实验小组根据模块的重要程度来依次确定各个模块的优先级,而学生则根据各个需求模块的开发风险来确定需求模块的开发顺序。通常风险较高的需求模块往往被优先进行开发,同时指导教师和学生分别从不同角度对各个模块进行评估,根据最终的评估结果把这些模块放在不同的开发周期里,指导教师同学生一起商议为整个实验制定一个尽可能详细、全面的开发计划。最后,测试人员将根据“客户”的实际需求对各个需求模块进行测试,发现问题并反馈,使实验项目不断完善。
4.基于“测试驱动”的项目开发。极限编程的实际开发过程通常是由许多个基于“测试驱动”的开发周期组成,实验项目的外层设计过程往往都是紧紧围绕着这些开发周期来进行的,例如实验项目的计划、设计等。我校每周一次的实验课被看成一个开发周期,这其中包含了很多个测试单元。在项目的起始阶段,由于项目毫无进展,以至于对每个模块的单元测试都不会成功,但是随着实验进程的深入,各个模块的功能将逐渐被实现,能够通过单元测试的模块也将逐渐增多。极限编程正是利用这种指导思想使指导教师和学生很容易在项目的开发过程中检验既定的开发任务是否完成。除此之外,极限编程还利用设计走查、代码走查、重构等方法来实现系统的重整和优化。这其中也会不断的进行单元测试以及系统功能测试,极限编程正是利用这种方法来保证重整和优化后的系统仍能满足“客户”的所有需求。
5.结对编程。在实验项目的开发过程中,按照“以强带弱”的原则将两个学生结对组成编程小组,他们共同使用一台计算机和试验箱进行实验项目的开发设计。这种结对编程的好处是:其中1个人在进行项目开发设计的时候,另外1人可以对实验项目的开发设计进行思考,在他的头脑中始终保持总体的设计概念。另外,当实验项目在开发设计阶段遇到困难的时候,编程小组的成员之间可以互换位置由另一个成员来完成,但如果遇到的难题两人都无法解决,两个成员之间便可进行交流及讨论,而他们之间的交流很有可能被其他项目组成员或指导教师听到,并可能给予帮助。极限编程正是利用这种结对编程的方式使项目的进展更加顺畅和有章可循。与此同时,结对编程能够使整个实验更具有娱乐性和社交性,增强学生的兴趣。另外,每一位学生在实验项目的开发过程中都可以修改其他人的开发设计方案,但要严格遵守嵌入式系统的开发规范和设计方法,同时要保证修改后新的方案能通过随后进行的单元测试。
6.实验项目测试。极限编程要求实验小组成员在开始本组编程实验之前必须首先对各个模块进行单元测试。每次实验小组除了要对已完成开发测试的模块进行整合外,还要对整合后的新模块进行新的测试,包括在实验过程中进行的任何嵌入模块的走查和修改,都要求实验小组成员对其进行新的单元测试。如果其中发现了任何问题,实验小组就会增加新的单元测试,确保每个模块能够正常运行。根据极限编程的要求,在实验过程中除了有常规的单元测试外,还包括功能测试、集成测试、压力测试、和系统测试等[7]。所有的测试内容都是极限编程中最为重要的文档,所以在实验结束后,实验所涉及的所有测试过程和结果都要写入最终的实验报告。
7.实验项目结果评审。在实验结束以后,学生将根据本组实验的完成情况向指导教师提交实验报告并进行实验答辩,指导教师对其实验成果进行评估打分。对表现优异的学生鼓励其撰写和发表科技论文,对有兴趣进一步学习的学生,指导教师将鼓励他们组成兴趣小组,帮助他们完善作品,参加全国大学生嵌入式设计大赛。最后,指导教师将针对个人和实验小组在实验过程中的总体表现和实验完成情况进行总结和点评,在指出他们存在不足的同时,帮助学生整理敏捷开发过程中的技术内容,从而提高学生对嵌入式学习的积极性,但也要从中指出他们在实验过程中存在的不足。
六、结语
敏捷开发作为一种新兴的软件工程的开发方法,很多实际方法还在研究中。在农业院校的嵌入式实验课程中引入敏捷开发方法,不仅可以使本校学生加深理解、掌握嵌入式课程和相关农业的理论知识,更能让他们懂得如何应用所学知识来解决实际问题。敏捷开发模式不仅能够在实验课程的第一线培养农业院校学生应用知识解决问题的能力,还能从多方面发掘学生的创造力,全面培养学生发现问题、分析问题以及解决问题的思想和方法,提高了学生的综合素质和能力,包括学生的实践能力、动手能力、分析能力、应变能力、交流能力、团队合作能力。最关键的是在这种以“项目驱动”为背景的实验教学中,这种教学方法既体现了指导教师在实验过程中的主导作用又充分的发挥了学生自身的主体作用,更加体现了现代高等教育的新型教学模式。
在农业院校将敏捷开发模式与嵌入式实验课相结合在增加实验复杂度的同时,也对农业院校的教师提出了更高的要求。首先,指导教师在题目的选择上要考虑如何将农业与嵌入式结合在一起,而且还要根据具体的实验内容将嵌入式系统实验教学和敏捷开发模式融合起来。其次,要求农业院校的指导教师在实验环节中能够较为灵活地运用敏捷开发的思想。最后,要求指导教师在实验过程中能够给予学生正确地指导。
[1] 刘文定,郭文会.“自动控制理论”综合设计性实验探索与实践[J].中国林业教育,2009(27):68-70.
[2] 张林.软件开发模式的演进[J].硅谷,2011(12):24-25.
[3] 张志敏,杜景龙,连达军.基于敏捷开发模式的“GIS软件工程”实验教学[J].实验室研究与探索,2014,33(11):205-207.
[4] 陈昊,明仲.在软件工程实验教学中引入敏捷方法的探索[J].计算机教育,2008(24): 46-47.
[5] 孔峰. 面向创新能力培养的数据库课程实验教学改革[J].中国现代教育装备,2010(23):107-109.
[6] 荣国平,刘天宇,谢明娟.嵌入式系统开发中敏捷方法的应用研究综述[J].软件学报,2014,25(2):267-283.
[7] 廖新.粮基于任务调度的自动测试方法及系统实现[D].成都:电子科技大学,2011.
(编辑:刘伟霄)
2016-11-06
王 钧(1982-),硕士,讲师,主要研究方向:嵌入式系统。
G642
A
1008-6927(2017)01-0096-06