浅谈高职开设软件开发真实项目实践课程的困难与化解
2018-05-14方明清
方明清
[摘 要] 在高职院校开设软件开发真实项目实践课程后,将面临真实软件项目的来源、课程体系如何设计才能让学生的理论基础和软件开发能力达到真实项目的要求、教学过程如何组织才能达到真实项目的业务要求、投入实际生产运行后系统维护等多方面困难,对这些困难进行分析,并给出化解的合理建议。
[关 键 词] 软件开发;真实项目;实践课程;高职
[中图分类号] G712 [文献标志码] A [文章编号] 2096-0603(2018)18-0142-02
一、高职开设软件开发真实项目实践课程的困难
软件开发人员在人才市场上很受欢迎,薪酬也相对较高,但同时企业招聘时对软件开发人员的职业岗位技能要求也高,既要求计算机软件理论知识,又要求一年以上的工作经验,这对高职在校学生来说是一道入职软件开发岗位的高门槛。如果高职院校开设软件开发真实项目实践课程,引进真实的软件开发项目,由教师带领学生遵循软件工程规范,基于企业真实工作过程,通过项目导向、任务驱动来完成项目,将可以大大改善在校学生对软件开发实际工作经验的不足,满足企业对该职业岗位的技能要求,甚至实现零距离就业上岗。
但是在高职院校开设软件开发真实项目实践课程面临很多方面的困难:(1)真实软件项目的来源有困难;(2)开发真实软件项目对学生的理论基础和实际动手能力要求很高,课程体系如何设计安排才能达到真实项目实践课程的要求有困难;(3)真实的软件项目开发完成后是需要投入实际生产运行的,教学过程如何组织才能达到真实项目要求的技术水平有困难;(4)投入实际生产运行软件项目由谁来维护及如何维护有困难。
二、困难分析与化解
(一)真实软件项目来源的困难分析与化解
市场上承接大中型软件开发项目必须通过公开招标才能获得,小型项目通过在双方互相比较了解或通过中间人介绍的情况下可以直接承接,在教学中通过承接真实软件开发项目来进行教学也不例外。与此同时,项目建设单位必须在足够信任承接方有能力的前提下才会将项目交给承接方来完成,在学校这种环境下,一方面要求教师有丰富的项目管理与开发经验,另一方面最好能提供成功的案例来印证。大中型软件开发项目一般对技术和技能要求高、功能模块多、业务逻辑复杂,开发周期也长,但是学校一门课程的学时数是有限的,所以应该选择小型软件开发项目作为学校真实项目实践课程完成目标。
小型真实软件项目来源可以多种多样:从网上竞标;老师横向承接企业真实项目;学生渠道对外承接来的企业真实项目;学校内部项目,比如学校职能部门应用系统、各个二级学院网站、个性化的精品课程网站、个性化的教学资源库网站、各类教学科研实训管理系统等。这些外接的真实软件项目,可按开设课程的成熟度来逐步增加承接项目的难度。在课程开设初期的时候,最好先承接学校内部项目,这样的项目前期沟通、需求调研都在校内,省时省力的同时,学校软件系统的业务需求对老师和学生来说比较熟悉,容易上手;当课程开设有几个学期后,软件开发管理流程与开发技术框架都逐渐成熟,可以考虑向校外横向承接企业真实项目;最后课程非常成熟,既能够保证开发时限,又能够保证开发质量的时候,就可以承接完全商业性质的横向软件开发项目来实施教学。
(二)相关课程体系设计的困难分析与化解
高职院校的课程体系设计可遵循:企业调研→职业岗位群分析→核心岗位职业能力分析→典型工作任务分解→课程学习领域设计→学习情境设计→学习任务设计这样的思路来进行。通过企业调研以及核心岗位职业能力分析,可以发现软件开发工程师至少有以下的任职要求:大专或以上学历要求,熟练掌握一门或以上的程序设计开发语言,熟悉常用的设计模式,熟悉常用的开源框架,熟练掌握一门或以上的数据库等。如果要承接真实软件开发项目,对团队管理人员及项目成员的要求就更高了,除需要软件开发工程师之外,还需要项目经理、系统分析师、系统架构设计师、软件测试工程师等角色。在软件真实项目实践课程开设的初期,管理与技术均不很成熟,为保证真实项目能保质保量如期完成,老师肩负着重大的责任,可能需要担当多种角色,老师的项目管理能力、系统分析能力、系统架构设计能力对真实项目的成功起决定性的作用。
为保证真实项目实践课程的顺利开设,应设计好相关的课程体系,可按分析出来的软件开发工程师的岗位职业能力要求,将软件程序设计基础、软件程序设计进阶、数据库原理与应用、软件开发模拟项目实践、软件开发真实项目实践等课程打包成一个课程包让学生选修或必修,并将课程分散到不同学期去完成,循序渐进逐步深化教学目标。其中软件开发模拟项目实践课程可将已经开设的软件开发真实项目实践课程中完成的真实项目作为模拟项目来教学,使学生在进行真实项目软件开发之前,就可以熟悉并掌握在真实项目开发所需要掌握的数据库、开源框架以及设计模式等。对高职院校来说,真实项目实践课程最好安排在第五学期进行,因为专业基础课和大多数的专业核心课程都在前面四个学期开设了,这个时间点上学生的理论基础和软件开发技能都相对比较扎实了。
(三)教学组织的困难分析与化解
真实软件项目实践课程的教学组织与普通课程的教学完全不同,因为是真实项目,所以必须按照企业真实项目的软件開发流程、完全基于真实工作过程来进行组织和实施。在项目立项、项目小组的组建、项目调研、需求分析、系统设计、软件开发编程、软件测试、售后服务等方面按教学要求进行重新设计,并从真实的成本、质量、时间、范围、人力资源、采购、沟通、风险等全方位考虑,根据软件系统的特点选择适合的开发模式。
常见的软件开发模式有:瀑布模型、迭代模型、螺旋模型、喷泉模型、敏捷方法、原型化方法等,在课程开设初期各方面不够成熟,承接项目规模小,需求可能多变,采用敏捷方法可以达成快速反馈、及时调整的目标,同时在系统开发初期结合原型化方法,根据用户初步需求,利用系统开发工具,快速建立一个可以互动操作的系统模型给用户进行演示,在此基础上与用户交流。原型法有以下几个方面的优点:可以降低开发风险,加快开发速度,获得较高的综合开发收益;提高用户参与程度,增加用户满意程序,提高项目成功率;用户参与了开发的设计过程,对系统功能和结构比较了解,更容易接受,有利于系统后期运行和维护。敏捷方法体现了以人为核心、迭代、循序渐进的思想,针对传统瀑布开发模式的缺点进行了改进,将一个软件系统项目分为多个相互联系、独立运行的小项目,每天项目组开发完成后必须保证软件一直处于可使用状态。
在教学的组织上,根据承接的项目数量及项目规模大小,根据全班学生数量,将项目进行分配,为了保证项目的质量,同一个项目必须有两个或以上的项目小组来同时进行开发,待项目完成后择优选择进行交付。同时需要安排学生担任项目中的不同角色,如,项目经理、系统分析师、系统架构设计师、软件测试工程师等,同时因为是真实项目,所以整个软件开发项目的生命周期,授课教师必须全程参与,在项目进行的各个阶段指导学生,包含需求分析、系统设计在内,只有这样才能做到对项目全过程的监控,才能做到按质按量如期完成。另外,由于课时数的限制,仅靠课堂上的一点点时间是完全不够的,所以真实项目实践课程几乎绝大多数工作量只能通过学生课外完成,上课时间则由项目小组上台演讲、小组互评、教师点评和优化指导,全班学生共同探究、一起进步。
(四)系统运维的困难分析与化解
软件开发完成后,经过系统集成测试后没有问题就可以投入生产试运行了,一套应用软件是否能用得好,一方面与软件设计与开发的水平有关系,另一方面与售后服务和技术支持也有很大关系,特别是在学校正常教学过程中完成的真实软件开发项目,售后服务被弱化或忽略,更加具有一定挑战性。另外,软件开发真实项目实践课程一般都是安排在第五学期开设,学生做完项目一般都去企业顶岗实习了,这样一来项目的运行维护就更困难了。任课教师每年开设这门课程的时候都会承接学校各部门的不同软件项目来开发,如果这么多项目开发并投入实际运行后由任课教师来运维,也是行不通的。
比较切实可行的办法是:对承接的学校内部项目,项目开发完成后可交给学校网络信息中心来统一维护,要求有源代码、完善的开发设计文档,相比开发的工作量而言,维护的工作量还是少很多的,有时不需要修改只是保障系统的正常运行,有时稍作修改就可以满足优化需求;对承接的企业横向真实校外项目,一般都比较正式,会签订软件开发合同,开发费与校内项目相比较来说会高出许多,这样承接的校外项目则可以由承接教师或学生项目组负责维护。
三、结语
在高职院校开设软件开发真实项目实践课程虽然有多方面的困难,但在课程的初始起步阶段,可通过承接学校内部各个职能部门的应用软件系统、将课程设计在一个完整的系列化的课程包内并安排第五学期进行、选择适合小型软件项目的原型方法+敏捷方法的开发模式以及在系统投入试运行后将系统交给学校网络信息中心进行专業运维等手段进行有效化解。
参考文献:
[1]罗振春.高职“主题+项目”教学模式研究[J].中国职业技术教育,2017(35):121-123.
[2]胡小平.基于技能工作室的技能教学模式创新[J].中国职业技术教育,2017(33):86-90.
[3]李金亮.基于企业真实项目的杰出技术技能人才培养的探索:以淄博职业学院机电一体化技术专业为例[J].北京工业职业技术学院学报,2017,4(16):84-87.