软件学院中“软件工程基础”课程教学改革的探索与实践

时间:2022-04-25 02:39:10

软件学院中“软件工程基础”课程教学改革的探索与实践

摘要:本文分析了“软件工程基础”课程在软件学院课程体系中的定位,探讨了“软件工程基础”教学的指导思想和课程重点,指出软件工程基本理论和概念的教学内容应体现平台性和框架性,在课程项目实践中要注重项目和过程管理、组织和管理能力、团队精神等的培养。

关键词:软件工程;课程;教学改革

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

文章编号:1672-5913(2007)08-0034-03

1 软件工程类的课程结构

软件工程最初是作为一个知识域在计算机科学与技术的课程体系中出现的,随着信息产业的发展,软件工程逐渐发展成为一门独立的学科,并拥有了一整套的课程体系。对于软件工程专业人才的培养来说,作为产业决策、职业认证和课程教育的依据,由美国IEEE的计算机协会(IEEE―CS)和ACM联合公布的2004版《软件工程知识体系指南》(SWEBOK,Software Engineering Body of Knowledge)是十分值得关注和借鉴的。在SWEBOK中,软件工程学科被分解为10个知识域:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量[1]。

示范性软件学院强调按学生需求设置课程,尤其是计算机专业的人才培养模式和课程设置的区别[2]。软件学院和常规的计算机专业在“软件工程基础”课程的教学要求上存在较大的区别。在计算机专业的课程体系中,除“软件工程基础”课程外的其他软件工程类课程就较少了。而“软件工程基础”课程在软件学院的课程体系中更多地是作为专业平台课程出现的,它需要总揽所有软件工程知识域的要点,为其他课程的学习打好基础。另外,“软件工程基础”课程提供的课程实践也需要为其他各个知识域的深入学习提供实践经验和体会。表1是浙江大学软件学院本科教学体系中与软件工程相关的课程情况。

“软件工程基础”是软件学院本科阶段重要的基础课程之一,这是由软件工程在软件产业中的重要地位所决定的。本文根据在浙江大学软件学院的教学实践,通过分析“软件工程基础”课程在软件学院课程体系中的定位,探讨该课程的目标、教学内容和方法等。

2 教学内容

根据在课程体系中的定位,软件工程基本理论和概念的教学内容应体现平台性和框架性。软件工程是一种层次化的技术,它的学科内容主要包括过程、方法和工具。过程是将技术结合在一起的凝聚力,使得计算机软件能够被合理和及时地开发,而支持软件工程的根基是对质量的关注。所以在实际教学中应着重于软件工程的整体性,了解整个知识体系的内容,不必每个细节都深入完整。在后续的课程中,将会对软件工程的每个知识域做深入的介绍,如需求分析、软件测试等。

我们选用了Roger Pressman的经典教材《软件工程・实践者之路》(影印版,清华大学出版社),主要教学内容包括软件产品与过程、项目管理、传统软件工程方法学、面向对象软件工程等。软件工程是发展非常快的一个研究及应用领域,很多新概念并没有相应的中文术语,硬性翻译既不自然也不便于理解。多年来我们一直采取双语教学,除了课堂讲解中部分使用中文以外,其他环节(包括课件、习题、大型实验项目说明、各阶段实践报告、考试等)都使用英文,使学生理解原汁原味的概念和术语。同时引导他们直接阅读国际软件工程权威们定期召开的研讨会报告原文,理解大师们的观点和软件工程技术的发展趋势,培养学生自主学习的能力以及日后国际交流的能力。

在教学中,我们特别注重教学内容与软件企业实践的相结合,与国内外多家企业合作办学,并经常邀请企业的管理和技术人员到学校来讲学。

课堂理论教学的目的是使学生掌握软件工程的基本概念、原理和方法,并且还要培养学生严谨求实的科学态度和合作精神,激发他们的创新意识和创业精神。我们改革了考试形式,采用开卷方式,改进笔试内容,将需要背诵或能够直接从书上找到的考核内容减少到卷面成绩的30%以下,使其更能反映学生对软件工程思想的理解和运用,目的是尽量避免学习中的死记硬背、不求甚解的现象,注重对分析问题解决问题能力的考核。

3 课程实践

软件工程的研究在短短三十多年的时间里飞速发展,内容更新快且覆盖面非常广泛。对软件工程的理论、方法的掌握需要读者具有一定的实践经验才能真正领会其中的精髓,所以我们在软件工程课程教学中,特别注意避免空洞的理论灌输,强调理论与实践并重的教学理念。教学安排中除了32学时的理论教学之外,还有32学时的课程实践。

考虑到在课程体系中的定位,软件工程的课程实践并不追求最终开发的软件成果的完善性和某个单项技术的深入。我们的目标是通过在课程实践中的系统分析与设计、软件项目管理、合作与交流等方面的训练,培养学生综合运用软件工程的过程、方法等知识开发实际项目的能力。在项目实践中要注重的是项目和过程管理、组织和管理能力的培养,为学生在今后的相关课程学习中打下良好的基础。

在课程实践中布置大型模拟案例,将学生划分为6~10人的小组,分工合作,共同完成该模拟项目。课程实践随理论教学进展布置需求分析、总体设计、详细设计、编码、测试、维护(版本升级)等任务。要求每个小组进行项目管理和过程管理的实践,给学生上台报告的机会,从而训练学生的分析能力、开发能力、组织能力和表达能力,并培养团队精神。

为培养学生的组织和管理能力,在课程实践中我们要求每组对个人的分工上不是简单地采取分系统模块的方法,而是鼓励按过程分配任务,让学生体会到项目开发时沟通和合作的重要性。另外,通过让老师、助教和一小部分学生扮演用户的角色,提高学生在需求分析中的谈判与沟通技巧。

在整个学期的开发过程中,项目组必须定期自行组织召开协商会议,就项目进度、模块接口等管理与技术问题进行非正式的沟通和磋商。学生们需要提交4份正式的书面报告:需求分析报告、概要设计报告、详细设计报告和测试报告。

在实践课中还安排专门的时间用于学生分组演讲,老师和学生可以进行提问。一方面可以对每个小组的工作进行指导和提出意见,另一方面也避免了一些学生的搭车现象。最终经过一个学期的软件系统设计和开发工作,每个小组要提交2个版本的软件产品:初步的和改进的版本。

为了切实体现理论与实践并重的教学理念,本课程加大实践环节在成绩中的比重,将期末笔试的比例降低到60%,将课程实践的考察成绩提高到40%。这在实践中取得了很好的效果。

4 团队精神的培养

真实的软件项目通常是由一定规模的项目小组来完成的。软件工程师不仅需要完成个人的工作任务,还需要与项目组成员协同工作。因此只有具备良好的团队精神,才能与其他成员共同开发出高质量的软件产品。

软件工程并不只有技术问题,还涉及人的问题[3]。通过课程教学和实验使学生深刻认识到软件开发的成败在于人,而不是技术,良好的团队精神对于项目的成功是至关重要的。

所谓团队精神,简单来说就是大局意识、协作和服务精神的集中体现。团队精神要求有统一的奋斗目标或价值观,而且需要相互信赖,需要适度的引导和协调,需要正确而统一的文化理念的传递和灌输。团队精神强调的是组织内部成员间的合作态度,为了一个统一的目标,成员自觉地认同肩负的责任并愿意为此目标共同奉献。

团队精神的培养不能单靠理论灌输,而是要通过课程实践中的磨合才能真正理解。在课程实践中要采取的措施有:建立团队的行为习惯及行事规范;注重从小组的团队去考核;定期的会议交流等。

在课程实践中,我们创新性地提出“项目经费”法,即在验收每一阶段的项目开发工作时,将每组的平均得分乘以该组人数,作为“项目经费”统一划拨给各组长,由组长根据组员工作量进行具体分配,每个人得到的经费多少就代表了他得到的分数。相比于以前由教师统一给分的情况,组长的分数更为客观公平地体现了每个学生的参与程度。

“项目经费法”体现了对团体利益的追求,小组团队得到的“项目经费”直接决定了可供小组内成员分配的利益,让每个人都能体会到团队的利益即是个人的利益。同时,“项目经费”由小组自己决定如何在成员中分配,也体现了对个人贡献的奖惩,能调动大家的积极性。

5 结束语

培养一名优秀的软件工程师需要较长时间实际工作的锻炼,但是在大学的几年里,学生应该养成良好的职业精神、优秀的学习能力以及基本的专业技能。“软件工程基础”是软件学院中一门非常重要的专业基础课程,学习的效果直接影响到后续其它课程的学习以及今后的实际工作,同时软件工程学科的内容日新月异,这些都要求我们在课程教学中以社会和企业的需求为主导,不断创新和探索。

软件学院中“软件工程基础”课程教学的重点在于它需要总揽所有软件工程知识领域的要点,在课堂教学的内容安排上要体现平台性和框架性,课程实践应利用大型模拟案例的锻炼,让学生真正体会到软件工程原理和方法的精髓,从而培养出具有国际市场竞争力、软件产业急需的高层次实用性人才。

参考文献:

[1] /

[2] 张尧学. 关于创办示范性软件学院的思考[J]. 中国高等教育,2004,(10):3-7.

[3] 沈备军,宋超. 反思和抽象在“软件工程中人的因素”课程学习中的应用[J]. 计算机教育,2006,(1):52-56.

作者简介:

林怀忠,(1970-),2002年毕业于浙江大学计算机学院,获工学博士学位,现为浙江大学计算机学院副教授。主要从事软件工程、数据库系统原理等课程的教学工作,研究领域包括软件工程、数据库与数据挖掘、信息安全、移动计算等,现已发表学术论文30余篇。

上一篇:用课题项目研究与开发的教学模式培养应用型人... 下一篇:任务驱动法在独立学院计算机教学中的应用