来源:华盛论文咨询网时间:2019-09-12所属栏目:科技论文
摘要:《软件项目管理》是软件工程专业本科学生的必修课,本文针对该课程教学中存在的知识体系复杂、内容抽象、学生缺乏兴趣等问题,将传统的软件项目管理理论知识与当前互联网行业软件开发的特点相结合,对该课程的教学方案进行了改革,提出一种能有效调动学生学习兴趣、提高学生实践能力的敏捷软件项目管理教学方案。本文对新教学方案的内容、实施过程、经验教训等进行了深入探讨。
关键词:软件项目管理;敏捷;课程教学;教学方案;教学改革
0引言
软件项目管理课程是软件工程等计算机软件相关专业本科的专业必修课,旨在培养软件项目管理人才,使学生掌握软件项目管理的基本理论,熟悉软件项目管理的方法、流程和工具;培养学生在软件开发组织中管理软件开发项目的基本能力,并将软件项目管理的理论应用于软件项目实践,提高分析、解决问题的能力。软件项目管理课程的开设对培养具有实践和管理能力的软件开发人才具有重要的意义[1]。
然而,当前软件项目管理课程教学中普遍存在“教学难度大、教学效果差”的问题。一方面,由于软件项目管理知识体系庞大,包含大量指导软件项目开发过程的原理和方法,对缺乏实践经验的本科学生来说枯燥且难以理解。另一方面,软件项目管理课程中涉及的案例脱离现实,以方案设计为主的实践环节又具有很强的主观性,大多数学生敷衍了事,很难达到实践效果[2-5]。鉴于以上两点,软件项目管理课程的理论方面和实践方面都无法达到学习目的,使学生逐渐失去学习的兴趣和信心。久而久之,大多数学生把软件项目管理课程当作最不实用的课程之一。脱离实际的教学内容和方法导致了学生对该课程的错误认识,因此,对软件项目管理课程进行教学改革刻不容缓。
如何将传统的理论知识与当前互联网行业软件开发的特点相结合,利用有限的课时最大限度调动学生的学习兴趣、提高学生的实践能力,是我们进行教学改革的出发点。在过去的一个学期中,笔者结合自身7年企业软件开发经验,针对本学院软件工程专业软件项目管理课程进行了教学改革实验。本文对软件项目管理课程的教学内容、教学方式、考核制度等方面进行了详细阐述,形成了一套符合当前互联网行业软件产品开发规律的、让学生真实体会软件产品迭代过程的敏捷软件项目管理教学方案。
1教学方案总体设计
软件项目管理课程面向软件工程专业高年级学生,他们基本掌握开发语言、数据库、操作系统等专业基础知识,并且已经学习过《软件工程》、《软件设计与体系结构》等课程,基本了解并掌握软件工程知识体系中包括的软件需求、软件设计、软件开发、软件测试、软件维护等内容。就笔者所在的学校而言,学生在学习软件项目管理之前,甚至已经学习过前端基础、Web开发等课程,基本具备组队进行软件产品开发的能力。因此,本教学方案的设计思路是让学生在学习软件项目管理理论知识的同时了解当前使用最广泛的、符合现代软件产品发展特点的迭代式开发方法,通过开发一个具有一定规模的软件产品来体会产品迭代、团队分工合作、软件项目管理的真实过程。为加大实践力度,本方案制定了理论知识与实践能力并重的考核体系,将软件开发过程及其产出作为实践环节的考核指标,并引入了组内互评制度。
1.1理论教学环节
在企业中,很少专门招收项目管理专业人员担任项目经理,被任命的项目经理主要是在技术上能独当一面的技术人员或能正确把握产品发展方向的产品人员,而他们往往缺乏项目管理方面的知识。因此,作为未来互联网软件行业的专业人才,应该具备一定的软件项目管理知识。本方案的主要目的是使学生认识到软件项目管理的重要性和必要性,从工程化角度理解软件项目管理的相关知识领域和管理过程。
在理论教学方面,将传统和现代有机结合,使教学内容在稳固的理论基础上与时俱进,灵活讲述PMBOOK的知识领域和管理过程[6-7],对目前企业中较少使用的知识和工具只做简要介绍,重点培养学生的项目计划意识、项目管理意识和团队沟通意识[8-9]。教学内容安排见表1。
理论教学内容共12讲,每讲传统内容后面紧跟与之关联的现代内容,传统内容与现代内容交替讲授。如第3讲“范围管理、进度管理”之后是第4讲“需求获取、产品规划”[10-11]。理论教学仍然采用案例教学法。根据当前互联网产品的特点,以学生最熟悉的“微信”为案例,通过讲述微信的发展史及其版本迭代历程,使学生理解敏捷开发和敏捷团队管理的流程,激发学生的学习兴趣。
1.2实践教学环节
目前互联网产品具有“关注用户行为、快速响应用户变化、需求不确定性高、追求创新”的特点,这对软件开发和软件项目管理提出了新的要求。传统软件项目管理中使用的工具和方法在很多场合下都已不再适用,如以前在该课程实验中要求学生学习和使用的MS-Project,现在的企业很少使用。只有快速迭代,才能保持产品在市场竞争中的活力。因此,本方案要求学生按照Scrum敏捷框架的工作流程进行迭代式软件产品开发,使用当前流行的、适合敏捷开发方法的工具开展软件项目管理工作。实践环节具体包含以下步骤[12-13]:
第1步,学生自愿组建团队,4-5人一组;成立项目小组,确定团队成员分工:项目负责人、研发负责人、测试负责人各一名;制定代码规范、测试用例规范等团队合作规范。
第2步,确定产品构想和产品原型;进行技术选型和概要设计;制定版本规划和迭代方案。
第3步,召开版本1的迭代会议;执行迭代计划,对版本1进行设计、开发、测试和部署。
第4步,完成版本1,接受组外测试。
第5步,召开版本2的迭代会议;执行迭代计划,对版本2进行设计、开发、测试和部署。
第6步,完成版本2,接受组外评价。
第7步,召开版本3的迭代会议;执行迭代计划,对版本3进行设计、开发、测试和部署。
第8步,完成版本3,展示产品现状与远景,总结软件开发过程的经验与教训。
在Scrum框架中,每次迭代称为一个Sprint,Sprint的长度一旦确定,将保持不变。Sprint的产出是完成的、可用的、潜在可发布的产品增量[11]。本方案安排了3个Sprint,每个Sprint周期约为2周。实践环节的每个步骤都要求学生以团队为单位提交过程文档或代码,具体产出要求见表2。
每一次迭代都包含了制定项目开发计划、跟踪控制项目执行、组织和执行软件测试、项目验收等传统的软件项目管理活动。学生在实践中体会到理论应用于实际的踏实感、逐步完善产品的成就感,不但激发了学生的学习兴趣,而且又在反复实践中加深了对软件项目管理知识体系的认识和理解。
1.3考核制度
长期以来,我院的软件项目管理课程的成绩由两部分组成,一部分是闭卷考试的期末考试成绩,占总成绩的70%;另一部分是平时成绩,占30%。平时成绩由上课出勤情况、作业完成情况、实验情况组成。这种传统的考核方式无法充分反映学生解决实际问题的能力,学生往往通过考前集中复习来应付理论考试,间接上造成了很多学生动手能力差的后果。
课程考核的目的是检查教学效果、总结教学经验。教学效果不但取决于教学内容,还受到教学中的激励、过程控制以及考核方式的影响[13]。科学而符合教学规律的考核制度有利于教学质量的提升。本方案加大实践环节在评分中的比重,使理论知识与实践能力比重相同,并引入了多维评价机制。
1.3.1理论与实践并重
理论知识方面主要考察学生对项目管理知识以及敏捷开发方法的理解,实践能力的考核指标为各个实践步骤的产出(见表2)。具体考核内容及比重见表3。
1.3.2多维评价机制本方案引入了多维评价机制。从表3中实践能力的各项考核指标可以看出,除了教师对每个团队的软件开发及团队合作过程和成果进行评价之外,本方案还使用团队内部学生之间的互评作为考核指标[12]。
在组内互评中,主要考量的是团队成员的团队活动参与度和对软件产品的贡献度,具体是指让学生对自己的队友从三个方面进行评价:工作态度,主动性;协作精神,互补互助;工作量,贡献度。组内互评环节设置在课堂上进行,教师制作网页表单供学生限时提交,避免学生因碍于情面而无法对队友作出客观真实的评价。
2教学方案实施过程
在本校软件工程专业学生的培养计划中,软件项目管理课程为52个学时。在过去的一个学期对该课程的时间安排是:每周2次课,每次2个学时,理论学时与实践学时交替,最后两周的上机为每次4个学时。课程具体内容及课时安排见表4。
在各版本迭代计划执行过程中,实践课上主要是对各项目小组出现的问题和遇到的困难进行讨论分析,大部分开发、测试工作需要学生在课后进行。在本教学方案实施过程中,教师和学生都需花费大量的课外时间。教师在课堂上对每个实践环节可能涉及的理论知识进行重点讲解,还有很多相关知识需要学生在课后自学和探索,如敏捷框架、原型制作、测试方法、测试工具、部署工具、版本控制与配置管理工具等;教师在课堂上引导学生展开讨论与交流,还有很多问题需要团队成员之间不断沟通才能解决,如成员分工、时间冲突等问题;教师在课上和课后对学生的文档和代码进行指导和检查,督促和激励学生在保证产品质量的前提下按照版本计划完成任务。
3实践成果与经验教训
该方案的实践效果是非常明显的。经历了一个学期的团队项目实践,从产品规划到项目部署,学生在做的过程中不断学习,逐渐找到适合自己的角色,补充该角色应该具备的知识和技能,为毕业后选择合适的职位积累了宝贵经验。每个学生在本次软件项目管理课程中充当了软件项目管理师、软件设计工程师、软件研发工程师、软件测试工程师、软件运维工程师、产品人员等一或多个角色,在团队协作中发挥了一定的作用。很多学生把这次实践经验写在自己寻找实习岗位的求职简历中;还有些团队的项目仍在继续,如作为社团的工作平台、为师生提供便利的小应用、大学生创新创业项目等,这都是本教学方案行之有效的有力的证明。
本教学方案对教师和学生都提出了较高要求,在实施过程中也出现了一些问题,如少数学生主动性较差、团队成员分工不均、部分项目迟迟无法交付、学生能力差距大等。通过对方案实施过程中遇到的问题进行整理和思考,收集学生意见和建议,总结有以下四个方面的问题需要重点关注[14-16]。
(1)教学资源准备和平台搭建
在本方案的理论教学环节,笔者将传统内容与现代内容相结合,讲授了很多符合当前互联网产品开发特点的理论、技术和方法。而这些内容是分散的,还没有进行过系统的归纳和整理,还没有形成教科书式的范本。应该建立一个线上学习平台,方便学生在线学习和交流。搭建在线学习平台,让学生按照教学计划、结合自己的实际情况随时随地地学习理论基础,将有限的课堂时间解放出来,用于教师和学生以及学生和学生之间的深度互动,讨论重点和难点问题。更进一步地,还可以加入在线提交作业、在线评价等,建立一整套的翻转教学模型。
(2)项目选题
学生在自主选择项目时,往往有些学生选择一些教科书上常见的、功能既定的系统来实现,如图书管理系统、人力资源管理系统、仓库管理系统等。面对这些缺乏用户场景的项目,学生无法设身处地地挖掘产品需求,无法保持对产品进行持续迭代的热情。而与此同时,课程中涌现出一大批面向在校学生的、具有实际价值的Web项目,如校园二手书市场、社团联合平台、讲座发布平台、活动抢票系统、校园跑腿等。开发这些项目的团队从解决实际问题出发,收集需求和改进意见,在迭代过程中不断完善项目,在锻炼自身能力的同时也赢得了其他团队的认可和尊重。因此,建议学生选择面向真实用户的、具有现实意义的Web应用。
(3)团队组建
学生自愿组建团队,由4-5人组成。团队内要确定产品、研发、测试角色,确保各实践步骤的产出有人负责。自愿组队经常会出现两种现象:同层次的学生结成一个团队,个别学生没有团队;同宿舍的学生结成一个团队,软件工程专业女生偏少,女生被孤立成一个团队。针对这两种现象,建议教师在学生自愿组队的基础上加入少量调整:一是根据个人意愿将女生分散到不同团队;二是将个别不能成团的学生安排入团队,并给出适当的工作建议。还有一些团队由于成员能力不足,无法完成3各版本的迭代。教师应该在阶段性检查中逐步了解到各个团队的能力水平,并对其产品规划、技术方案等提供建议。
(4)对学生的激励
如何调动学生积极性,让学生能够持续地学习并完成版本迭代,是本方案实施过程中遇到的最大困难。首先,要紧跟时代,力求实际。让学生认识到目前知名互联网企业开发软件产品就是以这种“小步快跑、快速迭代”的方式进行的。以现有的好的互联网产品为例,引导学生使用、观察和思考,从用户的角度体会好的软件产品应该具备的特征。其次,要鼓励学生分享和互动。在当前互联网生态下,很多知识和工具都来源于他人的分享,每个人在分享的同时也会使自己理解更深、学到更多。鼓励做得好的团队分享自己的创意和成果,不但为其他团队树立了学习的榜样,而且使自己的工作更有价值,能起到相互激励的作用。教师要帮助学生解决问题,鼓励学生将遇到问题的抛出来,在讨论中更好更快地解决问题。
本教学方案同时也是对教师的巨大考验,它要求教师即具备较强的理论知识又有丰富的实战经验,并能够结合互联网产品的发展不断改进教学方案。只有通过自身的不断学习、不断思考,理论与实践相结合,才能设计出符合现代发展要求的软件项目管理教学方案。
4结论
本文给出了一种敏捷软件项目管理课程教学方案,目的是使学生了解和掌握现代软件项目管理的方法和流程,让学生在实践中体会和掌握项目管理的理论知识,培养学生在软件开发中管理软件项目的基本能力,使学生掌握规范化的软件开发和质量控制过程,培养良好的团队合作能力和实践能力,为日后从事互联网行业软件开发相关工作打下坚实的基础。只有紧跟时代步伐,不断进行教学改革和创新,才能培养出适应互联网发展的高素质、复合型人才,帮助学生在职业发展的道路上走得更高更远[17]。
参考文献
[1]张永平,刘燕,邵星.“案例驱动+项目实践”的软件项目管理课程教学实践[J].计算机教育,2015,23:115-119.
[2]韩万江,姜立新.软件项目管理案例教程[M].北京:机械工业出版社,2009.
[3]PankajJalote.软件项目管理实践[M].北京:清华大学出版社,2005.
[4]韩万江,张笑燕,陆天波,等.软件工程专业认证的新思路研究[J].软件,2015,36(3):37-40.
[5]李娜.浅谈软件工程技术发展[J].软件,2014,35(3):204-205.
[6]BobHughes,MikeCotterell著.廖彬山,周卫华译.软件项目管理(原书第5版)[M].北京:机械工业出版社,2010.
[7]许江林.软件项目知识体系指南:PMBOK指南[M].北京:电子工业出版社,2013.
[8]钱瑞胜.软件项目管理现状与对策分析[J].企业科技与发展,2013,10:117-118.
[9]韩万江,张笑燕,陆天波.《软件项目管理》课程中理论与实践的交融关系[J].软件,2014,35(2):165-168.
[10]AndrewPham,Phuong-VanPham著.崔康译.Scrum实战—敏捷软件项目管理与开发[M].北京:清华大学出版社,2013.
[11]邹欣.构建之法—现代软件工程[M].北京:人民邮电出版社,2015.
[12]刘强,陈越,骆斌等.“软件工程”课程教学实践方案[J].中国大学教育,2011,2:41-44.
[13]付雄,王汝传.“软件项目管理”课程的教学实践与思考[J].计算机教育,2009,21:55-56.
[14]韩万江,张笑燕,陆天波.基于混合式教学的软件项目管理课程建设[J].大学教育,2015,10:161-162.
[15]雷文育.关于如何创新和完善计算机软件工程管理的探讨[J].软件,2013,34(10):46.
[16]王妍,高仲合,倪建成.平行实验在《软件工程》教学中的运用[J].软件,2015,36(12):35-37.
[17]邓一星.软件工程专业校企合作形式的探索与实现,2016,37(8):54-56.