软件工程课程项目驱动实践能力培养
来源:用户上传
作者:刘华明 毕学慧 王秀友 李怀敏 晁妍
摘要:软件工程实践教学与理论教学存在脱节问题,学生实践能力培养较为薄弱,与市场需求不匹配。为能够提高软件工程实践教学,对目前软件工程课程教学现状进行分析,提出了应对的软件工程教学的措施,通过案例教学,使学生理解软件开发过程中的知识点,把抽象的知识具体化、形象化,以辅助学生理解理论与实践的知识。在课下,教师提供必要的项目案例,学生多借鉴和吸收实际项目开发经验;通过慕课、在线课堂等,对理论知识的学习;在课堂上,教师根据学生提出的问题进行答疑、解惑。实践课学生选择项目,利用项目完成情况对学生进行实践能力的考核。实践课程的项目驱动教学,利用所掌握的知识,锻炼学生的动手能力,项目与将来参加竞赛、毕业设计等有一定关系。通过项目的深人持续的开发,不断提升学生动手能力。通过实践证明了提出的应对措施和实施过程有效,提高了学生的软件工程素质。
关键词:案例教学;软件工程;项目驱动;案例实施
中图分类号:G642 文獻标识码:A
文章编号:1009-3044(2020)15-0039-04
软件工程是一门指导软件开发和维护的一门工程学科,2002年为了适应市场需求,教育部把软件工程列为新增专业嘲,而市场对软件开发人员持续的需要,软件工程专业一直是热门专业,就业好、薪资高,受到越来越多的学生选择这个专业。随着人工智能作为国家战略,对软件人才的需求继续扩大。软件工程专业课程设置都是围绕软件开发和维护的内容设置的,使培养出来的学生能够胜任软件开发和维护。而软件开发需要学生具备一定的实践动手能力,能够综合运用多种计算机知识,例如程序设计语言、数据结构、计算机网络、操作系统、数据库原理等嘲。实践能力的培养不是知识的传播,而是知识的运用,大多数学生在学习过程中,有一定的难度,容易造成学生无法继续坚持学习。《软件工程》课程是计算机类的核心课程,对于软件工程专业更是核心课程。《软件工程》课程是理论和实践都要并重的课程,受课时的限制、课程的难度、学生基础等因素,往往达不到课程设置的目标。传统的理论教学模式需要进一步改革,以弥补课时不足、学生基础薄弱、缺少实践练习等缺陷。
为了更好掌握《软件工程》课程中的知识,本文通过对目前《软件工程》课程的不足进行分析,提出针对性的措施,给出详细的实施过程,以提高学生的实践动手能力。使培养的学生具有分析问题、解决问题的能力,有团队精神,培养学生学习兴趣。在学生项目实践练习中,结合后期的毕业设计、毕业实习、竞赛及大学生创新项目等目标,进行长期一致性规划设计,减少学生的重复劳动,使学生的实践项目具有一定深度和广度,与市场需求的软件尽量接轨,为学生就业上岗打好基础。
1《软件工程》课程教学现状分析
《软件工程》课程理论知识是从软件开发经验中总结出来的,对软件开发初学者具有一定的指导意义,使初学者能够快速地掌握软件开发,少走弯路,把别人的经验变为自己的经验,因此学习《软件工程》课程,能使初学者更好地掌握软件开发知识,并获得一定的软件开发经验。软件开发是为用户服务的,而用户对软件的需求也是不断变化的,从功能、性能、硬件环境等方面,对软件开发具有一定的要求和约束,因此开发出来的软件常常需要进行维护。在软件开发和维护的过程中,出现了很多问题,例如需求不明确,开发的软件不是用户真正需要的软件等。软件开发过程中的这些问题,即软件危机,为了解决这个问题,提出了软件工程的概念。让软件开发尽可能摆脱软件危机,在成本、效率、质量等方面都满足用户和开发者的要求。而在《软件工程》课程的教学过程中,出现了一些问题,具体表现在如下方面。
1.1理论教学抽象
《软件工程》课程的理论知识是从软件开发经验中总结出来的,这些经验被证明是非常有指导意义的。而很多学生刚接触这些理论知识,没有编程的经验,无法理解书中所讲述的知识,没有引起共鸣。学生在学习理论知识时,非常抽象。面对如此抽象的理论知识,学生提不起学习兴趣,甚至产生了厌学情绪。另外,教材中的案例,多数是从国外教材中翻译过来,与学生的知识背景不符,学生无法理解案例的背景知识,案例并没有起到应有的作用。
1.2基础课程多
《软件工程》课程教学要求学生需要学习前期课程,例如程序设计语言、数据结构和算法、数据库原理、计算机网络、操作系统等,学生对前期课程掌握程度差异性较大,这给教学带来了一定的难度。在教学过程中,需要对前期的课程进行复习,打好基础。另外,学生掌握的前期课程,对知识的综合应用练习较少,大多数表现在知识的掌握上。开发软件系统需要综合运用前期课程知识,这给学生软件开发能力的培养,带来了一定的困难。
1.3学生动手实践机会少
前期的课程教学中,往往都是小程序的练习,这与软件系统开发的要求相比,差距非常大。学生还不具有软件开发经验,从未在软件开发上进行专门的训练,对软件开发就是编写程序的思想还比较严重。因此,软件工程教学非常有必要对学生进行专门的实践练习,通过项目实践让学生把所学的知识转化为软件,对知识的掌握提出更高的要求。
1.4缺乏必要案例学习
软件工程教材中出现的案例,一般都是为了解释理论知识的,个别案例是从国外的教材中翻译过来的,并不适合学生阅读和学习。教师有必要在教学中挑选合适的案例进行讲述。目前网络资源比较丰富,通过课下整理案例,相信可以挑选出合适的案例作为教学内容,帮助学生理解理论知识。另外,对实践教学内容,教师需要挑选一些完整的案例,让学生学习和阅读,这些案例中的程序能够运行,学生根据案例的文档和资料,理解软件工程中的相关理论知识。
1.5缺乏较为直接的视频教学
学生的基础知识参差不齐,对于基础较差的学生,简单的语言介绍,并不能让学生掌握其中的含义,需要动手演示软件开发过程。对于课时限制的教学来说,课堂现场展示软件开发过程并不现实。因此教师需要提供一些视频教学素材,让学生在课下观看。 1.6学生缺乏学习毅力
软件开发是脑力劳动,需要学生的抽象思维能力。软件开发不同于现实中的硬件制作过程,无法触摸到实际的产品,软件开发是逻辑产品,制作过程抽象。学生在学习过程中,遇到较大的困难,如果这些困难无法解决,学生不能明白其中的含义,势必打击学生学习的积极性。有些学生在学习中,可能坚持一段时间后,主动选择了放弃;一方面是学生学习方法不对,没有找到有效的学习办法,另一方面,没有专家的指导,自己遇到困难一时无法解决,浪费了大量的时间,学生有时候并不愿意去请教教师或同学,或者去找资料解决问题。也就是说,学生在学习软件开发一段时间后,当遇到困难无法解决,或感觉学习非常吃力的时候,选择了放弃。其实刚开始遇到困难是正常的,只要不放弃,学习方法不对的时候,请教老师调整学习方法,就能找到正确的学习方法。另外,学生要多交流,主动寻求帮助,解决遇到的困难。
1.7教师素质有待提高
软件开发需要老师指导,如果教师的软件开发水平较高,就可以很好地指导学生进行学习。然而,高校在招聘教师的时候,比较看重学历,对教师的软件开发水平并未做过多的考核。即使有丰富经验的一线开发人员,如果想在高校从事教学,而学历较低,不予录用。其实,目前高校中比较缺乏具有丰富经验的软件开发人员。需要提升教师的软件开发能力才能满足市场的需要。当前,移动手持设备开发,例如Android、IOS开发等,都需要教师学习新的知识,才能够指导学生进行软件开发。当前市场上软件开发人员工资普遍较高,高校的薪酬很难招到水平较高的软件开发人员。
1.8课程考核形式单一
软件工程课程的考核以平时作业和期末的考试为主,并没有突出学生的实践动手能力。过程的考核也非常重要,因此需要对课程考核进行改进。突出学生的动手能力,过程考核督促学生在平时的学习中,花费足够的时间学习。
2软件工程课程项目驱动教学设计
软件工程教学存在很多不足,针对这些不足进行改进,提高学生的动手能力。软件工程教学,不仅仅是讲述软件工程的理论,同时也要考虑学生的基础水平,针对基础水平不同的学生,提出个性化教学。既要讲授理论知识,也要锻炼学生的动手能力。从学生方面提出针对性的教学,给学生提供学习环境,有动手练习的机会。教师本人不断提高自己业务水平,适应教学需求,迎合市场对人才需要,培养合格的软件开发人才。从学生各个方面考虑,有必要对学生进行长远规划,尽可能减少重复的劳动,空出更多的学习时间。学生在后期还要进行毕业设计、毕业实习、参加竞赛或者主持及参加大学生创新项目等,这些内容都可以与软件工程的课程联系起来,统筹规划,长远考虑学生的实践能力培养。如图1所示,项目驱动解决方案示意图。就从以下几个方面提出教学设计。
2.1补习前序薄弱课程
某些学生在前序课程中,对基础知识掌握较为薄弱,能力较差的学生,可在教学中,进行必要的知识补充,以便学生具备软件开发的基础知识。另外,也要对学生进行必要的统计,以便摸底学生的基础水平,可以借助网络试卷测试,客观评价学生的基础水平。另外,借助慕课、网络资源课等網络资源,学生进行复习相关知识,以加强基础知识的掌握。教师要引导、辅助、创造学习环境等,使学生尽快地补充薄弱内容。
2.2理论教学案例化
对于理论抽象难懂的问题,需要用更具体的内容进行讲述,教师在教学过程中,需要挑选合适的案例进行讲述,以具体的案例形式,使学生更容易理解。其实,案例的选择需要教师筛选,有些适合理论教学,有些适合实践教学,教师要做分类。案例尽量选择学生熟悉的内容,有利于学生利用情景再现其过程。例如学生管理系统,需要学生选课、查课表等,学生在日常生活中,就已经使用过学生管理系统,对其中的操作比较熟悉,学生接触到熟悉的案例,更容易理解和接受嘲。
传统的师傅带徒弟的模式,仍然具有一定的借鉴意义。在软件开发教学过程中,如果学生能够在真实的案例中学习到相关知识,举一反三,就可以掌握软件开发的精髓。案例教学越来越重要,相关的软件培训公司就是尽可能的少讲理论知识,直接动手传授软件开发过程㈣。通过这种模式,学生的动手能力得到培养。而大学课程教学,缺少必要的课时或相关培训教师,因此通过购买案例进行课下教学,案例的内容要跟踪前沿技术,学生跟着案例就可以进行学到相关的知识。一个案例的学习,积累了相关的经验,学生就可以通过阅读大量的案例,进行其他知识的掌握。文档代码的阅读量非常重要,是借鉴别人的经验,从中吸取精华,在自己的软件开发中,运用这些知识,可以加快软件的开发,提高软件开发质量,其实也是软件重用的思想。软件开发不提倡自己编写软件的各个内容,有些内容可以通过重用,快速地搭建软件,节约了时间和成本。学生需要有软件重用的思想,其实很多的软件,就是利用这种模式开发出来的。案例的学习和借鉴就属于软件重用的一种,具有非常大的借鉴意义。
2.3实践教学项目驱动教学
学生在软件工程课程中,学生进行3-5人分组,小组选择一个项目,项目具有一定的实践锻炼的效果,结合后期学生的毕业设计、实习、竞赛、或主持或参与大学生项目等,学生选题不能具有随意性。教师在选题过程中要给予指导并提供建设性的意见,学生的选题要有长远的规划性,不仅仅是完成当前的课程实践作业,后期的毕业设计、实习、竞赛、主持或参与的大学生项目结合起来,这样后期的工作量就相对轻松,可以节约大量的时间,学生在空余的时间内容,可以学习更多的内容。项目的选题长远规划非常重要,个别学生可能并未考虑这些,需要教师给予引导。项目实践的内容,学生可以完成较为简单的项目,课程结束后,学生可以在项目上进行扩充,实现更加复杂的功能。这样学生可以运用更多的知识,继续完善项目,更加接近实用性,开发完善的项目,最终可以提供给用户使用。完成项目开发的学生在就业中更具有竞争性,能更快地适应岗位工作。学生选题之前,也可以对市场需求进行调研,了解社会需要的人才状况,进而学习相关技术知识,提高自身竞争力。 2.4网络视频案例教学
这种模式可以通过学校购买,网络上可以选择相关的案例学习。学生也可以自己寻找免费的网络资源,也可以付费购买网络资源。这样可以快速地掌握相关的技术知识,节约了大量的时间。视频案例学习,可以观看培训老师一步一步地软件制作过程,具有软件开发情景再现场景,跟随老师的思路,一步步学习软件开发,慢慢消化所学的知识,并且对知识的应用有一个模仿案例,通过长时间的积累,学生就可以自己领悟软件开发的真谛,直至自己进行软件开发。
2.5培养学生软件开发兴趣
学生在学习软件开发遇到困难,需要学习能够解决,但是在学习的道路上,困难重重,能够坚持下来,需要一定毅力,因此在学习的道路上,学生和老师互相加油,共同迎接困难。教师在教学过程中,多讲述自己的经验,以启发学生。在学习的道路上,没有捷径可走,唯有知识的积累,才能有量变到质变。在学习的过程中,多思考,多借鉴,多搜索,多问同学和老师。困难遇到得多了,慢慢地就积累了经验,水平才能提高。在水平提高后,学生的学习兴趣就提高了,也会慢慢地带动身边的人去学习。
2.6教师业务能力提升
教师需要不断提高自己的软件开发能力,要想学生有一碗水,老师就要有一桶水的水平。因此老师要在课下,不断钻研业务水平,提高自己的动手能力,在教学过程中,才能做到游刃有余,得心应手。老师的水平得到学生的认可,学生才能愿意跟着老师学习,听老师的安排。教师利用慕课,假期培训等方式,提高自己业务素质。学院要充分给予教师自由,提供培训机会。教师在教研室活动中,要和同行教师交流,相互之间交流经验,分享教学心得。相互分享自己的案例素材,以提高自己的教学水平。
2.7重实践考核方式
学生的考核方式,要想实践能力倾斜。在平时的教学过程中,利用学生课下看视频时间,作业完成情况,项目完成情况,个人项目汇报情况,期末成绩等,综合打分。表1给出考核的内容。
3实施过程
3.1案例筛选
理论课教学过程中,为了更容易明白理论知识,教师可在教学过程中,讲述一些贴近学生生活的案例,促使学生更容易理解。在备课过程中,教师要整理案例材料,做到材料通俗易懂,服务理论教学。实践课中,教师准备完整案例,包含文档和程序,程序配有完整的安装说明,以备学生运行程序。实践教学的案例,要完整的内容。在实际教学过程中,能够收集到较为完整的案例,并不容易,小型案例,可能比较简单,文档资料并不齐全,需要教师进行整理。另外,国内很多软件开发公司,规模较小的企业,对文档的撰写重视不够,往往程序的文档材料,并不齐全。大型的软件,有完整的文档,内容比较复杂,并不适合案例教学。
3.2教师重现程序编写过程
教师在实践教学过程中,需要用一个实际的案例进行教学,以提高学生的动手能力。而实践课时不足的情况下,教师可以课下录制好,再发给学生课下观看,这无疑增加了教师的负担,学院可以给予一定的补贴政策。教师在讲述案例的过程中,要熟练教学,需要教师在课下多进行练习,达到熟练的地步。完整的案例教学,可以激发学生的学习兴趣,也可以让学生直观地看到软件制作的过程。教学过程中,教師要有理论的知识讲述,有实践方面的操作,也有工具的使用。尤其在编码过程中,遇到错误如何处理的,这需要教师有一定的代码调试功底,在教学过程中,有的放矢。教师在案例的讲述过程中,尽量录制课程,以便后期给更多的学生观看。通过多年的积累,教师手头的课程资料就更多、丰富、案例的讲述也更得心应手,毕竟是自己一手制作的。
3.3教师提供教学资料
只通过任课教师的教学内容,毕竟知识面有限。在目前互联网比较发达的时代,慕课、网络公开课较为丰富的状况下,教师可以在网络上收集资料,通过网络软件把信息发送给学生。学生只要愿意学习,就可以掌握编程方面的知识。网络可以更快让学生接触到前沿技术,在毕业后能够更好地胜任岗位,提高自身竞争力。
3.4严控学生项目
光看不练,能力无法提高,在学生编写软件过程中,处于初级阶段,会遇到各种各样的错误。有些错误比较简单,通过一定量的积累,就对一些小错误有直观的认识。通过排错经验的积累,能力得到提升,慢慢就积累了兴趣,学生建立了自信。在学生利用项目进行练习的过程中,教师要严控学生的制作过程,有些学生为了投机取巧,可能并没有真实地参与到软件开发中。对出现这些问题的学生,进行严肃处理,杜绝学生再犯。通过提问、项目汇报等途径,教师可以得到一些端倪,以便核实和处理。另外,杜绝学生抄袭程序,可以用查重系统进行查重,以便发现抄袭问题。
3.5项目长远规划
学生在软件工程的实践中完成项目。实施项目驱动教学,学生在选择项目名称的时候,与以往的项目名称有所限制。项目的名称应该贴近实际市场需要,对以后选择毕业设计题目相吻合的题目,在软件工程课程结束后,学生的项目的功能,还有待完善,因此项目可以作为后续继续完善的项目。项目完善较好的,可以参加竞赛,直接定位毕业论文设计的题目,如果能够获奖也是证明学生能力的一种体现,在就业也中有一定的优势。如果学生在大学期间,主持或参与大学生创新项目,可以用创新项目的题目作为项目名称,一方面可以完成大学项目所要求的系统,另一方面,也可以完成软件工程实践课程,同样也可以作为毕业设计的题目。如果学生考研,这能节约不少的时间,在研究中复试中,可以处于有利地位。毕竟研究生阶段要求学生具备一定的实践能力,大多数导师都有项目,需要学生参与完成。
4结束语
本文通过对软件工程课程教学中出现的实践与理论脱节问题,通过对目前软件工程的教学现状进行分析,提出了一些改进措施。对提高实践能力方面给出了具体实施措施。在案例的选择、实践操作、网络资源的利用、实践项目监督等方面,对实践教学提出了实施的办法,通过对阜阳师范大学软件工程专业、计算机科学与技术专业、物联网专业,进行了实施,学生的实践能力得到提升,培养了能力较强的计算机软件开发人才,很多学生考取研究生进一步深造。实践结果表明了,提出的教学模式对软件工程素质的培养具有重要的意义。
转载注明来源:https://www.xzbu.com/8/view-15266732.htm