论文部分内容阅读
摘 要:将项目实训纳入到高校软件外包人材培养体系中,能使学生在学习过程中就不断接受企业化项目开发的锻炼,掌握软件开发过程中各阶段的技能、编程技巧与团队协作能力,缩短学生与实际企业所需人才的距离,解决学校与软件企业间的供需矛盾。
关键词:项目实训;软件服务外包;人才培养
软件外包就是一些发达国家的软件公司将他们一些非核心的软件项目通过外包的形式交给人力资源成本相对较低的国家的公司开发,以达到降低软件开发成本的目的。目前,软件服务外包产业已经成为各国竞相发展的先导产业,为顺应我国软件外包服务市场的高速发展,培养满足外包企业项目需求的专业人才成为当务之急。
软件外包企业对软件人才的需求是多方面的,不仅要懂软件技术,也要具有一定的行业背景知识。通过正规院校学历教育培养出来的学生能掌握基本的软件开发技术,但缺乏软件开发工作经验、项目交流和团队合作锻炼,不能成为企业需要的人才。由于目前高校在教学实施过程中仍然是以理论讲授为主,而实践动手能力和职业素质的培养相对不足,学生所学的知识缺少实用性和针对性。这些矛盾导致了许多学生在就业时感觉学校所学的理论知识与实际工作岗位能力要求相差甚远,而企业普遍认为应届毕业生很难在短期内胜任工作,岗位匹配性差,招聘进的大部分本科毕业生需要花很长的时间对其进行培训后才能使他们真正能投入工作。
软件项目实训的核心就是如何解决学校与企业的供需矛盾,使高校能够培养出满足软件企业需求的合格人Fo将项目实训引入到高校软件专业的日常教学中,可以使学生在学习过程中就不断接受企业化项目开发的锻炼,并让理论与实践(尤其是企业环境)完全结合与对接。通过以项目任务为驱动的实训课程,不仅能培养学生掌握软件开发过程中各个阶段的技能,还可以强化团队协作意识,缩小毕业生和软件职业人的差别。
一、项目实训的实施
1.实训平台建设
南京工业大学(以下简称“我校”)的软件项目实训采取的是校企共建方式,与软件公司合作组建软件外包实验室。学校提供专门的场所并配置专用硬件设备,与企业签订保密协议和知识产权归属协议,从企业引入软件开发平台、软件开发规范和各种软件开发文档。
软件开发平台分为管理平台和综合数据服务器。项目实训的管理平台采用的是合作软件公司开发的SPIF系统,该系统为软件开发过程中的不同角色提供了一个协同软件开发的工作平台。它可以进行过程定义、活动跟踪、数据的自动收集与度量,能针对软件开发过程实时进行跟踪监控,使广大开发人员能“透明地”实施过程改善活动,提高软件开发中的管理和改进活动的效率。
教师通过该管理平台,可以设定软件开发各阶段的活动内容和进度,包括开发过程中各个阶段应完成的文档资料、完成的时间、安排的会议和评审活动等等,并可以以不同粗细粒度指定需要学生完成的实践部分,例如可以选择让学生按照设计说明完成某个模块或者某个子模块的开发。学生使用该平台,可以按照进度要求提交、修改项目所需要的各类文档,并填写日志,记录开发活动的进度和每天所完成的工作。
综合数据服务器可以管理、保存学生开发的项目,教师也可以添加示例项目来引导学生的开发活动。其作为学生实践活动的支持服务器,可以提供数据传输、开发活动共享、版本控制等功能。
2.实训管理
软件项目实训采用的是企业化的管理模式,在软件外包实验室集中训练,并聘请软件公司有丰富开发经验的人员用规范化的开发流程指导实训。开发团队的成员主要来自于我校电子与信息工程学院软件专业二、三年级的学生,还有少数自愿报名的非计算机专业的学生,这些学生已经基本掌握了软件开发的流程和常用的软件开发工具。按照所开发的项目将这些学生分为五个开发小组,每个小组负责一个功能模块的开发工作,并配置一名教师作为该小组的项目组长,负责管理开发的内容和进度。整个项目配置一名有实际开发经验的项目经理,负责整个项目的开发实施,并协调各个小组的工作进程。整个实训时间分为三周,每周六天,每天工作8个小时,使用SPIF系统进行项目追踪与监控。每天早晨都由项目组长召集本组学生召开晨会,总结前一天的工作和布置当天的任务,学生按照项目组长设置的进度完成每天的任务。
3.项目实训进程
本项目实训选取的是已开发过的实际项目:高校院系级教学管理系统。系统采用B/S模式,在ASP,NET环境下开发,分为用户界面层、业务逻辑层和数据访问层三层结构。项目的选取是因为每个学生都比较熟悉学校的教学过程,开发这样的系统对他们来说,比较容易理解用户的要求。整个项目综合实训过程分为需求分析、系统总体设计、详细设计、编码与测试、实训总结与考核这5个阶段,每个阶段按照规范化的软件开发流程都有应达到的目标要求。每阶段任务完成后都需要召开组内评审会(小组内所有成员必须参加)来审核质量并修改错误,以便进行下一步工作。
(1)需求分析。项目经理首先定义项目的开发模型、估计项目的规模,据此定义出项目开发的进度与计划,并划分项目开发小组。项目组长作为所开发系统的用户向学生说明需求,然后将需求任务分配到具体的学生,展开需求调查,并按照规定的格式编写出用户需求说明书。考虑到实训的时间比较紧张,所以省去了需求调查的过程,直接以文档形式向学生提交了用户要求。
(2)系统总体设计。该阶段项目小组根据需求分析主要完成功能设计、数据库设计以及测试用例的设计。功能设计是根据用户需求说明书的要求使用专业绘图工具Ⅵsio绘制出系统使用界面,绘制时不考虑美工要求,只考虑到每个页面所实现的功能,但是所有用户页面的风格,包括字体字号、布局等都要作统一的规定。数据库设计阶段则是根据用户的需求和设计出的界面编写数据库设计说明书,并给出数据结构。总体设计的最后阶段还要进行测试用例的设计,针对系统界面明确测试的内容与预期的结果。
(3)详细设计。详细设计是编码的蓝本,是开发出高效率程序的基础。详细设计的主要任务是对模块完成函数分解和调用关系,使在编码之前能够确保底层模块的设计结构正确、合理。详细设计主要应该完成系统模块的划分、模块各接口之间的定义、公用数据结构的定义,然后进行各模块的单独设计,其主要包括模块功能、主要处理流程及主要界面和主要的对外提供接口函数(我们的要求是采用C#语言进行描述)。
(4)编码与测试。在这一阶段,项目小组按照规范的软件设计和进度要求进行编码,项目组长要对过程中出现的问题进行监控和管理。编码过程中,学生的进度会有所区别,项目组长应及时进行跟踪调节,确保整个项目小组的任务在规定的时间里完成。由于在编写代码阶段会经常遇到各种各样的问题,故需要师生在互动中不断解决问题,在实践中提高学生自学能力、创新能力和对实际问题的分析解决能力。模块功能完成并测试完毕后,要将系统集成并集成测试,继续缺陷的修改和回 归测试,并打包最终产品。
(5)实训总结与考核。通过三周的实训,学生经历了软件项目开发的整个流程,每个项目小组也独立完成了相应的功能模块,因此对自己所做的工作和实训中的收获做一个总结是十分必要的。在项目实训总结会上,各项目小组的代表介绍了本组的工作,以及在此过程中所遇到的问题和解决办法。学生们普遍感到这次实训对以前所学的理论知识有了更深入的认识,明确了软件设计过程中需求分析的重要性,摈弃了以往重代码轻设计的错误思想,真正体会到了在软件开发过程中团队合作的力量。最后通过对学生工作态度、工作能力、团队协作精神、设备资料的使用与维护等方面的考核,为合格的学生颁发了信息学院软件项目实训的结业证书。
二、项目实训中存在的问题及对策
本次实训基本达到了预期的效果,不仅培养了学生的软件素养和职业素质,教师还可以在此过程中通过师生间的沟通与交流,发现教学中存在的薄弱环节并进行改进,但是其中也暴露出一些问题。首先,项目的选题还局限在学校的范围内,功能相对比较单一,与企业的实际开发项目还有一定的差距。其次,参与项目实训的学生来自于不同的专业和年级,所以在相关专业知识上有一定的欠缺,学生水平参差不齐,影响了编码阶段的进度。再者,相应的管理制度还不够完善。
因此,在今后的项目实训中,选题应尽量选用企业的实际开发项目,做到真实性和多样化,使学生能根据自己的兴趣和特长进行选择,充分发挥学生的个人能动性。在学生参与项目实训前,还应对其进行相关专业知识的培训和强化,确保软件项目各阶段任务的顺利执行。在人员管理中,积极推行团队化管理,将学生按软件团队模式进行管理,按软件项目管理模式设立不同的角色,并由高年级学生带低年级学生,这样更有利于学生的自主学习。同时,对整个项目的管理应比照企业现行的管理模式,完善各种管理制度,比如培训制度、考勤制度、数据管理制度、软件开发流程制度、测试制度等等。
三、结语
软件外包是一个新兴的行业,是当前我国鼓励重点发展的贸易形式之一。通过软件项目实训,缩短了人才培养周期,使学生毕业后就能成为企业的实用或骨干人才。因此,依靠专业院校的师资和丰富的人才培养经验,与软件外包企业进行合作,共同研究软件外包人才的培养模式,培养实用型、复合型的人才,具有十分重要的意义。
关键词:项目实训;软件服务外包;人才培养
软件外包就是一些发达国家的软件公司将他们一些非核心的软件项目通过外包的形式交给人力资源成本相对较低的国家的公司开发,以达到降低软件开发成本的目的。目前,软件服务外包产业已经成为各国竞相发展的先导产业,为顺应我国软件外包服务市场的高速发展,培养满足外包企业项目需求的专业人才成为当务之急。
软件外包企业对软件人才的需求是多方面的,不仅要懂软件技术,也要具有一定的行业背景知识。通过正规院校学历教育培养出来的学生能掌握基本的软件开发技术,但缺乏软件开发工作经验、项目交流和团队合作锻炼,不能成为企业需要的人才。由于目前高校在教学实施过程中仍然是以理论讲授为主,而实践动手能力和职业素质的培养相对不足,学生所学的知识缺少实用性和针对性。这些矛盾导致了许多学生在就业时感觉学校所学的理论知识与实际工作岗位能力要求相差甚远,而企业普遍认为应届毕业生很难在短期内胜任工作,岗位匹配性差,招聘进的大部分本科毕业生需要花很长的时间对其进行培训后才能使他们真正能投入工作。
软件项目实训的核心就是如何解决学校与企业的供需矛盾,使高校能够培养出满足软件企业需求的合格人Fo将项目实训引入到高校软件专业的日常教学中,可以使学生在学习过程中就不断接受企业化项目开发的锻炼,并让理论与实践(尤其是企业环境)完全结合与对接。通过以项目任务为驱动的实训课程,不仅能培养学生掌握软件开发过程中各个阶段的技能,还可以强化团队协作意识,缩小毕业生和软件职业人的差别。
一、项目实训的实施
1.实训平台建设
南京工业大学(以下简称“我校”)的软件项目实训采取的是校企共建方式,与软件公司合作组建软件外包实验室。学校提供专门的场所并配置专用硬件设备,与企业签订保密协议和知识产权归属协议,从企业引入软件开发平台、软件开发规范和各种软件开发文档。
软件开发平台分为管理平台和综合数据服务器。项目实训的管理平台采用的是合作软件公司开发的SPIF系统,该系统为软件开发过程中的不同角色提供了一个协同软件开发的工作平台。它可以进行过程定义、活动跟踪、数据的自动收集与度量,能针对软件开发过程实时进行跟踪监控,使广大开发人员能“透明地”实施过程改善活动,提高软件开发中的管理和改进活动的效率。
教师通过该管理平台,可以设定软件开发各阶段的活动内容和进度,包括开发过程中各个阶段应完成的文档资料、完成的时间、安排的会议和评审活动等等,并可以以不同粗细粒度指定需要学生完成的实践部分,例如可以选择让学生按照设计说明完成某个模块或者某个子模块的开发。学生使用该平台,可以按照进度要求提交、修改项目所需要的各类文档,并填写日志,记录开发活动的进度和每天所完成的工作。
综合数据服务器可以管理、保存学生开发的项目,教师也可以添加示例项目来引导学生的开发活动。其作为学生实践活动的支持服务器,可以提供数据传输、开发活动共享、版本控制等功能。
2.实训管理
软件项目实训采用的是企业化的管理模式,在软件外包实验室集中训练,并聘请软件公司有丰富开发经验的人员用规范化的开发流程指导实训。开发团队的成员主要来自于我校电子与信息工程学院软件专业二、三年级的学生,还有少数自愿报名的非计算机专业的学生,这些学生已经基本掌握了软件开发的流程和常用的软件开发工具。按照所开发的项目将这些学生分为五个开发小组,每个小组负责一个功能模块的开发工作,并配置一名教师作为该小组的项目组长,负责管理开发的内容和进度。整个项目配置一名有实际开发经验的项目经理,负责整个项目的开发实施,并协调各个小组的工作进程。整个实训时间分为三周,每周六天,每天工作8个小时,使用SPIF系统进行项目追踪与监控。每天早晨都由项目组长召集本组学生召开晨会,总结前一天的工作和布置当天的任务,学生按照项目组长设置的进度完成每天的任务。
3.项目实训进程
本项目实训选取的是已开发过的实际项目:高校院系级教学管理系统。系统采用B/S模式,在ASP,NET环境下开发,分为用户界面层、业务逻辑层和数据访问层三层结构。项目的选取是因为每个学生都比较熟悉学校的教学过程,开发这样的系统对他们来说,比较容易理解用户的要求。整个项目综合实训过程分为需求分析、系统总体设计、详细设计、编码与测试、实训总结与考核这5个阶段,每个阶段按照规范化的软件开发流程都有应达到的目标要求。每阶段任务完成后都需要召开组内评审会(小组内所有成员必须参加)来审核质量并修改错误,以便进行下一步工作。
(1)需求分析。项目经理首先定义项目的开发模型、估计项目的规模,据此定义出项目开发的进度与计划,并划分项目开发小组。项目组长作为所开发系统的用户向学生说明需求,然后将需求任务分配到具体的学生,展开需求调查,并按照规定的格式编写出用户需求说明书。考虑到实训的时间比较紧张,所以省去了需求调查的过程,直接以文档形式向学生提交了用户要求。
(2)系统总体设计。该阶段项目小组根据需求分析主要完成功能设计、数据库设计以及测试用例的设计。功能设计是根据用户需求说明书的要求使用专业绘图工具Ⅵsio绘制出系统使用界面,绘制时不考虑美工要求,只考虑到每个页面所实现的功能,但是所有用户页面的风格,包括字体字号、布局等都要作统一的规定。数据库设计阶段则是根据用户的需求和设计出的界面编写数据库设计说明书,并给出数据结构。总体设计的最后阶段还要进行测试用例的设计,针对系统界面明确测试的内容与预期的结果。
(3)详细设计。详细设计是编码的蓝本,是开发出高效率程序的基础。详细设计的主要任务是对模块完成函数分解和调用关系,使在编码之前能够确保底层模块的设计结构正确、合理。详细设计主要应该完成系统模块的划分、模块各接口之间的定义、公用数据结构的定义,然后进行各模块的单独设计,其主要包括模块功能、主要处理流程及主要界面和主要的对外提供接口函数(我们的要求是采用C#语言进行描述)。
(4)编码与测试。在这一阶段,项目小组按照规范的软件设计和进度要求进行编码,项目组长要对过程中出现的问题进行监控和管理。编码过程中,学生的进度会有所区别,项目组长应及时进行跟踪调节,确保整个项目小组的任务在规定的时间里完成。由于在编写代码阶段会经常遇到各种各样的问题,故需要师生在互动中不断解决问题,在实践中提高学生自学能力、创新能力和对实际问题的分析解决能力。模块功能完成并测试完毕后,要将系统集成并集成测试,继续缺陷的修改和回 归测试,并打包最终产品。
(5)实训总结与考核。通过三周的实训,学生经历了软件项目开发的整个流程,每个项目小组也独立完成了相应的功能模块,因此对自己所做的工作和实训中的收获做一个总结是十分必要的。在项目实训总结会上,各项目小组的代表介绍了本组的工作,以及在此过程中所遇到的问题和解决办法。学生们普遍感到这次实训对以前所学的理论知识有了更深入的认识,明确了软件设计过程中需求分析的重要性,摈弃了以往重代码轻设计的错误思想,真正体会到了在软件开发过程中团队合作的力量。最后通过对学生工作态度、工作能力、团队协作精神、设备资料的使用与维护等方面的考核,为合格的学生颁发了信息学院软件项目实训的结业证书。
二、项目实训中存在的问题及对策
本次实训基本达到了预期的效果,不仅培养了学生的软件素养和职业素质,教师还可以在此过程中通过师生间的沟通与交流,发现教学中存在的薄弱环节并进行改进,但是其中也暴露出一些问题。首先,项目的选题还局限在学校的范围内,功能相对比较单一,与企业的实际开发项目还有一定的差距。其次,参与项目实训的学生来自于不同的专业和年级,所以在相关专业知识上有一定的欠缺,学生水平参差不齐,影响了编码阶段的进度。再者,相应的管理制度还不够完善。
因此,在今后的项目实训中,选题应尽量选用企业的实际开发项目,做到真实性和多样化,使学生能根据自己的兴趣和特长进行选择,充分发挥学生的个人能动性。在学生参与项目实训前,还应对其进行相关专业知识的培训和强化,确保软件项目各阶段任务的顺利执行。在人员管理中,积极推行团队化管理,将学生按软件团队模式进行管理,按软件项目管理模式设立不同的角色,并由高年级学生带低年级学生,这样更有利于学生的自主学习。同时,对整个项目的管理应比照企业现行的管理模式,完善各种管理制度,比如培训制度、考勤制度、数据管理制度、软件开发流程制度、测试制度等等。
三、结语
软件外包是一个新兴的行业,是当前我国鼓励重点发展的贸易形式之一。通过软件项目实训,缩短了人才培养周期,使学生毕业后就能成为企业的实用或骨干人才。因此,依靠专业院校的师资和丰富的人才培养经验,与软件外包企业进行合作,共同研究软件外包人才的培养模式,培养实用型、复合型的人才,具有十分重要的意义。