时间:2022-04-28 04:11:04
导语:在软件工程毕业论文的撰写旅程中,学习并吸收他人佳作的精髓是一条宝贵的路径,好期刊汇集了一篇优秀范文,愿这些内容能够启发您的创作灵感,引领您探索更多的创作可能。
1软件工程在毕业设计中的作用
软件工程不仅是计算机科学与技术专业、软件工程专业的一门专业基础核心课程,也是其他相关专业,如信息工程、系统工程、信息与计算机科学、信息管理与信息系统等专业的重要应用技术课程。对于这些专业的学生来说,毕业设计多是以软件开发类项目为主,整个毕业设计就是开发一个软件。为了更好地完成软件开发类毕业设计,提高学生毕业设计的质量,进一步规范毕业设计中的软件开发过程是必需的。软件工程的思想正是用工程化方法构建和维护有效的、实用的和高质量的软件。按照软件工程思想,软件开发的生命周期分为可行性分析、需求分析、总体设计、详细设计、编码实现、软件测试和软件维护几个阶段。在学生的毕业设计中以软件工程的思想为主线,从软件工程的角度去指导学生进行毕业设计,挖掘软件工程在系统开发过程中的价值,解决毕业设计中存在的一些问题,既有助于学生更好地理解软件工程的方法、技术和思想,更有助于提高软件类毕业设计的质量。
2毕业设计中存在的问题
笔者在指导学生软件开发类毕业设计过程中发现,毕业设计存在着选题难、任务重、重视编码、轻过程、项目无法完成等现象。设计过程中没有严格地遵循软件工程的开发方法,没有规范的软件设计过程,项目能否成功主要依赖于个人能力和个人努力,这种不正确的开发方法带来了严重的后果。在项目开发的过程中常常存在以下几个方面问题:
2.1选题的盲目性
选题是毕业设计过程中的一个初始环节,选题恰当是做好毕业设计的前提,但选题不当的情况仍然时有发生。学生没有认识到毕业设计的重要性,纯粹是为了完成学业而做毕业设计,选题没有一个确切的目标,往往是随便选一个题目,造成选题的盲目性,出现了选题陈旧、选题范围狭窄、选题偏大等问题,使学生抄袭、完成不了毕业设计的情况时有发生。
2.2缺少软件的系统分析
软件开发过程的第一个阶段是系统分析,用来确定软件开发要解决的问题是什么?估算完成该项目需要的资源和成本,确定目标系统应该具备哪些功能,主要经历问题的定义、可行性分析和需求分析三个阶段。软件的系统分析确定了用户需求,同时对目标系统提出完整、具体的要求,引导开发者正确地构建系统。因此,对用户需求做出全面、正确的分析,对于最终软件开发类毕业设计的成败起着至关重要的作用。然而在完成毕业设计过程中,学生往往认为代码编写最重要,对软件开发过程中的可行性分析和需求分析阶段不重视,甚至没有系统分析,对整个毕业设计的完成造成了影响。
2.3软件设计过程杂乱无章
软件设计一般都要经历可行性分析、需求分析、总体设计、详细设计、编码和测试阶段。而部分学生在毕业设计开发的过程中,缺乏软件工程设计思想,跨越需求分析、概要设计、详细设计和功能模块设计,直接进行代码的撰写;或者从代码反推出模块设计;甚至在软件开发过程中,一边写程序,一边了解需求,程序完成了需求才确定。这种无序的软件设计过程,导致最终设计的系统杂乱无章、代码的重复率高、潜在?Bug多、系统的可集成性非常差、不能在规定时间内完成设计或者系统无法运行。
2.4开发过程中文档不完备
根据软件工程学的基本原理,软件=程序+文档,可见软件文档是软件开发过程中不可缺少的组成部分。软件文档贯穿于软件开发的各个阶段,是提高软件产品开发效率、规范软件产品开发过程、保证软件产品质量的关键。但在实际毕业设计中,很多同学认为把程序代码编出来了,毕业设计也就完成了,提交的毕业设计论文就是系统代码的复制,即只做出一个可演示可操作的系统,而忽略了软件开发的完整性、系统性。完整的毕业设计不仅包括可操作的系统,还包括在开发系统的过程中所产生的各个文档资料。文档的缺失会降低软件开发的效率、影响整个软件的开发、使用和维护。以上问题的存在,严重影响了毕业设计的进度和质量,没有达到毕业设计的目标要求。针对当前毕业设计的现状和存在不足,笔者认为应用软件工程学的思想指导毕业设计,对促进学生综合素质与工程实践能力培养具有积极意义。
3用软件工程思想指导学生进行毕业设计
3.1以可行性研究指导选题
可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。毕业设计题目的选择,应立足于解决工程实际问题,可由指导教师提供符合相关专业毕业设计要求的题目,也可以鼓励学生自己到社会、生产企业中寻求研究课题,培养他们自主学习的意识。选题过程以可行性研究为指导,从课题规模大小、难易程度、学生自己的研究方向、爱好、学生的知识层面和能力等多个方面进行考虑,对于选择的题目是否能够解决,确定在规定的时间内完成毕业设计的可行性。指导教师可根据学生选报的题目来指导学生对该选题进行调查研究,明确课题要解决的问题是什么,简要地写出关于问题性质、项目目标和项目规模的书面报告。可行性研究来指导毕业设计的选题,实质上是简化了系统分析和设计的过程,也是在较高层次上以较抽象的方式进行的系统分析和设计的过程,使学生对于课题的设计有个清晰的思路,为及时完成毕业设计提供了可能。
3.2重视软件的需求分析
需求分析的基本任务是准确地回答“系统必须做什么”,即确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求,不仅指明了系统设计时必须要实现的目标,也是软件设计、实现、测试和维护阶段的主要参考标准。用户需求的获取是软件开发中最重要、难度最大的工作,它贯穿于整个软件设计过程,不仅要涉及到软件开发方面的知识、应用领域方面的知识,还涉及到与用户沟通的能力。在进行需求获取和分析时,为了及时、准确地获取,可采用软件工程中比较成熟的方法,例如访谈、实际调查、UML的用例技术等。需求分析在软件系统分析与设计阶段起着桥梁的作用,确定了系统的需求,才能制定出软件设计的框架,保证毕业设计循序渐进、有条不紊地进行,避免后期开发过程的频繁返工,进而按时完成最终的任务。
3.3规范毕业设计过程
软件开发类毕业设计一般是开发一个软件系统,实现一定的功能。“麻雀虽小,五脏俱全”,无论软件规模的大小、功能的多少,都应该严格按照软件工程中软件生命周期每个阶段的步骤完成各项任务。要培养学生把软件工程的概念贯穿于整个毕业设计过程,也就是说,让学生把开发软件的过程看成是盖一栋大楼,修一条公路的实际工程,用工程化的思想指导毕业设计,确定完成课题的各项任务的工作步骤,注重软件类毕业设计的过程,而不是学生所认为的毕业设计就是编程序,代码调试通过即可。通过工程的概念规范毕业设计过程,让学生明白开发一个软件系统一般经过系统分析、系统设计、系统实施三个阶段,必须严格遵循软件生命周期的规律,完成各个阶段的任务,才能最终提高毕业设计的质量。
3.4重视文档的写作
软件工程中的瀑布模型严格地规定了在整个软件生命周期的各个阶段,都要提交相应的文档。文档不仅记录软件开发过程中的大量信息,在软件的开发、维护过程中也起着重要的作用。在指导学生毕业设计时,要求学生遵照软件工程的思想,把文档作为整个设计的指挥棒,记载设计过程的每一阶段完成的目标、任务及技术手段,建立健全毕业设计文档制度,确保毕业设计过程中的文献综述、译文、任务书、开题报告、选题审题表、中期检查表、设计(论文)正文、答辩记录等各环节教学资料档案完善、规范,实现对毕业设计的全程监控。
4结束语
软件工程是软件开发工程化、规范化的具体实施方法,将其应用到毕业设计中,不仅有助于学生对软件开发相关知识的巩固和实践,而且对解决目前软件开发类毕业设计中存在的问题,提高学生毕业设计质量,具有极大的促进作用。
作者:王晓 王长波 单位:湖北医药学院 公共管理学院计算机教研室
一、利用多方资源做好毕业设计选题与立题工作
恰当的选题是做好毕业设计的必要条件和前提。近年来,随着信息技术高速发展,国家对高素质软件工程人才需求十分旺盛,并有逐年扩大的趋势。同时各个高校软件工程专业的招生数量也在逐年增加,从目前全国319所设有软件工程专业的学校看,2013年该专业平均招生300人左右。专业招生人数的增多给毕业设计选题带来了带来巨大挑战:一方面软件工程专业的毕业设计选题要求具有一定的应用价值、创新性,同时还要与行业需求相吻合;另一方面要保证选题的唯一性,不仅要避免学生之间的题目重复,还要避免与之前毕业生的题目重复,因为重复的选题会使学生产生投机的心理,导致“打酱油”现象。针对上述问题,黑龙江大学软件学院主要采取了以下几个措施:1.充分利用企业资源,对一部分在企业实习的学生采取“三位一体”的双导师指导模式。即企业项目为载体,学生为主体的模式,校内和校外导师为主导。这部分学生一般是在大三下学期暑假就已经进入企业实习,而我们每年毕业设计选题工作是在十一月末,也就是学生进入企业实习后三到四个月的时间,学生经过企业阶段的培训,对企业的生产过程、企业文化有了一定的了解。此时,学院组织校内外导师和学生共同协商,以企业项目或子项目为学生确定毕业设计选题。2.充分发挥导师的资源优势,学院大部分教师都有自己的科研课题,这些科研课题有些是直接来源于企业的横向课题,还有一些是信息技术领域的应用研究课题,我们鼓励教师从这些课题中提取出一些子项目让学生实践,作为毕业设计的选题。3.充分挖掘学生的专业技术特长和兴趣点并结合学生的择业倾向,确定最能发挥自身优势和潜能的选题。毕业设计的选题不仅要与实际需求相结合,更重要的是应该结合学生自身的技术优势和兴趣。只有学生对选题有兴趣,他们才能尽早地进入状态,发挥自己的创造能力和积极主动意识。所以,选题阶段导师和学生的沟通交流就显得尤为重要,通过沟通导师可以了解学生的能力、兴趣和择业倾向,学生也可以对选题,有进一步的认识,对于不感兴趣的选题学生也可以通过与导师进一步的探讨进行题目的修订。
二、注重环节审查,加强过程监管
虽然“好的开始是成功的一半”,但是如果缺乏中间环节的监管,仍然不能保证好的效果[4]。因此,为保证毕业设计(论文)的质量,我们制定了明确的质量标准、管理条例,并由院长、学术委员会、系主任和教务办主任组成毕业设计(论文)工作委员会,负责毕业设计(论文)工作的组织、评定和监管,同时保证管理条例的严格落实及各个环节工作的正常进行。为健全毕业设计(论文)的监管机制,学院先后规范和完善了《毕业设计(论文)工作管理办法和实施细则》《开题报告》《开题评分标准》《中期报告》《中期检查标准》《毕业设计(论文)撰写规范及模版》《毕业设计(论文)盲审表》《答辩程序和评分标准》等一系列管理办法和文档标准,使毕业设计工作在制度和规范下能顺利有效地进行。每年毕业设计工作之初,我们都要给学生开一个动员会,在会上阐明毕业设计(论文)的重要性,以及毕业设计对他们未来工作的影响,调动他们学习的主动性、积极性和创造性。此外,系主任还要向学生介绍学院毕业设计(论文)管理办法和实施细则,各阶段的工作要求和时间节点,以及各环节检查的内容、需要提交的文档,使学生在毕业设计开始时能做到心中有数。同时,我们也要求指导教师随时解答学生的问题,坚持每周开例会,检查学生的工作完成情况,并提出一些有技术含量和理论深度的问题启发他们思考,激发他们的学习热情,并与学生一起确定后续任务。此外我们组织开题检查、中期检查,对开题检查成绩后30%的学生,不但检查中期报告,还要现场检查程序。对于中期检查不合格的学生,要求限期整改,如果仍然不合格则取消答辩资格。在答辩之前,我们还要对论文进行盲审,盲审不合格的学生不允许答辩,对有异议的论文要提交学术委员会做最后论证。虽然学院对毕业设计(论文)工作在各个环节上的审查都非常严格,但我们鼓励学生之间进行研讨交流,博采众长,相互提高,因为我们的目的不是抓出多少不合格的学生,而是想通过大学阶段最后的综合性实践教学环节训练,培养学生的学习能力、知识的综合运用能力、分析解决问题能力和沟通交流等综合素质。
三、严把答辩关,保证毕业设计质量
答辩是毕业设计(论文)考核阶段的最后环节,这个环节既是学院对学生毕业设计的验收和鉴定,同时也是学生对自己工作的总结和汇报。通过答辩,学生不仅展示了毕业设计工作的效果,更展示了自己的专业知识、技术水平和综合素质。作为教师,每年都要指导多个毕业设计(论文),而学生一生只能经历一次本科毕业设计,而且毕业设计答辩能否顺利通过,直接关系到学生毕业及学位资格的认定。因此对学生来讲,毕业答辩至关重要。这有点像外科医生与患者的关系:医生每年要做很多手术,对他们而言手术已是司空见惯,但对于患者本人,可能一辈子才上一次手术台,而且生命攸关。所以,我们要在毕业设计指导过程中,认真对待每一位学生。同时在毕业答辩中严格把关,保证质量,更要秉承“公开“”公正”“公平”的原则。我们的毕业设计(论文)答辩采用小组面试形式,每组由四位副高职以上教师组成,答辩流程如图1所示。答辩当天向学生公布成绩,毕业设计(论文)总成绩由开题成绩(10%)、中期成绩(10%)、指导教师成绩(10%)、答辩成绩(70%)构成。对于优秀的和不及格的学生,我们还会重新组建答辩组进行二次答辩。这是考虑到答辩组之间认同度的差异而导致评分标准出现偏差,可能有些答辩组打分会偏低,有的组打分会偏高,即各个答辩组评分信度不能达到一致。二次答辩可以有效地消减组间评分差异,从而使申报校优秀论文人选和未通过人选的确定做到公正、公平和有效。针对软件行业特点,我们通过强化实践教学环节,合理利用多方资源拓宽毕业设计(论文)选题途径、健全和完善毕业设计(论文)的监管机制等手段,确保了毕业论文质量的稳步提高。几年来,黑龙江大学软件学院的毕业设计(论文)质量受到校内外专家的一致好评,获校优秀论文比率一直位于学校前列。实践证明,加强毕业设计(论文)质量的监管,不但提高了学生工程实践能力、独立科研能力和创新意识,为学生进入工作岗位打下了良好的基础,进而也提升了学生的就业率。
作者:任美睿 金英 郭龙江 单位:黑龙江大学
1软件工程在毕业设计中的作用
软件工程不仅是计算机科学与技术专业、软件工程专业的一门专业基础核心课程,也是其他相关专业,如信息工程、系统工程、信息与计算机科学、信息管理与信息系统等专业的重要应用技术课程。对于这些专业的学生来说,毕业设计多是以软件开发类项目为主,整个毕业设计就是开发一个软件。为了更好地完成软件开发类毕业设计,提高学生毕业设计的质量,进一步规范毕业设计中的软件开发过程是必需的。软件工程的思想正是用工程化方法构建和维护有效的、实用的和高质量的软件。按照软件工程思想,软件开发的生命周期分为可行性分析、需求分析、总体设计、详细设计、编码实现、软件测试和软件维护几个阶段。在学生的毕业设计中以软件工程的思想为主线,从软件工程的角度去指导学生进行毕业设计,挖掘软件工程在系统开发过程中的价值,解决毕业设计中存在的一些问题,既有助于学生更好地理解软件工程的方法、技术和思想,更有助于提高软件类毕业设计的质量。
2毕业设计中存在的问题
笔者在指导学生软件开发类毕业设计过程中发现,毕业设计存在着选题难、任务重、重视编码、轻过程、项目无法完成等现象。设计过程中没有严格地遵循软件工程的开发方法,没有规范的软件设计过程,项目能否成功主要依赖于个人能力和个人努力,这种不正确的开发方法带来了严重的后果。在项目开发的过程中常常存在以下几个方面问题:
2.1选题的盲目性
选题是毕业设计过程中的一个初始环节,选题恰当是做好毕业设计的前提,但选题不当的情况仍然时有发生。学生没有认识到毕业设计的重要性,纯粹是为了完成学业而做毕业设计,选题没有一个确切的目标,往往是随便选一个题目,造成选题的盲目性,出现了选题陈旧、选题范围狭窄、选题偏大等问题,使学生抄袭、完成不了毕业设计的情况时有发生。
2.2缺少软件的系统分析
软件开发过程的第一个阶段是系统分析,用来确定软件开发要解决的问题是什么?估算完成该项目需要的资源和成本,确定目标系统应该具备哪些功能,主要经历问题的定义、可行性分析和需求分析三个阶段。软件的系统分析确定了用户需求,同时对目标系统提出完整、具体的要求,引导开发者正确地构建系统。因此,对用户需求做出全面、正确的分析,对于最终软件开发类毕业设计的成败起着至关重要的作用。然而在完成毕业设计过程中,学生往往认为代码编写最重要,对软件开发过程中的可行性分析和需求分析阶段不重视,甚至没有系统分析,对整个毕业设计的完成造成了影响。
2.3软件设计过程杂乱无章
软件设计一般都要经历可行性分析、需求分析、总体设计、详细设计、编码和测试阶段。而部分学生在毕业设计开发的过程中,缺乏软件工程设计思想,跨越需求分析、概要设计、详细设计和功能模块设计,直接进行代码的撰写;或者从代码反推出模块设计;甚至在软件开发过程中,一边写程序,一边了解需求,程序完成了需求才确定。这种无序的软件设计过程,导致最终设计的系统杂乱无章、代码的重复率高、潜在?Bug多、系统的可集成性非常差、不能在规定时间内完成设计或者系统无法运行。
2.4开发过程中文档不完备
根据软件工程学的基本原理,软件=程序+文档,可见软件文档是软件开发过程中不可缺少的组成部分。软件文档贯穿于软件开发的各个阶段,是提高软件产品开发效率、规范软件产品开发过程、保证软件产品质量的关键。但在实际毕业设计中,很多同学认为把程序代码编出来了,毕业设计也就完成了,提交的毕业设计论文就是系统代码的复制,即只做出一个可演示可操作的系统,而忽略了软件开发的完整性、系统性。完整的毕业设计不仅包括可操作的系统,还包括在开发系统的过程中所产生的各个文档资料。文档的缺失会降低软件开发的效率、影响整个软件的开发、使用和维护。以上问题的存在,严重影响了毕业设计的进度和质量,没有达到毕业设计的目标要求。针对当前毕业设计的现状和存在不足,笔者认为应用软件工程学的思想指导毕业设计,对促进学生综合素质与工程实践能力培养具有积极意义。
3用软件工程思想指导学生进行毕业设计
3.1以可行性研究指导选题
可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。毕业设计题目的选择,应立足于解决工程实际问题,可由指导教师提供符合相关专业毕业设计要求的题目,也可以鼓励学生自己到社会、生产企业中寻求研究课题,培养他们自主学习的意识。选题过程以可行性研究为指导,从课题规模大小、难易程度、学生自己的研究方向、爱好、学生的知识层面和能力等多个方面进行考虑,对于选择的题目是否能够解决,确定在规定的时间内完成毕业设计的可行性。指导教师可根据学生选报的题目来指导学生对该选题进行调查研究,明确课题要解决的问题是什么,简要地写出关于问题性质、项目目标和项目规模的书面报告。可行性研究来指导毕业设计的选题,实质上是简化了系统分析和设计的过程,也是在较高层次上以较抽象的方式进行的系统分析和设计的过程,使学生对于课题的设计有个清晰的思路,为及时完成毕业设计提供了可能。
3.2重视软件的需求分析
需求分析的基本任务是准确地回答“系统必须做什么”,即确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求,不仅指明了系统设计时必须要实现的目标,也是软件设计、实现、测试和维护阶段的主要参考标准。用户需求的获取是软件开发中最重要、难度最大的工作,它贯穿于整个软件设计过程,不仅要涉及到软件开发方面的知识、应用领域方面的知识,还涉及到与用户沟通的能力。在进行需求获取和分析时,为了及时、准确地获取,可采用软件工程中比较成熟的方法,例如访谈、实际调查、UML的用例技术等。需求分析在软件系统分析与设计阶段起着桥梁的作用,确定了系统的需求,才能制定出软件设计的框架,保证毕业设计循序渐进、有条不紊地进行,避免后期开发过程的频繁返工,进而按时完成最终的任务。
3.3规范毕业设计过程
软件开发类毕业设计一般是开发一个软件系统,实现一定的功能。“麻雀虽小,五脏俱全”,无论软件规模的大小、功能的多少,都应该严格按照软件工程中软件生命周期每个阶段的步骤完成各项任务。要培养学生把软件工程的概念贯穿于整个毕业设计过程,也就是说,让学生把开发软件的过程看成是盖一栋大楼,修一条公路的实际工程,用工程化的思想指导毕业设计,确定完成课题的各项任务的工作步骤,注重软件类毕业设计的过程,而不是学生所认为的毕业设计就是编程序,代码调试通过即可。通过工程的概念规范毕业设计过程,让学生明白开发一个软件系统一般经过系统分析、系统设计、系统实施三个阶段,必须严格遵循软件生命周期的规律,完成各个阶段的任务,才能最终提高毕业设计的质量。
3.4重视文档的写作
软件工程中的瀑布模型严格地规定了在整个软件生命周期的各个阶段,都要提交相应的文档。文档不仅记录软件开发过程中的大量信息,在软件的开发、维护过程中也起着重要的作用。在指导学生毕业设计时,要求学生遵照软件工程的思想,把文档作为整个设计的指挥棒,记载设计过程的每一阶段完成的目标、任务及技术手段,建立健全毕业设计文档制度,确保毕业设计过程中的文献综述、译文、任务书、开题报告、选题审题表、中期检查表、设计(论文)正文、答辩记录等各环节教学资料档案完善、规范,实现对毕业设计的全程监控。
4结束语
软件工程是软件开发工程化、规范化的具体实施方法,将其应用到毕业设计中,不仅有助于学生对软件开发相关知识的巩固和实践,而且对解决目前软件开发类毕业设计中存在的问题,提高学生毕业设计质量,具有极大的促进作用。
作者:王晓王长波单位:湖北医药学院公共管理学院计算机教研室
以AD和XP为指导的毕业设计过程
1组织方式
实际上,上述选题机制是将分散的毕业设计引导形成基于团队的角色学习环境,学生在教师的统一带领下,对项目进行设计并划分模块,独立负责不同模块的开发,并且在教师的指导下,充分体验不同模块之间的沟通和集成问题,使学生能够贴近企业项目开发的实际情境,体会到实际项目身临其境的感觉,从而提高毕业设计对于毕业生的锻炼价值和质量。
敏捷宣言认为人和交互胜过过程和工具。以此原则为指导,在毕业设计实施过程中,要求学生组内成员和小组之间加强交流沟通,对于毕业设计过程中产生的文档,要求学生着重记录交流过程,而非交流结果。敏捷宣言认为客户合作胜过合同谈判,意义在于业务人员应该参与到项目开发的整体过程中,达到整个项目开发团队能够把握项目开发方向。对于软件工程毕业设计来说,意味着在选择毕业设计所涉及到的项目原型时,应尽量贴近学生实际,例如选择教务管理系统、教学管理系统、图书管理系统等学生经常接触和使用的应用系统,或是指导教学正在从事的横向或纵向课题。要求选择指导教学或学生自己能够扮演客户的角色,学生对于所开发的系统的需求了然于胸。
2管理方式
敏捷宣言认为可以工作的软件胜过面面俱到的文档,可以工作的软件是进度主要的度量标准。以此原则为指导,对毕业设计过程中要求撰写的文档可适当弱化,而是要求将项目程序代码保存到统一版本库,并保持版本库中的代码是可部署和运行的。极限编程的推荐实践方式认为对于项目开发应该尽早测试、经常测试、自动测试。在毕业设计的实施过程中,要求学生对于测试计划、测试用例及测试驱动开发(TestDrivenDevelopment,TDD)都有所了解,使用由学生指导教学编写的自动测试来监控开发进度,支持系统的演化,并尽早发现缺陷。上述管理方式就现阶段软件工程专业的毕业设计来看,实施比较困难,但应尽力发展,从而弥补现有人才培养方案中对于软件测试不够重视的缺陷。
极限编程推荐增量设计、开发和频繁重构。这也是毕业设计过程中应采纳的做法。对于一个指定的项目,要贯穿整个毕业设计过程,以各个阶段时间点为标志,要求学生以增量的方式来完善项目开发,在毕业设计过程中,要体现项目的渐进式开发,各个时间点都要求学生完成项目的相应部分,并且要求项目代码的主版本随时处于可部署、可运行状态,对于系统架构和代码结构等方面,可通过重构来优化。对于代码重构的的粒度和频率,可由指导老师根据实际情况具体把握,以模块化和符合软件设计模式等特征为参考依据。
3考核方式
鉴于以上组织和管理方式,在进行毕业设计(论文)考核时,应在传统的毕业答辩环节考核基础上,考虑以下因素:一是在毕业答辩考核时,要注重考查学生所写代码的功能,而不是形式上的开发文档。二是极限编程推崇结队编程(PairProgramming),因此,在毕业设计进行过程中要求学生不要局限于自己的毕业设计课题,而应该是两个人一起完成两个课题,双方都参与到对方的项目中去。在毕业答辩考核时,也应采取相应的考核办法,交叉检查学生的编码工作量。三是极限编程提倡短周期。也就是说,毕业设计过程中,应该交付多个可运行的系统版本(功能是递增的,但指定功能的版本是可用的)。因此,在毕业答辩过程中,要求学生就系统的多个可运行版本进行演示。总而言之,软件工程专业的毕业设计(论文)的考核,除了依据传统的毕业答辩考核标准之外,还需结合敏捷开发和极限编程的特点,综合考查编码协作、增量设计、测试驱动开发、持续集成等特征是否体现在学生毕业设计(论文)中。
典型过程及相关支撑工具
在确定指导老师和设计课题后,学生将展开毕业设计的具体过程,根据以AD和XP为指导思想的典型毕业设计过程,具体过程如图1所示。以上典型过程中的具体步骤,都有成熟的支撑工具可选用,使整个毕业设计过程实现信息化管理,其中项目管理工具可使用PivotalTracker,测试管理工具可使用MercuryQualityCenter,自动测试可使用开源集成测试环境,如Jenkins,代码管理工具可使用VisualSVN(服务器端)和TortoiseSVN(独立客户端)及SubclipseSVN(IDE集成客户端)。
软件项目管理工具PivotalTracker是由公认的敏捷软件开发老大PivotalLabs开发的基于故事、简单、有效、敏捷的软件项目管理工具,适用于各类型的项目,并通过敏捷项目管理的理念让项目能够有条不紊的进行,使项目的开发效率大大提高。操作界面如图2所示。
测试管理工具MercuryQualityCenter提供了基于Web的,可在广泛的应用环境下自动执行软件质量测试和管理的功能,使IT团队能够在开发流程完成前就参与应用程序测试。这样将缩短时间表,同时确保最高水平的质量。操作界面如图3所示。版本库管理工具SVN是用于实现对代码、文 件等的修改、删除、增加等操作进行记录,并且可以追溯每个修改细节的通用工具,它基于C/S架构,需要服务器和客户端软件,其中SVN服务器可以使用VisualSVN,独立客户端可使用ToitorseSVN,而IDE集成客户端可使用Subclipse。
结语
软件工程专业毕业设计具有鲜明的实践特征,需要具体的实践原则做为指导来提升毕业设计(论文)的质量。我们引入敏捷开发和极限编程的相关原则,构造软件工程专业毕业设计的具体实施过程,并将其应用于实际教学过程中。下一步工作将对于这一全新的探索和尝试,在实践过程中针对具体出现的问题进行改进和完善,使这一毕业设计模式更加适用于软件工程专业,并在条件成熟时向计算机相关专业推广。
作者:曾志浩肖小克单位:湖南工业大学计算机与通信学院
规模使得精细化指导与管理变得困难
原有毕业设计环节管理由于参与指导的教师人数相对较少,每名教师指导的学生也不多,而且所有教师均为本系教师,大家彼此非常熟悉,在一起教学研讨的时间也很多,所以大家对各环节的要求及约定比较容易统一,对每个学生的指导时间也较多。但随着参与指导毕业设计教师数量的提升,指导学生数的增加,特别是聘请了外系教师的支援,原有会议讨论式、心理记忆式的约定及规则已经不能适应管理要求。这就必然要求规范毕业设计环节的管理,统一考核指标,让大家在一个统一的框架下实施毕业设计的指导与考核。
软件过程及评价主观性强
软件及开发是个主观性强,知识、劳动密集型工作,同一个项目或任务,由于每个人项目经历、经验的不同,不同的人所得出的满足需求的合格产品是肯定有区别的,但在质量、灵活性、可扩充性方面可能存在很大差别。同时,对于软件产品,不同人会有不同的评价,具有强主观性的特点。这种强主观性使得对毕业设计的评价难以用客观的量化的评价指标和体系进行度量,对教师间把握统一的考核尺度制造了困难。
师生面对面交流机会越来越少
由于就业形式的变化,各本科院校的培养模式也作了一定的改变,为了让学生能更方便的外出找工作,更早的接触社会,大部分高校第八学期除了毕业设计,基本上就没有其他的教学任务。重庆理工大学也存在类似情况,在第八学期,大部分学生没有待在学校,有的在外联系工作单位,有的提前到单位实习,甚至有的以在外找工作为借口待在家里,学生的分散性使得教师和学生之间面对面交流的机会少之又少,给毕业设计环节的指导和管理工作带来了难度。
选题类型趋于多样性
为了培养学生层次、方向的多样化,软件工程专业的毕业设计不仅只有传统的系统分析、设计与开发类的题目,还涉及论文类及算法类等类别。根据对前几届毕业设计环节的综合统计,系统分析设计开发类选题所占分量最多,占70以上。由于不同题型的毕业设计需要应用的知识、实施过程、考核重点都存在很大差异,不同题型之间的考核没有对比性,因此需要针对不同的选题类型制定相应的考核指标和评价标准。
现有管理中存在的问题
毕业设计是一次综合锻炼学生应用所学知识解决问题能力的过程,涉及的环节比较多,存在的问题也不少。综合分析,存在以下三个典型问题:
1历史题目重复率高,抄袭现象难以控制
每年都有几个班的学生毕业,毕业设计都要实施。在纸质时代,抄袭成本大,抄袭源也比较难找到,因此抄袭现象相对较少,不同届学生的题目相同并不会影响毕业设计质量。然而,随着互联网技术在给广大民众带来方便的同时,也给学生的偷懒提供了契机。由于大部分学生在外实习,教师很难有效的监督学生,有相当一部分学生考虑到自己毕业后不从事软件开发等相关工作或工作比较忙,不愿意投入时间好好地完成毕业设计,而是从互联网抄袭,甚至通过互联网购买。
2学生对考核的公正性存在质疑
由于参与综合实践环节的学生人数和指导教师规模越来越大,综合实践环节在进行质量考核时必然要进行分组。由于大家没有统一的考核指标体系及标准,同一水平的毕业设计处于不同考核小组,可能得出截然不同的成绩;甚至有指导教师认为较好的论文在答辩时被判为不及格现象。造成的严重后果是学生对论文评审、答辩过程公平性的质疑,对学校的声誉带来不良影响。其原因是由于不同教师间、各不同小组之间缺乏一个统一的评判标准,分组的不均匀分布而导致了评审的不公平性。
3学生难以获取实际需求
由于学生人数众多,只有少部分学生能参与到教师的实际科研项目中,大部分学生只能以虚构的题目为背景,没有具体的企业为依托。因此,很获取项目的具体而详细的需求,学生所完成的也只能是一些通用功能的系统,系统业务逻辑比较简单,甚至基本没有业务逻辑,仅仅是简单增加、删除、修改等功能的拼凑,不能真正体会到系统分析和设计的内涵。
软件专业毕业设计管理对策
软件工程专业毕业设计管理是很多高校都比较棘手的问题,也有不少教师已提出了一些很好的策略。根据对多年毕业设计执行情况的分析与总结,作者认为软件工程专业毕业设计管理和考核中存在众多问题的主要原因有以下三点:重结果轻过程的考核方法;缺乏统一的考核评价体系;管理过程不规范,随意性大。因此,本文主要从建立量化考核指标体系、规范毕业设计过程管理和其他一些辅助策略进行探讨,如图1所示。
1建立量化考核指标体系
建立量化考核指标体系包括细化考核指标和建立考核评价体系两部分。考核指标体系是一把双刃剑,它除了可以对学生的毕业设计过程和结果进行考核外,也给学生提供了完成毕业设计目标的指导。在实际操作中,将对毕业设计的考核从过程检查、评阅、答辩等几个环节进行考虑,各环节又有细分指标,如论文选题、工作量、分析设计,程序运行、系统界面、论文结构、熟悉程度等,用权重表示指标的重要性程度,每个指标有几个不同得分等级,每个等级对应一个可参考的评判标准,从而将以前的主观考核变为根据指标进行量化计算,有效地减少人为因素对评价的影响。
2规范毕业设计过程管理
传统的考评方式重视对结果的考核,缺少对过程的考核,大多数学生在进行实践环节任务时,没有一个良好的系统分析、设计、开发习惯,完全是“灵感触发”式的完成的,因此最终提交的往往是低劣的文档或代码。软件产品是知识密集性产品,实践证明,有效的过程管理是生产出好产品的一个必要条件。因此,必须规范毕业设计的课程管理,借助于3.1节建立的考核体系,对过程中的开题、需求文档、设计文档等关键环节进行考核,使学生在完成毕业设计的每一步时有明确目标的指导,通过过程的管理促使学生完成高质量的毕业设计成果。为了减少人为因素的影响,有必要建立毕业设计过程管理及控制系统,用管理信息系统规范毕业设计的过程管理。
3采用团队培养模式
系统分析与设计的能力是软件工程专业学生需要培养的一项最主要能力,而简单的系统开发或项目由于功能简单、业务单一,对锻炼学生的系统分析和设计能力作用不大。因此,可以采用多名学生组团共同完成一项较复杂系统的方式,每名学生负责其中的一部分,学生之间通过对复杂点的业务逻辑的讨论来提高系统分析和设计的能力,通过团队合作来了解项目管理与软件工程方法的精髓。
4与企业合作指导
由于企业面对的都是实实在在的项目,有自我学习的环境氛围和压力,在培养学生动手实践能力方面有其独特的优势。在企业,每天都有相应的任务,在完成任务过程中,必然会碰到各种类型的问题,会寻求问题的解决方法,在解决问题的过程中很自然地就提升了自己的能力。这种任务驱动的学习方法和实际项目环境下的压力在学校是很难提供的。近些年来,学院也在加强与企业的合作,在有条件的情况下尽量派学生深入到公司、企业进行实习,已签约的学生也可以提前到签约企业工作,以企业的项目来完成其毕业设计环节,实现企业、学校共同指导的方式。
结束语
毕业设计环节由于实践性、综合性强,涉及知识点多,其管理与考核一直是让人头疼的问题。论文描述了重庆理工大学软件工程专业毕业设计环节的背景和现状,指出了软件工程专业毕业设计质量难于管理和考核的特点。通过对近几年毕业设计开展情况的总结与分析,发现了毕业设计质量难于考核和控制的具体原因,并指出当前毕业设计管理和考核所存在的问题,最后提出了解决这些问题的一些具体实施策略。结果表明,策略的实施对毕业设计过程的管理及考核答辩工作有较大的作用,学生毕业设计质量有了显著的提高。
作者:刘智王森闫河单位:重庆理工大学计算机科学与工程学院
摘要:针对地方应用型本科高校计算机软件类毕业设计质量不高的问题,对毕业设计中存在的问题进行分析,并结合软件工程的基础理论,提出利用软件工程思想对计算机软件类毕业设计进行指导,以提高地方应用型普通本科高校毕业设计的质量。
关键词:软件工程;毕业设计;应用
一、引言
毕业设计是本科毕业生在校期间的最后实践和综合实训阶段,是实现本科教育培养目标的重要组成部分,是深化、拓展、综合应用所学理论知识的重要过程;也是综合素质与工程实践能力培养效果的全面检验;是学生毕业及学位资格认定的重要依据;是衡量高等教育质量和办学效益的重要评价,是对专业理论知识和专业技术综合应用能力的强化训练和提升[1]。在毕业设计的过程中,学生利用所学专业理论知识,通过了解社会,分析社会需求,深入实践,完成毕业设计的任务和撰写毕业论文(设计)报告等各个环节的工作。对于地方应用型普通本科高校而言,毕业设计就相当于一般高等学校的毕业论文,但是毕业设计不同于毕业论文,它的组成部分不只是一篇学术论文。应用型高校的毕业设计注重的是“应用性”和“实践性”,学生毕业设计要求学生针对某一课题,综合运用本专业有关课程的理论和技术,自己动手动脑做出解决实际问题的设计。目的是总结、检查学生在校期间的学习成果,是评定毕业成绩的重要依据。同时,通过毕业设计,可培养学生开发项目的基本综合能力,为学生就业能力中的专业能力奠定坚实的基础;培养综合运用已有知识独立解决问题的能力,从而加强学生应用能力的培养,使学生能够学以致用。
二、地方应用型普通高校计算机相关专业学生毕业设计的现状
近几年来,由于学校对毕业设计要求不断提高,学生从选题到设计再到写出毕业设计报告的过程中总存在这样那样的问题,最终有个别同学没有顺利通过毕业设计,没有拿到毕业证和学位证的情况时有发生,并且大多数毕业设计的水平不高,达不到培养学生独立解决问题和提高学生应用能力的目的。因此,如何指导学生做好毕业设计,提高学生毕业设计水平和质量,是地方应用型普通高校面临的一个重要问题。
(一)毕业设计选题现状最近几年,我校计算机相关专业毕业生自进入大四秋季学期开始,在进行毕业实习的同时,也进入了毕业设计准备阶段:毕业设计选题,虽然毕业设计选题过程中,各级领导、指导教师和学生在态度是都很重视,但是在选题时也会存在很多的问题,主要有以下三个方面。1.选题不够准确。部分学生选题未经深思熟虑,所选毕业设计题目要实现的功能太多,在规定时间内不能独立完成,而最终只能实现部分功能,或部分模块。
2.题目相似或重复雷同。学生选题存在浑水摸鱼的思想,在毕业设计选题过程中不是根据自己的兴趣爱好、专业知识学习情况等确定研究选题,而是选择与他人类似或雷同的选题,甚至同一批毕业的许多学生选题一致。比如:“XX管理系统”等,除了可能冠以的系统名称不同之外,其余基本相同。
3.应用价值低。部分学生的选题是当前十分成熟的项目,没有研究的必要;有些选题已经被淘汰,在实际生活和工作中没有多大用途。
(二)毕业设计需求分析阶段现状
通过调查,许多学生选题完成后,没有对自己所做毕业设计选题进行仔细了解、分析,他们认为在毕业设计中最重要的就是编程,其他方面一带而过[2],从而造成毕业设计过程中主题经常进行修改,最终使得整个系统杂乱无章,无法继续进行下去。因此学生在毕业设计的需求分析阶段主要有以下三个方面的问题。
1.选题后未进行实际调查研究,甚至未查找相应的参考文献。
2.需求分析进行得不彻底、不准确,即使选题后查找了参考文献和资料的,也未做充分了解和分析。
3.在需求分析阶段没有写出需求规格说明书或系统分析报告就匆忙进入系统设计阶段,导致随着系统设计的逐步深入,原来确定的需求不能满足毕业设计的需要,正在进行的设计与开始的期望和设想又不相符。
(三)毕业设计系统设计阶段现状
在系统设计阶段,普遍存在以下两个方面问题。
1.由于需求的不明确,在进行系统设计时,修改随意,没有严格按照软件开发的步骤进行。好多学生在进行系统设计时并没有建出相应的功能模型,不管是用例图还是DFD图都没有,而且系统设计过程中功能随意变换,并且各功能模块的层次结构不清晰,使得整个系统的功能模块划分凌乱,不符合软件设计中“高内聚,低耦合”的原则。
2.在软件设计过程中,不先进行概要设计、详细设计和模块设计,没有软件的过程性描述,直接进行编码,存在想到哪里就做到哪里,走到哪儿算哪儿的随意思想[3],当前内容没有做完便开始其他内容,使得整个系统设计杂乱无章。在这样的一种研究状态下,即使完成了设计,效率也非常低下,软件结构混乱,功能实现不完全,降低了软件设计的质量。
(四)毕业设计实现阶段现状
通常把编码和测试统称为实现。在进行软件设计后,就可以根据设计结果来实现,将软件的过程性描述编码,得到计算机可以运行的源代码。在实现阶段主要有以下几方面的问题。
1.编码随意。学生在编码的过程中,不注意编程风格的把握,导致程序的可读性、可理解性、可修改性等较差,在答辨的过程中,要求指出某个功能模块的代码时,经常要花费很多时间才找得到。
2.测试和调试可有可无。大部分学生在毕业设计的软件编码完成以后,从没有想过进行完整的系统测试,或者只对个别功能进行测试或是随意测试,没有按照测试步骤逐步进行;基本没有单元测试和集成测试,一般只是最终随便输入几个数据简单检测一下,如果有错,修改了就算完了;也没有进行回归测试,没有测试计划,没有想过用什么测试技术来检测某一类型的错识,没有相应的测试用例,也没有测试结果分析。由于学生毕业设计都是一人一题,基本上是一个人完成所有步骤,就算有测试,在测试阶段也是自己进行测试,从心理学的角度来说,自己对自己开发的软件进行测试是不可取的。由于前面阶段的文档不完善,也不重视测试过程,不清楚是否实现了系统最初设计的功能,是否达到相应的性能要求,总以为程序做出来后毕业设计就完成了,使得毕业设计经常在更换运行环境或答辩时发生错误和问题,从而使得设计得不到好评甚至无法通过。
(五)毕业设计应用现状
最近几年,我校计算机相关专业毕业设计投入使用数量接近于零。究其原因主要是由于设计不完全,未进行测试和调试,存在的错误和缺陷较多,文档和数据不完整,导致所开发的系统或软件不能方便地转让、变更、修正、扩充和使用,也没有为后期培训、维护留下完备的资料;因此,不能投入到真正的使用过程中,也不能实现系统或软件产品的效益。
三、软件工程思想的应用
软件工程(SoftwareEngineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。软件工程中的软件生命周期是一个软件从软件定义、开发、运行和维护,直到最终被废弃的整个过程[2]。地方应用型普通高校计算机相关专业学生毕业设计基本都是开发一些中、小型应用系统或软件,因此,学生毕业设计也要经历软件生命周期各个阶段,严格遵守软件工程的各个原则,这样有助于解决毕业设计中存在的问题,提高毕业设计的质量。通过对应用型普通本科高校计算机相关专业的学生在进行毕业设计的过程中存在的问题进行分析,在毕业设计的过程中,必须运用软件工程的观点、技术和方法来指导毕业设计,这样既节约了毕业设计的时间和学生的精力,也能做出最优质的毕业设计。
1.选题过程中的应用。毕业设计选题就是软件生命周期的问题定义中的问题提出阶段,选好题目是进行深入研究的基础,也是写出高质量毕业论文的前提。地方应用型普通本科高校计算机相关专业的毕业设计选题必须做到以下几点:(1)必须在对选题做了充分调查、分析,对检索的参考文献、资料有了整体把握的基础上提出。(2)必须符合本专业培养方案规定的培养目标的要求。(3)以选择工程性较强的课题为主,确保有足够的工程性训练。(4)要有明确的设计成果,对于较大型任务的课题要明确阶段性成果。(5)要达到规定的工作量,难易度适中,确保能在规定的时间内完成整个课题工作。(6)要围绕生产生活实际,所选题目一定具有一定的理论意义和实践意义,具有一定的价值。(7)原则上一人一题,对于较大型任务的课题,每个学生必须有独立子课题。结合以上几点,分别从专业基础、现实意义等方面进行全面分析,进行取舍,最终得出选题。
2.开题过程中的应用。在毕业设计的开题过程中,需要明确所选题目的选题依据(包括选择课题的背景、选题研究的理论及实践意义)、选题研究现状(包括目前国内外对本选题的研究情况和有待解决的问题)、研究内容与方法,而这些就是软件工程中需求分析阶段应该做的事情。需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作[3]。因此开题过程中最重要的是进行需求分析,需求分析具有决策性、方向性、策略性的作用,在软件开发的过程中具有举足轻重的地位。需求分析完成的好坏直接影响后续软件开发的质量。开题过程中需要指导学生大量地阅读相关的研究资料,同时根据资料进行分析研究,对当前毕业设计的研究进度做到心中有数,明确毕业设计的具体方向,写出毕业设计的研究内容与方法,得到相应的设计提纲,解决好设计什么,如何设计的问题。因此,应用好软件工程的思想来指导毕业设计的开题是至关重要的。根据学校对学生毕业论文的要求,在计算机相关专业的毕业设计报告中,要求要有数据流图、数据字典等相应内容,而软件工程中的数据流图(DataFlowDia-gram,简称DFD),它是从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。它是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理[3]。因此,在这个阶段,要指导学生按照DFD图的要求,确定设计的功能,然后根据系统分析结果写出分析报告,就得出毕业论文中系统分析阶段的初始文档。
3.在实践研究环节的应用。根据需求分析(开题阶段)的结果进行软件的概要设计和详细设计,注意在设计过程中要严格按照软件工程对于设计阶段的指导原则来进行设计。将概要设计阶段需求分析得到的DFD转换为软件结构和数据结构,即是根据需求确定软件和数据的总体框架,设计出软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。然后再进行详细设计,设计出每个模块的实现算法、所需的局部数据结构,并且对每个模块写出过程性描述;为每个模块设计出一组测试用例,在进行测试时就以此测试用例来进行测试。详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后将根据这个“蓝图”写出实际的程序代码。因此,指导教师要对学生的设计过程进行监督和指导,防止学生盲目的进行编码。
4.在实现阶段的应用。在编码的过程中,要注意编程风格的把握,编程的风格在很大程度上影响程序的可读性、可测试性和可维护性。在测试阶段,可以进行交叉测试,即学生之间可以两两交叉,相互测试,以更好的达到测试效果,同时也培养了学生的团队意识和合作意识。在测试过程中要注意运用软件工程的测试原则和测试思想,严格按照单元测试集成测试确认测试系统测试验收测试的测试步骤进行,利用白盒测试技术进行单元测试,黑盒测试技术进行其他测试,并且在找出错误并修改后要进行相应的回归测试,确认修改了错误并且没有引入新的错误,这样有利于找到软件中的各类错误,提高软件的质量。因此,在软件的测试过程中,一定要严格按照软件工程中的测试原则来进行,不可随意进行测试,并且要注意测试文档资料的收集整理,要有相应的测试计划和测试报告。对学生的创造性的思维和想法,指导教师要给予支持,积极引导,鼓励学生大胆创新,用应用型人才培养目标来要求学生,保证高质量的毕业设计的完成。
5.在毕业论文(设计)报告方面的应用。对于应用型普通本科高校计算机相关专业的毕业设计而言,不单单是完成了一个系统的设计,还要有相应的设计报告,而设计报告的编写过程中,很多学生存在文字表达能力不强的现象,为了完成报告,就有可能会抄袭,特别是在软件开发的各个阶段文档材料不全的情况下更为严重。因此,在学生进行软件开发的各个环节中,指导教师都应该按照软件工程的观点来进行指导,并要求学生在各个阶段都完成相应的文档。这样在毕业设计报告撰写的过程中,只要将各个阶段的文档进行合并、整理就得到相应的设计报告,并且是一篇重复率不高的高质量的设计报告。6.在毕业设计实际应用方面的应用。因为学生在整个系统或软件过程中均按软件设计规范准备了文档和进行了完整的系统测试,从而为系统或软件的专利申请提供了充分必要的资料,并为毕业设计的实际应用打下良好的基础。
四、结语
计算机相关专业学生的毕业设计在学生的整个大学生活中具有极其重要的地位和作用,根据应用型普通本科高校人才培养的定位,主要是培养学生的独立思考能力、动手能力和应用能力。通过对软件工程思想在计算机相关专业学生毕业设计的过程及方法中的应用研究,逐步实现学生毕业设计的实际成果转化,从而为应用型计算机相关专业人才培养提供相应的借鉴。
作者:龙亚 张仕学 余廷忠 单位:贵州工程应用技术学院
1概述
在应用型本科院校中,尤其是软件工程专业,毕业设计作为教学计划的重要组成部分,是实践教学中的最后一个环节,也是对学生在校期间所学知识的一次综合、全面的总结、应用和提高。由于毕业生数量的不断增加和软件行业的迅猛发展,导致就业门槛越来越高,就业压力也越来越大,通过毕业设计过程中的训练,能有效提高学生的工程应用能力,使学生得到一定的实践经验,有利于学生从学校向工作岗位的平稳过度。因此,毕业设计质量的好坏,不仅反映了一所高校的教学质量,也会直接影响到学生的就业竞争力和就业后的职场适应能力。
2存在的问题
1)思想认识上不够重视学生方面:有些学生存在完成任务式的应付心里,避重就轻,能简就简,敷衍了事。有些学生则只重视找工作而轻视毕业设计,不愿在毕业设计上花费太多时间和精力,甚至有些学生还以找工作为由,完全依赖于导师,向导师索要源代码,甚至花钱在网上购买来交差。已经找到工作的学生,更是认为毕业设计做的好与不好对自己没什么影响,对待毕业设计也更加心不在焉。导师方面:大多数指导教师除了要指导学生毕业设计之外,还要承担大量的教学和科研任务,在毕业设计指导工作上能够投入的精力和时间非常有限,致使有些导师对毕业设计的指导工作不太重视,对学生放任自流,不管不问,或者是直接将相关源代码发给学生,以“简化”指导工作。由于思想上的不重视,学生学习态度不认真,导师指导工作不到位,造成毕业设计流于形式,疏于管理,效果较差,使得学生白白浪费了毕业前的一次综合训练机会。因此,如何充分认识毕业设计的重要性,并进行相应的教学改革是软件工程专业毕业设计必须要面对并解决的问题。
2)时间安排上不够科学毕业设计一般安排在第八学期,这期间刚好是学生求职和考研的黄金时间段,由于目前就业形势的日益严峻,学生就业压力越来越大,当求职和考研时间与毕业设计时间发生冲突时,学生都会选择将主要精力投入到求职和考研上,有些还要去外地求职、应聘考试、面试等,毕业设计自然是无暇顾及。而且,学校方面,为了保证就业率,往往对学生毕业设计的质量也是睁一只眼闭一只眼,这又在无形中鼓励了学生消极对待毕业设计的态度,毕业设计质量下降也就成为必然结果。
3)题目设置上不够合理由于毕业设计在高校各类教学活动中是最具综合性和独立性的,相对于常规课程而言,对指导教师要求也就更高,尤其软件工程专业,工程实践性比较强,但每年真正来源于实际工程项目的题目所占的比例较小,很多题目都是虚构出来的,导致有些题目不是理论性太强,就是缺乏具体需求的支撑,使学生很难从毕业设计过程中真正领悟到真实的软件工程方法。而有些指导教师自己都没参与过实际的工程项目,本身就缺乏实践经验,对学生毕业设计的指导只是凭着自己的感觉来进行,缺乏系统性、整体性、科学性和严谨性,学生遇到问题后,难以得到及时的解决,导致抄袭现象时有发生,甚至有些学生直接照搬往届毕业生的设计成果。毕业设计的主要目的在于通过毕业设计的训练来提升学生对所学知识的综合应用能力以及创新能力,从而实现学生从学校到工作岗位的平稳过度。但由于题目设置上的不合理,题量太少,层次不清,导致选题匹配效果差。在选题时,部分能力差的学生所选题目难度太大,造成毕业设计很难完成,而有些能力强的学生所选题目难度过小,达不到能力提升的目的。
4)过程监管上不够到位众所周知,对于软件工程项目而言,过程控制与管理是项目执行的关注点,毕业设计也当如此。虽然学校也会在毕业设计过程中组织对各阶段的工作情况进行检查,但执行检查工作的不一定是专业教师,使得这种检查大多只是对指导老师所填写的各种表格和文档等表面内容进行检查,对毕业设计的过程起不到实际的监督作用,再加之有些学生在校外求职或实习等原因造成指导教师与学生无法定期见面和沟通不畅等问题,使得指导教师难以用软件工程方法对学生进行指导。毕业设计虽然启动较早,但实际上很多学生前期在毕业设计上很少投入时间和精力,只是在答辩前为了完成任务而赶工应付,这样的毕业设计质量自然也就不佳。
5)量化考核上不够严格毕业设计成绩一般由平时成绩+论文成绩+答辩成绩三部分按一定比例构成,平时成绩由指导教师自行把握,论文成绩则由其他有经验的教师进行评阅,答辩成绩由答辩委员会老师按照相关评分标准打分并取平均分,这样虽然基本可以保证成绩的公正性,但成绩构成太简单,未显示地将开题报告、文献翻译、分析和设计过程以及总结等纳入到考核范围,对毕业设计的前期和中期工作没有约束力。在成绩评定时,有些导师要求不严,采取宽容迁就的态度。答辩时,通过门槛较低,造成大部分学生仅以答辩及格为目标,在思想上不重视,答辩准备工作不扎实。同时,学校为了提高学生毕业率,在最终答辩时,对毕业设计的质量要求也有所放松,这也是导致毕业设计质量难以保证的一个重要原因。
3采取的对策
时间安排上,可以提前启动毕业设计工作,将原来的第八学期开始提前到第六学期中后期,此时学生已经学完大部分课程,具有了一定的知识基础,而且学生都在校,可以随时与导师见面,指导教师也有充分的时间对毕业设计项目随时跟进,随时指导。导师资格审查上,对于软件工程专业来说,学生毕业设计的导师,应该由长期从事实际工程实践或者有较好科研成果的“双师型”(双师即“教师”、“工程师”)教师来担任,也可以聘请校外科研单位或企业中水平较高的工程师来担任企业导师,这样不仅可以减轻指导教师短缺的压力,也能促进指导教师队伍多元化模式的形成。题目设置上,要求题量要充分,使得水平层次不同的学生都能选到合适的题目;难度和工作量要适中,且要有一定的创意,使学生通过毕业设计的训练,在综合应用能力和创新能力上都能够得到有效的提高。有课题的指导教师要尽量结合自己的课题来设计题目,没课题的指导教师可以从与学校有合作的企事业单位中获取有实际意义的题目。鼓励学生根据自己的兴趣点和就业取向自拟题目,允许学生到实习企业中根据企业的实际工程需要选题和实施毕业设计,这样既能解决实际问题又可完成毕业设计。过程监管上,首先要在指导教师和学生之间建立有效的沟通联系机制和问题讨论的例会制度,充分发挥指导教师的引导作用,在毕业设计过程中,坚持每周师生沟通一次。学生提出问题,指导教师引导和总结,鼓励学生发挥主观能动性和创造力。同时,学校要成立由领导牵头、具有一定工程实践经验的专业技术人员组成的督导组,对毕业设计过程包括选题、开题、中期检查、答辩和成绩评定等各个环节实施有效的监控和督导,加强管理学生的同时也要加强对指导教师工作质量的检查,确保毕业设计工作能够有序、有效的实施。量化考核上,要对毕业设计从前期的开题、文献查阅,到中期的分析、设计、实现,再到后期的总结等各个阶段的进行量化考核,前一阶段的成绩考核不合格者,不能进行下一阶段工作,必须加以整改,直到整改合格后才能进入下一阶段。对于未能按要求如期完成毕业设计的可以推迟答辩,对于首次答辩不合格的可以进行二次答辩,仍不合格的,可以缓发毕业证。只有建立严格的考核制度,才能对学生有约束力,让学生从思想上重视毕业设计,进而保证毕业设计的质量。
4结束语
软件工程是一个实践性很强的专业,软件工程专业的毕业设计作为大学四年学习的总结,是学生从学校跨入社会前仅有的一次大检验,它不仅检验了学生对所学知识的综合应用能力和学生的综合素质,同时也检验了学校的培养模式和教学质量。毕业设计质量的好坏,不仅关系到软件工程专业的培养目标,也关系到学生的就业率与就业质量。因此,在就业形势日趋严峻的情况下,软件工程专业毕业设计的教学改革也要适应就业市场需求,紧跟行业发展变化,与时俱进。
作者:张华 单位:南阳理工学院
一、软件工程专业毕业设计存在的主要问题
(一)毕业设计题目设置与选题方面
题目设置不合理,类别与层次不清晰,选题匹配效果差[2]。学生的毕业设计课题一般都按照指导老师的研究方向和实际工程项目提供,但每年真正来源于工程实践题目比例较少。部分题目理论性强,学生根据所学知识不能很好理解;部分题目开发工具复杂,占用了毕业设计的大部分时间。在选题时可能导致学生想选的题目选不上,能力差的学生所选题目难度大,影响学生的积极性,导致选题效果差,造成毕业设计很难完成。
(二)毕业设计过程监控方面
毕业设计监控工作实施困难,效果较差。软件工程专业毕业设计一般包含选题、开题、中期检查、程序测试、撰写毕业论文、答辩、成绩评定。但对这些环节的监控有时候会形成空白带,毕业设计不在实验室进行,有的学生在实习单位实习,有的学生在外地找工作,老师不能定时与学生见面,老师无法了解学生的具体情况,且学生提交的各阶段文档流于形式,只有指导教师在进行监控,未形成完善的监控体系,导致监控不到位,监控效果较差[3]。
(三)毕业设计论文答辩方面
答辩考核方法单一,答辩仅由学生的讲解和老师的提问两个环节组成,考核准确度低。答辩通过门槛较低,答辩只对学生的毕业设计进行排名,一般排名在最后的学生才可能不及格,不利于提高学生毕业设计积极性,造成大部分同学仅以答辩及格为目标,思想上不重视,答辩准备工作不扎实。再由于软件工程专业特点,毕业设计软件作品评分标准难于量化,考核具有一定难度,也造成答辩效果不好。同时为了提高学生毕业率和就业率,毕业答辩的质量控制有所放松,直接导致了软件工程专业毕业设计质量难以保障。
二、软件工程专业毕业设计的教学改革
针对上述各项实际问题,主要进行的相关工作具体如下:
(一)合理设置毕业设计题目,动态选题
依照软件工程专业的以市场需求为导向,培养应用型软件工程人才的培养目标,在毕业设计题目设置环节,紧紧围绕工程实际型、创新项目型、竞赛题目型、科研项目型等类型进行题目设置,以适应市场动态需求。同时着力避免在毕业设计题目中设置虚拟型题目、理论研究型题目、综述型题目、分析设计型题目等。在选题过程中,通过毕业设计管理系统(如图1所示)进行多轮双向动态选择,动态调整题目各项技术参数以保证学生能选择一个适合自己能力且能有利于自己以后工作的题目[4]。这样,在选题之后,每个指导老师就可以根据学生不同能力进行分别指导,使不同能力的学生都能够运用其所学知识解决工程实际问题,都能够通过毕业设计增强工程实践能力、工程设计能力与创新能力。近四学年软件工程专业毕业设计各类题目汇总。
(二)毕业设计过程实行三级监控管理机制
学校成立以主管副校长为组长的毕业设计工作领导小组以加强毕业设计宏观调控,学院成立以教学副院长为组长的毕业设计工作领导小组以加强毕业设计协调与监控工作,软件工程专业成立以专业负责人为组长的毕业设计工作小组落实并实施毕业设计各环节具体工作[2]。具体参见下图2。在实现毕业设计过程管理的三级管理机制的同时,为保障毕业设计工作质量,软件工程专业要求所有指导教师必须具有中级以上技术职称或硕士以上学位且有一定工程实践经验,具有较高教学、科研水平和创新能力,师德良好,工作态度认真负责。在每年的毕业设计指导工作开始前都对指导教师进行资格审查,择优任用,且每位教师指导的学生不超过6人,以保证指导教师对学生的充分指导[5]。
(三)毕业设计过程量化考核
以往软件工程专业毕业设计成绩通常由三部分组成:一是学生的平时表现由指导老师把握;二是学生的毕业论文成绩。由专业其他指导老师进行评阅;三是现场答辩成绩。由所在组的指导教师按照相关评分标准打分并取平均分。这样基本能够保证毕业设计成绩的公正,但是由于只有毕业答辩环节具有约束力即答辩未通过则总成绩不及格,其他环节不具约束力,因此造成毕业设计前期、中期工作流于形式,前期、中期阶段提交的文档趋于应付、质量不高,最终导致毕业论文质量较低[6,7]。为此,软件工程专业经过几年的探索与实践,实施了毕业设计各阶段的软件工程生命周期量化考核法即各个阶段量化考核,且考核成绩不合格者不能进行下阶段毕业设计工作,必须加以整改,整改通过后才能进入下一阶段毕业设计工作。经过几年的实践证明该考核方法切实可行,能够保证毕业设计各个环节的质量,最终提高毕业设计总体质量。
(四)在毕业设计过程中进一步提高学生工程能力与创新能力
辽宁工业大学于2011年制定并实施了大学生创新团队机制,建立了大学生创新项目申报机制引导大学生开展创新活动;引导学生每年都参加校级、省级、国家级软件设计大赛等各类各级比赛[8]。随着学校和学院创新教育活动多年持续深入开展,软件工程专业学生的创新与创业活动取得了显著成果。超过1/4的软件工程专业学生能够独立主持创新性项目,并以该项目为原型申报毕业设计题目[9],同时参加省级、国家级计算机竞赛并获得奖项。通过主持校级及省级创新项目既毕业设计题目,学生工程能力、创新能力得到极大锻炼与提高,本专业毕业生就业率与就业质量明显提高。软件工程专业学生主持参加创新项目既毕业设计题目情况见表3。
三、结束语
软件工程专业毕业设计是一个极具综合性、实践性的重要环节,是对学生大学四年学习后面向社会与企业前的有且仅有的一次大检验,它不仅检验了学生所学知识、能力与综合素质,还检验了软件工程专业的培养目标、培养模式、课程体系、实践体系、创新体系等相关环节[10]。经过几年的探索与实践证明,软件工程专业所做的系列教学改革工作中的毕业设计教学改革工作有利于进一步增强学生的工程实践能力和创新能力,有利于提高软件工程专业毕业设计质量,有利于提高软件工程专业学生就业率与就业质量。虽然软件工程专业毕业设计教学改革工作取得了一定的成绩,社会认可度逐年稳步提高,但如何动态调整教学计划以跟进市场需求变化;如何深入开展大学生创新创业教育活动以进一步增强更多软件工程专业学生的实践能力及创新能力;如何进一步加强专业教师工程实践能力、工程设计能力与工程创新能力以提高毕业设计指导效力;如何提高毕业设计过程管理效率等问题仍然是软件工程专业所面临的严肃课题[11]。因此,软件工程专业的毕业设计教学改革工作也一定会紧跟时代变化,与时俱进。
作者:佟玉军谢文阁王恩喜刘鸿沈姜悦岭工作单位:辽宁工业大学电子与信息工程学院
摘要:针对地方应用型本科高校计算机软件类毕业设计质量不高的问题,对毕业设计中存在的问题进行分析,并结合软件工程的基础理论,提出利用软件工程思想对计算机软件类毕业设计进行指导,以提高地方应用型普通本科高校毕业设计的质量。
关键词:软件工程;毕业设计;应用
一、引言
毕业设计是本科毕业生在校期间的最后实践和综合实训阶段,是实现本科教育培养目标的重要组成部分,是深化、拓展、综合应用所学理论知识的重要过程;也是综合素质与工程实践能力培养效果的全面检验;是学生毕业及学位资格认定的重要依据;是衡量高等教育质量和办学效益的重要评价,是对专业理论知识和专业技术综合应用能力的强化训练和提升[1]。在毕业设计的过程中,学生利用所学专业理论知识,通过了解社会,分析社会需求,深入实践,完成毕业设计的任务和撰写毕业论文(设计)报告等各个环节的工作。对于地方应用型普通本科高校而言,毕业设计就相当于一般高等学校的毕业论文,但是毕业设计不同于毕业论文,它的组成部分不只是一篇学术论文。应用型高校的毕业设计注重的是“应用性”和“实践性”,学生毕业设计要求学生针对某一课题,综合运用本专业有关课程的理论和技术,自己动手动脑做出解决实际问题的设计。目的是总结、检查学生在校期间的学习成果,是评定毕业成绩的重要依据。同时,通过毕业设计,可培养学生开发项目的基本综合能力,为学生就业能力中的专业能力奠定坚实的基础;培养综合运用已有知识独立解决问题的能力,从而加强学生应用能力的培养,使学生能够学以致用。
二、地方应用型普通高校计算机相关专业学生毕业设计的现状
近几年来,由于学校对毕业设计要求不断提高,学生从选题到设计再到写出毕业设计报告的过程中总存在这样那样的问题,最终有个别同学没有顺利通过毕业设计,没有拿到毕业证和学位证的情况时有发生,并且大多数毕业设计的水平不高,达不到培养学生独立解决问题和提高学生应用能力的目的。因此,如何指导学生做好毕业设计,提高学生毕业设计水平和质量,是地方应用型普通高校面临的一个重要问题。
(一)毕业设计选题现状
最近几年,我校计算机相关专业毕业生自进入大四秋季学期开始,在进行毕业实习的同时,也进入了毕业设计准备阶段:毕业设计选题,虽然毕业设计选题过程中,各级领导、指导教师和学生在态度是都很重视,但是在选题时也会存在很多的问题,主要有以下三个方面。
1.选题不够准确。部分学生选题未经深思熟虑,所选毕业设计题目要实现的功能太多,在规定时间内不能独立完成,而最终只能实现部分功能,或部分模块。
2.题目相似或重复雷同。学生选题存在浑水摸鱼的思想,在毕业设计选题过程中不是根据自己的兴趣爱好、专业知识学习情况等确定研究选题,而是选择与他人类似或雷同的选题,甚至同一批毕业的许多学生选题一致。比如:“XX管理系统”等,除了可能冠以的系统名称不同之外,其余基本相同。
3.应用价值低。部分学生的选题是当前十分成熟的项目,没有研究的必要;有些选题已经被淘汰,在实际生活和工作中没有多大用途。
(二)毕业设计需求分析阶段现状
通过调查,许多学生选题完成后,没有对自己所做毕业设计选题进行仔细了解、分析,他们认为在毕业设计中最重要的就是编程,其他方面一带而过[2],从而造成毕业设计过程中主题经常进行修改,最终使得整个系统杂乱无章,无法继续进行下去。因此学生在毕业设计的需求分析阶段主要有以下三个方面的问题。
1.选题后未进行实际调查研究,甚至未查找相应的参考文献。
2.需求分析进行得不彻底、不准确,即使选题后查找了参考文献和资料的,也未做充分了解和分析。
3.在需求分析阶段没有写出需求规格说明书或系统分析报告就匆忙进入系统设计阶段,导致随着系统设计的逐步深入,原来确定的需求不能满足毕业设计的需要,正在进行的设计与开始的期望和设想又不相符。
(三)毕业设计系统设计阶段现状
在系统设计阶段,普遍存在以下两个方面问题。
1.由于需求的不明确,在进行系统设计时,修改随意,没有严格按照软件开发的步骤进行。好多学生在进行系统设计时并没有建出相应的功能模型,不管是用例图还是DFD图都没有,而且系统设计过程中功能随意变换,并且各功能模块的层次结构不清晰,使得整个系统的功能模块划分凌乱,不符合软件设计中“高内聚,低耦合”的原则。
2.在软件设计过程中,不先进行概要设计、详细设计和模块设计,没有软件的过程性描述,直接进行编码,存在想到哪里就做到哪里,走到哪儿算哪儿的随意思想[3],当前内容没有做完便开始其他内容,使得整个系统设计杂乱无章。在这样的一种研究状态下,即使完成了设计,效率也非常低下,软件结构混乱,功能实现不完全,降低了软件设计的质量。
(四)毕业设计实现阶段现状
通常把编码和测试统称为实现。在进行软件设计后,就可以根据设计结果来实现,将软件的过程性描述编码,得到计算机可以运行的源代码。在实现阶段主要有以下几方面的问题。
1.编码随意。学生在编码的过程中,不注意编程风格的把握,导致程序的可读性、可理解性、可修改性等较差,在答辨的过程中,要求指出某个功能模块的代码时,经常要花费很多时间才找得到。
2.测试和调试可有可无。大部分学生在毕业设计的软件编码完成以后,从没有想过进行完整的系统测试,或者只对个别功能进行测试或是随意测试,没有按照测试步骤逐步进行;基本没有单元测试和集成测试,一般只是最终随便输入几个数据简单检测一下,如果有错,修改了就算完了;也没有进行回归测试,没有测试计划,没有想过用什么测试技术来检测某一类型的错识,没有相应的测试用例,也没有测试结果分析。由于学生毕业设计都是一人一题,基本上是一个人完成所有步骤,就算有测试,在测试阶段也是自己进行测试,从心理学的角度来说,自己对自己开发的软件进行测试是不可取的。
由于前面阶段的文档不完善,也不重视测试过程,不清楚是否实现了系统最初设计的功能,是否达到相应的性能要求,总以为程序做出来后毕业设计就完成了,使得毕业设计经常在更换运行环境或答辩时发生错误和问题,从而使得设计得不到好评甚至无法通过。
(五)毕业设计应用现状
最近几年,我校计算机相关专业毕业设计投入使用数量接近于零。究其原因主要是由于设计不完全,未进行测试和调试,存在的错误和缺陷较多,文档和数据不完整,导致所开发的系统或软件不能方便地转让、变更、修正、扩充和使用,也没有为后期培训、维护留下完备的资料;因此,不能投入到真正的使用过程中,也不能实现系统或软件产品的效益。
三、软件工程思想的应用
软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。软件工程中的软件生命周期是一个软件从软件定义、开发、运行和维护,直到最终被废弃的整个过程[2]。地方应用型普通高校计算机相关专业学生毕业设计基本都是开发一些中、小型应用系统或软件,因此,学生毕业设计也要经历软件生命周期各个阶段,严格遵守软件工程的各个原则,这样有助于解决毕业设计中存在的问题,提高毕业设计的质量。通过对应用型普通本科高校计算机相关专业的学生在进行毕业设计的过程中存在的问题进行分析,在毕业设计的过程中,必须运用软件工程的观点、技术和方法来指导毕业设计,这样既节约了毕业设计的时间和学生的精力,也能做出最优质的毕业设计。
1.选题过程中的应用。毕业设计选题就是软件生命周期的问题定义中的问题提出阶段,选好题目是进行深入研究的基础,也是写出高质量毕业论文的前提。地方应用型普通本科高校计算机相关专业的毕业设计选题必须做到以下几点:(1)必须在对选题做了充分调查、分析,对检索的参考文献、资料有了整体把握的基础上提出。(2)必须符合本专业培养方案规定的培养目标的要求。(3)以选择工程性较强的课题为主,确保有足够的工程性训练。(4)要有明确的设计成果,对于较大型任务的课题要明确阶段性成果。(5)要达到规定的工作量,难易度适中,确保能在规定的时间内完成整个课题工作。(6)要围绕生产生活实际,所选题目一定具有一定的理论意义和实践意义,具有一定的价值。(7)原则上一人一题,对于较大型任务的课题,每个学生必须有独立子课题。结合以上几点,分别从专业基础、现实意义等方面进行全面分析,进行取舍,最终得出选题。
2.开题过程中的应用。在毕业设计的开题过程中,需要明确所选题目的选题依据(包括选择课题的背景、选题研究的理论及实践意义)、选题研究现状(包括目前国内外对本选题的研究情况和有待解决的问题)、研究内容与方法,而这些就是软件工程中需求分析阶段应该做的事情。
需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作[3]。因此开题过程中最重要的是进行需求分析,需求分析具有决策性、方向性、策略性的作用,在软件开发的过程中具有举足轻重的地位。需求分析完成的好坏直接影响后续软件开发的质量。开题过程中需要指导学生大量地阅读相关的研究资料,同时根据资料进行分析研究,对当前毕业设计的研究进度做到心中有数,明确毕业设计的具体方向,写出毕业设计的研究内容与方法,得到相应的设计提纲,解决好设计什么,如何设计的问题。因此,应用好软件工程的思想来指导毕业设计的开题是至关重要的。根据学校对学生毕业论文的要求,在计算机相关专业的毕业设计报告中,要求要有数据流图、数据字典等相应内容,而软件工程中的数据流图(Data Flow Diagram,简称DFD),它是从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。它是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理[3]。因此,在这个阶段,要指导学生按照DFD图的要求,确定设计的功能,然后根据系统分析结果写出分析报告,就得出毕业论文中系统分析阶段的初始文档。
3.在实践研究环节的应用。根据需求分析(开题阶段)的结果进行软件的概要设计和详细设计,注意在设计过程中要严格按照软件工程对于设计阶段的指导原则来进行设计。将概要设计阶段需求分析得到的DFD转换为软件结构和数据结构,即是根据需求确定软件和数据的总体框架,设计出软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。然后再进行详细设计,设计出每个模块的实现算法、所需的局部数据结构,并且对每个模块写出过程性描述;为每个模块设计出一组测试用例,在进行测试时就以此测试用例来进行测试。详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后将根据这个“蓝图”写出实际的程序代码。因此,指导教师要对学生的设计过程进行监督和指导,防止学生盲目的进行编码。
4.在实现阶段的应用。在编码的过程中,要注意编程风格的把握,编程的风格在很大程度上影响程序的可读性、可测试性和可维护性。
在测试阶段,可以进行交叉测试,即学生之间可以两两交叉,相互测试,以更好的达到测试效果,同时也培养了学生的团队意识和合作意识。
在测试过程中要注意运用软件工程的测试原则和测试思想,严格按照单元测试集成测试确认测试系统测试验收测试的测试步骤进行,利用白盒测试技术进行单元测试,黑盒测试技术进行其他测试,并且在找出错误并修改后要进行相应的回归测试,确认修改了错误并且没有引入新的错误,这样有利于找到软件中的各类错误,提高软件的质量。因此,在软件的测试过程中,一定要严格按照软件工程中的测试原则来进行,不可随意进行测试,并且要注意测试文档资料的收集整理,要有相应的测试计划和测试报告。对学生的创造性的思维和想法,指导教师要给予支持,积极引导,鼓励学生大胆创新,用应用型人才培养目标来要求学生,保证高质量的毕业设计的完成。
5.在毕业论文(设计)报告方面的应用。对于应用型普通本科高校计算机相关专业的毕业设计而言,不单单是完成了一个系统的设计,还要有相应的设计报告,而设计报告的编写过程中,很多学生存在文字表达能力不强的现象,为了完成报告,就有可能会抄袭,特别是在软件开发的各个阶段文档材料不全的情况下更为严重。因此,在学生进行软件开发的各个环节中,指导教师都应该按照软件工程的观点来进行指导,并要求学生在各个阶段都完成相应的文档。这样在毕业设计报告撰写的过程中,只要将各个阶段的文档进行合并、整理就得到相应的设计报告,并且是一篇重复率不高的高质量的设计报告。
6.在毕业设计实际应用方面的应用。因为学生在整个系统或软件过程中均按软件设计规范准备了文档和进行了完整的系统测试,从而为系统或软件的专利申请提供了充分必要的资料,并为毕业设计的实际应用打下良好的基础。
四、结语
计算机相关专业学生的毕业设计在学生的整个大学生活中具有极其重要的地位和作用,根据应用型普通本科高校人才培养的定位,主要是培养学生的独立思考能力、动手能力和应用能力。通过对软件工程思想在计算机相关专业学生毕业设计的过程及方法中的应用研究,逐步实现学生毕业设计的实际成果转化,从而为应用型计算机相关专业人才培养提供相应的借鉴。
摘要:就业是民生之本。做好高校毕业生就业工作,是建设人力资源强国和创新型国家的必然要求。党的十八届三中全会明确提出要“健全促进就业创业体制”,“促进以高校毕业生为重点的青年就业”。在对软件工程毕业生市场需求进行分析的基础上,本文主要介绍本科生的就业现状,并对促进毕业生就业的举措做出一些探索。
关键词:软件工程专业;毕业生就业;举措
自高校扩招后,我国毕业生的数量逐年增加,高校毕业生就业问题成为重大的社会问题。2014年,高校毕业生数量达到创纪录的727万人,应届毕业生的就业压力之大可想而知。加之,我国软件工程技术起步比较晚,相较于国外发达国家还有相当大的差距。虽然起步较晚,但我国政府正在大力支持中国软件行业的发展,短短几年,已经开发出属于我国自有知识产权的软件技术,制定出一系列的符合国情的政策和发展计划,取得不小的成功。
一、软件工程专业的就业前景分析
1.毕业生市场需求分析。相关数据研究表明,我国软件出口规模达到215亿元,软件从业人员达到72万人,软件工程专业毕业生的市场需求约计11.1万人,职业需求在“电气信息类”中排名第三。软件工程人才的就业前景十分广阔,毕业生主要在各大软件公司、企事业单位、高等院校、研究所、国防等重要部门从事软件开发、研究、设计与应用等工作。目前,我国对软件人才的需求以每年20%左右的速度增长,而高校计算机毕业生中的软件工程人才还很缺乏,尤其是高素质的软件工程人才极度短缺。就业前景最好的地区集中在北上广等沿海地区。巨大的人才缺口不仅使IT行业“全线告急”,更使得IT企业求贤若渴,重金抢购。未来几年,国内外高层次的软件人才将供不应求。根据学校招生就业处历届本科毕业生校内招聘用人需求统计资料,2012~2013学年由学校主办的双选会、集团专场、日常招聘等各类招聘活动中,共计有1123个岗位需要软件工程类毕业生,2013~2014学年共计有1234个岗位需要软件工程类毕业生,用人需求涨幅接近10%。
2.招聘要求及薪酬待遇分析。目前IT企业对IT人才有四项素质要求,即专业技能、项目经验、权威认证和高等学历。超过80%的IT企业对用人学历有要求,其中要求为大学及以上学历的岗位占到46%,超过70%的用人单位希望求职者有一定的工作经验。如果单纯地讲就业,专业技能与项目经验则是核心要素,是企业最为看重以及个人在企业日后发展的关键因素。软件工程专业相关职位属于高薪岗位,据国家统计局的调查显示,2015年第一季度,在国有经济单位中,信息传输计算机服务和软件业的平均劳动报酬最高,达到6300元人民币。据来校招聘单位所提供的薪资水平,可以看出:软件工程岗位的具体薪资待遇在地域间又有些许差异,一级城市(如北上广等城市)初-高级软件工程师的待遇在4000~9000之间,内地其他省会城市(例如山西省)一般在2000~6000之间。随着毕业生从业年限的增加,劳动报酬也呈线性增长,从业年限在6~7年间的软件工程毕业生,月薪资可达到1万元以上。
二、软件工程专业的就业现状
1.毕业生数量逐年增加,对IT人才的需求标准逐渐提高,应届本科毕业生就业面临着严峻的挑战。首先,IT行业就业情况最好的地区集中在北上广等几个发达地区,从北京、上海、广州等大型城市近几年对IT人才的招聘情况来看,这几所城市对软件工程类毕业生的招聘标准逐年呈现出“水涨船高”的趋势。很多企业钟情于有一定工作经验且学历较高的硕士生、博士生等高端人才,因为他们能够迅速进入工作角色,承担起某一职位的工作任务。正因如此,近两年来,一些虽有高学历但刚毕业尚无就业经验的毕业生则被拒之于求职门外。其次,省内IT行业发展不成熟,企业提供的就职岗位较少,而省内软件工程专业毕业生人数较多,考虑到地域问题、户口迁移问题,部分毕业生更愿意选择省内企业,加大省内软件工程的就业压力。再次,中部地区的软件行业相比其他地区还处于发展阶段,目前我省的软件行业规模不是很大,在软件制作上,有些软件企业只是采用了一些软件工程的思想,距离大规模的工业化大生产还有一定的差距,这其中有管理体制、市场、政策等问题。
2.毕业生继续奋战考研、考公务员、考事业单位率持续上升,大学生在摆脱就业压力和个人追求方面有新的认识。学院2014届未就业的毕业生选择“继续考研”、“继续考公务员”的比例分别占未就业毕业生人数的28%、11%。随着就业压力的增大,越来越多的大学生想通过考研缓解就业压力。一些毕业生认为读研可以提高自己的专业修养,在学术上更上一个台阶。一些毕业生认为考研除了学历上更高一层次外,在单位就职时的工资基准也会相应地高一些,甚至有助于找个更好的就业单位。综合来看,在巨大的就业形势面前,考研是毕业生根据个人的职业规划及自身实际情况做出的取舍。参加国考、公务员考试及事业单位招考的人数率创下新的纪录。这与国人求稳的心态不无关系,更多的人看重的是上述单位的福利待遇好、社会地位高等。总之,毕业后选择暂不就业,继续参加各类招考的学生占未就业毕业生的很大比重。
3.毕业生进行就业选择时多持观望的保守态度。学院领导长期以来高度重视毕业生的就业工作,利用校内、校外实训基地平台,积极联系知名IT企业及实训单位,通过与企业多种模式合作、组织招聘会等方式,拓宽毕业生的就业渠道,大力促进毕业生就业工作。针对毕业生举办“IT人才专场招聘会”等多场招聘活动,大力创造就业环境,积极拓展毕业生就业工作新领域。与此形成鲜明对比的是,多数毕业生在择业就业过程中谨小慎微,在工作过程中也会对所选企业的各个方面提出质疑,多持观望的保守态度。“今天就是先来看看,不着急签约”、“以后招聘会的单位会越来越好”、“还想再看看”,不少毕业生对企业抛来的“橄榄枝”并不上心。
三、主要举措及努力方向
1.以提升创新精神、实践能力和创业意识为重点,创新人才培养模式,提高人才培养质量。深化教育教学改革,提高人才培养质量。学院先后召开专题教育教学工作会议,并从人才培养模式、课程制度改革、教学秩序规范、资源投入保障等各个方面制定并出台一系列的改革举措,进一步完善创新人才培养体系,保障人才培养质量的提升。重视创新创业教育,着力培养学生的创新精神和创业意识。学院长期以来一直重视大学生的创新创业教育,不断促进教学改革和教育质量的提升,推动大学生高质量就业。学院逐步推动创新创业课程体系建设,把创业基础课程、就业指导课程列入必修课,并在校内建立山西省共享式软件人才实训基地,设立多个实践创新项目,增强毕业生的就业意识和就业能力。利用校内、校外实训基地及校企联合研究室,进一步改善学生实践教学,着力培养学生的创新精神和创业意识,更好地实施人才培养模式,不断促进教学改革和教育质量的提升,为提升毕业生的就业能力提供保障。
2.面向行业需求,创新就业服务模式,引导毕业生“顶天立地”地就业。着力扩大就业市场覆盖度,挖掘行业重点单位需求,拓宽毕业生就业渠道。学院坚持毕业生“走出去”的就业方针,将保证毕业生就业需求作为根本出发点,针对提高毕业生的就业能力、层次和质量的任务,充分利用校外实训基地,积极为毕业生搭建就业平台,大力创造就业环境。学院积极联系知名IT企业及实训单位,通过与企业多种模式合作,积极联系用人单位,举办专场招聘活动,拓宽毕业生就业渠道,大力创造就业环境,积极拓展毕业生就业工作新领域,为用人单位招聘提供精细、“一站式”服务,对地处欠发达地区的重点单位实行分类服务。依托学校软件学院硬件设备优势,为不能到场的企业和单位提供远程实时的在线视频招聘,积极开展用人单位满意度调查,统计用人单位和毕业生对本院人才培养和就业工作的满意度,切实使就业工作服务于人才培养全过程。着力加强就业工作保障度,为实施高质量和均衡就业战略“保驾护航”。加大政策引导力度,落实专项经费。利用新媒体推进网络化就业指导教育,使学生多渠道捕捉就业信息,强化择业就业意识,做好择业定位并进行合理的职业规划,实现理想就业。开展“一帮一”活动,对就业有困难的毕业生建立学困生档案,进行重点指导、重点服务。建立“毕业生回访与发展跟踪制度”,了解毕业生所学专业与社会需求的契合度,不断增强就业指导人员的服务意识和责任意识。
3.以保证毕业生充分、高质量就业为目标,完善就业工作机制,构建就业工作常态化。实施“一把手”工程,将就业工作列入年度工作要点。成立由学院院长、书记、副书记、辅导员、学习导师、专业教师和班主任组成的就业工作组,配合学校建立校、院、班三级体系,为就业工作提供组织支撑。落实“三个到位”,为就业工作提供有力保障。认真做到就业中心专职工作人员稳定、专职工作经费稳定,积极争取社会赞助,建立关于毕业生与用人单位的服务中心,有效保证就业工作的开展。健全制度体系,为就业工作夯实基础。积极贯彻落实学校出台的就业规章制度,根据实际需求出台完善学院的就业规章制度,为就业工作夯实基础。
摘要:分析国内高校在软件工程课程零置上的侧重点以及软件职业技术资格考试内容,提出以SWEBOK V3中知识域的要求为课程内容基础框架,基于毕业生的产出能力导向进行教学大纲、知识内容和考核方式改革,通过监控学生成绩对课程教学效果进行分析和长期持续改进。
关键词:产出导向;软件工程;课程改革
1 背景
作为软件工程专业的主要核心课程,软件工程课程一直很受关注,围绕着课程教学所进行的教学改革也比较多。目前,正在各高校进行的工程教育专业认证是我国为推进工程教育改革、提高工程教育质量、建立工程教育与工程师制度衔接、提高工程教育对产业发展的适应性和提高我国工程技术人才的国际竞争力所做的一项合格性评价,在给高校工程教育带来发展契机的同时也提出了对教育理念、教学过程管理、教学内容更新换代等方面的挑战和调整要求。
2 课程现状
目前,国内高校软件工程课程使用的教材主要有张海藩《软件工程导论》、郑人杰《实用软件工程》和国外翻译版《软件工程》。教学内容主要有软件工程概况、可行性研究、需求工程、传统的软件设计、面向对象设计、编码、软件质量与保证,项目计划与管理、软件开发工具与环境等。软件工程是一门强调实践的综合性工程课程,各高校在具体课程安排上各有侧重。
例如,复旦大学(54学时)的课程重点首先是结构化分析与设计、面向对象的分析与设计,这两部分内容超过了1/4总学时;其次是软件测试和软件项目管理,分别约占总学时的1/6;课程特色在人机界面设计和Web工程上。清华大学(48学时)把面向对象方法UML和RUP作为重点,占总学时的近1/3;其次是结构化分析与设计,占总学时的1/4;软件过程及软件工程管理是另一重点,通过学生合作小组或参与项目组进行软件开发,在实践中理解软件过程的意义和作用,培养软件项目管理的意识和能力。浙江大学(理论32学时、实践32学时)重点讲述软件工程的常用方法,包括分析模型的建立、总体设计、软件测试等,其特色是网络应用软件的开发方法和实践,通过从需求单位抽取出的大型模拟案例进行项目开发,锻炼学生的系统设计、开发、谈判、沟通、写作、团队合作等能力,培养学生的工程职业素养。
通过对国内几所高校课程教学特点的分析,我们发现目前国内高校软件工程课程主要以理论知识教学为主,虽然有的院校做到了实践与理论并重(1:1),但是大多数院校还是以理论知识教学为主。课堂教学以讲述概念性基础知识为主,课程的内容主要有面向对象的分析设计、软件测试和项目管理,对新知识、新技术和新工具介绍较少,目前软件工程课程更像是一门导论课程。
3 面临问题分析
3.1 工程专业毕业要求对课程的影响
工程专业毕业生应具备足够的沟通能力、合作能力、专业知识技能、终身学习能力及人格、国际视野和责任感等能力素质,这些素质要求可以保证学生毕业进入职场前具备基本的职业素养和从业能力。产出导向是工程教育认证中重点关注的部分,课程体系设置、师资队伍建设和外部条件配备均以有利于学生达到培养目标和毕业要求为导向。毕业要求反作用于课程设置,要求课程的内容建设、教学方法改进、过程监督以及成绩考核都应围绕这一要求,细化产出导向的要求和能力指标,设置相应知识点并调整各自的重要性比例,从知识点授课和实践能力两方面落实能力培养,达到毕业产出的要求。
3.2 与软件工程课程相关的专业技术资格考试分析
工程教育认证是将来国家注册工程师制度的基础和重要环节,目前我国已经在土建、环境、核安全等领域开展试点工作,实现了对工程人才的社会评价及国际间人才资格互认。在我国,与软件工程课程相关的全国性考试还有计算机技术与软件专业技术资格(水平)考试,由国家人力资源和社会保障部、工业和信息化部领导,对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。笔者对与软件工程课程相关的资格考试内容进行解析,以软件设计师为例进行重点分析,见表1。
从表1分析内容可见,软件工程基础考试内容。与课程教学大纲知识点一致,在信息安全知识和标准化知识上给出新增内容,这与SWEBOK2013知识体系一致。考试科目“软件设计”以上述知识为基础,考查工程师的实际工作能力。在最近几次考试中有考题涉及数据流图、UML图的应用分析,与课程授课侧重点也相符,更侧重于实例的应用能力,需要实践积累与运用。
3.3 SWEBOK V3和课程对应关系分析
软件工程专业的课程体系是基于软件工程知识体系SWEBOK(software engineering body ofknowledge)、计算机教程软件工程卷(computingcurriculum-software engineering,CCSE)及其中的软件工程教育知识体(soft engineering educationknowledge,SEEK)而建立起来的。2014年,IEEE计算机协会了软件工程知识体系指南第3版,该版将原来的10个知识域扩展到15个,与现有软件工程课程大纲的比较结果见表2,其中有分布到其他课程中的知识点未加以说明。新增和修改的相关知识点需要在软件工程课程教学和实践环节落实。
4 基于产出导向的软件工程课程改革与建设
4.1 课程教学目标修订
基于上述分析,我们进行基于产出导向的软件工程课程改革和建设。课程教学以使学生掌握软件工程的理论基础知识和基本工作原理,培养学生具有工程问题需求分析的能力以及综合运用计算机科学和工程技术完成系统设计、实施和维护的能力为目标。课程的主要任务是使学生掌握软件开发过程的理论、方法、技术标准以及计算机辅助工程和环境等知识并通过实验灵活应用;掌握软件工程的基本概念、软件开发模型、开发过程的管理和质量控制;掌握需求分析的任务与原则,传统面向对象需求分析方法、设计过程与一般性概念以及文档的编写;掌握程序设计方法,增强编程实践训练,掌握软件测试技术与纠错性软件维护方法;掌握UML建模技术,能在软件工程过程中使用常用建模工具,能运用建模方法解决工程实际问题;了解专业开发活动涉及的标准、方针、政策和法律、法规,能正确认识实施软件工程对客观世界和人类社会的影响。
4.2 教学内容和教学方法改进
根据毕业产出要求及SWEBOK V3新修改版,我们对教学内容作如下调整:①在64学时课时中,将理论与实践课时设定为1:1;②在需求分析和设计部分新增人机界面和系统安全知识;③独立介绍软件复用部分知识,结合软件设计模式讨论软件可复用性;④在软件质量保证和项目管理部分新增软件产品标准和行业标准、国内外法律和法规;⑤在软件维护部分新增软件退役和迁移。
每一章都提供参考资料,教师引导学生有选择地阅读其中的部分内容,根据课程内容的进展情况布置相应的任务、思考题和作业,引导学生通过Intemet或其他途径查阅相关资料以拓宽知识面,了解软件工程领域最新实践研究成果。为了使学生建立起软件开发和维护的工程化意识,较系统地掌握按照工程化思想开发与维护软件的方法和技术,教师需在教学中培养学生从软件企业开发和维护实际大中型软件的角度出发,结合成本、风险、效益、进度、过程、质量等多种因素系统地分析软件开发和维护过程中的问题,突破以往要求完成某一给定知识点作业的单一思考问题局限。此外,构造实验环境用于课内工程项目实践,通过模拟项目的开发,锻炼学生的系统设计和开发能力、软件工具的使用能力、语言交流能力、文档编写能力以及团队合作能力,培养学生的职业素养。项目实践引导需贯穿理论知识学习始终。
4.3 考核方式与持续改进并行
课程强调过程考核,总成绩分为平时和期末两部分,分别占50%。平时成绩主要考核学生的课堂表现、作业、实验能力和实验报告撰写情况等。其中,课堂表现主要从学生上课是否专心听讲、回答教师提问是否正确以及分组讨论是否积极、正确、有独特见解等进行考核,以提高课堂教学效果和运用工程基础知识及本专业基本理论解决实际工程问题的能力;作业方面重点考核学生掌握软件工程理论基础知识和基本工作原理的程度;课内实践教学环节重点考核学生的工程问题需求分析和设计能力,综合运用计算机科学和工程技术完成系统的分析和设计并对设计文档进行审查的能力;期末考试将按照课程教学目标全面考核学生课程学习的效果,选取一定数目的学生成绩为样本,计算该课程对毕业要求贡献的达成度并通过建立阀值定量评估课程教学质量,通过不断提出持续的改进意见并实施,切实加大课程对提高毕业产出能力的贡献。
5 结语
笔者基于毕业生产出能力对课程教学目标进行了修订,完善了软件工程课程的教学内容和知识结构,对教学方法进行了梳理,最后通过改变考核方式对课程进行长期监控和调整,实现课程的持续改进。下一步工作将重点关注课程中学生自主能力导引体系和毕业生能力评价反馈机制的构建。(编辑:宋文婷)
摘 要: 为应对毕业生就业难与软件企业人才招聘难的两难局面,对我院按照“卓越工程师培养计划”培养的第一批本科应届生展开了基于电子问卷的跟踪调查。通过分析学生就业情况及其所在单位需求情况,以及毕业生的就业反馈,讨论研究了现有培养方案、教学体系和课程改革存在的问题与不足,以期为后续进一步深入实施“卓越工程师培养计划”提供帮助。
关键词: 毕业生跟踪调查; 卓越工程师培养计划; 软件工程
0 引言
从20世纪90年代开始,我国的高等教育飞速发展,本科毕业生数量也迅速增加,软件类人才培养也逐渐从精英教育走向了大众化阶段。与此同时,毕业生就业难与软件企业人才短缺的矛盾逐渐突显。一方面,毕业生的就业形势相当严峻,2013年更被称为“最难就业年”,就业人数将近700万,其中软件类(含计算机类)毕业生约占了23%[1];另一方面,用人单位难以招到适应不断变化市场需求的高水平人才,毕业生质量与企业、社会期望值之间出现了较大差距。
解决上述矛盾的重要途径之一是跟踪调查学生走向社会的工作表现和持续发展状况,调整、改革高校教学体系及模式。近年来,国内高等院校逐渐重视开展毕业生的跟踪调查与反馈工作。通过了解毕业生的就业情况、工作表现、对学校学习经历评价及招聘企业人才需求情况等信息,反思、完善和改革人才培养体系、培养方案、教学模式以及就业指导工作模式[2]。本文以杭州电子科技大学软件工程学院为例,通过对2013届按照卓越工程师培养计划培养的50余名毕业生进行跟踪调查所获得的数据信息,结合本校实际,反思卓越工程师人才培养的可改进之处,为制定科学、高效的卓越工程师培养策略奠定基础,从而更好地为培养符合市场需要的高层次软件人才提供服务。
1 毕业生跟踪调查对卓越工程师培养的重要性
“卓越工程师教育培养计划”(简称“卓越计划”)2010年由教育部联合相关部门和行业协会提出,要求各高校与行业企业联合培养工程技术人才,强化培养学生的工程实践能力、工程设计能力和工程创新能力。该计划旨在培养造就一大批创新能力强、适应经济社会发展需要的高质量各类型工程技术人才,为国家走新型工业化发展道路、建设创新型国家和人才强国战略服务,对促进高等教育面向社会需求培养人才、全面提高工程教育人才培养质量具有十分重要的示范和引导作用。中国成功加入华盛顿协议组织也有力地证明了这一点。
高校作为落实“卓越计划”的主体,需认真领会和深刻理解卓越计划的指导思想、主要目标、总体思路和基本原则,更重要的是需结合自身实际条件和优势,制定“卓越工程师后备人才”培养的具体要求和措施,细化培养目标和培养标准,积极开展课程体系、教学方法、教学内容改革[3]。目前参与实施“卓越工程师计划”的各大高校基本上都提出了符合本校办学定位的专业培养方案的总体思路,在实现培养目标和培养标准的过程中融合专业培养方案的制定,完善、强化学生工程实践能力的培养,在满足“累计1年时间在企业学习”的硬性要求同时制定灵活的培养模式[4]。譬如,清华大学展开了以能力培养为导向的课程体系和教学内容改革;我校“信息安全”专业对原有的专业基础课程和专业核心课进行了重点整合,将原有课程整合缩减至5门,另增开课程4门,总学时数由384学时调整至192学时;上海工程技术大学的本科采取了“学校培养+校企交叉+校企双指导”的三阶段培养方案。
衡量上述各种具体培养要求、措施、目标、标准以及改革内容是否成功,有效的核心标志之一就是学生就业情况及其后期发展情况。毕业生的就业率、月收入和工作满意度等信息可以从一定程度上揭示大学生的综合能力水平和未来发展潜力。从某种意义来说,学生是高校推向市场的“拳头产品”,用人单位是这些产品的“用户”。“产品”质量是否有保障,“用户”才有最深刻的体会,才最有发言权。只有不断听取用户意见,不断改进,才能确保“产品”在市场上的竞争力。因此,做好学生就业及其后期发展情况的跟踪调查,才能推动高校不断完善卓越计划的落实,纠正试行阶段暴露出来的各种问题。
2 软件工程专业卓越工程师培养计划――以杭州电子科技大学为例
杭州电子科技大学从1980年开始培养软件工程本科人才,2003年正式设立软件工程本科专业。目前,该专业为国家特色专业、浙江省重点专业、浙江省高校人才培养模式创新实验区。为了进一步促进软件工程专业发展,全面提升学生工程素质,即工程实践能力、工程设计能力和工程创新能力,2011年杭州电子科技大学率先在软件工程学院开始试点软件工程专业的“卓越工程师人才培养计划”。要求学生在校内经过软件工程通用工程基础技术知识和核心技术知识的学习并具备相关能力后,进入企业进行高级工程技术知识及技能学习和培训,并参加企业实际软件项目的开发,培养方案示意图如图1所示。具体内容介绍如下。
⑴ 改革人才培养模式
对进入“卓越工程师培养计划”学习的学生,将遵照贯穿8个级别4种工程应用能力培养要求的工程型人才培养方案(如图1所示)。学生在校内2年完成前2种工程应用能力的培养后,按“卓越工程师培养计划”学习1年完成第3种工程应用能力的培养,最后进入企业完成第4种能力的培养。可以看出,卓越工程师培养计划主要承担“高级工程能力”和“工程实施能力”的培养,主要通过企业宣讲课程和就业规划课程来帮助学生确定今后学习和发展的方向,进而安排学生参与企业实际软件项目完成专业实践和毕业设计。
⑵ 加强专业师资建设
软件人才是工程实用型,需要教师既有一定的学术造诣,又具有大量的项目实践经验或企业工作经验。因此,我校进一步加强“双师型”专业教师队伍建设,在选派青年教师到国内外IT企业顶岗实践和轮训的同时,积极引进具有丰富实践经验的专业技术人员到校担任兼职教师或传授真实案例和实际工程经验,已逐步建立并完善企业教师的师资库并鼓励相关企业承担学校专业课程及实训工作。
⑶ 深化改革课程体系
我校软件专业课程改革的总体思路是:扎实专业基础,突出工程实践能力,复合知识领域结构;强化专业核心基础课程和高级工程能力的培养,突出企业实战能力。在当前软件工程专业培养方案的基础之上,着重体现工程教学中的CDIO模式,聘请行业专家及资深工程师讲座;引入“MOOC”等先进教学方式,鼓励开展研究式教学、讨论式教学、以问题为导向的PBL教学、CDIO式教学及团队模式教学等多种教学方式[5]。
⑷ 采用“校企深度合作、工学结合”运行模式
积极探索校企深度合作的空间,着重于人才培养、科研开发等多方位的共赢合作模式。以培养软件人才为目标,学校优先选择占据行业领导地位的公司作为合作方(如华为、塔塔等),吸收资深工程师参与指导制定专业发展规划、专业培养目标与专业人才培养方案,甚至直接作为教学师资参与专业技能教学;同时将企业待解决实际项目转化为“实验班”的课程设计题目或综合设计题目。企业接收完成专业课程学习以及基本技能培训的学生直接顶岗实习。
3 “卓越计划”毕业生的跟踪分析
3.1 调查对象和方法
为全面、准确、及时地分析了解“卓越工程师培养计划”在高校的落实结果,了解用人单位对软件工程专业改革的满意度以及深化教学改革的意见与建议,为其他同类学校准确定位、深化改革与创新软件类人才培养提供参考,我们对杭州电子科技大学软件工程学院实施“卓越工程师培养计划”的结果进行跟踪调查。调查对象是该学院第一批按照上述计划培养的毕业生,共发出52份问卷,回收有效问卷50份,回收率为96%。本次调查主要以问卷为主,辅之以面谈、Email咨询等方式。
3.2 调查数据分析
我们从学生就业单位信息、就业单位需求、毕业生个人反馈三方面来进行梳理分析现有教学方案、培养方案等卓越计划改革内容的不足。
⑴ 学生就业单位
此次调查的50名毕业生,44人就职于主营软件开发销售、系统集成的软件类公司,4人就职于在线网络社交平台或电子商务平台的技术部门,2人服务于保险业。也就是说,96%的毕业生在毕业后会继续从事软件开发维护相关的工作。这从一定程度上证明了按照卓越工程师计划拟定的现有培养方案和课程安排在培养学生兴趣、增强学生专业技能方面发挥了较好的作用。此外,在毕业生就职的30家软件类公司中,14家单位的员工少于50人,13家单位的员工数在50~300之间,3家单位的人数超过了300人。可以看出,毕业生所就职的大部分是中小型软件公司。这也符合软件行业特点。除了微软、IBM、华为等极少数的龙头企业,大部分软件公司的规模并不庞大。我们的调查结果反馈的另外一个重要信息是,大部分软件公司对招聘对象的学历和工作经验的要求并不高,求职者具备大学本科学历即可,并不硬性需要相关的职业证书。因此,在未来的教学过程中,应确保学生顺利完成大学基础课程,而并不需要强调或引导学生参加太多的职业证书考试。
⑵ 就业单位需求
从50份有效问卷返回的结果来看,目前用人单位技术最注重也相对急需的技术(能)排在前三位的分别是:JAVA语言、办公软件应用和ORACLE数据库应用,如图2所示。除此之外,动态网站开发以及企业级网络软件应用与维护也是各单位相对比较看重的毕业生技能,问卷勾选的份数分别达到了16和14。不难看出,若软件工程专业本科生在校期间尽可能地熟练掌握日常的办公软件应用并掌握用Java等开发语言构建、推广、维护动态Web网站的基本技术,他们在就业时将更占优势。
我们在教学过程中经常碰到以下的问题:本科生在大三或大四阶段仍不能熟练使用Excel绘制基本图形或完成基本统计功能,也不会使用Outlook、Foxmail等邮件客户端工具收发Email;他们课程提交的项目作品虽然能够实现系统的基本功能,但往往不够规范、难以维护和二次开发。学生暴露出来的这些问题远离用人单位的需求,也直接影响了学生自身的就业和后续发展。因此,在后期完善“卓越工程师”的培养方案和课程改革时,针对这些问题进一步强化培养学生相关技术(能)就变得极为重要。
⑶ 现有培养计划及改革反馈
如上所述,“卓越人才计划”强调对学生实践能力的培养,强化学生工程实践能力,注重提升工程教育人才的培养质量。本学院在日常教学过程中着重学生动手实践能力的培养,也通过与华为、塔塔、网新等众多企业合作,安排学生在企业实习,强化学生实际实践能力。如图3所示,根据求职期间及就业之后的“第一手”经验,36%的毕业生认为学校还需加强基础理论的学习,30%的毕业生认为需加强实践动手能力的培养,25%的毕业生认为需加强专业知识的学习,只有个别同学认为需增强人文知识学习和科研能力培养。大部分毕业生在“信息反馈”一栏中明确提出“实际动手能力的培养是学校应该改进的重中之重”。这与国家“卓越人才计划”的培养思路是基本吻合的,也表明,我们还需在未来的教学培养中深化培养方案和课程改革,更突出 “卓越人才计划”的实践能力培养要求。如某位毕业生认为虽然目前学校社团较多,但和专业及就业挂钩的社团很少,建议多组建一些专业性社团,营造一个良好的学习氛围,并积极鼓励学生参加各类比赛,或开展专业知识类的勤工助学项目,让学生在项目实践中提升各方面的素质。
此外,根据50位毕业生的自身体会,软件类公司更为看重的学生素质是其持续学习的能力,其次是独立解决问题的能力,而日常较为注重的学习成绩恰恰反而是排在最后一位,如图4所示。这也是软件工程专业本身所决定的。一方面,软件、计算机技术飞速发展,日益更新,在校期间的课程内容不能完全跟上技术的潮流,需要学生自己学会跟踪学习新技术的能力;另一方面,实际软件问题千奇百怪,层出不穷,没有一劳永逸的解决方案,更需要学生具备一定解决问题的能力。
3.3 启示
此次的跟踪结果表明,我院现有的“卓越人才培养计划”及其具体方案措施在加强学生专业兴趣、增强学生专业能力起到了较好的作用,能为用人单位提供了具备基本职业素养和能力的软件人才。在未来工作中还需进一步强调和注意的有以下几点。
⑴ 必需确保学生顺利完成大学阶段所有课程并获得学历、学位证书,这是学生入职的必要条件。
⑵ 必须加强培养学生办公软件的使用技能,才能更好地提高学生专业素质,满足企业规范化人才需要。
⑶ 争取为学生创造更多参与实际项目的机会,加强培养学生专业实践能力。这也是“卓越工程师培养计划”的重心所在。
⑷ 进一步加强学生跟踪学习的能力和独立解决问题的能力,使他们适应软件快速更新升级,以及实际开发应用过程中问题不断的特点。
4 结束语
毕业生跟踪调查对做好软件工程人才培养,尤其是“卓越工程师培养计划”在软件工程专业的落实具有重大意义。本文采用实证研究的方法,从学生就职单位性质、单位需求与学生反馈三方面对现有“卓越计划”及其具体方案进行讨论分析,根据毕业生的切身体会挖掘现有软件工程专业“卓越工程师培养计划”存在的问题和不足,以期为更好地落实“卓越工程师培养计划”、培养卓越软件工程师提供科学有效的对策。
【摘要】主要分析了毕业设计(论文)的现状,介绍了软件生命周期的各个阶段与毕业设计(论文)各阶段的对应关系、软件生命周期各阶段应完成的任务以及在毕业设计(论文)中应注意的问题。
【关键词】软件工程 毕业设计(论文) 实践教学
一、引言
毕业设计(论文)(以下简称毕业设计)是计算机及相关专业教学计划中的一个重要环节,是培养学生对所学基本理论及基本操作技能综合运用的训练过程,是提高学生分析和解决问题能力的重要实践环节,是实现理论与实践相结合的重要途径,是对教育教学质量的全面检查。目前,计算机及相关专业的毕业设计质量正在逐年下降:学生急于找工作或考研,毕业设计得不到应有的重视;需求分析不到位,设计成果不符合实际需求;软件开发流程混乱;缺乏文档写作训练,等等。
针对上述问题,笔者认为,除了应当从管理角度严格进行过程监控外,还应当使学生通过《软件工程》课程的学习,提高毕业设计的质量。
二、软件生命周期与毕业设计过程的对应关系
软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件的生命周期。软件生命周期可以划分成若干个时期与阶段,它与毕业设计各个环节的对应关系如图1所示。
三、软件生存周期各阶段应完成的任务
1.可行性研究与计划阶段、需求分析阶段
可行性研究与计划阶段主要完成问题的定义、可行性论证以及初步计划的制定;需求分析阶段主要完成需求调查,进行功能、性能与环境约束分析;编制软件需求规格说明、制定软件系统的确认测试准则和用户手册概要。这两个阶段对应于毕业设计的课题论证、选题、调研、查资料,通过对设计题目的深刻理解,完成开题报告的撰写工作。
2.概要设计阶段和详细设计阶段
概要设计阶段主要完成软件系统总体结构的建立、定义功能模块的接口、设计全局数据库和数据结构、规定设计约束、编制概要设计文档等工作;详细设计阶段主要完成模块详细设计及编制模块的详细规格说明工作。包括模块的详细功能、算法、数据结构和模块间的接口信息等设计,拟定模块测试方案;把模块详细设计的结果汇总,形成模块详细规格说明书。这两个阶段对应于毕业设计的系统设计阶段。
3.实现阶段与组装测试阶段
实现阶段主要完成编码及单元测试工作。根据模块详细规格说明书,将详细设计转化为程序代码、对模块程序进行测试,验证模块功能及接口与详细设计文档的一致性,并形成单元测试报告;组装测试阶段主要完成模块程序组装与测试及组装测试报告的编写。
4.确认测试阶段
该阶段主要完成软件系统测试、确认测试文档编制及软件评审工作。根据软件需求规格说明定义的全部功能和性能要求及软件确认测试准则对软件系统进行总测试;向用户提供以确认测试报告为主的有关文档,包括系统操作手册、源程序清单和项目开发总结报告等;由专家、用户、软件开发人员组成的软件评审小组对软件确认报告、测试结果和软件进行评审,并将得到确认的软件产品交付用户使用。这个阶段主要对应于毕业设计(论文)中的论文评审、结题验收及毕业设计的答辨准备阶段。
5.软件运行与维护阶段
主要进入软件的使用阶段,并完成软件的维护工作。它主要对应于毕业设计中的答辩阶段。
四、毕业设计应注意的几个问题
1.摘要
摘要是对文章主要内容的摘录,要求精、短、完整。以几十字至三百字左右为宜。摘要应具有独立性和自明性,从摘要中即应获得必要的信息;摘要中只能使用第三人称;要客观如实地反应原文的内容,要着重反映论文的最新内容和作者特别强调的观点;要求结构严谨、语义确切、表述简明,一般不分段落、不进行自我评价。
2.关键词
关键词主要用于论文检索,它是从论文的题名、摘要和正文中选出的,是对表述论文的中心内容有实质意义的词汇,关键词一般以3~5个为宜。
3.结论
结论写作的内容应主要考虑本文研究结果是什么?研究结果说明了什么?对前人有关的看法作了哪些修正、补充、发展、证实或否定?本文研究的不足之处或遗留未予解决的问题以及对解决这些问题的可能的关键点和方向等。结论应该准确、完整、明确、精练。
4.需求分析
在毕业设计中,学生往往不能对所做题目进行充分的调研,需求不明确,随意想象的成分较多。特别是在数据表的建立上,大部分同学随意设置字段的类型,而字段长度基本上采用默认置。而在实际项目开发中,数据项的设置应主要注意以用户的需求和满足系统要求为准,而不应设计冗余的字段;数据的类型要依据实际需求,当某些字段可以是选择某几种类型之一,应考虑哪一种更有利于本系统或哪种更易于用户操作和维护。
5.详细设计
许多同学把详细设计阶段的任务理解为代码实现,因此,在概要设计之后就着手进行代码的编写而忽略了算法的表达及测试用例的编写环节,由此造成的结果是随意编程,大量的时间浪费在程序的修改和调试上。
6.软件测试
测试做得不够全面,大部分同学只选择了有效的测试用例,而没有进行无效的测试用例的设计,因此所做的软件BUG较多。
7.团队合作
在毕业设计中,应有意识地锻炼学生们的团队协作精神,因此,在布置毕业设计题目时,应尽量选择规模大一点的题目,然后由4~5名同学共同协作,每人完成一个子题目。这样,可以使学生们分析问题和解决问题的能力、沟通和表达能力得到充分锻炼,为今后的工作奠定基础。