黄翔翔 王维 章平

关键词:毕业设计;软件工程;企业调研;项目管理;工程质量

0 引言

自2016年6月成为《华盛顿协议》正式会员以来,我国制定了《工程教育认证标准》[1],强调理工科院校应以提升学生解决复杂工程问题的能力作为本科教育的重点。在专业人才培养过程中,毕业设计作为重要的实践环节[2-3],是对解决复杂工程问题能力的检验及提升的收尾阶段。《工程教育认证标准》明确要求毕业设计的选题应紧密贴合本专业的实际工程问题,培养学生的创新实践意识、协作精神以及解决复杂工程问题的能力。

1 安徽工程大学软件工程专业培养方案解读

软件工程作为一门高技术、高应用性的学科,处在不断演变和创新的发展过程中,快速发展的软件工程行业面临着复杂性、不确定性和多样性的挑战[4]。良好的沟通、团队合作、提出问题、分析问题以及解决问题的能力,是软件工程师必备的基本素养[5]。作为软件工程专业的学生应具备利用新技术、新理念来解决复杂软件工程问题以适应不断变化的软件环境。安徽工程大学软件工程专业立足于宏观地域发展需求,结合学校自身的办学特色、理念和方针,制定出以培养高素质应用型人才、以服务于社会需求和以行业发展态势为导向的特色培养方案。

1.1 以培养高素质应用型人才为导向的专业特色

依托软件工程高原学科的高端装备先进感知与智能控制教育部重点实验室(模式识别与智能系统、智能感知与自主控制两个方向)和校级计算机应用技术重点实验室,安徽工程大学软件工程专业形成以培养高素质应用型人才为导向的专业特色。在面向软件产业的基础上,强调工程技术能力和创新创业能力的培养,构建了纵向层次化、横向模块化的工程教育培养体系,即“三个加强、二个接轨、一个结合”(加强基础、加强实践、加强外语教学;与企业接轨、与行业接轨;产、教、赛、研、学相结合)。

“三个加强、二个接轨、一个结合”的特色培养模式以OBE育人理念为指导,注重培养学生解决复杂软件工程问题的能力。OBE育人理念强调“以学生为中心,以产出为导向,持续改进”。“三个加强”以“以学生为中心”作为基本出发点:通过系统的课程设置和实践项目,帮助学生掌握软件工程领域的核心知识和基本技能;外语教学培养知识检索和跨文化沟通的能力。“二个接轨”是“三个加强”的外在延伸:通过与企业和行业接轨,学生能够了解实际工程项目的需求和挑战,并学习运用相关的工程技术和工具解决问题。“一个结合”是对“以产出为导向,持续改进”的具体落实:通过“产、教、赛、研、学”的全方位结合,指导学生参加各类学科竞赛,在竞赛中检验学生的专业能力,以赛事表现作为持续改进的依据之一,并鼓励优秀获奖作品的成果转化与推广。

1.2 以服务于社会需求为导向的专业培养目标

安徽工程大学软件工程专业以培养专业基础厚、工程能力强、创新意识足、 德智体美劳全面发展的高素质应用型人才为己任,立足于安徽芜湖,辐射至长三角区域,深度融合地方经济,形成以服务于社会需求为导向的专业培养目标。本专业毕业生经过5年工程实践能够胜任高级软件工程师、系统分析师、软件架构师等岗位。具体内容包括以下4点。

1) 能够从事本专业领域相关产品的设计、研究、开发,生产满足需求的软件产品,且具备终身学习的能力,能够不断学习和适应软件新技术的发展。

2) 具备良好的口头和书面表达能力、沟通能力以及专业工程实践能力,能够担任团队领导者或团队骨干,带领团队攻坚项目实施过程中的难点和痛点问题。

3) 熟悉软件工程专业方向的标准、规范和法规,能够在多学科环境中展现出工程能力,为复杂工程问题提供系统性的解决方案。

4) 具备社会责任感,理解并坚守职业道德规范,综合考虑法律、环境与可持续性发展等因素的影响,在工程实践中能坚持公众利益优先,脚踏实地,具有创新创业精神。

1.3 以行业发展态势为导向的专业方向

以专业培养目标为指导,贴合工业互联时代背景下的行业发展态势,本校软件工程专业分为移动互联网软件和嵌入式系统软件两个方向。随着智能手机和平板电脑的普及,移动应用市场蓬勃发展,对具备移动应用开发技能的软件工程师的需求不断增加。该方向的学生将学习移动应用开发的基本原理、移动操作系统平台的特点,以及与移动互联网相关的技术和工具;掌握移动应用开发的整个流程,包括需求分析、界面设计、编码和测试等环节;熟悉移动应用的部署和发布,了解移动应用市场的商业化运作。

智能制造是工业互联时代的重要特征,各类智能化产品都需要在定制化的软硬件平台上开发出满足场景需求的嵌入式软件,如智能家居设备、汽车电子系统和医疗器械设备等。嵌入式系统软件方向的学生将学习嵌入式系统的设计原理、硬件与软件的接口,以及实时操作系统的特点和使用;精通嵌入式软件开发的工具和技术,具备嵌入式系统的调试和测试能力;掌握嵌入式系统的功耗优化、性能调优和系统安全等方面的知识。

2 软件工程专业毕业设计指导实践探究

在对本专业培养方案解读的基础上,分析目前毕业设计中存在的实际问题,开展毕业设计指导实践探究。通过对本专业近两年毕业设计的调研,发现以下几点问题。

1) 毕业设计课题来源比较单一,跨学科性质较弱:有部分课题的内容与前两年较为相似,课题内容局限在网站设计、数据库读写、信息管理系统等相对简单且成熟的领域。

2) 毕业设计课题选择比较盲目,难以体现个人能力:学生往往不清楚教师所拟定课题的潜在意义与目的,仅凭直觉在选题系统中盲目选题,难以在毕业设计的实践过程中发挥出自身应有的水平。

3) 毕业设计论文书写、代码编写以及项目管理不规范:较多学生无法熟练利用Office、WPS等常用办公软件进行论文的规范书写和正确排版,更难以利用其他现代工具进行代码的规范化编写、调试和版本的合理控制。

针对以上问题,分别从深入企业,开展调研;课题预选,因材施教;项目管理,团队协作等三个方面开展毕业设计指导实践工作,锻炼学生解决复杂软件工程问题能力,提高毕业设计质量水平,贯彻OBE 育人理念。

2.1 深入企业,开展调研

针对毕业设计课题来源较为单一,跨学科性质较弱,综合性不强等问题,在拟定毕业设计课题之前,深入企业,开展调研。毕业调研使学生能够接触实际的软件工程问题,了解软件行业的发展现状和趋势,为毕业设计的方向和内容提供有力支持。

笔者于2022年年尾和2023年年初带领学生分别前往芜湖哈特机器人产业技术研究院和合肥工业大学智能制造技术研究院开展调研。在芜湖哈特机器人产业技术研究院的调研中,学生参观并学习智能机器人平台的种类、任务分工、工作流程以及底层软硬件工作原理。芜湖哈特机器人产业技术研究院需要在自主导航移动的机器人平台上部署危险目标检测和安全区域入侵检测的模块,以提高无人环境下的安全系数。基于这两个需求,笔者拟定《基于YOLO的戏水目标检测系统》和《基于YOLO的视频入侵检测系统》两个毕业设计课题。在合肥工业大学智能制造技术研究院的调研中,可穿戴医疗康复设备、高精密航天航空零部件自动装配平台以及基于3D打印的高精度模型器具等工业产品极大地开阔了学生的视野。在调研期间,适逢合肥工业大学智能制造技术研究院承办的安徽省高校物联网应用创新大赛。在观摩比赛的过程中,发现较多参赛队伍的无人机难以按照预定路线如期返回。针对这一情况,拟定《基于三维重建技术的无人机自动巡检系统》作为毕业设计课题。

通过与企业的深入交流,挖掘贴合实际的毕业设计课题,并结合教师自身的科研方向,不仅可以丰富课题来源,还能提高课题的跨学科性质。如表1所示,根据企业需求和笔者科研方向而拟定的毕业设计课题,本身就具有复杂工程问题的基本属性,需要运用多方面技术(计算机视觉、计算机图形学、深度学习等)、建立合适的抽象模型(最优化、空间变换、特征匹配等)并进行一定程度上的创新方能实现。

2.2 课题预选,因材施教

针对毕业设计课题的选择较为盲目,难以体现个人能力的问题,采用课题预选,因材施教的策略。以指导三位学生的毕业设计为例,该策略从以下三个阶段入手。

1) 调查问卷:开展毕业设计课题预选的调查问卷。如图1所示,每位学生根据自身的专业背景、感兴趣领域以及职业规划等方面,从拟定的六道毕业设计课题(本专业要求每位教师至少拟定六道课题作为备选课题)中预选两个课题。学生根据两份课题任务书中的课题背景、课题内容和课题目标,完成对课题的感性认识。

2) 选题追踪:学生在课题预选后的半个月内,提交对预选课题的调研分析,重点关注学生对复杂工程问题的理解、分析以及建模的能力。在这一过程中,定期与学生共同探讨课题的可行性、创新性以及实施难度,初步掌握每位学生的表达能力、专业特长以及学习态度。

3) 课题确定:根据每位学生的课题预选问卷、所提交的调研分析以及平时表现,确立最终选题。例如,学生A动手实践能力强,就业意向为企业、公司,则推荐其选择设计类型课题;学生B对新知识、新技术表现出很强的求知欲,并准备继续读研深造,则推荐其选择研究类型课题;学生C对预选课题没有做充分的调研,无法把握课题的背景、内容和目标,则根据自身的特长确立可以达到毕业目标的课题。

通过“课题预选,因材施教”的策略,能够针对每个学生的特点和能力进行个性化指导。在全面了解学生的专业背景和能力的前提下,可以提供合适的课题和学习资源,引导和激发主动学习和独立思考的动机,培养自主解决问题的能力,帮助学生在毕业设计中发挥优势和潜力。

2.3 项目管理,团队协作

针对毕业设计论文书写、代码编写以及项目管理不规范的问题,从项目管理和团队协作的角度,锻炼学生运用现代化专业工具解决复杂软件工程问题的文档管理、系统开发以及合作能力。

首先,规范化的文档和代码是解决复杂软件工程问题的基本前提。本专业学生在撰写论文开题报告时需要翻译至少一篇外文文献,部分学生由于缺乏外文文献的检索、阅读、翻译以及排版能力,导致所引用文献与所选课题相关性较低、英文排版格式混乱以及翻译不到位等问题。因此,指导学生利用学校的期刊数据库、谷歌学术、百度学术等在线资源,根据关键字、摘要检索到合适的外文文献。在阅读翻译外文文献的过程中,指导学生从专业角度去理解专有名词的含义。在论文的撰写和排版过程中,学会运用Gram?marly、EndNote、LaTex等语法检查、文献引用以及论文排版工具进行规范化写作。在代码编写的过程中,提供标准化的示例代码,向学生展示良好的代码风格,不仅可以提高代码的可读性,还可以减少程序的潜在Bug。根据学生所使用的开发语言,推荐使用不同的集成开发环境,提高开发效率与质量。例如,学生A 使用C/C++进行系统开发,则推荐使用微软的VisualStudio并结合Visual Assist插件来智能感知已经定义的变量和函数;学生B采用Python进行程序设计,则推荐使用PyCharm与Anaconda相结合的方式来进行环境部署和代码编码。

其次,项目管理是解决复杂软件工程问题的重要能力。在毕业设计的过程中,需要涉及到对论文、代码以及数据的管理。良好的项目管理可以提高安全性、开发效率以及共享性。在毕业设计过程中,偶尔会出现某个学生因U盘丢失、电脑坏损而无法还原已有成果的现象。因此,指导学生将毕业设计的阶段性成果存储在云端(如OneDrive、百度网盘、阿里云盘等),可以有效避免因还原丢失成果而浪费的精力。并且,一些高级的远程仓库工具如SVN、Coding、GitHub还附有版本管理的功能,可以记录每一次提交到远程仓库的版本差异,方便在不同版本间进行切换。将毕业设计成果存储在云端,可以在不同平台访问同一资源,提高在不同平台上的共享能力。

最后,团队协作是解决复杂工程问题的必备素质。团队协作能力使学生学会与他人合作、共同解决多学科交叉问题,提高工作效率和团队凝聚力。在解决复杂软件工程问题时,项目共享是进行团队协作的前提。复杂解决复杂软件工程问题往往设计不同的操作系统、软硬件平台以及开发环境。因此,在进行项目共享时,项目跨平台的兼容性是必须考虑的因素。指导学生在Visual Studio Code下编写项目的跨平台编译方案如CMakeList、MakeFile文件,不仅有助于项目共享,更是移动软件开发和嵌入式软件开发的必备技能。同时,开展小组互评的机制,进一步培养团队协作能力。小组成员之间相互分享毕业设计项目的远程仓库地址,将彼此的毕业设计成果下载到本地进行配置、编译并运行,相互评价系统的优缺点,分析、讨论并完善其中的不足。

通过这些措施,能够培养学生运用现代化专业工具解决复杂软件工程问题的文档管理、系统开发和合作能力,提升他们在毕业设计中的综合能力和实践能力。

3 结论

本文围绕《工程教育认证标准》,基于本校软件工程专业的培养方案,从毕业设计中存在的实际问题出发,从深入企业,开展调研;课题预选,因材施教;项目管理,团队协作等三个方面探究毕业设计指导实践工作。通过以上指导实践,旨在提高学生理解、分析并解决复杂工程问题的能力,为未来的职业发展奠定坚实基础。