软件工程课程教学改革与实践
2016-11-02王光琼任登波
王光琼 任登波
摘要:软件工程是计算机专业中一门重要的基础课程,其实践性、应用性很强。文章根据软件工程课程教学存在的问题,结合软件工程课程教学的实际,提出了相应的改革策略,有效地提高了教学效果。
关键词:软件工程;教学改革;实践教学;案例教学;实践环节
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)23-0115-03
Abstract: Software Engineering is an fundamental and important course, which includes massive amounts of practice and it requires strong ability to solve real world problems. In this paper, we analyzed the current state of the teaching of software Engineering, and then proposed efficient strategies to improve the effectiveness of teaching.
Key words: Software Engineering; Teaching reform; Practice Teaching;Case teaching;Practice Segment
软件工程作为计算机科学与技术及相关专业教学计划中一门重要的专业基础课,其主要目标是,培养学生运用软件工程的原则、开发方法和技术进行软件的开发和维护[1]。然而我国工科的教育实践中还存在不少问题,例如重理论轻实践、强调个人学术能力而忽视团队协作精神、重视知识学习而轻视开拓创新能力的培养等问题[2]。
1 软件工程课程教学存在的问题
1.1 教学模式单一,难以激发学习兴趣
当前大多数软件工程课程的教学主要采取集中授课制,以课堂讲授为主,很大程度上是以教师为中心,这种教学模式,对于没有软件开发经验的普通学生而言,比较抽象,难于理解,难以激发学习兴趣。
1.2 偏重理论教学,缺少实践环节
在当前的教学中,普遍存在理论教学与具体实践脱节的现象,以教师讲授为主,忽视了学生在教学过程中的主导地位。教学中鲜有实例,更没有组织学生以团队形式实践软件系统开发的全过程。
1.3 评分模式单一,考核指标欠合理
评分模式的单一、考核指标欠合理直接影响学生综合能力的提高。历年来,很多学校都是按照平时成绩占总评成绩的30%,期末考试占总评成绩的70%的形式进行考核,对于实践环节,由于任务不明确,考核指标不合理,学生在实践课程中不知道要做什么,怎么做,达到什么程度才符合要求,导致大部分学生的实践课程没有认真做,甚至没有做,所以也就无从考核,或者实践环节在整个课程考核中占的比例很少。
鉴于以上原因,如何在教学中紧跟学科发展,不断更新教学内容,改进教学方法,创新教学模式,加强实践教学,是摆在我们面前的一道课题。
2 软件工程课程教学改革策略
2.1 更新教学理念,合理选取教学内容
让学生所学的知识与社会需求对接,这是我们在教育中应当坚持的理念。目前,计算机行业需要的软件人才是既掌握软件开发技术,又懂得项目管理的复合型人才。因此,在教学过程中,应当更新教学理念。在教学时不仅要注重软件工程的基本原理、方法和技术的介绍,更应该强调软件项目管理的重要性和必要性[3]。在教学实践中尤其要注重更新教学内容,保持教学内容对先进技术的跟进,要求学生能够运用新技术解决实际问题,同时注重培养学生的创新意识与创新能力。
2.2改革教学方法
为了使学生更好的学习软件工程的理论知识及先进技术,我们必须对软件工程课程教学方式进行深入的研究与实践,采取多种教学方式和手段,激发学生的学习积极性和创造性[4]。
鉴于学生缺乏实际软件开发经验,代码编写能力也比较薄弱,很难把一些抽象的理论与实际应用相结合,因此在进行理论教学时,摒弃传统的填鸭式教学方法,而是采用案例教学法和其他各种现代的教学方法和手段相结合进行教学。首先是知识传授阶段,该阶段教师作为主导,系统地讲授软件工程的知识体系,精讲系统原理和方法,抓重点、难点、关键,充分运用多媒体课件,采用讲授法[5];其次为案例教学阶段,软件开发的典型案例是帮助学生掌握软件工程方法,进行软件开发的最好范例。我们在传授每个知识小节后,安排相应的案例学习,引导学生通过分析、提出案例的解决方案,为实施课程设计准备。在案例教学中,注重多种教学方法的使用:如:情景教学 、启发式教学 、交互式教学;最后是实践训练阶段,模拟企业完整的软件项目管理和开发过程,对学生进行软件项目实训,推进教学方法的改革。
2.3 加强实践教学,提高实践环节质量
实践教学环节是整个教学过程的重要一环,在教学过程中,我们大胆改革,增加了“软件工程课程设计”实践环节,通过该环节,提高学生实际的软件开发能力和工程素养,培养学生的团队协作意识和创新精神。
2.3.1 明确实践教学的基本目标
通过实践教学,可促进学生巩固和加深理论知识,提高运用知识分析和解决问题的能力,培养学生的系统分析、软件设计、软件开发等专业技能[6]。同时通过实践教学,让学生接受良好的工程型人才基本素质训练,培养实践动手能力和创新发展能力,培养过程控制与组织管理能力,提高学生交流沟通、环境适应和团队合作的能力,进而培养创新精神。
2.3.2 合理安排实践环节
按照软件企业先进的项目管理和开发模式,要求学生以开发小组(4-5人自愿组合)为单位,在教师指导下,在规定时间内,采用面向对象的方法,使用UML建模工具,完成一个规模适当的应用软件系统。以软件设计为中心,独立地完成从需求分析、软件设计、编码到软件测试运行的软件开发全过程,要求提交相应的开发资料。包括:项目开发计划说明书,需求分析说明书,概要设计说明书,详细设计说明书,数据库设计说明书,测试分析报告和软件等。使学生得到较全面、系统和规范的软件工程实践的训练,提高软件设计能力。
课程设计与课堂教学同步进行,时间进度安排见表1:
2.3.3 注重选题
课程设计的选题要从本专业的培养目标出发,体现本专业基本训练的内容,以教师命题与学生自选题相结合的方式进行,应立足于解决工程实际问题。由于课程设计受到时间及开发环境、条件等的限制,课题的大小规模适当、难易适度。但也应具有一定复杂度,通过激发学生参加开发实践的积极性与创造性,经过努力能够完成,才能达到综合应用所学知识的目的。
近年来学生完成的部分项目包括:四川文理学院资源网、呵呵宝贝育儿网、基于SSH的文理学生交流平台、网上冰激凌店、大学生兼职网、爱友旅游网,博文网上书城、DRP网上营业厅、基于Hibernate的微聊网、YI起休闲娱乐网、考酷(试题)网、基于asp.net的缪斯之家点餐管理系统、基于asp.net的蓝雨点在线阅读网、同城交易网、足迹网、基于MVC 的在线订餐管理系统、拍拍网、文理初见交友网、灵感信息交易平台、浪淘沙网上购物系统、爱乐联盟音乐管理系统、MyOffice系统(OA系统)、爱房网网站系统、达州政府网、华夏酒店门户网站等。
2.3.4 加强过程管理
在整个实践训练过程中,教师要注意给学生适当的引导,特别要注意引导学生不断地提升研究问题的层面,教师通过“网上课程设计平台”进行答疑、讨论、发布资料、E-mail等多种方式,对课程设计的全程进行指导,并注意对以下环节的把握。
(1)重视需求分析
需求分析是软件开发中最关键的部分,需要准确回答“系统必须做什么”的问题,需求分析直接影响到后期的开发工作和系统的成败。在整个实践过程,获取项目需求一般由项目小组长完成,但由于组长自身的能力和经验的不足,不可能把获取用户需求做得很完善,为了保证需求获取的准确性和全面性,我们要求项目组的全体成员都参与到用户需求的获取工作中来,发挥集体的能力,并由指导教师审核各项目的具体需求,给出修改意见或建议。在实施的过程中,教师要事先讲解类似的实例,或进行必要的提示。教师随时检查各小组的开发进展情况,对给出的功能是否完整、是否满足用户需求,需求分析报告是否规范、完整进行评定。
(2)重视文档的写作
文档标志着每个阶段的完成和结果,文档是课程设计每阶段的自然结果,文档可以提高软件开发过程的能见度,文档是软件开发过程中阶段性里程碑。特别是在多人参加的课程设计组中,文档是相互协调的最清晰的语言,文档也是软件测试的根据。因此课程设计中必须重视文档的写作。
(3)重视测试工作
软件测试不仅是软件开发的一个重要组成部分,而且在软件开发的整个过程中占据着相当大的比重。对于课程设计来说,测试也是不可缺少的。课程设计主要应该进行三种形式的软件测试:单元测试、集成测试和系统测试。通过测试用例和实际运行效果,检验课程设计的效果
2.4 完善课程考核方式
软件工程课程的考核方式检验的重点不应该仅仅是理论考试,而且应该考核学生是否能在软件开发过程中贯彻软件工程学的思想和方法[7]。考核的功能不仅是检验学生学习和掌握课程理论知识的情况,更重要的是鼓励和督促学生学习的主动性和创造性。因此,我们加大了实践考核的比重,如平时成绩占10%、笔试占30%、课程设计占60%。课程设计的考核我们将系统实现、文档和答辩作为重要的考核指标,并引入了团队评分制。
(1)文档的考核
前已述及要重视文档的写作,所以,考核的时候文档也是作为检验的标准之一。按照软件工程国家标准GB/T 8567-2006-计算机软件文档编制规范,要求学生生成一整套文档的过程,就是按照软件工程完成一个软件开发的过程,从而培养学生从实践上真正体会软件工程这门课程的涵义,为将来从事软件开发工作奠定良好基础。
(2)答辩的考核
答辩的主要目的是将自己在软件开发过程中使用技术和方法结合自己的项目阐述出来。答辩的时候,根据自己软件开发过程中问题的定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、维护不同阶段充当的不同角色,阐述自己采用的技术、为什么采用这种技术以及怎样在实际当中运用这些技术。答辩时,由指导老师和每个项目组抽选的一位同学组成一个答辩指导小组,除了对学生进行评分之外,同时也对学生的不足提出意见,并且就软件工程的体系知识进行提问,这样就要求学生既要努力地充当好自己所担任的角色,还要全面掌握课程的其他知识。
(3)系统实现考核
在每个小组成员完成答辩后,再以项目小组为单位进行作品演示,展示项目的完成情况及效果,说明项目开发过程中所遇到的问题和困难,是如何解决的,有何收获,今后还可以进行怎样的改进和提高等。教师根据每位学生的学习态度、平时表现和担当的职责以及作品功能、性能、界面效果进行分析、点评,给出成绩。教师点评分析过程中,既要肯定学生的表现和成绩,也要针对其不足之处给予建议,以促使学生进行进一步的完善和改进。
3 教学改革效果
软件工程课程教学改革已经在我院进行了多届,按照相关要求和规范的软件工程课程设计,达到了预期的效果。主要表现为:学生深深认识到软件开发并不只是编程序,对团队协同合作有了深刻的认识,对软件过程管理有了深刻的认识,同时提高了学生学习软件工程的兴趣及工程能力,为将来参与或主持大型工程的开发与维护迈出了坚实的一步。
4 结束语
软件工程是一门综合性较高的学科,理论性和实践性都很强。要改进软件工程的课程教学,必须针对其实践性强、发展迅速的特点,根据行业发展变化不断更新教学内容,设计合理的教学模式,在突出课程基本理论和基础知识的同时,更侧重于对学生的软件工程应用能力的培养[8]。
参考文献:
[1] 孙艳春,王立福,梅宏.软件工程本科教学的探索与实践[J].计算机教育,2009(8)112-115.
[2] 王中华,汪文彬.基于CDIO模式的软件工程实践教学改革研究[J].福建电脑,2013(12)40-45.
[3] 张长森,王辉,雒芬. 软件工程课程教学体系研究[J].理工高教研究,2005(1):80-82.
[4] 侯毅.软件工程教学创新初探[J].广西轻工业,2010(5):136.
[5] 巫华芳.案例教学法在软件工程教学中的实践[J].宜春学院学报,2007(2):98-99.
[6] 胡文彬,董剑利,张文娟.软件工程人才动态培养模式的研究与实践[J].科教文汇,2010(10):28-29.
[7] 张霞.“软件工程”课程教学改革的探讨[J].计算机教育,2010(4):40-42.
[8] 李净,多琦,赵俊杰. 信息管理与信息系统专业“软件工程”课程教改研究[J].山西煤炭管理干部学院学报,2007(3):56-58.