论文网
首页 职业教育教育技术学正文

以企业项目驱动的软件工程专业实践教学研究

  • 投稿无哀
  • 更新时间2015-10-09
  • 阅读量794次
  • 评分4
  • 83
  • 0

邓泽林

(长沙理工大学计算机与通信工程学院,湖南长沙410076)

摘要:针对传统的软件工程实践教学过程中设置的阶段项目具有较强的同质化现象,而且项目没有体现真实的社会和企业要求,提出以企业项目驱动的实践教学方案,即在不同的学习阶段设置不同特点的阶段项目,在项目中引入海量数据存储、数据处理、移动开发等知识与技能要求,组建开发团队以完成具有复杂功能的软件,使学生在学习大数据处理、移动开发等知识的同时具备一定的项目管理经验,强化项目实践能力。

教育期刊网 http://www.jyqkw.com
关键词 :软件工程;企业项目;实践教学;教学改革

文章编号:1672-5913(2015)17-0091-03

中图分类号:G642

基金项目:长沙理工大学校级教改课题“软件工程专业实践教学改革研究”(JG1427)。

作者简介:邓泽林,男,讲师,研究方向为软件工程、机器学习,zl_deng@sina.com。

0 引言

随着现代社会的进步和各种移动终端设备的使用,当前市场对大数据处理和移动技术支持方面的人才提出了新的要求。一些大型软件企业正在实施大数据处理的软件项目及对相应软件产品移动需求的支持,如淘宝、百度等。高校软件工程专业作为与软件行业关系最为密切的专业,为使本专业毕业生具备更好的大数据处理和移动开发能力,更适应软件行业的需求,应该以新的行业需求为导向,开展有针对性的相关软件开发实践。

目前,软件工程专业实践教学主要以工程化项目进行驱动。文献[1]提出以项目实践为中心的软件工程课程教学大纲的制定以及项目实践教学方法、教学内容和要求,全面提高计算机专业学生的工程化能力。文献[2]提出理论与项目实践结合的案例教学方法,即通过设计适合学生的项目课题,让学生在项目中应用所学的理论和技术,从而更牢固地掌握知识。文献[3]提出以开发工程项目为主线开展软件工程专业课程设计实践教学的方法。文献[4]提出统一实践课程的课程群建设思路,根据具体案例详细阐述整合实践课程的实施方案。

这些项目实施方法在一定程度上增强了学生的动手实践能力,在培养学生的开发能力上取得了一定的效果,但仍然存在一些问题,如项目的设置比较简单、项目要求与企业需求有较大差距、项目开发过程缺乏有效的过程管理等。这些问题的存在使得软件工程专业学生的专业素质和能力不能完全满足软件行业的现实需求。

1 教学中的问题

1.1 项目的设置不够深入,同质化现象严重

不同教学阶段设置的配套项目要求大致相似,即按照软件工程的7层瀑布模型开发管理信息系统。系统主要的功能是用户将数据插入数据库、简单处理数据、显示数据至界面,这些功能要求具有较强的同质性。

1.2 项目的规模和难度较小,与企业项目有较大差距

以往教学用项目一般要求学生开发如注册、登录等简单模块,涉及的功能规模较小,体现不出软件工程化的特征,特别是软件功能几乎不涉及大量数据有效存储和处理的问题,项目难度较小,与现实需求脱节。随着大数据时代的到来,软件系统需要处理的数据量越来越大,如果项目不体现大数据量、数据的有效存储及复杂处理过程,则项目不能反映市场特点;而且,如果软件项目的实施不支持移动技术,那么也无法适应日益增长的移动用户群体需求。

1.3 项目的开发以个人为主,缺少团队开发的环节

以往教学过程中的项目开发大多由学生个体独立完成,极少由学生团队完成。当前的工程化软件一般规模较大,必须组建开发团队来完成。团队开发项目会使项目开发的本质发生改变,这不仅指团队有多个成员,更重要的是团队成员的分工以及成员之间的沟通与协同能力,涉及人员配置、共同策划、协作完成、进度控制等项目管理中各个环节,这是进行大型软件项目开发必需的技能和经验。

2 企业项目驱动教学改革措施

项目的实践必须本着循序渐进的原则,按照教学大纲的要求进行专业基础知识的教学和实践,而在重要实践环节引入企业项目,引导学生按照企业的要求进行软件项目的开发实践,从而培养出满足企业岗位需求的合格人才。教师通过市场调查及与合作企业的交流,掌握企业项目的需求,可选择具有海量数据存储、处理、移动开发等功能的企业项目作为实践项目。当项目确定后,为每个项目形成需求文档,方便随时启动项目。

2.1 项目设置逐步深入,消除同质化

项目实践从本科一年级或二年级开始起步,这个阶段的学生只掌握了基础知识,项目实践更注重于程序逻辑的编写。项目规模相对较小,但强调程序逻辑。本阶段可以设置一些逻辑性、趣味性强的游戏程序开发项目,以激发学生的学习兴趣,促进学生掌握项目开发必需的基础知识,如基于Android系统的手机游戏开发。

在本科二年级第2学期到三年级第1学期的项目实践中期,学生已经具备一定的软件开发能力,能够从事数据库的设计和操作、Web项目开发,可以进行相对大型项目的项目开发。本阶段可以设置网络流量分析系统的开发项目,该系统用于监控交换机、路由器、IP网络在指定时间内的Netflow数据流,通过统计分析这些流量数据可以查看不同应用软件的流量信息,如QQ、电子邮件、FTP应用占用网络带宽的情况等。系统运行的过程中需要不停采集设备、网络的流量数据报,因此需要存储和处理海量数据。该项目的实践对锻炼学生的处理海量数据存储、检索等技能有积极作用。

在本科三年级第2学期到四年级第1学期的项目实践后期,学生已经具备一定的大数据量问题处理能力并学会企业开发技术,此时配置数据量大、复杂的实际企业项目,可以进一步提高学生的开发能力和积累项目经验,为毕业和就业奠定基础。本阶段设置的实践项目为网络舆情分析系统。该系统通过主动采集主要网络媒体(如新浪、凤凰、搜狐等)信息,获取当前网络舆论情报并将关注的舆论热点通过曲线图、饼图、热点地图等统计图表加以显示,使用户能够直观地掌握所关注的网络舆情。该系统可以应用于政府部门,也可以应用于商业领域,如汽车厂商可以通过本系统了解自己产品的问题(如大众汽车断轴、DSG问题所引发的网络舆情热点)并采取相应的解决方案。

上述3个阶段项目侧重点不同,项目难度逐层深入,有利于逐步提升学生的实践能力,缩小学生能力与企业用人需求之间的差距。

2.2 以企业项目要求实施项目

1)起步阶段项目。

实践项目开发需要软件开发人员具有良好的面向对象分析、编程的能力,能够熟练掌握集合的使用,了解图形界面编程,掌握多线程程序设计和文件操作,特别是具有一定的基于Android的移动开发经验。本阶段项目是基于Android的手机游戏开发,项目所需的知识体系如下:①面向对象编程,对游戏中所有对象进行分析、抽象,形成抽象类、接口、具体类以及类与类之间的关系;②集合与常用算法,对象的存储涉及集合以及相关算法,如遍历、排序、查找等;③图形界面编程,游戏对象需要以图形界面编程来展示;④多线程编程,不同的游戏对象有不同的行为,需要利用多线程处理;⑤文件操作,游戏对象需要加载文件中的信息形成游戏场景等;⑥移动开发,将游戏迁移至Android平台,使游戏软件能够为手机用户所使用。

游戏开发能够提升学生开发软件的兴趣,有利于学生系统、深入地掌握软件开发必要的知识,为后续的学习和开发打下良好的基础,特别是通过将游戏移植到Android平台可以初步掌握移动开发的基本知识,为后续的移动开发打下必要的基础。

2)中级阶段项目。

实践项目开发需要具备良好的JSP/Servlet、数据库设计与实现、数据处理以及相关行业开发经验。网络流量分析系统是一个网络管理行业的工具软件,需要对行业需求有所了解,重要的是软件开发人员需要学会抓取和解析Netflow协议报文、存储并处理海量数据,因此项目具有较大的难度。该项目的知识点主要包括以下方面:①Web开发技术,掌握JSP/Servlet开发技术,能够进行Web应用编程;②数据库技术,掌握主流的数据库产品如Oracle、MySQL等,熟练进行系统分析和数据库设计,熟练使用编程语言进行数据库的访问;③Netflow协议,理解Netflow协议,掌握协议中每个字段的意义;④数据抓取与解析,学会使用模拟设备发Netflow数据报的方法并通过编程抓取数据报,根据Netflow协议格式解析数据报,将每个字段的内容插入数据库;⑤海量数据处理,系统时刻抓取设备和lP组的数据报,因此需要存储的数据量非常庞大,考虑到系统对查询的要求较高,因而海量的数据需要按时间规则自动建立表格,每条流量数据根据其时间戳确定要插入的表格;⑥数据处理,将信息按设备、IP组进行统计处理并以图形加以显示,使用户能够直观地掌握网络流量情况。

项目的实施涉及数据报的抓取、解析以及海量数据存储与处理等问题,项目难度接近企业真实项目,有利于迅速提高学生的实践能力。

3)高级阶段项目。

该阶段项目为网络舆情分析系统,以大数据、移动开发为出发点而设计,是真实的企业项目,贴合企业需求。项目的主要技术点有以下方面:①行业项目需求分析,分析项目的功能、运行环境、适用行业等;②数据来源,项目所涉及的数据主要来自网络,如新浪、搜狐、凤凰等主流媒体网站,项目需要从这些网站上抓取舆论数据,进行舆情分析;③数据抓取技术,需要利用网络蜘蛛等工具进行网络数据抓取并使用内存数据库提高数据插入的效率;④数据存储,主流媒体的海量数据用一个数据表难以有效地存储和检索,因此需要按时间段来分表存放,这样才能够为数据表格建立索引,方便用户进行高效查询;⑤数据分析,对海量数据进行检索和分析,形成对用户有用的统计信息;⑥权限管理,通过系统授予/撤销权限等操作限制用户的行为;⑦移动支持,系统能够支持舆情关注人员在任意时刻、任何地点通过Android平台进行访问。

2.3 以团队为基础实施项目的开发

随着软件规模的增加,软件的复杂性也随之增加,因此工程化软件开发方式是以团队开发为基础。团队开发涉及项目功能分割、团队成员协作、人员调配、进度控制等具体要求,是一种过程比较复杂、难度较大的开发方式,因此学生需要进行适当的培训和训练才能成功地实施大型项目。

团队开发训练包括如下几个部分:①团队的组建,团队成员之间要相互了解、相互信任,能够为完成同一目标而通力协作;②团队协作,多个成员共同完成一个软件项目需要使用合适的源代码管理服务器,团队成员通过客户机共享服务器中的资源进行开发,由于多人同时修改源代码,可能造成不同成员的修改发生冲突,团队开发人员要制订和熟练掌握团队开发规则,如遵循修改的操作顺序、应用多配置文件等,以避免编程过程发生冲突;③任务分割,团队成员在项目负责人的领导下进行充分的交流,将项目划分为多个可同时进行的子任务,团队各成员负责若干部分进行并行开发;④进度控制与人员调配,项目成员每天提交进度报告给项目负责人,项目负责人根据报告掌握项目进度并根据项目进度情况进行适当的人员调配,使项目能够顺利进行。

网络流量分析系统和网络舆情分析系统,项目规模较大、难度较高,需要进行团队开发。其中,网络流量分析系统工作量相对稍小,可以组建3人的团队进行开发;而网络舆情分析系统复杂程度较高,需要进行Web版本的开发和Android版本的开发,需要组建至少5人以上的开发团队。通过团队方式开发企业项目可以提高学生的项目领导能力和项目管理能力,进一步提高学生的专业素质。

3 结语

为了保证项目的质量,不同阶段的项目侧重点不同,降低了项目的同质性,而且项目的需求规模较大,满足了行业软件的需求,特别是海量数据处理和移动开发的引入缩小了与企业项目之间的差距;同时,通过团队开发训练,学生具备了项目领导、项目管理、团队开发的基本能力,掌握了企业需要的团队开发技能,所具备的专业素质更符合企业的岗位需求,增强了就业能力。

教育期刊网 http://www.jyqkw.com
参考文献:

[1]黄芳,任胜兵,刘高嵩,等.基于项目实践的软件工程本科课程教学模式探讨[J].湖南社会科学,2009(5): 174-176.

[2]汪璟玢,叶福玲.案例与项目实践结合的“软件工程”教学方法[J].计算机教育,2012(10): 101-103.

[3]阳王东,吴宏斌,祝青,以工程项目为主线的软件工程专业课程设计[J].计算机教育,2012(12): 90-93.

[4]马迪芳,陈旭东.软件工程方向基于课程群的实践课教学改革[J].计算机教育,2014(10): 43-46.

(编辑:宋文婷)