“C语言”课程中融合软件工程思想的探索与实践

时间:2022-10-27 19:00:03 公文范文 来源:网友投稿

摘要:针对计算机专业毕业生软件工程意识淡薄、难以满足IT行业深层次需求的问题,进行了大胆的教学改革,提出了将软件工程化思想分散到诸多课程中,让学生自始至终都能受到软件工程化思想熏陶的新思路,并通过在中北大学示范性软件学院软件工程专业学生的“C语言”课程教学中全面引入结构化软件开发方法对该解决方案进行了实践检验。结果表明,该方法不仅增强了学生的软件工程意识,而且极大地提高了学生综合运用软件工程方法解决问题的能力。

关键词:教学改革;C语言;软件工程

作者简介:付东来(1979-),男,河南林州人,中北大学电子与计算机科学技术学院,讲师。(山西 太原 030051)

中图分类号:G642.3     文献标识码:A     文章编号:1007-0079(2011)28-0082-02

“软件工程”是一门以工程理论、原理、方法和技术为指导,开发较大规模软件系统的学科,在计算机软件领域中占有极其重要的地位。根据美国IEEE计算机协会(IEEE—CS)和ACM联合公布的2004版《软件工程知识体系指南》将软件工程学科分解为:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量共10个知识领域。由此可以看出,软件工程是一门内容丰富、抽象、应用性及实践性较强的专业基础课程。

近年来,针对“软件工程”课程在教与学的双向过程中存在诸多问题,许多专家学者进行了积极的探索与实践。比如:文献[1-3]提出的面向项目或任务驱动的教学方法;文献[4-5]提出以市场需求为导向的教学模式;文献[6]提出理论教学与实验室建设相结合的教学方法;文献[7-9]提出了“软件工程”课程体系建设问题。这些方法在强化学生的软件工程意识、提高软件工程的综合应用能力方面起到了积极的作用。本文在分析导致计算机专业毕业生软件工程意识淡薄的原因的基础上,提出将软件工程化思想分散到诸多课程中,让学生自始至终都能受到软件工程化思想熏陶的新思路。

一、问题及原因

自“软件危机”爆发以来,人们已经逐渐改变了“软件即编码”的错误观念,将软件工程化,采取系统的、可控的、有效的方法开发软件,已经成为公认的解决软件危机的总体思路。然而,从目前计算机专业的毕业生来看,软件工程化意识淡薄,难以在工作中综合运用软件工程的方法解决实际问题。究其原因主要有三个方面。

1.学生的认知缺陷

编程与软件工程两者都重要,前者的目标是程序,后者的目标是软件,必须相辅相成。从软件工程的角度来看,编程工作的比重只占不到15%,其他则有85%以上(依据一般认知规律,在软件开发阶段中需求分析与设计工作比重占40%、编码占20%、测试与维护占40%;而各项工作分别是技术性比重占70%、管理性比重占30%,所以编程只占20%×70%=14%)。但是,根据笔者的调查,目前在编程中真正使用软件工程方法并认为有用的学生人数仅占5%左右,大多数人除了使用瀑布模型指导软件开发过程外,对各生命周期所用的开发方法都没有使用到,甚至程序流程图也有许多人没有使用,而且有10%左右的学生认为软件工程完全无用,编写软件只要熟练掌握现有的各种框架(比如:Spring、Hibernate、Struts)即可。具体调查数据见表1,调查对象为从2008年开始的计算机专业大四的学生。由此可见,目前学生对软件工程课程的认知方面存在不足,没有真正认识到软件工程的重要性。当然,这种情况与其平常接触的软件规模太小有很大关系,一般大三学生的编程经验多来源于撰写自己选修相关课程的教师指定的个人作业,其程序代码行数(Line of Code)若达到1000行,则可能已经算是一个很大的程序了。大四学生则可能参与过类似专题研究形态的软件开发项目,如果该项目是由4~8位学生分工合作,在几个月之间所产出的结果包括2000~3000行有效的程序代码以及100页的说明文件,可能也就算是一个很大的软件系统。但是真正商业软件开发的规模是远远超过这些数据的。例如微软公司曾宣告其Windows Vista 产品共有1500万行的程序代码,由1500人用5年的时间来完成开发。

2.师资力量问题

目前软件工程教学过程往往采用单纯的理论教学方式,教师本身的软件开发项目经验较少,无法从示例的角度将软件工程中所涉及到的理论知识贯穿于实践开发当中,学生在学习中自然体会到的也是乏味枯燥的理论知识。根据调查,目前我国普通高等院校身处一线的教师很多缺乏大型软件开发背景,自身的工程化意识不强,甚至有些老师自己都认为工程化方法的应用意义不大。

3.训练学生软件工程化意识的课程太过集中

目前,很多高校在强化软件工程化意识的课程方面比较单一化,计算机科学与技术专业的学生在四年的培养计划中仅设有软件工程导论或软件工程一门课,即使软件工程专业也仅有一到两门讲述软件工程思想的课程。如表2所示。

二、改革的措施

针对上述问题,拟提出将软件工程化思想分散到诸多课程中,借助重复再现的思想强化学生软件开发工程化意识。具体措施如下:

1.在程序语言设计类课程中融入软件工程知识

“软件工程”教学改革的首要任务是对课程内容的改革,但是应突破站在一门课程的角度审视“软件工程”教材内容的改革,应站在培养目标的高度统筹规划。因此,采取将软件工程知识融入多门课程的做法。目前,主要的做法是根据程序设计语言的类型引入不同的软件工程知识。比如:在结构化程序设计语言中引入结构化软件工程方法;在面向对象程序设计语言中引入面向对象软件工程方法。但是应该注意引入知识的深度与广度,标准为最小需求。

2.改革实践环节

实践环节的改革主要分两方面:课堂改革由教师在讲解示例时引入应用背景,增加示例的趣味性,并且要使用软件工程方法贯穿始终(各个阶段应规范使用各阶段的技术手段,包括程序编码阶段的变量、函数的命名问题,切忌随意操作),以便做到良好的示范作用;实验环节中,针对训练单个知识点的实验,在简单的引入问题情境后,由学生根据软件工程方法独立完成。针对综合型实验,应根据需要将学生分组,按小组进行。

3.改革考核方式

考核方式对教学效果的作用非常重要,对学生的学习方式起到了重要的引导作用。目前,由于制度方面的局限性,仍然沿用传统的闭卷考试方式,仅在评分标准中全面依据软件工程进行评判,考前应多次对学生进行讲解评分标准(此环节非常重要)。

三、实施的效果

以上改革措施已在我校示范性软件学院软件工程专业学生“C语言”课程的教学过程中进行了一系列的教学实践。目前,具体做法:自编了C语言程序设计教程实验指导,该书全面引入结构化软件工程方面的知识。另外,在教学教案以及实验环节中精心设计了应用示例。改革两年来,一方面学生在软件工程化意识方面与前几届学生相比有极大提高。另一方面,在软件编制的标准化及分析、解决问题的能力方面都有了极大的提高。

四、存在的问题

在取得成绩的同时,教学改革中也遇到了不少困难,因为改革本身是一个系统化的工程,各环节需要协调,哪一个环节出了问题都可能影响改革的效果。具体困难主要有两个方面的问题。

1.内容引入的深度与广度

因为受学时及学生素质的限制,作为计算机专业学生第一门程序设计语言课,如何在学时有限的情况下既让学生掌握语言的细节问题,又让学生掌握软件工程方法,尽管在改革中设立了能够满足示例的最小需求即可的标准,但仍然存在难以把握的问题。

2.教师工作量太大

与C语言的传统授课方法相比,教师需要付出近3倍的工作量(目前主要采取利用团体的力量结合标准化教学经验的方法减少重复性工作的思路解决该问题),然而,配套的教学酬金制度无法跟上。

五、结束语

本文针对目前计算机相关专业毕业生软件工程化意识淡薄、工程化方法应用能力较弱、难以满足IT行业需求的问题,描述了在教学改革过程中的一些经验、取得的成果和目前面临的困难。下一步的主要工作:一方面继续推进针对C语言程序设计课程中引入结构化软件工程内容的进度。另一方面,着手推进在面向对象程序设计语言中引入面向对象软件工程方面的知识。此外,还要积极寻求配套的教学制度改革措施。

参考文献:

[1]霍英.项目驱动教学法在软件工程课程中的实践[J].计算机教育,2010,(17):123-125.

[2]阳王东,祝青,邓艳智.《软件工程》项目型教学模式的探索[J].计算机时代,2008,(4):68-71.

[3]张兆印,陈超,李艳芳.软件工程课任务驱动教学法的研究[J].计算机时代,2009,(8):52-54.

[4]张大平.跨越软件工程教学到实践的鸿沟[J].计算机教育,2010,(17):

34-37.

[5]杜立智.软件工程教学与实战剖析[J].计算机时代,2010,(8):57-58.

[6]张霞.软件工程课程教学改革的探讨[J].计算机教育,2010,(4):40-42.

[7]况立群,韩燮.软件工程课程体系教学模式的探索与改革[J].中国电力教育,2009,(15):75-76.

[8]韩中元,雷国华,李军.应用型本科软件工程人才培养模式的探索与实践[J].计算机教育,2010,(10):26-29.

[9]徐玲,等.软件工程专业实践教学体系的构建[J].计算机教育,2010,

(11):137-139.

(责任编辑:王祝萍)

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

推荐访问:软件工程 融合 探索 实践 语言