徐长梅,刘华富,朱建凯,付细楚
(长沙学院 计算机科学与技术系, 湖南 长沙 410003)
20世纪 90年代以来,全球服务外包市场一直呈现蓬勃发展的态势,已经形成了信息技术外包、业务过程外包、软件开发外包和知识过程外包等四个主要市场。特别是软件开发服务输出方面,印度和爱尔兰取得了非常引人瞩目的成绩,成为软件开发外包的主要输出国,而目前我国的服务外包还处于起步和成熟阶段,在全球外包市场所占的份额还很小,但是已经形成了一些较为明显的竞争优势和追赶势头。
我们认为,中国成为软件开发服务外包重要输出国的原因主要有三个方面:离岸输出的语言要求、软件工程标准化特性和软件技术的快速变化特征。印度和爱尔兰快速占领软件开发服务外包的主要原因是欧洲和北美市场在20世纪90年代IT产业大发展的广泛需求下,他们依托与需求国的语言(英语)一致性获得订单,大力培养本国的软件开发队伍,一举奠定了软件服务外包输出的市场优势。
软件工程标准化是促进软件开发服务输出市场扩张的技术因素,软件开发服务输出的主要工作处于软件开发过程的后期和末端,这些软件开发活动对开发人员的创新能力要求较低,以致曾经出现过“软件开发蓝领工人”群体。特别是CMM标准的推行进一步降低了软件开发人员的技能要求,我国三十年以来劳动密集型产业的巨大进步正好迎合软件开发服务外包的这种发展趋势,我国近几年来高等教育的重大改革为软件服务外包产业培养了大量的劳动力,进一步助推了我国软件外包产业的大跃进。
软件应用领域的不断扩张和软件应用技术的快速变化是引起软件开发服务输出市场分配的动因。新的应用领域和新的开发技术势必形成新的外包市场,在新形势下谁的适应能力强,谁就可以快速抢占新市场,新市场消除了传统势力和新兴势力之间的差异,甚至在我国高等教育体制下培养的技术人才相较其他国家更具有基础扎实、快速适应的优势,从而在移动计算、嵌入式计算等外包市场上占据了很大的优势。
基于以上原因,我国如果需要保持软件开发服务外包上的竞争优势和发展势头,人才培养单纯依托培训机构是远远不够的,高等院校在基础教育和科学工程技能培养方面的重要地位不能动摇。这也为以服务外包为主要培养目标的高等院校提出了特殊的要求。
本文主要从国家“卓越工程师教育培养计划”的目标和要求出发,分析服务外包卓越工程师的工程技能标准,研究软件开发外包工程师的工程技能培养方案,设计一套可行的技能形成实施计划,力图为国家软件开发服务外包产业发展探索一条有特色的人才培养之路。
“卓越工程师教育培养计划”是贯彻落实《国家中长期教育改革和发展规划纲要(2010-2020年)》和《国家中长期人才发展规划纲要(2010-2020年)》的重大改革项目,“旨在培养造就一大批创新能力强、适应经济社会发展需要的高质量各类型工程技术人才”。
“卓越工程师教育培养计划”特别针对工科院校以应用型工程师为培养目标的本科毕业生提出了国家通用标准,对本科毕业生应该具备的知识、能力与素质提出了较高要求,特别强调学生工程的分析、设计、运行、维护和创新能力,以及终身学习能力的培养。
我们针对软件工程学科的特点,分析SE2004(ACM Software Engineering 2004)的知识能力和课程体系,根据Bloom教育目标分类提取了软件工程师的50个本科毕业生工程技能要求,因为软件开发服务外包的主要工作集中在软件开发过程的后期和末端(编码和测试阶段),所以甄别出其中需要着重培养的38种工程实践技能(如表一)。
表一SE2004要求的软件外包毕业生工程实践技能一览表
序号分类号描 述序号分类号描 述1DES.con.4设计原理(信息隐藏、内聚和耦合)20MGT.per.5会议管理2DES.str.1面向过程设计21MGT.per.6建立和激励团队3DES.str.2面向对象设计22MGT.per.7冲突解决4DES.hci.1一般的人机交互原理23MGT.cm.1版本控制5DES.hci.2模式的使用,导航24PRF.psy.1团队工作的动机6DES.hci.5设计形态(菜单驱动、表单、问答等)25PRF.com.1阅读、理解和概括读物(源代码和文档)7DES.dd.1设计方法(SSA/SD、JSD、OOD等)26PRF.com.2书写(任务分配、报告、评估、解释等)8DES.dd.3组件设计27PRF.com.3团队交流(口头和书面、Email等等)9DES.ste.1设计支撑工具(体系结构、静态分析、动态评估)28PRF.com.4展示技能10MAA.md.1建模原理(分解、抽象、一般化、投射/视角、明确性和形式化方法的使用等)29VAV.fnd.3文档化V&V策略,包括测试和其他人工作品11MAA.tm.1信息建模(实体关系建模、类图等)30VAV.rev.1桌面检查12MAA.tm.2行为建模(结构分析、状态图、用例分析、交互图、失效模式和效果分析等)31VAV.rev.2走查13MAA.af.1分析良式(完整性、一致性和鲁棒性等)32VAV.rev.3审查14MAA.rsd.2软件需求规格说明33VAV.tst.1单元测试15MAA.rv.1评审和审查34VAV.tst.2异常处理(编写测试用例触发异常处理;设计良好的处理)16MGT.pp.2工作分解结构35VAV.tst.3覆盖分析和基于结构测试(声明、基本路径、多条件、数据流等)17MGT.pp.3任务进度安排36VAV.tst.6基于用例/客户故事的测试用例开发18MGT.pp.4工作量估算37VAV.tst.11测试工具19MGT.pp.6风险管理38VAV.par.2调试/错误隔离技术
SE2004规定了28门课程完成软件工程本科毕业生的知识和能力培养,我们根据软件服务外包行业要求和我校的计算机科学与技术学科建设特色进行了筛选,形成了13门专业理论课程(其中9门课涉及工程实践技能培养)、实训课程体系和软件工程毕业设计。我们按照理性思考、感性认识到实际运用的逐渐强化方式完成工程实践能力的教学过程。
在理性思考阶段,我们将工程实践技能的需求、体制和工程原理分解到9门专业课程,形成表二所示的课程/能力矩阵。值得注意的是,能力5(模式的使用,导航)、6(设计形态)、9(设计支撑工具)、13(分析良式)、14(软件需求规格说明)、25(阅读、理解和概括读物)、26(书写)、27(团队交流)、28(展示技能)、29(文档化V&V策略)等10项技能无法在课堂教学中培养,只能完全依赖课程实验或者实践性课程。为了保证学生完整地掌握这些技能,我们将在实训课程系列中重点培养这些方面的技能。
表二专业理论课程/工程实践技能分配矩阵
对学生进行实训是对计算机软件、硬件和网络的结合,注重软件理论和软件开发能力的培养以及学生的团队合作精神。要求学生掌握计算机系统的软件硬件的基础知识及计算机系统的设计、研究、开发和综合应用的知识和技能,接受从事软件研究和开发的基本训练,了解计算机系统设计技术,掌握计算机网络技术并具备应用能力,具备系统软件和应用软件的分析、设计、测试和维护能力。
实训采用了任务驱动式的教学方法,通过学生对企业内部项目的开发过程,可以搭建软件开发知识体系,熟练掌握国际先进的、产业界青睐的软件开发技术,并使其养成良好的职业素质。实训课程体系从本科新生着手,每学期连续不断实施,配合专业理论课程,从易到难循序渐进地培养工程实践技能的感性认识,甚至掌握一些基本的运用技巧。我们在实训课程系列中的培养顺序基本按照软件过程的反向顺序进行,一年级培养编程和合作能力,二年级培养测试能力,三年级培养设计和管理能力。表三给出了实训课程的工程技能培养过程。
表三实训课程工程实践能力教学目标一览表
软件工程毕业设计项目的实施主要是试图通过学生完整地参与企业的实际项目全过程,亲身体会工程开发对实践技能和综合知识的要求,进一步提高工程实践技能水平和运用熟练程度。
实践技能是软件开发外包企业对人才的第一需求,国家卓越工程师教育培养计划进一步明确了工程人才的培养标准,我们在研究分析ACM SE2004的基础上,分离出软件外包卓越工程师应该具备的38项技能,进一步清晰了我校软件工程(服务外包)专业的培养方案设计思路,清楚了该专业的理论课程和实训课程的教学目标,希望能够为软件开发外包企业输出实践能力强、技术变化反应快速的高质量人才。