软件工程综合性课程设计的教学实践

2009-06-18 05:05朱大勇张新丽李树全
计算机教育 2009年15期
关键词:软件工程创新模式教学实践

朱大勇 张新丽 李树全

摘要:综合性课程设计能有效地激发学生的学习兴趣,提高学生的动手能力,促进其综合素质的全面发展。本文阐述了开展软件工程综合性课程设计的必要性,给出了课程设计的组织方式、考核与评价方法;并且通过教学实践,提出了课程设计的创新模式。

关键词:综合性课程设计;软件工程;教学实践;创新模式

中图分类号:G642 文献标识码:A

1引言

软件工程课程具有综合性强,实践性要求高的特点。但是,通过教学实践发现学生普遍感觉软件工程课程中的概念抽象,不容易在课堂讲授中获取切身的体会和认识。同时,大部分学生的编程实践较少,很少参与开发实际的软件项目,对项目的背景了解甚少,欠缺在实际环境中综合运用知识的能力。因此,仅仅是在上软件工程课程的时候以固定课时的方式进行实验训练,学生很难真正理解和掌握软件工程的内涵。从实验过程来说,学生也没有足够的时间为具体的项目做好充分的准备,以完成资料查找、阅读、系统分析、设计、编码和测试等软件开发工作。此外,很多学生重视编程等技术的学习而忽视了必要的文献查找、阅读和写作的训练。

开展综合性课程设计主要是要解决本科生在学习中重理论轻实践,缺乏综合运用各种知识来完成实际工作的问题。软件工程综合性课程设计作为培养学生软件开发能力的重要教学手段为软件工程课程教学提供了理论与实践相结合的有效途径。通过参与综合性课程设计,学生能更好地掌握软件开发的基本技能,培养动手能力,锻炼分析和解决问题的能力。通过经历整个软件开发过程,学生发现和解决各种问题,能进一步培养学生的创新素质;同时,经过工程实践,学生还能建立起独立开展软件开发工作的信心和动力。

2课程设计的组织

课程设计以学生为主体,为学生提供一个既动脑又动手,并且独立实践的机会。首先实验题目要能激发学生的兴趣而不仅仅是一些常规的示例性课题。其次,课程设计的时间安排、实验的开展都需要学生自己把握。因此,在实践过程中不能按通常的课程教学来组织,需要围绕给定的具体题目指导学生自己查阅相关的资料,自学必要的开发工具,搭建实验的开发环境,完成编程和测试工作。除了软件开发实践以外,还要在此过程中培养学生的项目组织和管理能力,以及团队协作精神。老师主要是通过指引方向、讨论问题、提出建议、评价和考核完成情况为学生提供一个将所学知识进行融会贯通的环境,让学生在这个环境中自由的成长。

围绕上述的教学理念,教学过程的组织主要包括以下三个方面:

(1) 制定目标和要求。让学生明确综合课程设计的重要性、需要完成的任务和考核目标,给出具体的问题领域和题目。综合性设计的题目可以按照不同的标准进行划分,例如:研究型和应用型题目,或科研型和教学型题目。研究型题目可以指定学生完成某个特定的研究问题,例如:某些比较复杂且学生没有学过的算法。应用型题目则偏重软件开发实践,训练学生掌握新的技术,例如对于网站开发类题目,不仅是简单的实现网站构建,而是引入当前IT领域最新的技术(如Ajax),使学生学会如何在较短时间内掌握一门新的开发技术。

(2) 按学生的实际水平和情况进行分组管理。学生在知识掌握和运用方面有一定的差异。有的学生具有较强的分析、理解能力,但是动手能力较差;而有的学生动手能力较强,但在写作方面的训练较少。不少的学生在接触到自己不熟悉的领域时,感觉进入陌生的领域很困难,缺乏完成题目的信心。另外,很多学生由于认识上的问题,关心编程锻炼而忽视写作练习。针对这些问题,在组织管理时,要充分了解学生各自的特点,把不同类型的学生划分到一个小组中,例如:在一个小组中以五个人为上限,进行合理组合和搭配使在一个团队中既有具有较强管理意识的学生、编程能力较强的学生,又有一定写作能力的学生。在管理小组时,让每个人去尝试其他小组成员的角色,让他们从团队中学习,既发挥各自的专长,又能全面培养软件开发的才能。

(3) 项目实施和指导。采用定期检查任务进度、召开团队会议、讨论问题等形式关注并检查学生的工作情况。在时间安排方面,通过一个学期来实施整个课程设计,所有实践不占用课程时间,学生利用课余时间来完成分配的任务。前期老师对如何开展工作进行指导,然后定期对学生的阶段性成果进行检查。根据学生所积累的问题的数量和重要程度不定期的做一些软件开发知识的专题指导,如软件编程规范、界面和数据库设计、软件体系架构等。在完成系统后,指导学生依据文档规范撰写实验报告。针对在写作过程中出现的条理混乱、表述不清等问题,通过讲解相应的写作模板和案例来加强学生的写作训练。最后,对学生提交的各种文档采用分析、讨论等方式进行评审和考核。

3教学实践

在综合考虑各情况的基础上,以实验项目的形式开展综合课程设计的教学活动。设计的实验题目涉及多领域的知识和工程背景。老师在指导过程中,运用引导、辅助等手段来充分发挥学生在实践中的主导作用,加强创新能力的培养,让学生充满热情地参与到系统开发,从中获取知识和经验。

(1) 引导学生进入课程设计

开始课程设计时,首先召集学生,建立小组联系方式,确立项目的开发团队。给小组成员讲解综合性课程设计的目的和意义、题目背景,以及所涉及的知识领域。大多数学生是第一次完成这样较大的软件开发题目,缺乏足够的自信,老师需要通过鼓励来帮助学生扫清心理障碍。刚开始学生对整个工作没有明确的思路和规划,因此要引导学生按照项目的开发方式进行规划,包括时间安排、任务分配、确定重点、查阅资料文献,等等。通过培养学生独立查阅文献资料的能力和对系统进行分析和设计的能力,使他们能独立地思考问题,逐步摆脱对老师的依赖。

对于项目完成的成果,给出明确的规范和考核标准。在开始课程设计前需要向参加项目的成员介绍软件开发需要建立哪些文档,例如:需求规格说明书、概要设计说明书,等等,要求学生按照标准的软件工程文档来完成课程设计报告。概要讲解有关的软件开发工具,包括设计工具(MS Visio等)、开发环境工具(MS Visual Studio,Eclipse等)、测试工具(JUnit等)。这些工具的安装、配置和使用要学生通过搜索Internet、查找图书馆资料来自学掌握。

(2) 培养创新能力

软件工程教学如果仅仅在抽象的概念、术语和图表上进行分析、讲解,学生没有直接的项目开发体验,不了解真实用户的需求,就很难发现在软件开发中存在的问题,这样也就限制了学生用新的思维或新的角度去思考问题。从很多IT行业的成功例子中可以发现很多优秀的人才在实践中发现问题、解决问题从而创造了新的产品和技术,甚至开拓了一个新的市场或领域。例如,Google、Facebook、P2P软件等都是从最初一点想法和实践发展起来的。因此,在综合性的课程设计中要充分考虑发挥学生自己的想象力,训练学生的创新思维。

在综合性课程设计中提出四种创新模式,通过不同的创新模式引导学生突破传统和常规的思维方式,尽可能以创造性的方式去解决实践中遇到的问题。

① 应用创新。应用创新以实际工程中的用户需求为核心,以多领域相结合,强调软件系统的实用性,例如:在指导学生确定题目时,把P2P网络和信息检索相结合提出应用软件课题。

② 技术创新。开发一个具体的软件系统需要各门课程,甚至是其他学科的知识,因此,掌握新的技术,并对多种技术进行融合创新,能极大地激发学生的积极性。例如:根据学生已掌握的操作系统知识,在实验中结合多核技术拟定“基于多核实现矩阵并行运算”的题目。

③ 研究创新。研究创新强调问题驱动和研究导向,通过给出能激发学生兴趣的研究问题,进行研讨式分析和实验。老师指导学生阅读某个研究领域前沿性的论文,在论文的基础上实现相关的算法和系统,在逐步积累的基础上,对不足的地方加以改进,实现创新。

④ 管理创新。在实际的软件项目开发中,管理比技术更重要。通过实践要让学生重视管理,学会管理,培养管理能力,实现管理创新。例如,在软件开发中经常会出现各种变化,包括软件需求、设计、源代码等都会在开发过程中出现这样或那样的改变,学生通过在实践中体会这些变化对软件开发的影响,思考如何从管理的角度去解决这些问题,从而发挥创造性。

(3) 评价与考核

在实验过程中要进行阶段性评价,以讨论的方式找出软件系统和文档中的问题。将文档分发给团队成员,每个人要对其他成员的工作进行分析和衡量,对程序代码和各种文档进行评估,提出自己的看法。通过讨论以及批判性和创造性的思考,来强化学生之间的知识交流,提高其分析能力,锻炼交流和沟通技能。老师在评价时要考察学生的开发进度、商讨解决出现的技术问题,协调管理中的矛盾。在总结学生工作时要对学生作出指导,并给出改进建议。

考核方式主要是对学生开发的软件系统和课程设计报告进行评分。在评分时,要综合考虑学生的平时表现、提交的源代码、课程设计报告,以及是否具有创新性。具体来说,考核分为三个部分:第一部分是软件系统的需求分析,这一部分占 30分,主要根据文档考察学生对系统的认识和分析能力;第二部分是软件系统的设计,这一部分占30分,主要考核学生运用各种图表和语言进行系统分解和设计的能力;第三部分是软件系统的编码和测试,这一部分占40分,主要考核学生的逻辑思维能力和动手能力。

4总结

当前本科生除了掌握基本的理论知识和技能外,还需要通过训练学会如何运用各种知识来解决实际问题。综合性课程设计以培养学生的综合素质和能力为目标,以发挥学生主观能动性为指导思想,注重学生在实践过程中各方面能力的培养。通过开展软件工程的综合性课程设计,为学生建立起完成具体任务的团队合作环境,使学生真正成为学习的主动者,让学生组织项目团队,担任不同的角色,培养了组织和管理才能,提升了动手能力和创新素质。

参考文献:

[1] 周波,钟林飞. 软件工程课程设计教学方法探讨[J].计算机与网络教学,2007(9):154-155.

[2] 刘智,刘加伶,闫河,李唯唯.数据库课程设计的教学思路与实施[J]. 软件导刊,2009(1):198-199.

[3] 庞晓琼.案例驱动的数据结构课程设计教学改革实践[J]. 计算机教育,2009(1):53-55.

[4] 唐仕喜.编译技术可扩展式课程设计改革研究[J]. 计算机教育,2009(2):40-42.

[5] 张天宝,王攀峰.试论新型教与学的关系的建构[J].教育研究,2001,(10):38.

Teaching Practice of Comprehensive Course Design of Software Engineering

ZHU Da-yong1, ZHANG Xin-li2, LI Shu-quan1

(1. School of Software, University of Electronic Science and Technology of China, Chengdu 610054, China; 2. Department of Math and Information, Chengdu University of Information Technology, Chengdu 610054, China)

Abstract: Comprehensive course design can effectively motivate learning interest of students, improve practical ability, and promote comprehensive quality. In this paper, we discuss the necessity of teaching practice of comprehensive course design and introduce the organization and assessment method of course design. Innovation modes of developing overall quality of students are presented through practice of teaching practice.

Key words: comprehensive course design, software engineering, teaching practice, innovation pattern

猜你喜欢
软件工程创新模式教学实践
依托工作室的软件工程实践教学研究
基于工程教育认证的《软件工程》课程教学质量建设研究 
新课改背景下小学数学课堂创新模式的具体方法
高技能人才培养新模式职业素养+职业技能
中职计算机应用课程教学改革与反思
关于如何创新和完善计算机软件工程管理的探讨
高职院校普通话测试管理的创新模式研究
关于配网电力工程技术的可靠性的探讨
浅论高中化学生活化教学的实践与思考
浅谈初中物理实验教学与学生创新能力的培养