案例驱动与项目导向结合的软件工程课程教学模式

时间:2022-04-28 02:48:00

案例驱动与项目导向结合的软件工程课程教学模式

摘要:软件工程是软件工程专业的主要专业课程,对培养高素质的软件工程人才起着决定性的作用。针对课程中理论知识抽象,学生感受不到学习效果等问题,文章结合教学改革实践,从教学内容、教学方式、课程考核等方面进行探讨,提出案例驱动与项目导向结合的软件工程课程教学模式。

关键词:软件工程;教学模式;案例驱动;项目导向

0.引言

在普通高等院校软件工程本科专业的教学中,软件工程通常作为一门核心的必修专业课程。它是技术与管理紧密结合所形成的工程学科,对培养工程化的软件人才有着极为重要的意义。其先行课程是程序设计语言、数据库原理、操作系统、数据结构等,可以说这是一门应用性、实践性、综合性很强的专业课程。它的主要内容包括软件产品研发的基本概念、基本理论和基本工具,目的是帮助学生能够在短时间内掌握软件项目定义、分析、设计、开发、维护的一般过程,培养学生软件开发的实践能力及管理软件项目的基本能力,同时也为后续的项目实训及毕业设计储备知识和技能。

然而,由于软件工程本身就是一个比较复杂的系统工程,所以在教学过程中存在一些实际困难,主要体现在以下几个方面:

(1)软件工程理论抽象,知识点众多,学生感觉不到直接的学习效果,没有学习兴趣。

(2)教学内容往往重理论、轻实践,导致学生对教师讲授的工程概念不理解,学习难度大。

(3)教学方式通常以教师讲授为主,而教师又缺少实际的项目经验,容易照本宣科,无法将企业的实际案例融入到基本原理的讲解中,造成学生无法学以致用。

(4)实践环节偏重结果,不注重过程,学生也只是按要求编写一些规定的文档,其开发方式和手段与实际的软件工程实践有明显的差距。

针对以上问题,结合软件工程课程的教学实践,笔者从软件工程的教学内容、教学方式及课程考核等方面进行了较为深入的研究,提出多媒体课件、案例驱动、项目导向等综合的理论结合实践的教学方法,并且在实际教学过程中已取得了较好的效果。

1.教学内容设计

在理论教学方面,我们不能一味地追求全面,要把软件开发生命周期中的任何一个过程、软件项目管理的任何一个知识领域都作为教学重点,并讲得较为深入是不可能的。为此,在教学过程中我们选择软件开发的4个核心过程:分析、设计、开发、测试,以及项目管理中的质量管理作为学习重点,占理论学时的3/4;其他辅助知识,如项目定义等作为介绍性内容讲解,占理论学时的1/4。在课程的实践过程中再结合项目讲解理论,深化理解。

在实践教学方面,我们要注重过程与质量,侧重培养学生发现问题、分析问题、解决问题的能力以及团队合作精神。教师要求学生推荐若干名项目经理,项目经理与组员进行双向选择,组成若干开发团队(每个团队5-8人),开发出具有一定规模的系统,让学生初步体会到一个软件项目开发的全过程。以国家标准(如“信息技术软件生存周期过程”等)为基础,组织项目展开,使学生在规范的环境中完成实验项目,提高软件质量。

从目前各高校的教学内容上看,软件工程教学还没有跟上软件工程发展的步伐,很多新的技术还没有传授给学生。所以在教学内容上要保持和先进技术的与时俱进,向学生介绍目前推出的比较成熟的新方法,如:基于组件的开发,Rational统一过程等;给学生讲述编程语言的流行趋势,如:TIOBE世界编程语言排行榜;开发小组项目时,选择的开发环境和开发工具要与企业要求一致等,这样对于培养学生创新意识与开发能力有极大的帮助,避免知识落伍。

2.教学方式设计

2.1理论教学

传统的教学方式普遍采用以教师讲解为主、学生参与为辅的教学模式,很难达到较好的教学效果。因此为了提高教学效果,我们精心设计和调整了软件工程课程理论教学的方法,提出多媒体课件与案例驱动相结合的理论教学方法。

1)多媒体课件。

多媒体课件综合文字、图片、动画和视频等多种资料来展示课程中的一些基本原理和方法,弥补传统板书的不足之处,使一些抽象难懂的知识描述变得形象而直观,便于学生接受和理解。设计良好的多媒体课件能使教学活动变得活泼、生动、有趣,富有启发性,从而改变了传统单调的教学模式,更能激发学生的学习兴趣。当然多媒体教学信息量大,节奏快,容易造成重点不突出,学生无法跟上讲课进度,所以教师要控制好讲课进度,采用适当的板书与多媒体课件相结合进行教学,突出重点,才能达到学习效果。

2)案例驱动。

教学的初始阶段可选择一些经典的“软件危机”案例作为导入,如千年虫、IBM360机的操作系统的开发等,使学生们了解到失败的软件开发过程及方法会导致失败的软件,认识到软件工程的重要性,并初步建立工程化的意识。

教学过程中,我们将图书管理系统(采用瀑布模型)作为结构化开发的典型案例,将裁剪的ATM系统(采用喷泉模型)作为面向对象开发的典型案例,以此展开软件生命周期中的需求分析、概要设计、详细设计、开发及测试等核心阶段,并为学生介绍每个阶段中要重点解决的问题,以及解决具体问题的方法、工具、手段。同时结合案例,让学生在思考、分析和讨论中更好地理解和体会什么是软件生命周期,以及如何把各种生命周期模型同实际开发结合起来。这样做可以防止学生理论和应用脱节,有利于学生在实际开发中运用各种生命周期模型组织开发过程。

2.2实践教学

针对软件工程课程的特点,如果采用单一的课堂理论讲授模式,很难引起学生主动学习的兴趣。所以我们为该课程精心设计了实验环节。实验阶段以项目为导向,将个人兴趣、团队协作、过程管理相结合,具体措施如下:

1)团队组织形式。

团队组织形式采用项目经理负责制。由学生推荐项目经理,项目经理与组员双向选择,按5-8人一组组建团队。项目成果以项目组为单位提交,可执行软件应是集成后的结果。每个团队设计以下几种角色:项目经理(1人)、技术经理(1人)、分析人员(1人)、设计人员(1人)、开发人员(2人)及测试人员(2人)。除项目经理由固定人员担任,其他不定,可一人兼任多个角色。

2)团队活动展开。

图1所示是项目活动流程及制品图,展示了要求学生在实验中主要完成的事务。

项目选择:教师要精心准备项目库,如:教务学籍管理系统、试题管理及组卷系统等,这些项目要求既能解决实际问题,又要“适合”学生学习。学生可在该范围内选题,也可自选项目,但教师要帮助把握难度。因为大部分学生的发散思维能力、想象能力和解决系统性工程问题的能力较差,不适合开发业务复杂的大系统。学生在选择好合适的项目后,依据《计算机软件文档编制规范》(以下称GB/T 8567-2006)要求,编写“可行性分析(研究)报告”(FAR),提交基线。

需求分析:通过咨询、同行产品调研等方式获取需求,并进行需求建模,依据规范GB/T 8567-2006要求,编写“软件需求规格说明”(SRS),提交基线。

概要和详细设计:以需求模型为基础,建立软件结构和程序结构,依据规范GB/T 8567-2006要求,编写“软件(结构)设计说明”(SDD),提交基线。

软件测试:编写测试用例,展开系统测试,依据规范GB/T 8567-2006要求,编写“软件测试说明”(STD)和“软件测试报告”(STR),提交基线。

交付及验收:提交最终交付物,包括源代码、可执行程序、“软件用户手册”(SUM)等。教师验收最终成果,并给出验收报告及项目评分。

值得注意的是,项目组每种文档提交基线之前都需要在组内进行评审,并交由教师审查,审查通过后方可提交基线。

3)项目质量保证和质量控制。

为了避免学生将实验当成是走形式以及提交粗糙的项目制品,我们一方面需要提高学生的学习兴趣,使学生主动在项目中投入更大热情,积极参与;另一方面更需要良好的技术控制手段作为质量保证和质量控制。

①首先进行项目规划。项目规划定义了工作的内容以及如何完成这些工作。它一方面能指导学生开发,另一方面可以以此来明确要求提交的制品及交付期限等,严格控制项目进度,确保按时提交最终成果。

②以软件行业的国家标准为基础展开项目,使项目在规范的环境中开发。

③提交的制品要在项目组内进行严格评审,同时将“提交制品”作为项目里程碑点。当到达里程碑点时,组织所有项目组集体汇报,交流经验,相互学习、促进,并进行组间互评。

④采用双周例会制(各项目组分别开会),保证项目成员了解所属项目的整体进展情况及存在的问题。项目经理要记录问题,并组织团队成员解决问题,跟踪问题,直到问题关闭。教师针对团队现状进行打分。

3.课程考核

为了激发学生的主观能动性,鼓励学生独立解决问题,我们将学生的成绩结构设计为:期末试卷卷面成绩(满分100分)×80%+平时成绩(满分20分)。期末试卷主要设置一些案例分析题,考核学生对理论知识的理解和应用能力;平时成绩由多项组成,项目经理直接考核占25%,教师综合评定项目占50%,课堂表现、缺勤、迟到占25%。平时成绩中前两者用于有效地激励团队成员多做贡献,后者采取一些技术手段对学生进行规范约束。

4.结语

在教学实践过程中,上述软件工程教学模式在软件人才培养方面取得了较好的效果。相当一部分学生的学习积极性被调动起来,并且普遍反映这种理论与实践结合,案例讲解、项目实践并重的方式能够让大家真正地理解并做到了学以致用。

当然其中也存在一定的问题,也将是我们进一步改革的方向:

(1)对于实践课而言,仅提供软件实践项目是远远不够的,更需要为学生提供一个符合软件工程要求的开发环境,这也是软件工程实践教学取得良好效果的关键。

(2)教师需要不断地提高个人理论和科研水平,掌握新理论、新技术、新工具以及新信息,甚至有必要定期到企业中进行一定的实践培训,这样才具备指导学生的能力。

(3)需要更进一步鼓励学生独立思考、解决问题,同时为学生配备完善的网络课程和扩展资源,为学生自主学习提供基本保证。

参考文献:

[1]张海藩,软件工程导论[M],北京:清华大学出版社,2008:9.

[2]汪虹,“软件工程导论”课程教学改革的探讨[J],黄山学院学报,2009(5):115-115.

[3]孙知信,软件工程课程模块化教学改革的实践与思考[J],南京邮电学院学报:社会科学版,2004(2):39-42.

[4]付雄,王汝传,“软件项目管理”课程的教学实践与思考[J],计算机教育,2009(21):55-56,65.

[5]王忠群,刘涛,“软件工程”教学方法的研究[J],现代计算机,2009(5):86-87,112.

[6]董宗然,应用型院校软件项目管理课程教学探讨[J],计算机教育,2011(3):43-46.

[7]李正,李菊琪,工科课程体系和教学内容改革论析[J],中国大学教学,2007(4):45-47.

[8]Watts S H,软件工程规范[M],傅为,苏俊,许青松,译,北京:清华大学出版社,2004:45.

上一篇:土地收益保证贷款融资模式激活农民“沉睡资本... 下一篇:数据密集型科研第四范式