首页 > 范文大全 > 正文

从社会需求的角度探索软件工程教育

开篇:润墨网以专业的文秘视角,为您筛选了一篇从社会需求的角度探索软件工程教育范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:如何培养社会需要的软件人才,是大学教育需要探索的问题之一。本文根据SE2004对软件工程的毕业生的要求,提出了一些加强学生能力的方法和建议,包括实例教学、分组学习、软件工程实验室的建设等多方面的内容。

关键词:软件工程教育;实例教学;分组学习;实验室建设

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

1引言

我国绝大部分院校都开设了计算机专业,每年有数以万计的毕业生。然而,许多计算机专业毕业的学生却面临就业时难以找到合适工作的问题。一方面是学校竭尽全力地培养人才,另一方面是IT产业的用人单位痛感IT人才的缺乏。旺盛而迅速变化的市场需求和正规学校教育的IT人才供给之间形成了巨大的缺口,这说明了学校的教育与市场的需求存在着很大的鸿沟。

软件工程无疑是计算机科学中最重要的学科之一,也是实践性最强的学科之一。但目前在计算机类本科生以至研究生教育中,仍是最薄弱的环节之一。特别是近几年,许多院校都开设了软件工程专业,如何进行课程建设,加强实践环节,许多文献都对该问题进行了有益的研讨。IEEE每年一次的软件工程教育和训练会议发表了大量的文章对此进行研究。Lethbridge提出在教育中改进学生的实践能力是当前的挑战和未来的趋势。

本文探索了在软件工程教育中如何提高学生的认知能力,改进学生的实践能力,更好地满足社会需求的问题。本文的内容适用于软件工程专业,也涵盖计算机类其他专业。

2国外对软件人才培养的标准

按照美国软件工程2004计算机课程(SE2004)的要求,软件工程的毕业生需要达到下列标准:

(1) 掌握在进行开发实践中所必需的软件工程的知识和技能;

(2) 能够独立或在小组中开发高质量的软件;

(3) 在受到“成本、时间、知识、现有系统和现有组织”的限制环境中,能够进行适当的权衡;

(4) 能够运用软件工程的方法,结合“伦理、社会、法律和经济”等规范进行一个或多个领域的设计;

(5) 有理解和应用软件工程中必需的当前理论、模型和技术的能力;

(6) 具有与人沟通的技能,有效的工作习惯和领导及通信能力;

(7) 能学习新模型、新技术和即将出现的技术。

在IEEE推出的软件工程知识体系(Software Engineering Body of Knowledge,简称SWEBOK)2004版中,从软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程项目、软件工程工具与方法、软件质量等十个方面描述了一个软件工程师需要具备的知识。SWEBOK项目的目的是为了建立一组标准和规范,作为软件工程专业实践中进行决策、专业认证和制定教育课程计划的基础。

IEEE强调了工程教育的基本要素,包括:

1) 系统观点:熟悉系统设计、构造分析过程。

2) 知识的深度和广度:知识面要宽,具体领域方向能够深入。

3) 设计经验:参与设计活动,具有项目(工程)概念。

4) 工具使用:能够使用计算机软、硬件工具,分析和解决实际问题。

5) 职业训练:了解职业(行业)需要,具有“产品”(如软件、系统、行业和应用服务等)意识。

6) 交流技巧:能够以合适的形式(如书面、口头、可视化等)进行交流和沟通。

3对软件工程教育的思考与探索

可以看到,国外对软件工程教育的要求是相当高的,但这也正是社会需要的人才。如何接近和达到这样的目标,是在软件工程教育中需要认真探索的。

国内面临的问题是,软件教育还是以程序设计为主线,以操作系统、数据库原理等课程为基础。对软件开发过程,软件管理等课程,虽在教学大纲范围之内,但学生能够真正理解的还是很少,教学效果并不是很好。学生进入社会后,很快就发现学校学到的东西与实际应用的差距太大。学生常反映:在学习时,学的东西不知做什么用,到应用时,用的东西不知去哪里找。企业也很难将这些学生立即投入到实际的工作之中。

如何提高教学水平,使毕业生能够具有更强的实践能力,以适应和适合社会的需求,对从事教育工作的学校来说是一个迫在眉睫的问题。

学校的教学,不仅是知识的传授问题,更重要的是对学生能力的培养问题。特别是培养学生分析问题和解决问题的能力。因为知识在发展,会陈旧,而能力可以在不断的社会实践中提高。特别是在计算机应用迅速普及的今天,大量大型复杂的软件在开发和应用,如果过分着重于基础理论的教育,书本知识的教学,很难体会到软件的复杂性和实用性。加强学生对大型复杂软件的认知,培养学生的动手能力,可以使毕业生踏入社会后,迅速进入角色,承担起工作的重任。

从软件工程的角度来看,学生应掌握四个方面的知识:

(1) 计算机科学的基本理论:包括数学基础、计算基础、工程基础和形式化概念等。

(2) 软件工程专业理论:包括软件工程的基本概念、原理、方法和技术、工具与环境等。

(3) 软件工程实践:让学生进行软件工程方面的综合应用实践,以小组方式进行软件项目模拟,参与软件企业的软件过程改进等。

(4) 软件技术管理:包括软件项目管理、软件风险管理、软件质量管理、软件配置管理、软件过程管理等。

实际上,在我国现有大学的教学安排上,去掉必须安排的基础版块(政治、英语、体育等课程),专业基础课和专业课的学时数都比较紧张,特别是对于发展迅速、变化较快的计算机类专业。需要认真研究如何在有限的时间内让学生得到更多的知识。

在课程建设上,应该注意到在计算机课程中,不同的课程中存在着不同程度的重复内容。因此要注意课程的前后衔接关系,尽可能避免在不同的课程中讲授相同的内容。各门课程的侧重点要明确。知识的传授要有良好的切入点。复旦大学钱乐秋等研究了软件工程课程群的设计和定位问题,作了很好的探索

软件工程的目标就是高效地开发出高质量的软件,而这需要通过一个个开发实例体现的。选择符合教学内容的实例,将其贯穿在整个教学过程中,会起到很好的效果。如果只是让学生在课程实践中自己去设计一些小的案例,比较耗时,效果也不是很好。软件思维的过程是一个“枚举-归纳-抽象”的过程,通过实例教学,较好地进行分析,让学生模仿修改,能起到事半功倍的效果。理论结合案例进行分析,可以加速学生对软件体系结构、软件过程框架、软件过程改进等复杂内容的理解,使学生具备运用基本知识的能力。软件工程中说:只有有意识地运用基本原理,你才会成功。在分析过程中,让学生体会到在实践中运用理论的意义。

软件的大型复杂化,致使软件大部分都是以团队方式开发的。同时,在软件工程教育中也强调学生应该具备沟通能力。因此在教学实践中,特别是在实验和课程设计中,将学生划分成小组,通过研讨的方式进行实践,能够集思广益,更加发挥学生的积极主动性。在学习过程中,学生以小组形式配合学习和研讨,可以吸取别人的经验和体会,收益要比个人学得多。个体开发过程(PSP),小组开发过程(TSP)也可让学生参照学习。

软件工程是一门实践性很强的科学,建好软件工程实验室对软件工程的实践教学有着至关重要的作用。建设软件工程实验室最重要的是软环境的建立。软环境不仅仅是软件工具与开发环境,更重要的是有大量的教学案例,在加强认知的同时,给学生直接动手的途径和工程方法的实践机会。

软件工程实验室的软环境应包括:

1) 软件工程工具与环境:包括分析设计工具(如Rational Rose,Visio,PowerDesigner等),软件自动化测试工具(如WinRunner),软件项目管理工具(如Microsoft Project),软件配置管理工具(如Microsoft Visual SourceSafe)等。

2) 软件开发平台与环境:包括J2EE开发平台,.NET开发平台及其他常用开发平台。

3) 可利用的构件库:如J2EE构件库、.NET构件库、com构件库等。

4) 软件开发案例:包括简单的MIS系统、财务系统、电子商务系统、数据挖掘软件、嵌入式实时软件等。

5) 软件文档案例:包括与软件开发案例相匹配的文档。

6) 实验规范。

美国计算机思想家Weinberg说:听而易忘,见而易记,做而易懂。有了良好的实践环境,可以让学生尽早地进入实际的软件世界,认识和体会软件工程科学的本质,在实践过程中强化自己所学的知识。

美国软件工程教育家Mead认为软件工程专业应培养三种层次的人才:计算机科学的研究者,开发关键软件系统的软件工程师,开发非关键系统的软件开发实践人员。目前我国大学教育已进入普及型教育时代,这三种层次的人才也是越向下需要量越大。但也要考虑高层次人才的培养问题。实际上,就目前学生自身的愿望来说,毕业时也有就业和考研两种主要的选择。因此对选修课的设置要考虑多方面的需求。在SE2004中,对高年级学生设置了两个不同层次的课程包,由学生任选一个。如形式化方法,偏理论的学生是单独设为一门课,而偏实践的学生则由其他课程涵盖形式化方法。软件工程专业必修课和选修课的设置应该考虑不同方向学生的需要。

在工程实践中,软件开发必须注意进度管理、质量管理和成本管理。应该努力向学生传授这样的工程管理思想。编写一个简单的软件原型并不困难,但开发一个高质量的实用软件却是非常困难的。在教学实践中,通过软件

过程分析、软件的改进、系统测试和维护都可以提高学生的技能和工程观念。

4小结

本人从事了二十多年的软件教学工作,和企业合作开

发了数十个软件项目,还在一些较大的软件企业兼任过高层技术主管。深感到社会对软件人才需求的迫切性和许多刚毕业学生对工作的不适应性。目前,本人担任软件工程专业的教学工作,一直在探索和尝试如何使学校教育与社会需求的接轨问题。本文提出了一些改进方法,供大家商榷。

参考文献

[1] Mead N R. Software Engineering Education: How Far We’ve Come and How Far We Have To Go[C]. IEEE 21st Conference on Software Engineering Education and Training,2008.

[2] Lethbridge T C,et al. Improving software practice through education: Challenges and future trends[C]. International Conference on Software Engineering 2007: Future of Software Engineering,2007.

[3] Lethbridge T C, et al. SE2004: Recommendations for Undergraduate Software Engineering Curricula[J]. IEEE SOFTWARE,2006,(23)6:19-25.

[4] 钱乐秋等. 软件工程课程群设计[J]. 计算机教育,2007,(20):5-7.

software engineering education for the social demand

YAN Li

(School of Computer Science and Telecommunications Engineering, Jiangsu University, Zhenjiang, Jiangsu 212013,China)

Abstract: How to cultivate the needs of the community of software professionals, university education is the need to explore one of the issues. According to SE2004 in the software engineering graduates of the request, made a number of ways to strengthen the ability of students and recommendations. This paper includes example teaching, group study, software engineering laboratory building, and many other content.

Key Words: software engineering, example teaching, group study, laboratory building