以学生为主体开发商业软件项目的软件工程培养模式研究与实践
2020-06-21邵康徐传运李刚袁含香
邵康 徐传运 李刚 袁含香
摘 要:针对传统学生实践基地多依靠虚拟项目,对提高学生软件开发能力帮助有限的问题,本文提出了以学生团队为主体、开发商业软件项目的软件工程培养模式。基于客观需求、复杂多样的商业项目,为软件开发实训提供了真实工程环境。提出一系列项目管理方案和学生培养方式,弥补学生能力的不足,保证项目高质量完成,有效提高学生的软件开发能力。通过重庆理工大学的实践证明,该培养模式能显著提升学生的创新实践能力,并保持长期可持续发展。
关键词:培养模式;软件工程;学生团队;商业软件开发;实践能力培养
Abstract: Aiming at the problem that student practice traditionally based on virtual projects with limited help in improving students' software development capabilities, this paper proposes a software engineering training mode that uses student teams as a mainstay of developing commercial software projects. Based on objective requirements, complex and diverse commercial projects provide a real engineering environment for software development training. The paper puts forward a series of project management schemes and student training methods to guide students completing project with high quality, so to effectively improve students software development capabilities. The practice of Chongqing University of Science and Technology has proved that this training mode can significantly improve students' innovative and practical ability and maintain sustainable development.
Keywords: training mode; software engineering; student team; commercial software development; practical ability training
1 引言(Introduction)
随着计算机和信息技术的不断普及应用,软件的需求量也不断增加,科技信息社会的发展对软件开发人才的需求也不断增大。面临新工科教育的新时代和新形势,有必要强化学生的工程实践能力和创新能力,为企业和社会培养更多的核心型、技能型的高素质软件开发技术人才[1,2]。但目前,计算机软件专业学生的知识结构和应用能力与企业需求还存在较大的差距。
为缩短与企业人才的差距,基地组建学生团队开发项目,以提高学生软件开发水平。但仍然存在各种问题,例如:学生能力不足导致软件质量低、团队执行力不够导致开发进度难以控制、开发过程艰难导致学生挫败感强。本文针对实践过程中遇到的问题和难点,提出合理的创新实践方案与对策,制定科学的培养方式。从而保证以学生为主体的校内实践基地能持续健康的发展,保证项目能高质量的交付,保证学生有良好的实践能力训练的环境,来提高学生们的软件开发能力,为社会贡献高水平的软件开发人才。
2 以学生为主体的商业项目开发培养模式(The training mode with student-centered business project development)
高校为了锻炼学生的实践能力开设了一些实践基地,但是传统的实践基地模式和商业项目开发培养模式相比却略逊一筹,对于传统实践基地中的学生的能力得不到真正的提升,原因在于以下几点:(1)实践虚拟项目,学生得不到真实工程化的实践开发。(2)团队能力各有差异,学生水平参差不齐,师资力量不够。(3)缺乏合理的项目管理方案。
针对上述存在的问题,以学生团队为主体开发商业项目的培养模式正好解决了上述问题。如图1所示,该培养模式以提高软件工程专业学生的创新实践能力为目标,以商业项目开发为依托,模拟商业化开发环境,以阶梯培养模式为导向,渐进性培养学生开发水平。选取双师型导师(具有理論和实践“双能力”教师),根据团队角色和学生能力的不同组建的开发团队,并与企业进行合作,引进适合学生团队的中小型真实项目,创建一个商业化的真实项目环境,构建合理的项目管理方案,采用合适的项目开发模式,进而推动项目进程,最终顺利交付高质量的产品。
3 培养模式内容(Training mode content)
该培养模式通过以下方面保证项目顺利完成,同时又能真正培养学生的软件开发能力。组建开发团队是项目实施开发的基础,其好坏对项目成败有着至关重要的影响。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,是项目完成的关键。根据不同的开发团队的特点选择适合该团队的开发模式。项目管理方案是项目高质量按时交付的保障,帮助管理者指导项目的执行和控制。逆向CDIO模式能够保证项目在开发过程中渐进式地锻炼学生的开发能力和设计思维。
3.1 组建开发团队
软件开发团队是项目实施的基础,团队建设对项目管理有不可小觑的影响,所以选择合适的成员组建开发团队极为重要。该培养模式下的开发团队由指导老师和学生团队组成。要求具有较高的软件理论水平和较高的实践开发能力的指导老师,一方面确保学生能学习更多的理论知识,另一方面能够保证项目的开发进度并顺利交付成果。
根据成员角色和学生能力、特长来选择组建学生团队。选择成员上要考虑开发上的几种角色[3],基本上包括:(1)管理,包括项目经理和产品经理;(2)业务,需求分析师、系统设计师、测试人员;(3)技术,界面设计师(美工)、前端开发、后端开发。其次就是根据每个学生的能力来进行选择,一般选择能力互补的学生组成团队,能起到相互帮助、相互进步的效果。比如:选取大四能力强的学生担任项目负责人,大三同学主要参与业务组的开发,根据不同技术能力可选择不同的业务方向,可选择大二部分同学参与测试组进行测试学习,以此来组建一个高效的开发团队。根据业务与产品开发需要,合理预测一个团队规模,基于工作量的预测来配备团队大小,学生团队合理人数在6—10人。
在整個教学过程中,以学生为中心,由教师扮演组织者、指导者的角色,分配合理的项目任务,充分发挥学生的主动性、积极性和创新精神,使学生将当前所学知识有效应用到实际项目中去。
3.2 快速原型开发
在软件开发的过程中一定要明确开发的目的,根据不同的项目和团队组织来选用不同的开发模式。由于学生团队不了解行业发展和软件背景,用户需要直白明确地阐述项目需求,避免团队和用户间出现需求上的分歧,可利用原型模式保证一致的需求理解。
为保证需求分析阶段获得完整、一致、准确和合理的需求规格,学生基地采用快速原型模式[4],在获得基本需求规范后,通过快速构建原型来确定系统的雏形。构建好的原型向用户进行演示并获取用户的修改意见,不断了解并满足用户的基本需求,补充和完善需求描述,消除不一致的系统需求。通过修改迭代逐步确认,得到清晰明确的需求定义和用户界面要求,完成最终的原型设计。采用快速原型开发模式可以准确表达需求,能够及时地响应用户的需求变化,降低开发成本和风险,并缩短开发周期,从而尽最大可能避免学生团队因能力和经验不足导致商业项目开发失败的问题。
3.3 项目管理方案
由于学生能力的不足和经验的匮乏很有可能导致项目的失败或者延期,通过以下项目管理方案,来弥补学生的不足,确保项目的正常进行和交付。
(1)需求管理
一般情况下,学生实践基地通过校企合作,项目驱动的方式组织学生团队进行实践开发。但是学生开发团队往往缺乏项目的业务背景和行业经验,很有可能不了解用户的需求,导致需求分析不到位,从而在项目后期开发中出现大量问题。
因此在需求分析阶段,教师和企业方人员要相互沟通需求,进行系统分析和设计。团队核心成员也可加入其中,从而起到更好的领头作用。需求分析之后向开发团队进行需求讲述。最好通过情景描述,切身表达真实的使用场景,详细完整的表述出来。
(2)团队管理
由于学生有课程冲突不能按时参与项目开发,学生之间缺乏沟通进而影响团队决策等问题。团队管理上需要明确角色、权利、职责、能力。确定项目团队成员,保证团队成员能够胜任分配的角色和完成项目的各项工作及任务。团队管理上要做到分工明确、因人施用,发挥每个成员的能力,合理的协调团队内部各项工作。明确项目职责,确定项目负责人、系统开发师、系统设计师、系统测试师等角色,明确每种角色的任务和安排。
(3)开发管理
学生团队缺乏正式项目的训练,没有良好的开发素质,没有合理的开发和测试计划。所以团队需要确定开发规范、开发周期、开发技术和工具,按照统一的开发规范进行开发,包括统一界面风格、命名规范、设计规范、分层规范、测试规范等,保证项目的稳定性,促进团队合作,有助于代码审查,减少后期维护的困难。确定开发周期,保证项目进度。
(4)文档管理
由于学生对需求、方法、工具和技术理解不到位往往导致开发进度缓慢或者情绪低落。所以在项目开发的过程中,必须重视文档的管理,这也是学生实践基地比较欠缺的。建立需求、技术、设计文档,对后期的维护、升级都有很大的帮助。并且要注意文档的版本控制,保障系统开发的一致性。还能通过文档建立实践基地的一套知识体系,确定开发过程的每项工作,会对后期开发和新成员培训有非常大的帮助。
3.4 逆向CDIO模式
学生实践基地的建设,需要思考如何采用正确的培养模式才能锻炼学生在实践过程中获取工程化思维和实践性能力,采用CDIO模式培养学生工程实践能力、综合能力是很好的出发点。CDIO代表构思(Conceive)、设计(Design)、实施(Implement)和运行(Operate),以产品和系统的设计到实现完整周期为载体,提高学生的工程实践能力和综合职业素养,解决工程教育中理论与实践脱节的问题[5]。但考虑到学生基础较低,为保证基地建设,学生基地采用“逆向CDIO”的渐进式培养方式[6],结合学生自身特点,在学生进入实践基地不久能力尚缺时,通过加入项目软件测试初步了解项目开发。再等学生能力初步培养,有了一定的技术和综合能力支撑后,开始进入项目组,担任核心人员进行项目开发实践。当学生积累了一定项目经验,并对系统开发有一定了解后,教师需要引导学生进行产品的构思和设计。在需求分析和设计阶段可让学生进行思考,提出自己的想法。当有了一定的经验支撑和系统看法之后,学生提出来的想法也会相应成熟、贴近实际。
所以,逆向CDIO培养方式与项目开发过程相反,根据学生缺乏思考、但勤于实践的特点,可以通过“见闻广博”的方式,让学生从一无所知蜕变成有想法和构思的软件人才。通过先实践接触,再深入分析理解,以此培养学生的构思、设计理念。
4 商业项目实践教学体系的构建(Construction of practical teaching system for commercial projects)
商業项目实践教学体系以人才培养为目标,构建成以“商业项目”为理论定义,“阶梯培养、学为主教为辅”为理论架构,“应用型实践”为实践说明,将项目实践与学生培养紧密结合,进而全面提高学生的综合能力。学生实践基地通过引入商业真实项目,以项目为驱动,促使学生自主学习;通过学生自身特点,结合软件开发流程,建立一套适合学习实践的渐进式培养模式;通过将理论和实践相结合,以项目实践为基础,加强学生软件开发理解和综合实践能力。以培养出和企业要求相符、综合应用实践能力强的高素质人才。
4.1 商业项目
学生实践基地与企业合作,引入适合学生开发的真实商业项目。选择中小型项目并且系统安全性和技术难度不高的项目,以学生发展和企业人才需求为导向,创建一个工程化、商业化的真实项目环境[6]。这样能够有效地提升学生们的软件设计、开发水平,让学生能够更早熟悉企业开发流程,能够更好地缩小学生与企业所需人才之间的差距。为增强企业的参与度,加强实践基地建设,构建合作企业培训教师队伍,委派技术人员定期为学生进行指导培训。加强校企合作的沟通,让企业作为项目合作的引领者,实践基地作为项目合作的实施者。通过企业实践技术指导和教师的理论指导,不仅能够构建校企合作的良好生态,达到校企双方互利共赢的局面,在企业和指导教师的“双培训”下[7],还能让学生更好的将理论联系实际,并运用到真实项目中。
4.2 阶梯培养
如图2所示,项目实践在学生阶梯式培养中的应用将根据学生每个时段不同能力的划分,采用“大一选拔、大二强化、大三实践、大四帮带”的阶梯培养[8]。以年级和专业划分阶段,对学生团队进行阶段培养:(1)在大一的时候对本院学生进行面试选拔,选择能力强有责任心的学生引进学生实践基地。(2)在大二的时候可根据专业选择学生不同的开发方向,如美工设计、前后端开发、系统测试,并在此期间对学生进行基础的专业知识和技能培训,主要由高年级的同学对低年级同学进行知识的传授,既能巩固高年级同学的知识储备和沟通能力,同时高年级以自身经验对低年级同学能进行更贴近实际的教学。(3)在大三期间划分项目小组,所有成员进入项目组,将理论知识投入真实的项目实践中;在项目开发前,可选择能力强、有领导力的一两名同学担任学生团队的项目负责人;在真实的项目开发中,学生不断积累能力和技术,提升自身水平。(4)在大四的时候,学生已经积累了基本的开发技能,可选择一部分学生参与项目组担任负责人带领低年级同学开发,并一部分组成授课小组对低年级学生进行知识讲解。
4.3 教为辅、学为主
该模式是主要由学生为主、教师为辅的培养模式,教师作为指导者,主要参与需求分析阶段,帮助团队梳理需求并指导原型的设计,其次参与每个阶段的评审,帮助学生解决拿不准的问题。其他时间教师只需和企业项目联系人采取沟通,商量下一阶段需要完成的任务,保障项目各个阶段的顺利完成。
学生作为主体,需要不同程度地参与项目开发的每个阶段:(1)需求和设计阶段参与是以“听”为主的策略,可提出自己的想法,主要学习教师在需求和设计阶段是如何分析并实践的,学习其中的想法和思路,拓展自己的理论知识库。(2)在编码和测试阶段参与是以“做”为主的策略,根据最终的原型和美工设计的统一样式,全身心投入编码阶段。在这一阶段教师应根据团队的开发规范,定期进行代码审查。
(3)在测试阶段,组成不同的测试小组,进行黑盒和白盒测试,并根据测试结果,完成测试报告;可发动本团队和其他团队学生志愿参与测试阶段,由测试组长带头,根据业务流程统一进行功能测试和压力测试,每个志愿者将问题拟写成文档交由项目测试团队,最终形成正式的测试报告;项目团队再根据测试文档,进行完善修改。(4)在最后的上线、运维、管理阶段,教师和学生项目负责人与企业进行对接,确保最终阶段的顺利完成。
4.4 应用型实践
该模式下培养大量应用型本科人才,面向未来软件发展方向,以学科为依托,应用型教育为基础,社会人才需求为导向,培养应用实践型人才。应用型本科人才的培养核心是面向应用实践的教育,在教育目标上,要求学生具备应用理论知识解决实际问题的能力;在教育内容上,要求人才培养与市场需求实现高度同步;在教育方法上,要求教学实践中理论教学和实践教学相统一[9]。以实践教育为核心,强调动手能力和解决问题的能力,通过先实践,奠定技术基础,再支撑理论构思。实践项目教学模式,要求学生积极参与。其中最为重要的一点是如何让学生自觉主动参与,在大一的时候就进行相应的实践基地文化宣传,让学生萌生渴望加入的想法。当学生参与实践中,教师应鼓舞学生,充分调动学生的积极性。学生通过实践项目开发过程,不断积累项目开发经验,提升软件开发和设计水平。在开发过程中,学生通过成员间的沟通和协作、文档的组织和编写、时间安排等提升综合素质和职业能力。商业项目的开发,能让学生了解企业开发现状、行业发展趋势,让学生达成企业应用人才的要求。学生在开发过程中掌握更多的知识和工具,将理论与实践联合,解决开发中的实际问题,不断提升创新和实践动手能力。
5 实施效果(Implementation effect)
实践基地克服了建设过程中的大量困难,其中最大的困难还是学生自身:(1)学生初入实践基地时,没有明确目标,这时老师应该为学生树立以提高自身水平发展为目标,再经高年级学生指导新生掌握基本的知识要点,明确每个阶段学生需要达到什么目标;(2)学生开始实践项目情绪波动大、开发较困难,正如万事开头难,这时就需要高年级学生和老师一起为这些学生讲解项目实施的整体流程,梳理一个清晰的开发步骤;(3)学生课程和项目的时间冲突,学生不光要完成基本课程,同时还需要参与项目的开发实践。所以选择大三同学担任项目实践开发的主体,因为此时专业课学习正好能和项目开发较好结合,并且已有一定的理论基础,如果指导教师能合理安排项目开发任务,督促学生课余时间按时完成,就能较好地确保项目开发进度。
以学生为主体开发商业软件项目的软件工程培养模式的实施,获得了显著的效果:(1)从实践基地本身来看,搭建了實践学习平台,形成了一套科学的创新实践教学体系,并以独特的教育培养模式,为学生教学培养提供了较好的案例,更为社会输送了更多软件技术性人才。(2)从项目实践来看,项目在教师和学生的共同努力下高质量完成,并且能按时交付,客户普遍反响良好,并且成功实施了各种真实项目。
(3)从学生培养来看,学生的综合实践能力、团队协作和沟通表达能力也明显提升,与企业所需人才之间的差距逐渐缩小,提高自身就业竞争力,其毕业生就业效果显著。(4)从校企双方来看,促进校企双方进一步合作,校方明显提高了就业率和考研成效,企业方获得了教育资源和人才资源,校企双方互利共赢。近年来,团队每年有数十人进入阿里、腾讯、百度、小米等互联网科技公司,学术竞赛中团队每年获奖数十项,考研成功率也远高于非团队成员。
6 结论(Conclusion)
信息技术飞速发展的当下,急需大量软件高素质人才,而大学生软件开发能力与企业要求差距甚大。本文针对学生实践基地存在的问题,提出了以学生团队为主体,开发商业软件项目的软件工程人才培养模式。通过组建一个能力互补、善于沟通、分工明确的学生团队,选择双师导师团队合理安排项目,推动项目进程。构建商业化的工作环境,让学生熟悉商业开发过程,能有效提高开发效率。采用适合学生团队的快速原型开发模式,并建立一套合理的项目管理方法,顺利完成项目开发,避免学生开发经验和开发能力不足的问题。该模式以学生为主体,增加学生的项目参与度,通过商业项目和逆向CDIO模式,培养学生的实践开发能力,培养构思和设计理念,培养具有良好软件开发水平和创新实践应用型人才。重庆理工大学软件工程专业人才培养的实践证明,这一模式具有较强的推广应用价值。
参考文献(References)
[1] 张小川,周龙福,凃飞,等.面向新工科的软件工程专业实践教学模式的探索[J].软件工程,2018,21(3):60-62.
[2] 周艳聪.“新工科”背景下计算机类实践教学探讨[J].软件工程,2019,22(5):60-62.
[3] 胡嘉欣.软件项目管理之高效团队合作[J].通讯世界,2017(18): 247-248.
[4] 石研.快速原型模型[J].中国科技博览,2010(6):81.
[5] 潘益婷,潘修强,钱冬云,等.CDIO理念下的软件技术专业产教融合人才培养模式探索与实践[J].软件工程,2019,22(1): 60-62.
[6] 徐传运,张杨,李刚,等.本硕联动的软件工程实践教学基地建设方法研究[J].计算机教育,2020(02):91-95.
[7] 陈琳琳,帅辉明,朱娴,等.基于校企合作的独立学院计算机专业人才实践体系研究[J].软件工程,2017,20(7):45-47.
[8] 徐传运,李刚,张杨,等.软件工程专业“本硕联动”实践基地建设[J].计算机教育,2017(05):145-149.
[9] 杨小劲,张亚红.软件工程专业应用型人才培养模式探索[J].教育观察(上半月),2016,5(12):62-65.
作者简介:
邵 康(1998-),男,本科生.研究领域:软件开发,计算机应用技术.
徐传运(1979-),男,博士,副教授.研究领域:软件工程,智能计算.本文通讯作者.
李 刚(1968-),男,博士,教授.研究领域:软件工程,人工智能.
袁含香(1995-),女,硕士生.研究领域:软件工程,智能计算.