一种引入市场机制的软件工程课程实践教学方法

2014-10-09 19:42陆悠奚雪峰华泽
大学教育 2014年15期
关键词:市场机制项目经理软件

陆悠 奚雪峰 华泽

[摘 要]在高校计算机科学与工程专业的教学实践中,软件工程作为专业的核心和基础课程,如何将课本知识尽可能贴近实践地传授给学生,并合理地考核学生掌握程度是关键。在计算机软件工程的实践过程中,引入市场机制,构建贴近实际的模拟开发环境,以此为基础来设计、组织教学内容和成绩评定,突出知识的实践性,学习的主动性,从而提高高校学生对软件工程课程的学习效果。

[关键词]迭代开发计算机实践课程 软件工程

[中图分类号] G642;TP311.5 [文献标识码] A [文章编号] 2095-3437(2014)15-0080-03

一、前言

在高校计算机科学与工程专业的教学实践中,软件工程作为专业的核心和基础课程,如何将课本知识尽可能贴近实践地传授给学生,并合理地考核学生掌握程度是关键。由于缺乏实践性,以讲课为主的教学方式对学生缺乏吸引力;另一方面,尽管学生完成课程之后能通过书面考试,但当其进行毕业设计、企业实习乃至进行实际项目开发时,仍不能合理应用所学知识,不少考试成绩出色的学生在实际项目中并没有表现出相应的实践能力。

分析这些现象,可以找出一个共同的原因,即软件工程课程教学方式与实际环境脱离,与实际的软件项目环境联系不深,对学生的吸引力不大,导致教学效果不理想。

软件工程本身是一门实践性、工程性很强的课程,尤其是随着软件工业的不断发展,软件开发已经普遍团队化、规范化和流程化,如何将教学与软件工业的需求衔接起来,是摆在高校教师面前的一项严峻课题。本文提出将市场机制环境引入软件工程实践教学过程中的方法,即以模拟实际商业环境中客户、软件开发公司管理者以及软件开发者互动为导向,将软件工程的教学目标融合进具体实践环境中去,从而使学生直接得到近似于实际环境的锻炼,充分掌握软件工程的基本概念、理论与方法。此举不但促进学生在实践中应用和掌握软件工程的开发规范和流程以及团队合作方法等,而且可以促使用户理解软件工业所处的商业背景和实际环境,从而有效地提高教学效果。学生在软件工程的课程学习基本完成之后,以分别扮演客户、软件公司管理者与开发人员等不同角色,在教师协调之下,模拟开发项目的商业流程,完成若干工程目标,最终通过衡量每个角色的收入来考核学生的表现。在实践过程中,学生在教师指导与裁决的基础上,根据所扮演角色的需求,灵活运用所学的知识点,尽可能地将自身利益最大化。当整个课程结束的时候,学生不仅能够在实践动手能力、创新思维、专业知识、科研能力和团队合作精神等方面得到训练,而且也能对软件工业环境有更充分的了解。另外,这样的方式对学生而言具有很大的趣味性、实用性以及竞争性,能极大地提高学生的学习主动性。

二、引入迭代开发驱动模拟项目的教学目的

将市场机制引入软件工程实践过程,通过模拟实际软件工业的开发环境,将知识点融合于整个开发过程,强化学生的实践行为,通过这样的教学方式,能够有效地实现以下目标。

(一)符合软件行业对高校学生的需求

市场机制(market mechanism),即资源在市场上通过自由竞争与自由交换来实现配置的机制,也是价值规律的实现形式。具体来说,它是指市场机制体内的供求、价格、竞争、风险等要素之间互相联系及作用机理,主要包括供求机制、价格机制、竞争机制和风险机制。当前软件工业正是建立在高度市场化的竞争环境中,其基本概念、方法等都体现了市场机制下各个经济行为主体之间如何为自身的利益而相互展开竞争,实现利益最大化的。然而在目前的高校教育课程中,软件工程类课程缺乏对实际情况的体现,学生对基本概念、理论难有实践的理解和锻炼,将基于市场机制的模拟实践环境引入教学环节之中,能够有效地弥补这一不足。

(二)强化学生的实践能力

由中国计算机学会教育专业委员会完成的《中国高等学校计算机科学与技术专业(应用型)学科教程(2009)》明确指出:“计算机科学与技术学科是实践性极强的学科,必须培养学生具有很强的实际动手能力。”传统的教学无法使学生了解如何在实践中应用软件工程的理论知识。因此,在教学中引入市场机制的模拟环境能够有效地提高学生的实践能力。

(三)提高学生的自学能力

“讲三、练二、考一”是当前计算机学科课程教学的主要特征,这种“填鸭式”的教学使得学生几乎没有对软件工程进行自学和深入研究的动力。要解决这个矛盾,就要让学生主动产生对课堂传授的理论的求知欲和好奇心,而实践则是培养这种求知欲、好奇心的最佳方法。

(四)锻炼学生的问题求解能力

传统软件工程教学重点往往集中在软件工程领域本身,而软件开发则是一个综合性过程,通过引入市场机制的模拟实际项目环境,能够不断提出涉及各个方面的实际的问题目标,能够有效驱动学生灵活运用所学的各方面课程的知识,进而培养学生解决实际问题的能力。

三、模拟项目的教学组织方法

要达到上述的教学效果,以“软件工程实践——信息管理类项目实践”为例,笔者在教学组织方面进行了以下的尝试。

(一)基于市场机制的项目环境构建

笔者基于市场机制的项目开发环境设计和组织了教学内容,主要安排包括以下几个方面。

1.场景设计

笔者将整个项目的场景设计为一小型市场环境,主要角色包括消费者、项目经理和软件开发者三种,这三种角色具有各自的目的和利益,并试图通过市场来达到目的并实现利益最大化,角色安排如表1所示。

表1 项目场景设计

从表1可以看出,三种角色是对当前软件工业市场环境的简单模拟,其中消费者、项目经理和开发者的利益诉求能够较好地进行量化。在实践过程中,该场景能够有效吸引学生的兴趣,促使学生思考和应用课程所学的知识点,并具备对学生实践成績的合理量化方法。

2.教学组织方法

在实践过程的每个阶段启动前,教师根据场景安排准备较为具体的角色目标让学生讨论。不同角色的学生团队需要进行现场讨论,分析本团队要采取的策略,提出该阶段内的具体实践路线图,在完成实践之后,还要对该阶段的行为进行整理和总结,教师则需对可能存在的争议进行裁决。实践结束后,各个角色、开发团队还需要在课堂上陈述自己的工作。

3.教学内容安排

(1)角色分配阶段,确定消费者、项目经理与开发者的角色,根据学生人数,大致比例为1∶1∶8。消费者从项目经理处预定软件,项目经理雇佣软件开发者开发软件,流通货币为虚拟货币¥,资金由教师操作的银行支持。课程初期,银行为每个消费者和项目团队设立一个账户,消费者有¥30000 购买资金,项目经理则有¥2000启动资金。游戏目标是消费者尽可能以较低价格购买较高质量的软件,实现采购成本最小化;项目经理则尽可能多销售出本团队的应用程序,从而使团队利润最大化。在购买软件和销售软件时,买家和卖家都必须在价格上达成一致,包括软件工程所涉及的维护时间、技术支持、软件担保以及可能的延期交付惩罚等各种费用。

(2)项目确定阶段,消费者通过与教师讨论确定应用程序需求,对功能要求进行量化,相当于用户需求的提出,随后教师根据难度,给出功能指导价格。在此基础上,消费者向项目经理进行招标。为避免因难度不匹配造成投标困难,教师一方面需控制难度,另一方面可重复进行三轮投标,每轮投标后公布结果,然后重新投标,最后取平均价格决定结果。投标结束后消费者与项目经理签订合同。双方必须在文字上达成一致意见。以下是合同内容的若干建议:价格、交付清单(例如:应该提交的文档)、每一个交付项的交付日期、转让机制(软件如何交付?)、达成一致的售后工作量、技术支持成本、不能按时交付需交的违约金、对于软件最低质量程度的保证,等等。最后项目经理根据投标情况在软件开发者中招募不同角色的开发人员并与其约定酬劳,为避免分配不均匀,招募过程也可重复进行三轮,每轮结束时公示各角色的平均薪酬。

(3)软件开发阶段,该阶段中项目经理负责管理,根据开发人员的表现情况发放酬金,消费者负责监督,根据项目进展情况,按照投标约定给付资金。开发阶段可安排四次讲评,以团队成果的形式在全班环境下进行讨论。在整个开发过程中还需要提交每周工作报告,帮助教师了解团队的进度以及存在的问题,并作为裁决基础。周报中应该记录团队本周的工作情况,具体要包含以下一些内容:识别的风险,列出本周识别出的所有新风险、技术问题;列出所出现的技术问题(如设计问题等)细节、解决方法等;列出本周做出的所有决策,包括买卖策略、测试策略、管理策略等;列出完成的工作,到达的里程碑等。该阶段中较易出现各种纠纷,教师应该承担裁决的任务,合理解决。

(二)学生的管理

对学生实践行为的管理以及加强学生对自身角色的了解是项目实践成功的前提,在不同阶段应注意不同的工作细节。

在第一阶段,不同角色理解难度有差别,教师应做好解释和培训工作,另外也可以采用两个班互相分配方式。

在第二阶段,教师应引导学生尽可能理性地进行思考,从真正的消费者或项目经理的角度考虑问题,并注意约定合同的合理性、可操作性。

在第三阶段,教师一方面要做好纠纷的裁决,另一方面则要及时进行总结和引导讨论,尽可能及时地将开发过程中体现软件工程思想、理论的实例展示给学生。

(三)成绩评定

在基于市场机制的模拟实际项目环境下,成绩量化根据角色的不同而有不同的侧重点。对消费者而言,其成绩由所收获的应用程序质量和剩余资金之和构成;项目经理的成绩则由其利润来计算;而开发者的成绩则由其收入来决定。显然,要得到较高的成绩,依赖消费者、項目经理和开发者的通力合作才可以,因此,学生只有在平时实践中尽可能地互相协作,才能获得良好的成绩。这样不仅可以使日常教学获得良好的效果,而且也减轻了学生考试的压力。

四、采用模拟项目后的教学效果

下面是部分学生在课后交流时谈到的收获与体会:

“在以前的软件工程课程中,我们大多都是对书本知识进行死记硬背。这次不一样了,我们遇到了许多过去从没接触到的实际问题。课程结束以后,我们体会到理论结合实际、培养动手能力的重要意义。”

“一个团队的成功绝不是队员个人能力累积的结果,我们的成功得益于我们非常好的团队合作关系。合作当中比较关键的因素包括责任心、互补的性格、尊重对方的意见、不互相埋怨、相互鼓励信任等,看起来很普通的人组成的团队,可以释放出超出累计和的效果,就是所谓的1+1>2。”

总之,通过引入市场机制的软件工程实践项目的训练,能够强化学生对理论知识的理解,培养了学生严谨踏实、坚韧不拔的科学探索精神。

五、结论

通过两个学期的实践,引入市场机制的软件工程实践取得了良好的教学效果。在该课程中,学生们经过实践的3个不同环节,完成了约6000-10000行左右的Java、C#程序。虽然距离实际程序员仍有差距,但我们有理由相信,通过一系列类似的实践环节训练,一个高校学生完全有希望达到成为一个有基础的程序员的目标。

[ 参 考 文 献 ]

[1] 陆悠.一种项目迭代开发驱动的计算机实践类课程教学方法[J].大学教育,2013(8).

[2] 彭秀芳.高等职业教育与国际教育水平接轨若干问题的思考与探索[J].教育理论与实践,2005(12).

[3] 杨小秋.教育实践主体的活动范式[J].教育理论与实践,2007(4).

[4] 刘超,林虹.谈高职教育的课程开发与建设[J].北京教育,2006(6).

[5] 程忠国.深化高职教育课程模式改革的实践思考[J].教育与职业,2006(21).

[责任编辑:覃侣冰]

猜你喜欢
市场机制项目经理软件
以市场机制推动自愿减排 全国自愿减排交易中心建设有序推进
禅宗软件
软件对对碰
论社会必要劳动时间机制是市场机制的内在本质
嵌入分部相关性的内部资本市场机制设计
我国排污权交易存在的的问题与完善市场机制
谈软件的破解与保护
高速铁路通信信号系统集成项目经理能力及主要任务
论项目经理的职责与技能要求
浅议做好代建项目经理