论文部分内容阅读
摘要: 本文分析了计算机软件专业的特点,并针对高职院校软件专业的培养目标,分析了当前课程体系设置中应注意的问题,在此基础上,提出了一个详细的专业教学课程设置方案。
关键词: 高职院校 软件 课程体系
一、引言
高职院校软件专业(以下简称“软件专业”)主要目标是培养从事IT职业的基础实用型人才,从事IT行业的人员就注定要与软件工程打交道。软件工程是生产和创造软件的活动和过程,它包括相关的需求分析、体系结构设计、代码编写及调试、测试和发布等各个环节。软件工程不是科学,其目的是创造而不是发现。软件工程与一般传统意义下的工程也不同,在普通的工程中,一般都有成熟的系统化方法及相应的规范标准,如机械工程设计都有标准和设计手册。但软件工程至今没有一个完整公认的系统化方法,甚至还停留在后手工作坊阶段。在文献[1]中,作者分析了软件工程与一般工程相比有哪些特殊性,大致有以下几点:
1)每个软件不是过去项目的简单重复,而总是新的。这种“新”具体体现在功能需求的变化、新的技术实现方法、硬件平台的改变、操作系统软件的升级和演变等。此外,编程语言的变化和开发环境的不断进步也是一个创新。
2)每个软件项目都是在不断变化,特别是功能需求在软件开发过程中不断发生变化,许多设计很难一步到位,总是有一些问题是预先没有考虑到的,随着开发过程的深入需要不断地调整,也就是说软件项目中角色分工不像其他工程那样细致。
3)软件项目一般胜算不大,很多项目要么延期,要么超过预算,或者软件质量达不到客户的验收标准,甚至有的项目永远也完不成。
4)软件项目是典型的团队活动,尤其是大型软件,牵涉人员比较多,协调沟通难度比较大,加之计划不如变化快,对进度非常难以监控。而且生产力与人员不能成正比。也就是说,当项目延期时,在一般工程项目中添加人员可以起到提高生产力,加快工程进度的作用,但对一个软件项目而言,加入更多的人可能使项目延期加剧。
软件项目的这些特征就决定了软件专业在培养人才方式上必然与其他专业有许多不同之处,特别是在高等职业技术学院。因此,在高职院校里,软件专业人才培养模式与其他专业强调技能方面相比,应将重点放在培养学生的创新、自学能力及团队合作意识上。
二、高职院校软件专业人才培养方式上的一些误区
当前,许多高职院校都设置了软件专业。但从最近几年学生的就业特别是对口就业形势看,情况并不乐观,其中很重要的原因就是,软件专业人才培养上存在一定的偏差,课程设置跟不上行业发展要求。大学教育以填鸭的方式给学生灌输技能,却忽视了传授思想和方法。学生们虽埋头学习,但不知学以致用,离开学校后对企业、产品、人生一片茫然。软件专业学生虽然掌握了用基本编程语言书写程序的知识,但基础不牢,不一定能应用这些知识做好软件。我们经常见到的现象是,在大学课堂上,教师讲授一些编程语言规则,举例说明这些规则,学生应用语法规则编写一些程序代码。但学生对编码规则和处理方法一无所知,课堂上没有培养学生的软件质量意识。高职院校软件专业人才培养方式上常见的误区有:
1)只重视让学生通过程序实现某项功能,但忽视学生编写的代码质量,学生对包括编程规范、算法、性能指标等的理解远不能达到实际项目要求。学生在校学习时没有对提高代码质量的手段和技术进行实际演练。
2)对学生程序调试能力的训练不足,学生面对规模稍微大一点的程序,就不懂得如何进行有效地调试、快速定位错误并加以改正。
3)学生系统思维能力训练不够,学生毕业后,面对新问题,没有很好的解决方案。
4)有的院校增加许多认证类的课程,造成学生花大量精力去考一个实际用途并不大的证书,因为在软件业,知识及某种平台上的技术发展很快,在学校取得的证书未必能用得上,而且,现在的许多证书也未必能反映学生真实的能力。
5)对高职院校强调技能方面的理解有偏差,过度强调所谓的“理论够用,强化技能”理念,实际操作中造成学生基础很不扎实,只能一味模仿,学生编写出的程序的确能够运行,但学生对其中涉及的性能、算法及底层的一些机制问题一片茫然,当项目要求提高程序性能时,学生往往无法对影响程序性能的部分进行分析归纳,找出关键点,从而有效地对程序进行优化处理。
6)具体的教学方法上,没有教学生先阅读与模仿,再在此基础上进行修改、扩充、重写,没有先从培养良好的编程习惯开始。各级院校与培训机构都有编写程序课程,却没有读程序的课程,因此,文献[2]作者建议增加程序阅读课程。
笔者认为,前几年提出的“软件蓝领”(近几年被“软件实用性人才”所取代)值得商榷,在软件界,尤其在中国软件产业界,绝对的“软件蓝领”是很难有生存空间的,其主要原因是在软件产业界,主要体现的是一个创新,角色分工并没有其他工程项目那样细致,如设计和编码两种工作就很难绝对分开,因为设计几乎不可能一步到位。在中国软件产业界,规模很小的软件企业占有相当大的比重,这些企业由于成本控制的原因,往往是一人能担任多种角色,对岗位细分没有那么严格,单纯的软件编码人员是很难立足的。另一方面,规模较大的软件企业虽然岗位细分较严格,但由于这样的企业生产过程往往自动化程度较高,加上现在开发工具非常先进,许多代码甚至能在完整设计的基础上通过工具自动完成,“软件蓝领”再“蓝”也“蓝”不过机器。因此,不具备一定的软件设计和分析能力,只能面对一项设计完整的文档进行编程的“软件蓝领”将很难就业。前几年,笔者见到金山公司网站的招聘页上不再看重应聘者的学历,比如对ASP.Net程序员的学历要求是初中以上,但职位的具体要求是:熟悉Microsoft .Net Framework,熟练进行ASP与数据库编程;熟练使用C#,并能熟练使用C++或Visual Basic; 熟悉XML编程与Web Service编程,对各种网络协议(TCP/IP、LDAP、SMTP等)有一定的了解;有良好的动手与自学能力;能够很好地适应团队工作的环境,能够与其他同事的工作配合。显然一般“软件蓝领”并不能具备上述能力。
当然在一些大的软件企业,也的确存在一些为数不多的所谓“软件蓝领”岗位,这些岗位主要有:前台技术支持,比如接客户的电话,解决一些软件使用中的常见问题;程序测试员,只简单执行测试流程,不进行测试工具开发;日常系统管理员,比如,帮助新员工开开账户。大的软件公司很多开发组织有构建团队,他们负责每天编译代码,生成软件新的运行版本。高职院校软件专业人才培养目标显然不是主要针对这些岗位的。事实上,即使在国外的软件业,尽管角色分工细致,也没有出现类似的称谓。在文献[3]中,作者将软件从业人员分为4级:
第1级——入门级:会利用某种语言的基本功能,能够编写类、子程序、循环和条件语句,会使用语言的许多特性。
第2级——中级:中级程序员能够利用多种语言的基本功能,并会得心应手的使用至少一种语言。
第3级——熟练:对语言和环境有专业技能。
第4级——技术带头人级:在第3级基础上,对编码风格、质量有独到的实践和见解。
三、高职院校软件专业人才培养目标
高职院校软件专业人才培养目标应根据行业发展需要及高职院校学生的实际情况制订,其中很重要的一点就是必须将满足行业发展对人才的要求放在首位。软件专业人才培养方案中总目标可描述为:培养具有计算机软件基本知识与技能,具有运用软件工程方法及工具实现软件编码及测试操作的能力,具有良好的科学素质和创新能力,具有团队协作能力,能在软件公司或各类IT企事业单位从事软件编码、软件测试操作、软件工程实施和软件应用与维护等一线工作的高级技术应用性人才。专业人才培养目标的定位是“程序设计员”或“软件测试员”及与之相关的其他角色。
高职院校软件专业毕业生应至少达到在文献[3]中提出的第2级程序员能力,并具备通过自我学习而达到第3级与第4级能力。
四、课程体系结构
通过对专业人才培养目标的分析及对当前培养方式上存在的误区进行剖析,我们可以得出这样的结论,在设计专业课程时,既要考虑到学生近期就业所需要的基本技能,还要考虑到学生的职业发展,即设置的课程不仅要体现实践性,而且要有助于培养学生的软件开发创新能力。当前由于软件开发平台越来越职能化,编写计算机程序的门槛在逐步降低,但许多软件专业人员对体现技术含量的底层技术越来越陌生,在面对牵涉到系统性能优化等方面的问题时,往往一筹莫展。学生在校期间除掌握基本的软件编程技术外,还应学习项目管理、软件工程过程等方面知识,建立软件工程理念,并增加真实的项目演练。制订高职院校软件专业课程体系时应考虑增加这些课程,以增强学生的就业竞争力。笔者依据上述理由提出高职院校软件专业各类课程的设想,课程信息见下表。
当前,我国高职院校为大多三年制,共六个学期,最后一个学期为学生实习和做毕业设计时间,因此课程安排主要集中在前5个学期,下表是各门课程在不同学期的配置方案,括号内为该门课程的学时数。
五、结语
本文基于高职院校的实际情况,结合当前软件企业用人需求,系统提出了软件专业课程的设置方法,限于篇幅,本文未能详细讨论每门课程的教学大纲要求及各门课程的相互关联性。由于软件技术发展很快,课程设置应与时俱进,每年都应做适当调整。当然,对一些基础课程,调整周期应适当长一些。
参考文献:
[1]金尊和软件工程实践导论.清华大学出版社,2005年.
[2][美]Robert L.Glass.软件工程的事实与谬误.中国电力出版社,2006年1月.
[3][美]Steve McConnell.代码大全.电子工业出版社,2006年.
关键词: 高职院校 软件 课程体系
一、引言
高职院校软件专业(以下简称“软件专业”)主要目标是培养从事IT职业的基础实用型人才,从事IT行业的人员就注定要与软件工程打交道。软件工程是生产和创造软件的活动和过程,它包括相关的需求分析、体系结构设计、代码编写及调试、测试和发布等各个环节。软件工程不是科学,其目的是创造而不是发现。软件工程与一般传统意义下的工程也不同,在普通的工程中,一般都有成熟的系统化方法及相应的规范标准,如机械工程设计都有标准和设计手册。但软件工程至今没有一个完整公认的系统化方法,甚至还停留在后手工作坊阶段。在文献[1]中,作者分析了软件工程与一般工程相比有哪些特殊性,大致有以下几点:
1)每个软件不是过去项目的简单重复,而总是新的。这种“新”具体体现在功能需求的变化、新的技术实现方法、硬件平台的改变、操作系统软件的升级和演变等。此外,编程语言的变化和开发环境的不断进步也是一个创新。
2)每个软件项目都是在不断变化,特别是功能需求在软件开发过程中不断发生变化,许多设计很难一步到位,总是有一些问题是预先没有考虑到的,随着开发过程的深入需要不断地调整,也就是说软件项目中角色分工不像其他工程那样细致。
3)软件项目一般胜算不大,很多项目要么延期,要么超过预算,或者软件质量达不到客户的验收标准,甚至有的项目永远也完不成。
4)软件项目是典型的团队活动,尤其是大型软件,牵涉人员比较多,协调沟通难度比较大,加之计划不如变化快,对进度非常难以监控。而且生产力与人员不能成正比。也就是说,当项目延期时,在一般工程项目中添加人员可以起到提高生产力,加快工程进度的作用,但对一个软件项目而言,加入更多的人可能使项目延期加剧。
软件项目的这些特征就决定了软件专业在培养人才方式上必然与其他专业有许多不同之处,特别是在高等职业技术学院。因此,在高职院校里,软件专业人才培养模式与其他专业强调技能方面相比,应将重点放在培养学生的创新、自学能力及团队合作意识上。
二、高职院校软件专业人才培养方式上的一些误区
当前,许多高职院校都设置了软件专业。但从最近几年学生的就业特别是对口就业形势看,情况并不乐观,其中很重要的原因就是,软件专业人才培养上存在一定的偏差,课程设置跟不上行业发展要求。大学教育以填鸭的方式给学生灌输技能,却忽视了传授思想和方法。学生们虽埋头学习,但不知学以致用,离开学校后对企业、产品、人生一片茫然。软件专业学生虽然掌握了用基本编程语言书写程序的知识,但基础不牢,不一定能应用这些知识做好软件。我们经常见到的现象是,在大学课堂上,教师讲授一些编程语言规则,举例说明这些规则,学生应用语法规则编写一些程序代码。但学生对编码规则和处理方法一无所知,课堂上没有培养学生的软件质量意识。高职院校软件专业人才培养方式上常见的误区有:
1)只重视让学生通过程序实现某项功能,但忽视学生编写的代码质量,学生对包括编程规范、算法、性能指标等的理解远不能达到实际项目要求。学生在校学习时没有对提高代码质量的手段和技术进行实际演练。
2)对学生程序调试能力的训练不足,学生面对规模稍微大一点的程序,就不懂得如何进行有效地调试、快速定位错误并加以改正。
3)学生系统思维能力训练不够,学生毕业后,面对新问题,没有很好的解决方案。
4)有的院校增加许多认证类的课程,造成学生花大量精力去考一个实际用途并不大的证书,因为在软件业,知识及某种平台上的技术发展很快,在学校取得的证书未必能用得上,而且,现在的许多证书也未必能反映学生真实的能力。
5)对高职院校强调技能方面的理解有偏差,过度强调所谓的“理论够用,强化技能”理念,实际操作中造成学生基础很不扎实,只能一味模仿,学生编写出的程序的确能够运行,但学生对其中涉及的性能、算法及底层的一些机制问题一片茫然,当项目要求提高程序性能时,学生往往无法对影响程序性能的部分进行分析归纳,找出关键点,从而有效地对程序进行优化处理。
6)具体的教学方法上,没有教学生先阅读与模仿,再在此基础上进行修改、扩充、重写,没有先从培养良好的编程习惯开始。各级院校与培训机构都有编写程序课程,却没有读程序的课程,因此,文献[2]作者建议增加程序阅读课程。
笔者认为,前几年提出的“软件蓝领”(近几年被“软件实用性人才”所取代)值得商榷,在软件界,尤其在中国软件产业界,绝对的“软件蓝领”是很难有生存空间的,其主要原因是在软件产业界,主要体现的是一个创新,角色分工并没有其他工程项目那样细致,如设计和编码两种工作就很难绝对分开,因为设计几乎不可能一步到位。在中国软件产业界,规模很小的软件企业占有相当大的比重,这些企业由于成本控制的原因,往往是一人能担任多种角色,对岗位细分没有那么严格,单纯的软件编码人员是很难立足的。另一方面,规模较大的软件企业虽然岗位细分较严格,但由于这样的企业生产过程往往自动化程度较高,加上现在开发工具非常先进,许多代码甚至能在完整设计的基础上通过工具自动完成,“软件蓝领”再“蓝”也“蓝”不过机器。因此,不具备一定的软件设计和分析能力,只能面对一项设计完整的文档进行编程的“软件蓝领”将很难就业。前几年,笔者见到金山公司网站的招聘页上不再看重应聘者的学历,比如对ASP.Net程序员的学历要求是初中以上,但职位的具体要求是:熟悉Microsoft .Net Framework,熟练进行ASP与数据库编程;熟练使用C#,并能熟练使用C++或Visual Basic; 熟悉XML编程与Web Service编程,对各种网络协议(TCP/IP、LDAP、SMTP等)有一定的了解;有良好的动手与自学能力;能够很好地适应团队工作的环境,能够与其他同事的工作配合。显然一般“软件蓝领”并不能具备上述能力。
当然在一些大的软件企业,也的确存在一些为数不多的所谓“软件蓝领”岗位,这些岗位主要有:前台技术支持,比如接客户的电话,解决一些软件使用中的常见问题;程序测试员,只简单执行测试流程,不进行测试工具开发;日常系统管理员,比如,帮助新员工开开账户。大的软件公司很多开发组织有构建团队,他们负责每天编译代码,生成软件新的运行版本。高职院校软件专业人才培养目标显然不是主要针对这些岗位的。事实上,即使在国外的软件业,尽管角色分工细致,也没有出现类似的称谓。在文献[3]中,作者将软件从业人员分为4级:
第1级——入门级:会利用某种语言的基本功能,能够编写类、子程序、循环和条件语句,会使用语言的许多特性。
第2级——中级:中级程序员能够利用多种语言的基本功能,并会得心应手的使用至少一种语言。
第3级——熟练:对语言和环境有专业技能。
第4级——技术带头人级:在第3级基础上,对编码风格、质量有独到的实践和见解。
三、高职院校软件专业人才培养目标
高职院校软件专业人才培养目标应根据行业发展需要及高职院校学生的实际情况制订,其中很重要的一点就是必须将满足行业发展对人才的要求放在首位。软件专业人才培养方案中总目标可描述为:培养具有计算机软件基本知识与技能,具有运用软件工程方法及工具实现软件编码及测试操作的能力,具有良好的科学素质和创新能力,具有团队协作能力,能在软件公司或各类IT企事业单位从事软件编码、软件测试操作、软件工程实施和软件应用与维护等一线工作的高级技术应用性人才。专业人才培养目标的定位是“程序设计员”或“软件测试员”及与之相关的其他角色。
高职院校软件专业毕业生应至少达到在文献[3]中提出的第2级程序员能力,并具备通过自我学习而达到第3级与第4级能力。
四、课程体系结构
通过对专业人才培养目标的分析及对当前培养方式上存在的误区进行剖析,我们可以得出这样的结论,在设计专业课程时,既要考虑到学生近期就业所需要的基本技能,还要考虑到学生的职业发展,即设置的课程不仅要体现实践性,而且要有助于培养学生的软件开发创新能力。当前由于软件开发平台越来越职能化,编写计算机程序的门槛在逐步降低,但许多软件专业人员对体现技术含量的底层技术越来越陌生,在面对牵涉到系统性能优化等方面的问题时,往往一筹莫展。学生在校期间除掌握基本的软件编程技术外,还应学习项目管理、软件工程过程等方面知识,建立软件工程理念,并增加真实的项目演练。制订高职院校软件专业课程体系时应考虑增加这些课程,以增强学生的就业竞争力。笔者依据上述理由提出高职院校软件专业各类课程的设想,课程信息见下表。
当前,我国高职院校为大多三年制,共六个学期,最后一个学期为学生实习和做毕业设计时间,因此课程安排主要集中在前5个学期,下表是各门课程在不同学期的配置方案,括号内为该门课程的学时数。
五、结语
本文基于高职院校的实际情况,结合当前软件企业用人需求,系统提出了软件专业课程的设置方法,限于篇幅,本文未能详细讨论每门课程的教学大纲要求及各门课程的相互关联性。由于软件技术发展很快,课程设置应与时俱进,每年都应做适当调整。当然,对一些基础课程,调整周期应适当长一些。
参考文献:
[1]金尊和软件工程实践导论.清华大学出版社,2005年.
[2][美]Robert L.Glass.软件工程的事实与谬误.中国电力出版社,2006年1月.
[3][美]Steve McConnell.代码大全.电子工业出版社,2006年.