前言:寻找写作灵感?中文期刊网用心挑选的软件工程课程教学设计实践,希望能为您的阅读和创作带来灵感,欢迎大家阅读并分享。
摘要:
软件工程课程的实践环节已经成为该课程教学改革的重点,针对软件工程课程的培养目标,提出该课程的理论教学设计思路和理论知识与实践相结合的举措。在理论教学环节中,突出以案例教学为导向和不断更新课程内容;在实践教学环节中,突出按照软件项目开发模式,结合理论知识与实践知识,采用CASE工具集完成小组项目开发,并对小组成员的考核方式进行了改革,以便更好地培养学生的团队开发软件的能力。
关键词:
软件工程;教学设计;实践举措
0引言
软件工程作为一门计算机相关专业学生的必修课程,对学生软件工程能力的培养起到重要的作用。该课程包括系统需求分析、项目管理、总体设计、详细设计、系统测试与配置管理等内容,涵盖了软件在开发过程中的各个方面。作为计算机软件的一门基础课程,该课程旨在培养学生作为软件工程师所需的专业能力和基本素养。
1软件工程课程存在的问题和特点
软件工程学强调对理论和原理的学习和掌握,而忽视理论学习过程中对理论和原理的实践和应用,学生很难认知软件工程理论的作用和使用方法。软件工程理论课程的验收标准往往按照“应试”教学方法实施,即以闭卷理论考试的成绩来定级学生学习成果之优劣,忽略了软件工程课程的工程特性和实践本质。学生往往仅从课本上了解该门课程的一些概念性内容,而没有重视这门课程的实践性。虽然当前很多关于软件工程课程改革的研究都提出了实践的重要性,并采用案例[1-2]或者实例教学[3]的方式讲授该门课程,甚至有的教师将CDIO模式的工程教育模式引入软件工程课程[4-5],但在实际的课程实践中,大多数学生对布置的项目开发训练往往应付差事,从网上下载或复制他人的设计,或者是一个项目小组中往往只有一位学生负责所有的分析、设计与编码工作,其他学生基本上不承担任何工作。因此,如何落实这种工程训练的模式,让项目小组中的每位成员都承担相应的工作并切实实施这些工作,是本文讨论的重点。软件工程课程的目标是培养学生的团队沟通能力、协作能力和实践能力。虽然各学校对该课程的重视程度越来越高,但教学效果却不是很理想。究其原因在于软件工程课程具有如下特点:①课程内容的抽象性。该课程开设的时间主要为大二下学期或者大三上学期,在这之前,学生对相关课程的学习基本都是较为具体的内容,如编程语言、数据结构、操作系统、计算机网络等课程。在这一阶段,学生往往能够独立设计一个算法或者开发一个小程序,其重心在于编码,而对于软件开发标准和流程没有直观的印象,这直接导致学生在学习课程内容时感觉非常抽象且理论化。②课程内容涉及面广。软件工程课程内容包括项目管理、软件开发模式、需求分析、总体设计、详细设计、测试、维护等内容,涉及经济学、工程学、管理学、计算机等众多学科的内容,这些知识必须与实践教学相结合才能让学生更好地理解软件工程课程的工程性质。③课程实验教学涉及众多的CASE工具。由于该课程涵盖了整个软件工程项目的开发周期,因此在实验教学环节就要求学生掌握软件生命周期中每个环节的CASE工具,如项目管理工具、需求建模工具、总体设计和详细设计工具、测试工具等。④软件开发模式和方法的变化性。软件开发模式和方法变化较快,而书本知识的更新速度远远达不到软件知识的更新速度。因此,教材上关于软件的知识点往往具有一定的滞后性,如软件架构模式、软件开发过程管理、面向服务的软件架构等当前热点知识在软件工程教材中基本上没有提及。这就需要任课教师结合教学内容和项目实训将这些新的软件工程知识融入课程教学中。
2软件工程课程教学设计思路
软件工程教学方案的设计旨在加强学生的实践能力、动手能力和团队协作能力,满足当前社会对软件工程人才的需求。为了增强实用性,也是出于理论知识与实践知识结合的需要,该课程在教学过程中需要结合软件工程实例、软件开发模式及软件项目管理等方面的实践知识,使学生具备参与软件团队开发工作的各项素质。因此,必须科学合理地制定软件工程的教学思路,保证理论与实践的有效结合,从而取得满意的教学效果。其设计思路如下。
2.1以案例教学为驱动
该课程旨在培养学生实践应用的基本能力,针对软件工程课程各章节的理论知识点,以实际的软件工程开发案例进行讲解,引入“智能会议管理系统”案例,深入浅出。引导学生从最简单的软件工程案例入手,循序渐进地掌握软件工程理论知识,并以企业化软件开发过程为模式,讲解软件从需求定义、设计到实现与测试的工作流程,使学生了解软件开发的过程,提高学生对该门课程的兴趣。
2.2跟踪IT行业技术主流,不断更新课程内容
随着互联网技术和软件需求的迅速发展,软件工程的发展速度明显加快。当前,面向服务的软件开发和基于构件的软件开发模式的出现,使软件工程教材往往滞后于IT新技术。而中间件、网构技术、面向服务计算等一批新技术和理念,对网络资源共享与管理、人机交互及软件服务等各方面提出了软件开发技术方面的新要求。为适应信息社会对人才培养的新要求,在授课过程中,需要密切跟踪IT技术发展主流,引入软件工程的最新发展技术,使得学生能够及时地了解软件工程中的最新发展趋势,并保持教学内容与技术发展的同步性。
2.3组织开发团队
软件工程课程还需要培养学生的团队协作和沟通能力。将一个教学班划分为若干小组,称为软件项目开发团队。每个小组有4~6人,按照软件工程项目的要求,每个团队设组长(项目经理)一名,以便于管理控制和任务分派。组长全权负责本组实践教学过程中的日常事务管理,包括组织会议、交流协调、任务分派、进度控制、成果验收和成绩评定等。小组中每个成员都必须有具体的工作职责,因此小组中需要划分项目经理、系统分析员、数据库设计师、界面设计师、测试员、文档员等角色,而且每位成员必须要完成该项目中某模块的编码工作。小组的划分还要注意组内和组间学生的能力搭配和开发实力的均衡,不能由学生自由组合,最好由班长和学习委员来实施分组和任命组长。这样能更好地培养软件开发团队的沟通能力和协作能力,其目的就是保证学生在软件工程课程的实践过程中有实际的场景环境(主要包括用户、领域专家和工作环境),这对于高质量的软件工程实践过程而言是质的保障。
2.4合理选题
选择项目的内容时必须选择规模、性质和难度适中的软件开发项目。题目来源为教师指定课题和学生自选课题。选题的原则为新颖、实用和规模适中。新颖要求体现计算机发展的主流技术和应用范畴;实用要求所选题目一定是用户的实际需求,而不是由学生随意杜撰和随意想象的;规模适中要求所选的题目不能过于简单也不能过于复杂,所选项目的功能点个数应该为100~200。
2.5教学质量控制
教学活动必须注重实践教学效果,不可流于形式。尤其是在当前不少学生存在厌学情绪和学习热情不高的情况下,除了加强本课程在讲授过程中的兴趣培养外,更重要的是制定实践教学过程中各个阶段任务的完成标准和相关成绩评定方法,保障项目实践的质量和完整性。
2.6软件设计与开发环境配置
软件工程课程包含软件生命周期的各项内容,如软件分析和设计相关工具,以IBMRationalSoftwareArchitect和EclipseFramework为主;软件开发环境,以Java和C#.Net为主线的开发环境配置;项目管理工具(Project)、测试工具的实际应用指导等。因此,对软件开发环境的熟悉是非常重要的,这有利于学生在实践过程中产生一种项目开发、科学研究和创新思维的综合效应。
2.7改革考核方式
本校的软件工程课程成绩由期末考试成绩、期中考试成绩、实验成绩和平时成绩4部分组成。其中期末考试成绩占60%,期中考试成绩占10%,实验成绩占20%,平时成绩占10%。在实际考核中,笔者将实验成绩和平时成绩合并为实践项目成绩。每位成员的实践项目成绩的评分由任课教师和小组组长共同确定。每个小组实践项目的团队总成绩由相关文档编写、阶段性答辩效果和最终软件演示3部分组成,并由任课教师评定。其中相关文档编写占40%,阶段性答辩效果占30%,最终软件演示占30%。每个小组成员的打分由小组组长确定,小组组长根据各个成员在项目开发过程中的表现和贡献给予一定的系数,所有小组成员的系数之和为1,因此,每个小组成员的实践项目成绩等于团队成绩乘以表现系数。由于每位学生的实践成绩与团队成绩和个人对团队项目的贡献有关,因此这种考核方式能够有效地增强小组成员的凝聚力和团队协作能力。
3理论与实践结合的教学举措
根据本校学生的实际情况,并结合学生毕业设计和论文的要求,笔者提出了“案例导向、项目驱动”的设计理念,以软件工程的理论指导软件开发的实践,以项目开发带动软件工程的理论学习,并在软件工程的课堂授课和实践指导中贯彻这一思想。案例导向针对大多数学生初次进行完整的软件项目开发时往往不知从何下手的情况,优选案例,并在理论授课的过程中以案例讲解设计理论,为学生提供学习样板。案例分析过程采用“在动手中学习”的教学理念,引导学生通过分析来提出案例的解决方案,为实施软件工程项目设计做好准备。项目驱动的主要内容是按照软件企业先进的项目管理和开发模式,开发小组独立完成一个应用软件项目的开发,使学生得到较为全面、系统和规范的软件工程实践的训练,培养创造性的软件设计能力和综合分析、解决问题的能力。结合理论教学与实践项目。软件工程课程的理论教学按照多数软件工程教材的章节设计,以软件生命周期为主线,结合面向对象方法讲授本门课程;而实验CASE工具的学习则是本课程实验教学的主要内容;里程碑指的是当相应的理论知识学习结束后的两个星期,项目团队要完成的工作和纸质文档;而阶段性答辩是指学生完成一个里程碑后进行的阶段性验收。例如,当需求分析理论课程和实验课程结束后的两个星期,学生就应该提交需求分析说明书文档并准备进行阶段性答辩工作。小组的阶段性答辩由任课教师和该课程的全体学生参加,采用面对面的答辩方式,每个小组限时15分钟,答辩人由任课教师随机指定,但小组中的其他成员有一次补充的机会。在答辩结束后,任课教师和其他小组成员可以提出问题,该问题的解答可由小组中的任一成员完成。由此可见,软件工程课程的理论与实践结合的教学举措的核心在于分段实施。实践过程按照软件企业的项目管理和开发模式进行,重点放在软件需求和软件设计两个阶段,强调组内的交流与协作,考察学生对需求变更的适应能力;要求开发过程反复、迭代进行,培养学生“在错误中学习”。同时,任课教师需要强化指导,通过答疑、上机辅导、讨论、资料、E-mail等多种方式,对课程设计进行全程指导,从而保证项目设计的质量。如果任课教师弱化了指导和沟通这一环节,往往会使这种项目驱动的实践模式最终流于形式。因此,教师的指导过程也是一次实施项目管理的过程。
4教学效果分析
这种理论与实践相结合的教学方法,有效地增强了学生的项目开发能力、团队协作能力和沟通能力。最为显著的变化是学生在完成毕业设计的过程中,不会像以前那样确定题目后就马上设计界面、编写代码。通过软件项目训练的学生大都按照软件工程的标准完成毕业设计,他们会在需求上花费较多的时间,会按照版本管理的规范来管理自己的毕业设计,还会用文档来记录关键的设计。而对于实验CASE工具集的学习和熟悉也帮助他们更早和更好地适应了在企业中的工作。
5结语
未来的软件工程课程教学,应侧重于培养学生实践应用的基本能力,学生不但要对软件工程理论知识有所深入,还要在软件开发方面具有“会设计、能开发”的能力。因此,该课程应强调“学生实践、项目实训”的方式,将理论知识与动手能力结合,注重培养学生的实际动手能力;以实例教学和企业化程序开发模式对学生进行必要的训练,培养学生养成良好的编程习惯,在编程、企业开发团队沟通、软件文档书写等方面与企业开发任务无缝链接。
作者:李宗花 朱兆辉 单位:淮阴师范学院计算机科学与技术学院
参考文献:
[1]窦万峰,吉根林.软件工程课程研究性教学方法探索[J].计算机教育,2014(13):59-62.
[2]张佩云.项目驱动的软件工程课程案例式分段情景教学研究[J].计算机教育,2013(3):77-79.
[3]吴志辉,唐承亮.项目驱动的软件工程课程教学模式改革[J].计算机教育,2012(2):25-27.
[4]李春英,汤志康.CDIO模式下的软件工程课程设计实践[J].实验技术与管理,2011(6):173-174.
[5]尹春娇,沈桂芳.探析CDIO模式在应用型本科院校软件工程课程实践教学中的应用[J].科技信息,2012(31):15-16.