APP下载

论软件工程化教育对软件人才培养模式的影响

2009-03-17

计算机教育 2009年3期
关键词:工程化软件计算机

高 峰

有数据表明,在国家产业结构转型过程中,软件产业正在成为中国未来发展的支柱产业,但是软件人才始终成为产业发展的瓶颈。众所周知,软件产业要发展,人才是第一位的,这个领域中如果没有第一流的、足够的人才辛勤耕耘,就不能实现真正的转型和发展。

1 引言

在过去的十多年里,中国的软件产业出现了“软件危机”(其实这种现象十多年前欧美发达国家也曾经发生过,这是产业与教育磨合过程中都会发生的现象,国外通过工程化的思想解决了软件开发过程中无标准可循的历史),其表现特征为企业小、产量低、质量差。但是,中国本身对软件产品和服务的需求(不论是内需还是外包)是巨大的。面对大好形势,而相应的人才培养却无法跟上,更没有相应软、硬件系统来满足市场的需求,除了企业管理者需要思考以外,广大计算机教育工作者也应该引起足够重视,也应该为没有培养出合格的学生而分担责任。

文章主要讨论在软件工程教育过程中如何培养学生,特别是如何采用工程化的思想去教育学生的问题。在工程化教育过程中,首先要了解软件产业的特点,除了常规的课堂教学以外,还要附以工程化教育的理念;其次在严格的工程化管理下,对在校学生安排大比例的软件开发(或服务)实践项目;最后大学软件工程教育必须与软件企业相结合。我们很难客观地把已培养出来的学生与正在培养的学生做一个明确的分析,但是我们很明显地发现,过去我们对学科工程化教育的重视程度明显要低于对学科研究的重视程度!

文章首先介绍了中国软件人才培养的现状,介绍今后如何培养软件人才,最后提出作者的结论,工程化软件人才培养模式势在必行。

2 我国软件产业与人才培养的现状

2.1 中国软件人才现状

我们从数量、质量和结构三个方面简单地分析一下我国软件人才现状。我国软件人才在数量上是数一数二的,但是质量不高,大多数处在中层。高、低端人才缺乏,人才结构不合理,没有很好的、具有自主产权的软件产品。人才培养方式成为制约产业快速发展的主要瓶颈。其主要原因是:

2.1.1 计算机学科引进的先天不足

中国虽然不是计算机理论和技术的发明和诞生地,但是在上世纪五、六十年代,国内少数几所高校已经拥有计算机专业,开始从事计算机理论与技术的研究。到了上世纪七十年代,当计算机技术尚处于发展阶段之时,部分高校和科研院所就开始筹划成立计算机学科,着手培养计算机专业学生。据国防科技大学原副校长齐治昌教授回忆,计算机科学教育作为专业学科是从西方先进国家引进的。当时由于国内资金额度、进口限制、场地条件和思想观念等方面的因素,引进的主要是计算机理论课程(包括公共基础课、专业基础课、专业课和专业选修课等)部分,而作为计算机学科十分重要的上机实践课程部分很少或没有引进。在计算机学科授课过程中,更多的是计算机基础理论教育,上机操作时间非常少。学生毕业后进入企业还需要很长一段熟悉、适应期,成为中国软件人才培养上的一个软肋。

2.1.2 计算机师资的先天不足

在教育部颁发的有关《计算机科学与技术本科专业认证标准》中,对教师的学历和专业背景有如下一段描述,本专业“授课教师在其学习经历中至少有一个阶段是计算机专业的学历,以保证对计算机学科本质的深刻理解并将其传授给学生。”作为当时一个新兴学科,我国的最早期计算机专业的师资主要从大学基础部的数学、物理、电工等系转型过来,基本上没有系统学过计算机知识。教学内容、方式仅局限于现有的知识,相互之间没有很好的串联。改革开放前,学校与外界交流很少,这种状态保持了许多年。如果像印度,国内毕业后的学生有很多机会去国外留学,那效果就完全不一样了。

直到八十年代以后,这种状态开始逐渐有了改观。虽然学生、教师出国留学访问的机会增加,但原来形成的教育模式很难一下子得到改变。由于缺乏系统的计算机基础知识,实验设备跟不上等经济原因,教学计划制定、执行和监督,更多考虑的是理论方面的培养。

2.1.3 计算机软件人才培养的先天不足

软件产业与其他传统产业一样,需要各种类型、不同层次的人才在不同岗位上工作。本科生、硕士生和博士生可以胜任中、高层次的工作岗位;专科生、中专生及技校生可以胜任中、低层次的岗位。同样,不同类型学校亦应根据自身的实际情况培养不同特色的软件人才,为软件产业服务。现在有种很不好的风气,中专争取带帽,大专要求专升本,本科院校都争搞两个中心,争高一级学位授予权,争办研究生院。好像牌子越大、层次越高,学校就办得越好,就能培养出所谓更好、更高的软件人才来,软件产业就搞上去了。这显然是一种观念上的误区,实际上造成了中国软件人才结构性严重失调和不合理。

还有另一个偏差来源于家长和学生,以为只有进入大学才是人才,进入较低层次的学校就不是人才了,导致衍生出许多怪现象。对于任何有机系统,人的思维偏差必然导致整个系统紊乱,包括层次偏差和功能紊乱。发生这种偏差,是各级政府、各类企业和各类学校缺乏一种各按其位、各尽其职并按自身发展条件形成相应特色的政策,这值得有识之士认真推敲。

3 软件人才工程化培养模式研究

3.1 软件工程教育环境下存在的问题

我国软件人才培养中存在一些不足之处,其中主要问题是学校教育与实际项目之间存在很大的差距。学生在学校里学习了许多理论知识和技术,但很难通过工程化的思想使之融会贯通,一气呵成。所以在我国软件行业中盛行“个人英雄”式、“单打独斗”式的开发方式。有人常常认为一、两个精英写出一个软件是件光荣的事情,但在国际企业家眼里,这却很危险。因为软件企业也需要流水线式的生产方式,需要大工厂化的生产方式——这一点已经在印度软件业的成功中得到验证。我们开发的软件产品往往文档不齐,开发使用方法、格式千差万别,而国际化软件的趋势是易学易用。

3.2 学科建设中的结构分析

在经历了计算机科学理论教育、计算机应用技术教育之后,2008年1月,教育部又颁发了认证计算机工程教育的文件,要认证一批工程教育的学科,这说明上级管理部门已经意识到我们在计算机教育层面所存在的问题。

软件工程教育与应用技术教育有不同的侧重面,但两者又不是相互矛盾的,要处理好技术与工程的关系,就必须做到技术、工程兼顾。

科学教育方式主要以计算机理论(包括软件、硬件)为主,对数理基础要求很高,扎实的专业基础功底可以使学生今后更好地从事计算机基础理论研究。欧美很多学校的计算机学科从事基础理论研究,但是他们更从基础研究出发,对计算机理论进行进一步的发展。普林斯顿大学的姚期智教授,由于在计算理论(包括伪随机数的生成算法、加密算法和通讯复杂性)方面的贡献,荣获世界电脑科技最高“图灵奖”,回国后亲自抓本科生基础理论教育。

计算机应用技术教育方式主要从系统的高度为客户提供适应需求的应用模式,全面掌握不同计算机生产厂商提供的产品和技术,提出具体技术解决方案和实施方案。比如来自美国密歇根州立大学计算机科学与工程系,现任复旦大学教授的翁巨杨,与复旦计算机系共同研制成功了具有心智发育的仿人形机器人,该机器人就具备了应用系统软件的开发能力。

科学教育、技术应用教育固然重要,但是缺少工程教育的计算机学科是一个不完整的学科,对于正在转型的中国,我们更需要培养工程型的软件人才。

3.3 把工程教育思想贯穿到软件工程教学中去

根据教育部颁布的工程教育培养计划,软件工程专业(或领域)不应是单纯意义上的,而应该是建立在计算科学学科的平台上的,以计算机科学为基础,软件工程为核心,兼顾信息技术和信息系统等课程的学科。培养计划本身就体现了工程化的教育思想。下面就从教学内容、教学方法、专业学习和能力培养等几个方面分析工程教育环境下软件工程教学改革的思路。

3.3.1 教学内容

针对工程教育的特点,借助改革开放的大好形势,汲取过去闭关自守的教训,我们可以积极引进国外先进教材体系,使学生除了系统地学习计算机专业核心知识,具有较为扎实的基础理论知识外,还要用工程化的思想把所学课程串联起来,形成整体课程的融会贯通。复旦大学软件学院办学伊始,就积极采用卡内基•梅隆大学的原版教材进行各专业课程的教学,学生开始时有点不适应,但经过一段时间便逐渐熟悉,能够跟上老师的进度。

教学内容方面还应该包括人文科学,以培养学生的基本素养、社会责任感和工程职业道德;还包括一定的经济、管理、法律、法规及拓展训练和沟通技巧等,以正确认识工程对于客观世界和现实社会的影响。

对于软件工程专业工程化教育课程,应以计算机软件专业知识、工程化教育思想并举,教师可以鼓励学生从如何将所学课程的工程化管理入手,深刻认识专业教学计划中的工程化思想,通过学好各门课程,将工程化教育思想逐步衍射到工程项目中。

3.2.2 教学方法

软件工程教育是介于科学研究教育与应用技术教育之间的一种教育模式,它的基础是计算机科学,应用技术是它的工具。要组织开发团队,选择开发平台和工具,使科学成果、应用项目等加以实施,保质、保量、按时、在合理的预算内完成既定的目标,是教育工作者艰巨而光荣的任务,这样的团队应该包括既懂教学、科研又懂生产开发的多种性格人群组成。

案例实践是工程教育的一个有效手段。在案例分析时,学生要从整个工程价值链的角度分析实施项目过程中发生的情况,从确保质量的角度学习掌握如何确保工期、节省工料,如何处理涉及法律、法规的问题等。而在过去的教育中,学生只知道学习专业课程,编写程序,想尽办法把程序编写得好上加好,其他事情(编写整理文档、团队间的协作等)什么都不管。因此我们需要加强这方面的教育。

美国大学一直鼓励教师帮助学生成为一个积极的课堂参与者,并把创新的想法投入实践。教学时,教师经常发现总会有一部分基础扎实、思维活跃的学生,教师在课堂上传授的知识已经不能满足他们的求知欲。这时可以组织他们利用业余时间到企业去,结合实际项目参与项目管理,锻炼他们实际管理项目的能力,使一部分人能够尽早进入工程管理领域。随着课程的深入,学生的工程管理水平逐渐提高,在大学期间就形成了一个良性循环,形成软件工程化思想。

如北京大学软件与微电子学院邀请部分全球著名企业技术人员担任学院的系主任,一方面可以整理许多实际的案例,另一方面这些具有丰富经验人的现身说法也在学生中间收到良好的效果。

3.2.3 专业学习

一般来说,理工科学生习惯于逻辑思维,文科学生习惯于形象思维,而工程类学科要求学生两种思维兼备。以软件工程专业为例,主要要求学生在学习专业知识的同时学习相关的专业知识和人文文化,促进工程化思想的逐步形成,在未来职业生涯中对软件工程管理有一个全新的思维方式,这在科学教育与应用技术教育中是前所未有的。

世界上已经存在的东西是无需创造的,而每个软件项目都是一个创造、创新的过程。要使软件开发、实施过程可控、可管理,就涉及到许多与人沟通、协调,对人关爱等与工程有关的过程,所以工程教育的专业学习范畴、涉及的范围和领域更加宽泛。

从理论上来讲,软件工程专业分为:向计算机科学理论方向发展,培养研究型人才;也可以向计算机应用技术方向发展,培养应用型人才。而工程教育培养的人才则是连接这两头的纽带,采用良好的技术将研究成果真正产品化或服务化。在以往计算机教育过程中,人们更多注重了学术研究或技术应用,忽视了工程管理的实践,导致了软件项目开发过程依靠个人单打独斗,不能按照工程管理的方法实现,软件产品的生命周期不长,这也是学科教育设置存在的问题。

3.2.4 能力培养

哲、文和自然科学为主的学术性知识和以各类工科、法律、医学为主的应用性知识都是大学教育体系的组成部分。有的学者提出,工程教育应该以讲授学术性知识为主,尽量少开设应用为主的课程,这种观点有利于帮助学生重视基础知识,为将来深造奠定基础。但我国高校大多数毕业生都要走上工作岗位,目前终身教育体制还不是很成熟,毕业后的学生很难有时间接受进一步的相关教育,在校期间应该给他们建立一个工程化的思想体系。在工程教育中,应用性知识与工程化知识并不矛盾,可以统一归结为对能力的培养。

无论对于将来参加工作还是深造读研的同学而言,一些工程化的能力,如口头表达能力、相互协调、沟通能力、快速学习能力、综合应用能力等都是不必可少的,这些能力的重要性不会因知识类型的不同而降低。我国大学的教育课程大多数还是采用传统的知识传授方式教学,这种死板的教学方式有悖于工程教育培养学生全面素质的宗旨。

在课程中,教师应该更多地组织小组讨论,充分调动学生的积极性,激活学生的思维,培养学生的表达能力和思辨能力。实践能力、团队协作意识、学术道德意识等情商都是未来人才所必备的能力。良好的合作意识是21世纪成功的关键,教师可以要求学生在规定的时间内组织学生小组完成任务,鼓励学生通过合作共同完成某个作业(或项目),培养学生的合作意识及团队精神。复旦大学软件学院在能力培养方面参照卡内基•梅隆大学的经验,结合课程需要安排一定的项目和实验,使学生通过动手进一步加深对理论知识的认识。

4 结论

综上所述,工程教育学科在课程内容、教学方法、专业学习和能力培养等方面都要注意处理好与研究型学科、应用技术型学科之间的关系,或者说体现出三者之间的相互谐调关系。研究型学科是理论基础,应用技术型学科是工具,而工程教育型是运作的桥梁,这座桥梁是读书人从学海书山中走出来,到现实世界去明了自己的责任,成长为实际专业工作者的重要途径;是专业界以低廉代价获得自身发展所必需的智力人力资源的方便之门;也是国家培养人才的投资转化为实际效益的关键环节。

以工程教育模式培养软件人才最基本考虑是,为了适应迅速发展起来的软件企业提供急需的、批量的软件人才。要做到这几点,首先各级教育机构应该改变过去只顾课堂教学不顾专业实践的陋习(Bad habit),把工程化思想贯彻到各个教学环节中去,承担起把软件工程知识教给每一位学生的责任。因为只有学生有了工程化的思想,将来运用到实践中去,才会使软件产品(或项目)真正具有生命力,印度软件产业的例子就很好地说明了这一点。其次,人们要转变观念,包括家庭、软件企业和软件产品使用单位,软件产业是个朝阳产业,任何岗位都是有前途的,不是中、初级程序员就低人一等。现在中国软件产业的千军万马都挤在人才的中间段,导致上不上下不下,而中、低级这块是软件产业的基础,任何一个产业没有基础是建不成高楼大厦的;最后,作为一个新兴的产业,它更多需要人们像爱因斯坦时代那样,去发现、挖掘内在的、我们从来不知道的东西,开发具有自主知识产权的、具有市场竞争力的软件产品(或项目),因为我们缺少这样的东西。

中国不缺精通高新技术的人才,尤其不缺软件人才,紧缺的是既懂软件又懂管理的领导者、策划者。太多的软件人才由于缺乏软件开发的整体思想,缺乏认识市场需求而与机会擦肩而过。这种现象再也不能继续下去了,我们计算机教育工作者应该承担起应有的责任。

参考文献:

[1] Paul Gru¨nbacher, Making every student a winner: The WinWin approach in software engineering education, Christian Doppler Laboratory for Automated Software Engineering, Johannes Kepler University Linz, 4040 Linz, Austria.

[2] Richard E. (Dick) Fairley, The influence of COCOMO on software engineering education and training, Software Engineering management Associates, P.O. Box 728, Woodland Park, CO 80866, USA.

[3] David Budgen, James E. Tomayko. The SEI curriculum modules and their influence: Norm Gibbslegacy to software engineering education. UK. The Journal of Systems and Software 75 (2005) 55–62.

[4] Hossein Saiedian, Bruce W. Weide. The new context for software engineering education and training USA. The Journal of Systems and Software 74 (2005) 109–111.

[5] Orit Hazzan. The reflective practitioner perspective in software engineering education. Israel. The Journal of Systems and Software 63 (2002) 161–171.

[6] Dietmar Pfahl, A CBT module with integrated simulation component for software project management education and training, Fraunhofer Institute for Experimental Software Engineering (IESE), Sauerwiesen 6, D-67661 Kaiserslautern, Germany.

[7] Hossein Saiedian, Software engineering education and training for the next millennium, Department of Computer Science, University of Nebraska at Omaha, Omaha, Nebraska 68182-0500, USA.

[8] Claes Wohlin, Strategies for industrial relevance in software engineering education, Department of Communication Systems, Lund Institute of Technology, Lund University, P.O. Box 118, SE-221 00 Lund, Sweden.

[9] Thomas B. Hilburn, Guidance for the development of software engineering education programs, Department of Computing and Mathematics, Embry-Riddle Aeronautical University, LB 123, 600 S. Clyde Morris Blvd, Daytona Beach, FL 32114 USA.

[10] 杨芙清. 软件工程教育的思索与实践[M]. 北京:高等教育出版社, 2008.

[11] 吴若斌, 邹晓东. 我国软件产业人才培养对策研究[D]. 浙江:浙江大学硕士学位论文, 2005.4.

[12] 路甬祥. 再谈现代工程教育[J]. 高等教育研究, 1994.1.

[13] 宓洽群. 工程教育的新概念[J]. 高等工程教育, 1989.1.

[14] 朱三元. 上海市软件产业发展趋势分析[J]. 产业聚焦, 2005.3.

[15] 倪光南. 软件内需优势明显是关键产业[EB/OL]. 新华网http://news.xinhuanet.com/internet/2008-05/22/content_ 8227691. htm, 2008-05-22.

[16] 教育部. 全国工程教育专业认证标准(试行)[S]. 2007.6.

猜你喜欢

工程化软件计算机
山区小水库工程化循环水养殖技术试验
世界首台高温超导高速磁浮工程化样车下线
时速620千米高速磁浮工程化样车下线
中国计算机报202007、08合刊
中国计算机报2019年48、49期合刊
中国古代的“计算机”
有趣的识花软件
PLC软件工程化在高端工艺装备研制中的应用初探
即时通讯软件WhatsApp
一体式,趋便携雅兰仕AL-225