软件开发

注册

 

发新话题 回复该主题

基于企业开发平台的软件工程实践教学改革 [复制链接]

1#

0引言

软件学院自创立之初就是要以市场需求为导向,以培养具有国际竞争能力的高层次、工程型、实用型软件人才为目标[1],因此软件工程实践能力培养一直是软件工程专业本科生培养的一个重要目标。只有通过针对软件系统的工程实践,学生才能深入理解所学的软件工程知识,并应用相应知识解决复杂系统开发问题[2]。随着社会经济形态的发展,新工科建设更强调实践能力培养不断线,强调要重视产教融合、科教结合、校企合作的协同育人[3],以培养主动适应新技术、新产业、新经济发展的具有卓越工程能力的人才[4]。虽然校企合作及实践能力培养都不是新概念,但是如何创新地改革软件工程实践教学,使其适应新经济的发展则是一个需要考虑的问题。

1软件工程实践教学现状

当前对于软件工程实践教学,很多学校采用的都是项目式教学:学生在规定时间内以团队形式完成一个项目开发,老师为实践提供相应的指导并进行评价和考核。在这种项目或称为任务驱动的实践教学中,学生分阶段完成软件开发任务,直至最终完成一个软件产品。这种教学模式可以提高学生对软件工程过程的理解,且通过“做”项目培养学生的软件开发实践能力。基于这种项目式软件工程实践教学,存在不同的教学改革方向,总的来说包括两个方面。

1.1校企合作实践教学

虽然项目式教学可以培养学生的实践能力,但是只依赖学校资源的实践教学面临着两大问题:①学校教师缺乏足够的最新的知识和实践经验指导学生实践;②校内实践多采用模拟项目,缺乏企业实际项目背景,特别是与新产业、新经济结合的项目更少,这使得学生的实践能力和企业的需要有一定的差距。为解决这种不足,很多高校采用校企合作的实践教学,包括引入企业实际项目并将其裁剪后应用到实践教学中,聘请企业实战经验丰富的软件工程师参与实践指导以传授企业的实际开发经验,校企共建实践课程等方式。

1.2引入新开发模式和理念的教学

软件工程发展中产生了很多新的开发模式和理念,并且有些已成功应用到产业界。为使实践教学和企业开发实际更贴合,有些软件工程实践教学中就引入了这些新的开发模式和理念。例如,项目式开发从早期的瀑布开发实践模式到现在的敏捷开发、看板开发模式,软件工程实践项目从自拟虚拟项目、来自企业的实际项目到基于开源的项目。

经过以上改革的项目式软件工程实践教学确实在培养学生实践能力方面取得了新的突破,但其本质上仍然是基于小型学生团队的项目开发,这使得实践教学存在两个方面的不足。①学生难以通过小项目实践来理解企业大型复杂软件系统的开发过程。在新的经济形态下,软件开发越来越倾向于大的领域软件开发,涉及多人、多地域、多因素的开发。为更好地管理复杂因素影响的大型软件开发过程,企业在实际中往往是基于开发平台进行开发,以实现团队信息及时共享、多人在线协作。②云生态环境下,基于云的开发、代码托管、持续集成和发布都是现在企业软件开发实践的主流,但学校目前的项目式开发中缺少这种实践锻炼。

现有实践教学的这两点不足主要在于学校内的开发资源是不够的,没有专门的支撑软件开发过程的平台,也没有充足的云资源。缺乏一个整体的平台支撑全过程的软件开发,学生就无法体会在线协作、制品前后追踪关联等重要的实践环节。

2基于企业开发平台支撑的软件工程实践教学改革思路及实践过程

根据对业界知名IT公司的调研,目前国内大的IT公司都提供了成熟的软件开发平台,如华为的软开云、百度的效率云和腾讯的敏捷研发协作平台(TencentAgileProductDevelopment,TAPD)。这些工具都覆盖全开发流程,包括产品规划、项目管理、代码托管、代码检测、持续集成与交付等功能,让复杂的软件研发协作变得简单。这些工具都已经在很多企业推广应用以支撑企业的软件研发管理过程。

北京航空航天大学软件学院软件工程实践教学已开展多年,目前是学生团队以敏捷模式完成一个项目开发,除了完成最终的可发布的软件制品外,团队还要提交相应的过程文档,如用户故事、迭代计划等。为加强实践教学管理过程,可以开发一个实践课程管理协作平台,包括学生组队、团队报名、课程签到、成绩统计等功能。由于没有一个开发平台支持软件开发过程,团队无法协同工作。例如,开发用户故事时,团队成员集体讨论完毕只一人负责写用户故事文档。此外,开发过程中,各个团队对代码的管理方法也是迥异的,有的用Github,也有的用Subversion。为规范开发管理,拟定软件工程实践课程改革思路:引入知名IT企业成熟的软件开发平台支撑实践教学中的团队开发过程,一方面实现实践团队开发过程的可管理、在线协作、可视化等,另一方面使学生通过应用企业的开发平台,能更深入地理解企业实际开发模式和流程以及软件工程知识在其中的应用。

经过调研,年春季实践课程中引入腾讯的TAPD,因为其提供贯穿敏捷研发生命周期的服务,和我院现有的敏捷开发教学模式一致。此外,该平台界面简单易使用,且课程团队有老师专门提前参加了TAPD的培训,为引入TAPD作准备。

由于TAPD是针对企业组织的敏捷开发管理平台,显然其不具有教学管理需要的功能。为了成功地将TAPD引入实践课程中,并让其真正支撑各个团队开发,从而在软件工程实践课程中发挥作用,需要完成以下几个方面的改革。

2.1集成TAPD与课程团队现有的课程管理协作平台

TAPD中要实现对项目的管理,首先要创建项目并添加成员。软件工程实践课程中每个学生团队就是一个项目组。如果团队成员较多,那么一个个手工添加成员是一个烦琐的事情。此外,实践团队的形成是一个动态过程:学生提出团队申请,然后课程老师审核决定允许团队成立或者进行团队成员的微调,这些过程是在课程组现有的课程管理协作平台中完成的。课程中引入TAPD后不能增加学生工作量,让他们在两个平台中都创建项目团队,故首先需要进行课程管理协作平台和TAPD的集成,从现有课程管理协作平台中把创建好的团队信息直接导入TAPD中从而自动产生团队项目组织,然后学生登录TAPD进行研发管理。在实践开始前,课程团队须调研TAPD提供的API,并和腾讯TAPD研发组联系,最终实现这个集成工作。

2.2进行TAPD平台使用前的培训

使用平台支撑开发过程可以提高开发效率,但是对平台功能的掌握本身也是需要花费时间的。如果实践开始时才让学生学习TAPD的使用,显然会极大地影响实践效果,为此,应提前对学生进行TAPD平台的使用培训。此工作主要从3个方面展开:①在先修课程软件过程管理中讲述敏捷开发时简单介绍TAPD,使学生对TAPD先有一个感性认识,了解其对敏捷开发过程的支撑;②专门开发适合实践需要的TAPD培训课件,提前发布给学生供学生自学;③实践课程开始前再次进行“实践中常用的TAPD功能”培训,并简单介绍其他可用功能。以上3个方面的培训为实践中真正使用TAPD起到铺垫作用。

2.3确定TAPD使用重点并设计相关实践新要求

腾讯TAPD涵盖软件开发全过程,包括很多功能,然而,软件工程实践教学集中在两周内完成,时间紧张。如果把TAPD的全部功能都用上,那么学生团队实践中学习使用平台的时间就会占据很多,从而影响实践质量,这样就本末倒置了,因此此次实践重点

分享 转发
TOP
发新话题 回复该主题