张凯 孙华 冷洪勇 柯尊旺
摘要:文章研究和分析了软件工程人才培养目标,针对当前软件工程课程教学存在的不足,提出将项目驱动模式应用在软件工程教学中。文章以新疆大学软件学院软件工程的教改为例,探讨了项目驱动模式在软件工程教学中应用,反思了项目驱动模式在实施中存在的问题并给出改进措施。
关键词:软件工程;项目驱动;工程实践;反思
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)02-0150-02
1 概述
软件产业作为信息产业的核心和灵魂,是极为重要的战略性产业,其发展水平直接关系一个国家的经济发展、社会进步和国家安全。我国政府已经明确提出了重点发展软件产业,大力推进国民经济和社会服务信息化的战略目标。目前,我国软件人才紧缺和人才队伍结构不合理,现有软件人才培养存在质和量问题,不能满足社会特别是信息产业和软件企业的要求。这已经成为制约软件产业发展的主要“瓶颈”。从人才培养质量这个角度分析来看,主要存在以下问题:(1)教学计划陈旧,课程内容与当前世界主流实践落后脱节,学生知识体系不能适应软件企业的需要;(2)教学侧重于理论介绍,缺乏实际案例。导致软件工程的基本原理、思想、方法和项目经验,成为空洞的概念和教条,学生不易学习和掌握,学习兴趣较低;(3)缺乏足够的软件工程实践。学生对软件工程原则和方法的理解只能来源于书本,不能掌握其精髓,无法达到预期教学目标;(4)缺乏系统的工程实践教学方案。
由此看出,现有软件工程教学模式已不能适应软件开发人才培养的需要。根据软件工程专业的培养目标,新疆大学软件学院根据软件开发产业的实际需求和国内外最新实践经验,对软件工程课程进行了教学改革,将项目驱动模式引入软件工程的教学实践活动中。
2 项目驱动模式的特点和优势
项目驱动教学法是一种建立在建构主义学习理论基础上的,有别于传统教学的新型教学方法。建构主义教学设计原理强调,学生的学习活动必须与任务或问题相结合,以探索问题的解决方法来驱动和维持学习者的兴趣和动机。“项目驱动”教学法的主要特点是“以项目为主线、教师为主导、学生为主体、注重实践”[2]。
在软件工程教学过程中,教师提出软件项目,引导学生按照软件工程思想,对项目开发过程分解成如干阶段。在项目研发过程中理解教学内容,并在解决问题过程中将“死”的理论知识变成“活”的知识和经验。项目驱动模式的关键在于 “学中做、做中学”,教师的作用在引导,不断引导学生学习理论,实践理论,在实践中理解理论,走“反复迭代,螺旋式上升”的认知路线。传统教学方式往往以教师为主体由教师进行理论讲解,忽视了学生在教学活动的“主体性”,造成学生学表面理解,实际不理解或者不会应用。抑制了学生学习主动性,限制了学生创造性发挥,不利于锻炼学生独立思考分析解决问题的能力。因此,项目驱动教学法能更好地激发学生的学习爱好和求知欲望,充分调动学生的学习积极性和主动性。不仅能培养学生自主学习、分析问题、解决问题的能力而且培养学生协作、沟通和团队合作能力。只有这样的人才才能满足当今世界软件行业的对软件人才的要求,才能适应当今高速发展,高度开放社会经济发展。
3 项目驱动模式在软件工程教学中的具体实施
在软件工程教学过程中,教师精心设计几个规模适中,知识技能覆盖广的项目,要求学生按照软件开发规范流程做出这个项目。学生分成不同项目组完成不同项目,项目组内人员分别模拟实际项目开发中的不同角色,项目完成后要进行评审和点评。
具体实施过程如下:
1)将一个班级全体分为若干个项目组,每组6-8人。项目组成员要进行角色划分。1名项目经理,1名技术主管,2名程序员,1名测试工程师,1名美工,1名文档和1名配置工程师。每个人都要参与编程和测试工作。项目经理负责和甲方(教师)沟通客户需求并在项目内部开发计划和管理工作。技术主管负责系统分析和架构设计以及核心功能攻关和对项目组内部成员培训和指导。
2)教师提供软件项目,分配或者各项目组自选题目。各组项目必须不同,以防互相抄袭。项目要规模适中,具有现实性,典型性和启发性。项目要给出明确工期和要求。
3)项目实施应在理论教学相关内容授完后进行,各组项目的实施应由学生相对独立地完成。教师用点拨方式进行指导,不参与具体工作,鼓励学生独立思考和实践。教师作为项目“甲方”,解答学生关于需求的咨询和进行项目阶段评审,推动项目的进行。
4)项目实施分为可行性分析、需求分析、架构和数据库设计,详细设计,编码和单元测试、综合测试等阶段。每个阶段应按时递交相应的设计文档。设计文档要符合软件文档规范,要采用主流设计和开发工具完成,如UML语言、MyEclipse、Rational Rose 和Power Designer等。
5)每个阶段由教师和项目经理组成评审组进行评审。评审具体如下:每个项目组委派一名同学进行“答辩”,介绍自己项目组工作任务及内容,展示工作成果。评审组进行提问,答辩人或具体工作完成人应答。最后答辩小组给出答辩意见,对于指出的问题,项目经理应组织项目成员进行整改。最后再次评审并通过后提交当前阶段所有文档然后才能进入下一阶段。
6)项目完成后组织验收。各项目小组提交项目文档,文档应包括:软件及其源代码和设计文档、软件部署和使用说明。然后教师和项目经理组成验收评审组进行验收。对于每个项目,项目经理总体介绍,技术主管介绍架构设计和主要技术。最后,老师根据评审小组意见选出最佳,并针对每个小组优缺点进行点评[3][4]。
在项目实施中要注意到以下方面:1)项目小组人员分配要得当。要求每组中都要有不同性别,不同民族,不同能力水平学生组成.各小组实力要均衡,成员要多样化。这样才能模拟真实开发团队和锻炼学生沟通能力。2)严格控制开发进度和资源分配,力求最大限度贴近实际开发。3)要严格按照实软件项目模板和规范,进行文档书写,培养学生文档编写能力。4)教师充当甲方角色,解答关于客户需求方面的问题。5)每个阶段都要进行评审,评审成员由各项目组组长和教师担任。这样不仅客观公正而且让学生在评审中认识到自身不足和学习其他项目组的优点,在下面工作中改进和提高。
4 项目驱动模式实施的效果
项目驱动模式在软件工程教学中的具体实施方法虽然操作过程繁琐复杂但效果非常显著。自2011年新疆大学软件学院软件工程课程进行教改以来,取得非常了好的教学效果,学生软件开发能力有了显著提高。近三年来学生在国内各种软件设计中取得非常好的成绩。在各种省部级软件设计大赛中,先后有4人获得一等奖或第一名;8人获得二等奖;32人获得三等奖。在中国软件协会和中科院软件所主办的首届《中科杯全国软件设计大赛》中有3名学生闯入决赛并获得三等奖。维吾尔族学生吾提库尔2012年10月参加了“中国移动MM百万青年创业大赛全国三年总评”,他的“优件师维吾尔文手机浏览器”最终获得了全国一等奖;成立了“优件师软件科技有限公司”。在学院支持下多名优秀学生注册了软件公司,承接了多项软件开发项目,其中“掌心科技”已成长为年营业额超过700万的新兴软件创业公司。实践证明,项目驱动模式在软件工程教学中的应用是非常成功的。学生在学习中比过去表现出更高的学习热情和更积极的学习主动性。不仅能按照软件工程学的理论、方法和技术进行软件开发,而且项目规划和团队协作能力有了显著提高。
5 反思
自实施软件工程专业人才培养教学改革以来,将“ 项目驱动” 教学法引入到课程教学实践中,取得了很好的效果,但在教学实践过程中仍存在一系列的问题有待进一步探究解决。
5.1 项目驱动在软件工程教学实施中存在的问题
项目驱动模式在软件工程相关课程教学中应用实施,经过4年的教学实践发现一些问题,主要如下:1)项目的设计和选取缺乏新意、项目过难或过易、综合性不强,任务的分解粒度存在不够细,不均匀。2)部分教师“双师素质”不强,掌控全局的能力不足,工程实践能欠缺。3)教学中教师指导作用不恰当,存在干预过多和指导太少问题。干预过多不利于学生充分发挥主观能动性,限制了学生创造性思维能力和沟通交流能力的提升;干预太少,没有及时发现学生项目进展出现问题,导致进度迟缓或者题目走偏,没有起到锻炼学生解决问题的目的。4)项目组成员分配缺乏合理性,组内成员构成缺乏多元化;小组长的领导力欠缺、工作积极性不高,小组学习气氛不热烈、不和谐,没有相互合作,各忙各的,出现两极分化严重。5)成绩评价不当。只重视小组平均成绩,不关注组员具体能力;重视明星小组,忽视平凡小组倾向,造成部分学生积极性受挫。
5.2 完善项目驱动教学模式的措施
针对项目驱动在软件工程课程实施中存在的问题,提出如下改进措施:
课程教学结束后,组织教师对项目进行讨论,按照知识点覆盖和难度值对现有题目进行评估,更新三分之题目,对保留题目难度做出调整,任务分解粒度保持一致。组织教师短期外出进修,引入软件公司担任客座教师改善和提高教师“双师”素质。加强教师和项目组沟通,每周定时讨论,持续关注各项目组进度和状况,及时解决存在问题。对项目组成员分配采用学生自由选择和老师干预相结合方式保持人员能力,男女比例和民族比例。对项目经理进行培训,明确任务,安排不同同学定期汇报,项目组成员参加讨论来解决学习气氛不热烈,参与度不高的问题。成绩评价中,对项目组组员进行绩效考核,考核由经理和组员共同开展。[5]
6 结束语
项目驱动模式在软件工程教学中的应用,其实质就是通过项目开发帮助学生理解和掌握软件工程的基本理论、技术和方法。在项目实践中学生通过参与软件开发的全过程,不仅锻炼和培养了需求分析能力、系统设计能力、编码能力、测试和维护能力、文档书写能力,而且也锻炼了在项目开发中沟通、协作和项目管理的能力。我们在实施过程中要不断总结经验,改进实施中存在的问题,不断调整、优化,这样才能真正发挥其优势,对培养高素质软件开发人才起到了积极作用。
参考文献:
[1] 张海藩. 软件工程导论[M]. 5版.北京:清华大学出版社,2008:2-5.
[2] 李伟波. 项目驱动式的“软件工程”教学模式研究与实践[J]. 中国电力教育,2009,139(8): 45-46
[3] 舒新峰,陈莉君.“软件工程”教学改革与实践[J]. 计算机教育,2009,89(4): 59-60
[4] 张奇. 项目驱动式教学在《管理信息系统》中的应用探讨[J].电脑知识与技术,2007,151(5) :874-875.
[5] 王玲.“项目驱动”教学法在高校室内设计专业教学实施中存在的问题及解决对策探析[J].现代企业教育,2014(24).