摘要
关健词
软件产业的发展软件人才培养是关键。高等院校是软件人才培养的基地计算机类专业学生
软件设计能力培养对软件人才培养具有基础性。论文从高校计算机类专业学生培养角度,论述
了软件人才培养的特殊性、软件设计能力培养在软件人才培养中的地位、软件设计能力培养的
层次性、实践在软件人才培养及软件设计能力培养中的特殊性和重要性、第一门程序设计语言
课程在软件能力培养中的重要性、兴趣培养和分层次软件人才培养的重要性。强调了学校应制
定与软件人才培养特殊性相适应的政策和措施,充分发挥各种资源的作用,为软件人才培养创
造条件
软件人才软件能力程序设计实践教学计划
软件产业是国民经济和社会信息化的基础性、战略性产业。《国务院关于印发鼓励软件产
业和集成电路产业发展若干政策的通知》(国发【2000]18号)中明确提出通过政策引导,鼓励
资金、人才等资源投向软件产业,进一步促进我国信息产业快速发展,力争到2010年使我国软
件产业研究开发和生产能力达到或接近国际先进水平。
国务院办公厅2002年9月18日转发了国务院信息化工作办公室会同有关部门制定的
(振兴软件产业行动纲要(2002年至2005年)》,明确提出其发展目标:“到2005年,软件市场
销售额达到2500亿元,国产软件和服务的国内市场占有率达到6046;软件出口额达到50亿
美元;培育一批具有国际竞争力的软件产品,形成若干家销售额超过50亿元的软件骨干企业;
软件专业技术人才达到80万,人才结构得到优化;在国民经济和社会发展的关键领域大力发
展具有自主知识产权的软件产品和系统。”
要实现国家这一战略目标,加快软件人才培养是重要保证。目前,我国软件人才不仅在数
量上供不应求,人才结构也存在一定缺陷,我国缺少既熟悉专业又精通业务的高级复合性软件
人才和国际软件管理人才。
为适应我国经济结构战略性调整的要求和软件产业发展对人才的迫切需要,实现我国软
件人才培养的跨越式发展,教育部和国家发展计划委员会共同研究决定选择部分高等学校,采
取多项扶持政策,支持其试办示范性软件学院。同时,从2002年开始,教育部又将软件工程专
业列人高等学校本科专业招生目录。这些举措将有力地加速我国软件人才的培养。
高等院校是我国软件人才培养的基地,实现软件人才培养跨越式发展具有义不容辞的义
务和责任。研究软件人才培养的途径和方法,改革软件人才培养模式,提高软件人才培养质量
是当前的一项重要而紧迫的任务。下面就如何提高软件人才培养质量谈谈自己肤浅的认识和
看法。
211
、充分认识软件人才培养的特殊性
在我国软件人才培养方面,一种奇特的现象值得注意:一方面是软件人才非常缺乏,另一
方面是我国计算机类专业毕业生,特别是软件专业毕业生就业却逐渐变得困难。这是其他专
业很少有的现象。其原因是很多企业认为这些毕业生不是他们所需要的毕业生。笔者也曾遇
到一件事一个小企业希望能招收一个学习成绩不是很好,但有一定编程能力的毕业生,却未
能如愿。从就业的计算机专业毕业生看,有一定编程能力的毕业生就业仍然非常容易,而且就
业的企业和单位都非常好:这些现象提出了一个值得我们思考的问题:我们应该培养什么样
的计算机软件类毕业生,他们应具备什么业务素质,才能适应就业和市场的需要?
我个人从事高等教育的绝大部分时间都在与专业建设和人才培养打交道,特别是与专业
建设规划、软件类课程建设和软件人才培养打交道,这使我深深认识到软件专业人才培养有一
般专业人才培养的共性,也有其特殊性。计算机软件产品的基本目标是满足用户的需求,由于
用户需求的差异性,软件产品也应随用户的需求不同而不同,同时要随用户需求的变化而变
化,因此软件开发的核心是创新这种创新表现在要不断开发新的软件产品以满足社会日益
增长的需要.要不断完善和增强软件产品功能以满足用户需求变化的需要.要不断学习、应用
和发现新技术以满足软件产品开发的需要。其他工程技术人员可以套用相应的标准、选择标
准的零部件完成产品的设计与开发在软件开发中没有标准的程序代码可以套用对于新开
发的软件也很难有标准的部件来组装软件(软件开发研究希望能达到的目标),基本上都是从
头开始。软件专业人才培养的重点是培养学生的创新能力。培养软件专业人才就像培养作家
一样。一个作家之所以成为作家,一是他能写出作品,二是他的作品是通过他的大脑加工的结
果,没有标准的句子、段落、章节可以套用其他人的。一个从事软件开发的人也是一样。文学
专业毕业的学生能成为作家的凤毛麟角。我们在教学过程中发现,学了程序设计语言和程序
设计方法不会编程序,学了软件工程不会按软件工程方法开发软件、不会写文档,学了数据库
不会设计数据库的学生不在少数,就像学了写作方法不会写文章一样。由此可见培养软件人
才的困难性
二、软件设计能力是计算机类专业最基本的能力
计算机类专业的基本能力是软件设计能力。这种能力可以从四个层面来考虑:第一个层
面是基本程序设计能力,即学生写程序的基本能力,学生能用某种程序设计语言把要解决的问
题用程序代码描述出来,保证在正确的输人条件下得出正确的结果。一般在学习完一门程序
设计语言后应要求学生达到这个目标。第二个层面是模块级别的程序设计能力。学生能根据
解决的问题(一个很小的问题)选择合适的数据结构,并写出有一定健壮性、易阅读、易理解的
程序。这是学生在学习完数据结构课程后应达到的目标。第三个层面是基本的软件设计能
力对用户需求比较明确的小问题,学生能抽象出程序的总体结构,确定组成系统的模块和模
块之间的调用关系,规划出程序的全局数据结构,并以模块为单位去实现整个程序。该层面的
软件设计能力可以通过一定的综合训练达到目的。第四个层面是基本的按照软件生存周期过
程进行软件设计的能力,这主要包括进行需求分析和编写需求分析规格说明书、概要设计和编
写概要设计说明书、进行详细设计、代码编写和软件测试的能力。第四个层面的能力仍然称为
基本的软件设计能力,这里仍然是以用户显式需求作为软件的主要功能,不考虑或较少考虑系
统隐含需求和系统性能等因素。主要表现学生基本的抽象能力。该层面的软件设计能力通过
212·
软件工程课程的学习和毕业设计可以达到。
上面四个层面的软件设计能力培养是制定计算机类专业培养计划时对软件设计能力的基
本要求,是课程设置和实验项目设置要考虑的基本内容
三、树立实践第一的思想是软件人才培养特殊性的要求
中国工程院院士孙家广在如何办好计算机软件工程专业时曾指出:“软件绝不只是理论性
的专业。而是一个实践性、工程性特别强的专业。要把大量的精力和时间投人到实践当中去,
以理论指导实践,又在实践中完善和创新理论。这样才能掌握真正的本领”计算机软件设计
能力是在计算机上练出来,这几乎是业界的共识。没有理论的指导,难以设计高水平的软件,
但是学完计算机专业所有软件类课程,不上机编程序或很少上机编程序,根本无法从事软件设
计,这也是无法否认的事实。树立实践第一的思想是软件人才培养特殊性的要求。在我们制
定教学计划时总是把理论教学想得周到周到再周到,各个任课教师在进行理论教学时也力求
做到全面系统,而且各个学校都有一套完整的措施保证理论教学计划的真正落实。但在实践
教学环节上,几乎各个学校都感觉到力不从心。其一是计算机设备数量与学生数量不成比例,
学生上机时数达不到学生程序设计能力培养的基本要求;其二是计算机系统环境层次低,现有
很多优秀软件工具无法使用,应该开出的上机实验无法开出。其三,随着高校招生规模的扩
大,信息类专业是主要扩招学生的专业,由于学生人数太多,教师根本无法有效地指导和管理
学生上机实验。随着学生自备机器的增多,从学完一门语言课后,学生就很少到机房上机,通
过复制他人程序来应付教师布置的上机实验是一种普遍现象,使得软件实验质量处于严重失
控的状态.这已成为大多数学校的通病。因此,实践环节的薄弱和不可控几乎成了软件人才培
养质量低的软肋。要提高软件人才的培养,实践环节的有效保证和质量监控是最根本的措施。
我们应该有一套像保证理论教学计划落实和质量监控的措施那样来保证实践教学计划的落实
和应有的质量保证。认真听取任课教师和教学执行单位的意见和建议,认真解决实验教学环
节中遇到的各种问题,而不是把困难和问题推到教学单位和教师头上。可以采用有别于一般
课程的考核方式来保证实践环节的落实和实践环节的质量,如程序设计语言的教学,完全可以
采用以上机考核作为主要的考核形式,而不是像玩文字游戏似的单项选择、多项选择、名词解
释、判断题、简答题作为主要考试内容,最后的程序设计题既简单且份量又少,对考试成绩几乎
不起多大影响。
四、高度重视第一门程序设计课程的教学
对于计算机类专业启蒙的程序设计语言课程,计算机专业教师人人都会开设,因为它太一
般,太基础了。所以在安排课程时往往带有随意性,只要谁有时间谁就去上。在进行专业课程
安排时,很多时候都把它安排给新教师或教学能力一般的教师。当然,对于专门从事计算机基
础教学的教学部门又另当别论。有的干脆就交给计算机基础教学部门开设。这样做实际上也
无可非议,因为没有开设不了一门基础的程序设计语言课程的计算机教师。实际上,对计算机
类专业来说,第一门程序设计语言课程的重要性不亚于任何一门专业课程,它扮演的角色是:
①程序设计的基础人门教育。通过程序设计语言的学习,要掌握计算机程序设计语言的基本
构成要素、程序设计的基本过程和基本方法,使学生具备基本的程序设计能力。②破除神秘
感。在此之前,绝大多数学生没有程序设计的经历,同时对计算机怀有极大的神秘感。很多学
生都是带着神秘感和某种向往报考计算机类专业的。通过程序设计,使学生认识到计算机所
213
能做的一切都是由程序控制的,自己也能够编程序来控制计算机完成自己需要它完成的工作,
从而树立起实现自己理想的信心。③为后继课程的学习打下良好的基础。对于第一个角色
是程序设计语言教学要达到的基本目标,一般的任课教师都能达到第二个角色也是情理之
中的事情,但不是一般的任课教师都能做到的.需要花大力气去达到。在教学过程中,我们发
现,有相当一部分学生在学完第一门程序设计语言课程后,没有完成一个简单程序的编写、输
人、编译、纠错、测试、调试、运行的完整过程,仍然不知道程序设计为何物,不相信自己也能叫
计算机干啥就干啥,由此产生对程序设计的恐惧感。这需要有丰富教学经验、有高度责任感的
教师熟悉程序设计语言教学过程的特殊环节,采取特殊的措施帮助学生迈过这道门槛。第三
个角色是相当多的人没有想到去达到的教学目标。无经验的教师、对后继专业课程无充分了
解的教师、无较强责任感的教师,都无法实现这个教学目标。如C语言程序设计教学应能满
足C语言版的数据结构教学的基本要求。但由于学时数的原因和对课程内容认识的原因,往
往没有达到这个要求,使得讲授数据结构课程的教师不得不花时间来补充C语言中的相关内
容,同时影响数据结构的教学进度和教学质量。要扮演好第三个角色,它要求教师既能实现程
序设计语言教学的一般目标,又尽可能根据后继课程的需要,来组织其理论教学内容和实验教
学内容。
因此,要高度重视第一门程序设计语言课程的教学,要充分考虑教师的业务背景、教学经
验和工作责任感。
五、兴趣培养在软件设计能力培养中的作用
兴趣是人对客观事物的一种强烈的心理倾向。一个人对某一客观事物有了浓厚的兴趣,
就会被该事物吸引,从而主动地、自觉地去追求、探索,以期对该事物有全面深刻的了解,遇到
困难也会积极地发扬锲而不舍的精神,寻找各种克服困难的方法,达到预期的目的。孔子日:
“知之者,不如乐之者。”爱因斯坦也说过;“兴趣是最好的老师。”一个人能不能成为软件人才,
对软件设计有没有兴趣往往起着决定性的作用。根据我们的跟踪调查,对程序设计没有兴趣
的学生,毕业后从事软件研发的比较少,一般难以成为软件开发的骨干人员。
计算机软件课程教学工作一个非常重要的任务是培养学生对程序设计的兴趣。在一个教
学班中哪怕能培养出几个对程序设计有兴趣的学生,它都能起到意想不到的作用。一个这样
的学生就是一棵种子,虽然不能星火燎原,但它确实能带动一批学生。
培养学生程序设计的兴趣不是一句空洞的话,需要我们在教学过程中进行大胆尝试,甚至
有必要打破常规的教学环节。有两件事情对我触动比较大。第一件事情是在我原来工作的学
校中,一位教师在“操作系统”课程教学过程中取消了按教学大纲要求的上机实验内容,而是要
求学生自选程序设计题目,由教师认可后完成。最后有大约1/6的学生做得比较好。有位学
生设计了一个搭积木的游戏的软件,其功能、性能和操作的方便性可以与市场销售的产品相媲
美。通过这样近似于软件产品的设计,学生找到了感觉,这时教师不会再去要求他门什么,他
们也会自觉地沿着这条路走下去。这批学生中的相当一部分后来都在国内有名的公司中成为
中坚骨干。另一件事是现任教的学校中,一位教师在“数据结构”课程教学中同样取消了按教
学内容布置上机作业的传统做法,只布置了一个上机作业,规定程序的功能及操作要求,让学
生独立完成。最后交出的程序最短也有500多行。通过这样的练习,使后继课程的任课教师
明显感觉到该班的程序设计能力比前几届学生强。
这两位教师的做法是对是错,不好去评价,并且这样做也只能有少部分学生冒出来。但是
214
如果我们每个学校的计算机类专业、每个年级、每个班都有一部分在程