时间:2022-08-12 00:21:41
导语:在软件开发专业论文的撰写旅程中,学习并吸收他人佳作的精髓是一条宝贵的路径,好期刊汇集了九篇优秀范文,愿这些内容能够启发您的创作灵感,引领您探索更多的创作可能。
自考计算机专业毕业论文怎么写呢?有没有什么写作技巧呢?本篇就是向大家介绍了自考计算机专业毕业论文写作技巧,记得关注学术参考网查看更多的论文写作方法,欢迎大家阅读借鉴。
写作流程
自考计算机专业毕业论文有1年准备时间,写作时间的分配主要取决于考生软件开发的进度,如果考生开发的软件很成熟,那末后续的写作时间就较快,否则后面的写作就会很被动。例如,一般会在每年7月份登记,9月底开题,期间开发软件,到第二年2、3月就要完成初稿,再留一个月修改。
1、选题。选题首先要重要、有意义。例如有的考生选择设计木马程序,其本身是个病毒程序,这样的程序只能带来危害,实际生活中没有意义,就不能用于做毕业论文。
2、开发软件。开发软件要与实际相结合。实际性非常重要,要自己能开发一个能实际运行的软件。有的考生自己并没有参与实际工作,只是看书是不行的。自己参与的可以是一个大的项目或课题组,论文中介绍完大的系统后,一定要把自己的工作量写清楚。
3、写论文。开发完就可以写论文了,论文是个总结,但是不要写成工作总结,一定要有主题,应体现自己的开发思想和论述自考本科计算机专业毕业论文写作指南自考本科计算机专业毕业论文写作指南。写论文要达到一定字数,一般要3万字。其中,编程代码一般为2-3千行,这个不是机器自动生成的代码,一定是自己写的源代码。
论文结构
计算机专业毕业论文一般有8个部分。1、概述或引言。这个部分相当于大纲,一般要求4-5千字,主要是对软件开发背景,使用的软件工具、环境,最后达到的效果,自我在里面的贡献等;2、需求分析。软件有哪些功能、模块,用的什么工具等;3、设计方案和主要技术自考本科计算机专业毕业论文写作指南文章自考本科计算机专业毕业论文写作指南出自http://gkstk.com/article/wk-78500001321796.html,转载请保留此链接!。主要是对里面每一部分的详细论述,使用的是什么技术,为什么使用。详细的模块分析或遇到的难点是怎样解决的等;4、具体的实现过程;5、测试。介绍自己开发软件实际达到的效果;6、总结。介绍自己开发软件的体会,或自己开发的成果使用情况,有什么评价,自己还有哪些不足,有什么需要改进的地方;7、致谢;8、参考文献。另外,还可以加一个“附录”部分。正文只能有一个中心,其他有重要参考价值的都可以放在附录部分。例如有重要的代码、图表,涉及其他领域的知识,需要解释的等都可以放在附录部分。
案例1:《家装工程预算软件的开放》1、概述;2、需求分析;3、总体设计;4、数据库设计;5、软件功能的实现;6、结论及改进;7、致谢;8、参考文献。
案例2:《经纬中天无线短信增值服务管理软件的设计和开放》1、引言;2、需求分析;3、设计方案论证和主要技术介绍;4、系统设计;5、编码实现;6、实际运行中出现的问题及相应的解决方案;7、结束语;8、致谢;9、参考文献。
答辩程序
答辩现场会有专业老师组成的答辩小组,一般为5人左右,学生抽签分配答辩组。答辩现场要考生做介绍和演示。考生需要提前准备幻灯片,一般不超过20张,为论文最核心部分的内容自考本科计算机专业毕业论文写作指南论文
WiseMedia
考生结合幻灯片介绍论文,答辩小组老师会根据考生论文提出问题,考生要实事求是回答,最后答辩小组老师打分,求平均分给出考生论文成绩。大部分考生都会达到优、良,个别考生没有通过论文,主要有两方面原因:1、论文并不是自己真正所做,用别人的软件为自己所用,老师一提问就能发现破绽;2、考生论得太简单,达不到工作量。这就需要考生踏踏实实地按照要求去作论文。
零碎提醒
论文的题目不要太大,一定要具体、实际,不能吹成通用的;
自考生考过全部课程后,最好能寻求实践机会。可以去应聘公司,真正参与一个项目,一边工作一边写论文;
论文不要上网抄,一定要自己做;
引用资料要有脚注;
关键词:软件工程;毕业设计
中图分类号:G434文献标识码:A文章编号:16727800(2011)012022403
作者简介:许永昌(1976-),男,山东安丘人,硕士,山东英才学院计算机学院讲师,研究方向为计算机应用。
0引言
毕业设计是高等院校应届类毕业生在毕业前接受课题型任务,在教师指导下进行科学研究或工程实践并取得成果的过程,是高校实现人才培养目标的综合性实践教学环节,是一次理论与实践相结合的的锻炼机会。如何在新形势下改革毕业设计, 提高学生软件类毕业设计的质量,进一步规范毕业设计中的软件开发过程,抓好高校毕业设计这一实践环节,加强对毕业设计过程的管理与监控, 切实提高毕业设计的质量,对于软件类学生在毕业设计中实施合适的软件设计具有重的指导意义。
1毕业设计的必要性
高等职业教育应该是以能力为本位、以学生为主体、以实践为导向的教育。毕业设计是高等教育培养学生综合运用所学理论知识和技能解决实际问题能力的重要环节之一,是衡量毕业生是否达到相应学历层次的重要依据。毕业设计将总结专业基础和专业技术的学习成果,锻炼和开发学生的综合运用能力。
高职院校软件相关专业组织毕业设计应该符合新的人才培养标准,对培养学生的职业技能和素质要具有积极的意义。而对于即将毕业离校的应届毕业生来说,毕业设计无疑是计算机软件各相关专业理论教学、实验、实训等有机结合的途径之一。
通过毕业设计能锻炼学生的能力:
(1)实践软件工程的相关原理能力。毕业设计的过程,是一个课题小组从接到开发任务到提交产品和文档的过程,其中涉及到需求分析、概要设计、详细设计、编码、测试、程序打包、编写文档等软件工程具体的各个方面。经过锻炼,学生们对软件工程学思想和方法的理解会大大加深。
(2)解决具体问题能力。在毕业设计的进行过程中,学生一定会遇到平时在课堂的理论学习中碰不到的困难和挑战, 而克服这些困难、解决实际问题的过程就是软件技术和心理素质逐步提高的过程。
(3)团结协作的意识、能力。通过毕业设计这一过程,学生就会产生团结协作的意识和能力。
2软件工程学的基本思想
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科,包括两方面内容:软件开发技术和软件项目管理。其中,软件开发技术包括软件开发方法学、软件工具和软件工程环境,软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划。
3高职类学生毕业设计现状
毕业设计的主要目的是培养学生综合运用所学的基础理论、基本知识和基本技能,用以分析、解决工程、科研、社会实际问题的能力,使学生得到工程设计方法和科研能力的初步训练。毕业设计中存在的问题主要表现在以下几个方面。
3.1选题的盲目性
只是把毕业设计环节作为大学生活的必经环节, 纯粹是为了完成学业而去做毕业设计, 造成选题的盲目性、有的选题则是陈旧。
3.2可行性分析与需求分析重视程度不够
绝大多数毕业生在确定了毕业设计的题目后,几乎不进行调查研究工作就立即投入到整个系统的设计中, 一旦遇到了与实际不符的地方, 又重新返回, 对已经做好的设计进行修改。最终导致设计的系统杂乱无章, 甚至到了最后只能马马虎虎地仓促交工。
3.3系统开发过程中的文档不够正规,不够完备
完整的设计不仅包括所完成的可操作的系统,一般的操作帮助,还包括在开发系统的过程中所产生的各个文档等一些文字的东西,比如解释清晰、内容全面的数据字典和使用手册也是必不可少的,否则用户会感到使用起来不方便,觉得难于操作。
3.4模糊的评价标准
导致毕业设计质量下降的一个非常重要的原因就是没有建立精确细致的评价体系。
这严重影响了项目的进度和质量,并且使学生没有真正得到必要的锻炼。我们通过对这些问题进行详细深入的分析,提出一个软件过程框架,这个框架主要从需求、测试、集成这3个方面给出工作要点和规范。
4利用软件工程学思想指导学生进行毕业设计
毕业设计本身是个工程,要用工程的方法去处理。从软件工程的角度去指导学生进行毕业设计,在毕业设计过程中,要系统地将所学知识应用于实际问题,按软件工程学思想展开工作。
图1软件生命周期与毕业设计各阶段之间的映射
4.1以可行性研究指导选题目
可行性研究,应该从技术可行性、经济可行性、操作可行性三个方面去研究,在毕业设计题目的选择过程中,应立足于解决实际问题,注重发现问题、分析研究问题和开发创新的能力。选题原则上,可以参考以下几点:①毕业设计的课题应该能使计算机专业所学的理论知识进一步理解并深化,也就是说,毕业设计应尽可能包括多门专业基础课和专业课的综合运用,并且要紧密结合工程实际,以有利于学生的全面训练;②选择难度适中的课题, 保证课题的完成质量;③课题要适合于各个模块独立进行,并便于最后统一调试;④课题规模应大小适合,难易程度适中。
4.2需求分析是关键
需求分析的基本任务是准确地回答“系统必须做什么”, 也就是对目标系统提出完整、准确、清晰、具体的要求。系统分析员可以通过多种形式来获取用户需求,对用户提出的需求进行分析,以此来确定其中要实现系统的功能。对需求划分优先等级,找出核心需求和重要需求,以保证系统构建的正确性。
在进行软件类毕业设计时,为了保证需求获取的准确性和全面性,可以让项目组的所有学生都参与到用户需求的获取的工作中来,发挥集体的能力,并由指导教师进行最终的确认。
4.3规范设计过程
需求分析完成后的下一个阶段就是系统设计,包括概要设计和详细设计。
详细设计阶段的任务就是深入每个函数内部,以伪代码或注释的形式实现整个函数,设计出程序的详细规格说明。
从系统设计开始,学生要按照软件工程的要求,画出DFD图,对输入、输出数据流进行详细的说明,建立符合软件工程规范的数据字典,根据DFD 图设计出模块结构图。
4.4重视文档写作
在毕业设计的过程中,要严格遵照软件文档的思想,记载设计过程的每一阶段完成了哪些设计,下一阶段的任务、目标及技术手段,这样,把文档作为整个设计的指挥棒,使设计有条不紊地进行。
4.5重视测试工作、撰写毕业设计说明书
软件测试工作也是软件开发的重要组成部分。通过实际应用效果和测试数据,毕业设计的成效就可一目了然。
毕业设计说明书的撰写是最后一个阶段,要求学生回顾设计过程,总结劳动成果,这时学生就会对软件开发及必须经历的几个步骤都有更深刻的认识。最后,要求学生对毕业设计进行系统的总结,写出毕业论文。
5加强对学生综合能力的培养
通过实践的练习,不仅能加深对理论的理解,同时也能锻炼运用知识分析问题、解决问题的能力。毕业设计这一实践环节是高等学校培养学生实际能力的主要手段,也是高等教育的重要组成部分。充分、有效地设置软、硬件的毕业设计对学生能力的培养至关重要,可以缩短学校教育与社会流行技术、工具的差距,满足学生毕业后的工作需要。通过毕业设计必须达到培养学生以下方面能力的目的。
5.1工程实践能力
学生能够准确把握选题的逻辑重心和学术思路,能够运用丰富的专业知识进行处理,具有严谨的理论思辨过程,以锻炼毕业生的工程实践能力,使毕业论文具有一定的应用和学术探讨价值。
5.2书写和表达能力
毕业设计论文是毕业设计工作的总结和提高,和做科研开发工作一样,要有严谨求实的科学态度。在毕业设计期间,尽可能多地阅读文献资料是很重要的,毕业设计大多数是技术开发型的,其论文的主体部分应包括:总体设计、模块划分、算法描述、编程模型、数据结构、实现技术、实例测试及性能分析。这些内容根据任务所处的阶段不同,可以有所侧重。
5.3创新能力
提出创新要求后,带领学生认真复习或补学过去没学过、没有学好的课程,并在此基础上结合实际工作中出现的问题孕育出一些新的思路,将毕业设计推上一个新台阶的方式,与为每个人专门分配某一特定的作业来锻炼学生基本技能的方式相比,更能扩展学生的视野,培养创新能力。
5.4协作能力和团队精神
通过集体活动和成员沟通培养成员的团体情感,增强团队的凝聚力。毕业设计将一个学生从入学初到毕业前的软件专业课程的学习内容链接成线,实现了课程的真正衔接,也使学生在毕业前对软件方面所学的知识进行了比较完整的概括与总结,达到了良好的理论联系实际的教学效果。毕业设计弥补了课堂教学的不足,加深了对理论的理解,促使学生深入思考,敢于创新,同时使学生的动手能力、分析和解决问题的能力、书写和表达能力、协作能力等各项能力都得到了培养和提高。
6结束语
软件工程作为软件开发工程化、规范化的具体实施方法,在将其应用到毕业设计中之后,学生在软件设计的文档书写规范化等方面均有了很大的改善与提高。将软件工程应用于毕业设计中不仅仅完成了一门课程从理论到实践的过程,而且将一个学生从入学到毕业前软件专业课程的学习内容链接成线,完成了前导后续课程的真正衔接,也使学生在毕业前对软件方面所学的知识进行了比较完整的概括与总结,因此,软件工程学在计算机专业学生毕业设计中的应用具有重要的现实意义。参考文献:
[1]马冬来,宋雨,刘海龙.软件工程思想在高职院校毕业设计中的应用与探索[J].河北软件职业技术学院学报,2008(3).
[2]李国彬,沈淑清.浅谈软件工程学在软件类学生毕业设计中的应用[J].计算机教育,2007(6).
[3]张文静,卢海霞,杨捧.软件工程思想在毕业设计环节中的应用[J].河北农业大学学报(农林教育版),2007(4).
[4]洪月华.毕业设计中软件工程的应用探讨[J].玉林师范学院学报,2007(3).
【关键词】软件工程;数字媒体;专业建设
1.引言
随着计算机技术、通信技术和数字广播等技术不断发展,以互联网、无线通信为传播载体,以传统媒体内容与创新内容模式为核心的数字媒体产业在全球范围快速崛起,并正在改变着人们的信息获取方式和休闲娱乐的形式。
我国的数字媒体业近几年正处于高速发展时期,对于具有较高人文素养、掌握数字媒体核心技术并具有艺术创意能力的复合型数字媒体技术开发与设计人才需求旺盛。四川理工学院软件工程专业是与IT企业合作办学、实行“3+1”人才培养模式,即学生前3年在校学习,第4年在软件企业实习并完成毕业设计(论文)。为使培养的学生既有较扎实的理论基础,又有适应人才市场需求的职业技能,在软件工程专业大框架下设置了数字媒体技术方向。
数字媒体技术作为一个宽口径、以技术为主、艺术为辅、技术与艺术相结合的新的专业方向,涉及到不同的学科知识,因此,我们有必要通过探索与改革人才培养模式、课程体系以及实践教学体系的研讨,搭建科学的创新人才培养平台,促进软件工程专业人才培养整体水平的提升。
2.人才培养目标
培养目标是制定教学计划、设计课程结构、选择知识发展方式以及确定教学组织形式的依据,也是教学内容、教学方法、教学组织与管理、教学手段、教学评价等方面改革的基础和前提。软件工程专业数字媒体技术方向具有软件工程与数字媒体技术相结合的特色,注重对学生软件开发、应用能力的培养,实践性强。结合我们自身办学特色和办学条件,我校软件工程数字媒体方向人才培养目标是:“培养具备计算机科学、多媒体网络、软件工程技术、信息安全等方面的专业知识与技能,具有扎实的软件工程和数字媒体技术基础理论、宽厚的专业基础知识、较强的实践能力,能够从事包括新媒体应用以及虚拟现实等在内的多媒体技术开发、数字媒体设计与创作、计算机游戏设计、网页设计与网站维护、信息服务及数字媒体管理等工作的创新性技术人才。”
3.核心课程体系
数字媒体方向课程体系的建设以创新性复合型人才培养为基本指导思想,重视实践课程的开设,使学生所学习掌握的方法具有充分的实效性,真正做到学有所用,以适应未来的工作岗位,成为本行业和企业所欢迎的有用人才。课程体系分为软件工程专业核心课程模块、数字媒体方向核心课程模块、专业实训、毕业实习和毕业设计(论文)等模块。
3.1 核心课程
软件工程专业数字媒体技术方以软件工程专业为主线构成专业基础和专业主干课程。其中,计算机与软件基础课程有:计算机导论、程序设计入门、面向对象程序设计、数据结构与算法、Java程序设计、计算机组成原理、数据库原理、计算机网络、操作系统、编译原理、信息安全技术、计算机体系结构以及J2EE与中间件技术;软件工程专业课程有:软件工程导论、软件测试技术、需求分析与UML设计、软件项目管理与过程控制;数字媒体技术专业课程有:数字媒体技术导论、计算机图形学、数字图像处理、网络流媒体技术、用户界面设计、视频音频制作与处理、数字影视特技应用、高级游戏特性与游戏引擎、人机交互技术、虚拟现实技术与应用、高级脚本与插件技术等。对于实践性较强的课程开始单独的实验课程和配套的课程设计。
3.2 特色课程
计算机网络游戏由计算机技术、艺术设计学和计算机动画以及计算机图形图像技术高度交叉结合,目的是培养具有扎实的游戏编程功底和良好的逻辑思维习惯,具备较强的审美能力和一定的艺术素养,熟悉游戏产品开发流程,具有一定的策划能力,能在游戏公司、门户网站、手机运营企业、动画公司等单位从事游戏设计、游戏开发、游戏制作、游戏策划、游戏运营等方面工作的富于竞争力与创新精神的高级复合型人才。
计算机游戏程序设计。课程目标:本课程主要学习普及游戏开发理念,培养游戏开发氛围,挑选有潜力的学生组成开发团队;传授游戏开发中的程序设计要素,特别是游戏引擎开发的基本知识。通过本课程的学习,学生能够掌握游戏开发的基本理念,熟悉游戏开发的基本技巧和流程,并具备从事游戏程序设计工作的基本技能。
虚拟现实与数字娱乐。课程目标:本课程主要介绍虚拟现实的基本概念及其系统组成、相关的软件技术及虚拟现实的应用,并介绍了当前数字娱乐的现状,发展和一些关键技术。内容包括:虚拟现实的定义、特性和组成,虚拟世界的创建和管理,虚拟现实中的视觉计算,虚拟现实中的交互技术,虚拟现实中的声觉计算,增强现实,分布式虚拟现实,虚拟现实应用,与虚拟现实相关的数字娱乐技术。
4.实践教学体系
培养符合时代需要的创新性人才,就要强化实验教学的开放性和多层次化。基于创新性原则和以生为本原则,结合培养目标和自身教学特点,数字媒体技术方向实践教学体系分为课程实验,专业实训、毕业实习和毕业设计三个方面,各实践环节之问相互协调、相互衔接、循序渐进。
4.1 课程实验
依照实践能力培养循序渐进的原则,根据实现数字媒体技术专业基本能力培养的系列课程,并按照系列课程的复杂度和规模设计实践环节,开展了多层次课程实验教学,根据学生的需要和实践能力培养的渐进规则,将实验课安排大学四年的各个环节。
多层次实验教学是指在实验大纲与目标的规范基础上,将实验项目设计成基础型、综合设计型、研究创新型不同层次的实验。同一学生从基础规范一综合设计一研究创新这样难度递增的实验项目中逐渐进行训练,实现系统培养学生综合实践能力。课程实验主要包括:手绘训练、视频特技与非线性编辑、多媒体网页设计、移动娱乐软件开发、网络娱乐软件开发、界面设计课程设计、虚拟现实开发课程设计等。
4.2 专业实训
专业实训作为知识、能力、综合素质教育的结合点,成为数字媒体技术专业实践教学的重点之一。专业实训是对课堂教学具有延伸作用,是学生培训职业能力、熟悉职业环境、了解实际知识的重要渠道。通过专业实训,学生不仅可以把所学转化为所用,还能使学生在学习操作过程中通过不断调整自己的知识结构来慢慢适应相应职业岗位,锻炼职业的能力,为实习以及今后走向社会积累经验、打下基础。
我校软件工程专业是校级专业综合改革试点专业,以争建微软IT学院、HP软件学院为契机,与知名IT企业开展深度合作,联合培养具有国际视野的软件开发、软件测试和服务外包人才。与中软国际、Tarena(达内)科技等十多家IT企业联合建立了实习实训基地、就业基地。
4.3 毕业实习和毕业设计
毕业实习是学生将前期学习到的知识运用到生产实践中,真正了解、感受未来的工作,锻炼自己各方面的综合能力。真正实现与行业需求的专业实践能力对接。能胜任相应岗位的工作,从而积累工作经验,为就业做准备。为了增强学生和指导老师对毕业设计(论文)及毕业实习的重视,提高毕业设计(论文)的质量和提高学生在毕业设计(论文)及毕业实习实践环节获得的实践能力,也为缓解毕业设计时间(论文)不足,笔者将毕业实习与毕业设计(论文)有机结合,实行“毕业实习+毕业设计”相结合的模式,学生毕业设计的内容来自于毕业实习,并且毕业设计的内容要将毕业实习的内容进行一定的升华,除体现学生四年来所学知识综合之外,还要体现出学生的创新能力与科研能力,达到培养创新型、复合型人才的标准。
5.结束语
通过对国内外数字媒体技术相关专业及方向的调研,基于创新性人才培养目标,建立了相关的核心课程和多层次实践教学体系,融合专业技术、实践教学、校企合作共同培养为一体的软件工程数字媒体特色专业方向的知识体系,着力培养学生的艺术与技术交叉结合的数字媒体制作与开发能力和职业素质,进而使得学生的基础知识、科学素养、艺术感悟、专业知识、创新能力、工程能力和职业素质都得到全面均衡的发展,以增强他们在数字媒体行业就业的竞争能力。
参考文献
[1]沈琦,于学军,张丽,等.软件工程(数字媒体技术)特色专业复合型创新型人才培养模式研究[J].中国校外教育,2010,16:162-163.
[2]蔡建平,沈琦,于学军等.软件工程(数字媒体技术)特色专业的特色建设[J].软件,2012,33(4):108-111.
[3]耿卫东等.面向数字媒体技术专业的数字化学习平台建设[J].计算机教育,2010(16):99-101.
[4]向辉.数字媒体技术专业课程体系探讨[J].计算机教育,2008(15):28-30.
[5]黄成云.数字媒体技术本科专业实践教学体系研究[D].华中师范大学,2012,5.
关键词:CDIO;课程群;软件开发;实践教学
0 引言
随着高等教育进入大众化阶段,国内高等教育呈现多样化的办学格局。许多新升本科院校确立了培养应用型人才的目标定位,应用型本科教育已逐渐成为我国高等教育体系中一种新的重要类型。应用型人才是高等学校根据社会实际需要所培养面向实际、面向生产一线掌握一定基础理论知识并有一定的创新能力的人才。因此,在应用型人才的培养过程中,既要重视对基本概念和基础理论的掌握和理解,更应重视实践动手能力的培养,使培养的人才面向市场、面向应用,具备基础理论适度、技术应用能力强、知识面较宽、素质高等特点。
计算机科学与技术是一个实践性很强的工科专业,不仅要求从业者具有扎实的理论知识,更要求从业者具有较强的应用能力和实践动手能力。而软件开发能力是计算机科学与技术专业学生最重要的一种能力,如何通过一系列理论课程的学习和实践环节的锻炼使学生获得这种能力,为今后的工作打下牢固的基础,是一个非常现实和重要的课题。
本文以应用型软件开发人才培养为目标,以加强软件开发课程群建设为契机,结合CDIO的一体化、工程、主动学习等理念,对软件开发课程群的实践环节进行改进,采用先进的工程教育培养模式,提高学生的软件开发水平和实践动手能力,从而提升毕业生在软件产业人才市场的竞争能力和适应能力。
1 CDIO工程教育模式
CDIO工程教育模式是近年来国际工程教育改革的最新成果。为了应对经济全球化形势下的产业发展对工程人才的大量需求,麻省理工学院、瑞典皇家工学院等4所大学从2000年起成立的跨国研究组,经过4年的探索研究后创立了CDIO工程教育理念。CDIO是构思(Conceive)、设计(Design)、实现(Implement)、运作(Operate)的集合体,让学生以主动、实践、课程内容有机联系学习工程的方式,即“做中学”的方式来学习。CDIO培养模式通过项目将整个课程体系有机而系统地结合起来,目标是培养高素质的工程应用人才。将CDIO理念贯穿于软件开发课程群实践教学中,对应用型工程人才实践动手能力的提高具有重要作用和实际意义。
2 软件开发课程群的设置
课程群是数门课程的集合,对于课程体系、课程群和课程建设,它处于中观的位置。其核心都是从培养学生的能力出发,研究各子课程之间的内在联系,将它们进行合理整合,通过课程群建设得以提升到一个新档次,从而使整体教学质量得到提高。软件开发课程群是计算机科学与技术专业的主干课程,软件开发课程群应以“培养应用型的本科人才,注重计算机实践能力培养”为核心进行建设。随着专业的发展,专业内涵逐渐从“计算机”延伸到“计算”,学科目标也应进行相应的转换和充实。在这样的背景下,跟软件开发系列有关的课程相对比较多。为了便于管理和进行分类,将软件开发课程群按递进关系进行设置,分为软件开发基础、算法分析和软件开发工具3个子课程群。软件开发课程群的具体设置如表1所示。
表1 软件开发课程群设置
上表中,随着移动应用开发成为新的热门产业,嵌入式软件开发模块侧重于智能手机应用软件的开发,并且以Android平台为基础进行教学。
3 基于CDIO的实践教学改革
通过分析软件开发课程群的特点以及CDIO工程教育模式中以能力培养为目标的大纲和相应标准,以CDIO的工程教育理念为指导,对课程群的实践教学环节进行改革。
软件开发课程群由十多门相互独立又联系紧密的课程组成,它们有着不同的课程目标,但又衔接紧密,共同构成了一个培养软件开发人才的课程体系。软件开发课程群不仅仅重视基本理论的验证,在教学过程中更应特别突出实践教学的重要性,制定相宜的系统实践教学计划和学生训练目标。为构建良好的实践环节,需要在CDIO教学理念的指导下,根据工程化实践教学的需求,全面调整实践课程与教学模式,实现工程化教学模式。
根据软件开发人才的培养目标及相应专业能力的要求,结合CDIO的一体化理念、工程理念、主动学习理念、团队协作理念等,我们将软件开发课程群实践教学分为三个层次,即基础层、综合应用层和创新层。每个层次的实践教学内容及能力训练目标如图1所示。
图1 软件开发课程群实践教学层次及能力训练目标
在图1中,基础层主要通过计算机程序设计语言和专业基础课程的验证性实验为主,为了锻炼学生的自主学习能力,部分实践操作由学生课后独立完成;综合应用层强调技术知识和工程能力的培养,由综合性和设计性实验、课程设计(项目实训)的方式训练完成,该阶段面对简单的工程问题,在教师指导下由学生组成3-5人的开发小组自行完成设计、制作、调试、测试实验结果,共同完成实验课题。面对一个综合性的小型项目,能较好地培养学生的过程与系统构建能力,在共同开发中,还培养了学生团队协作能力;创新层强调创新能力的培养,主要通过顶岗实习、毕业设计、科研训练和科技竞赛的方式完成,它涵盖了CDIO“在企业与社会环境下的构思-设计-实现-运作”层面所需要的能力。该阶段吸纳学生进行与“产学研”相关课题的编程创新训练。通过学生科技竞赛、程序设计大赛和深入企业实践教学基地、毕业实习单位进行顶岗实习等方式,在公司环境中,真实感受软件工程项目的整个开发流程,该实践环节要求学生按软件企业产品开发周期进行构思、设计、实现以及运作,属于高级层次的项目;或者对学术型学生,吸引他们参与教师的科研课题,争取发表学术论文和科研成果等。教师在提供毕业设计选题过程中,也要注重毕业设计课题的综合性和创新性。因为在创新性实践教学环节,需要学生查阅英文资料,而且开发环境也是英文版,所以该环节也涵盖了CDIO能力大纲中的外语交流能力。
软件开发课程群实践教学中两个主体分别是教师和学生,为了培养学生的工程实践能力,显然教师也需具备CDIO能力。为了提高主讲教师的工程经验,学校派遣教师去企业进行为期半年的工程实践锻炼培养。此外还邀请软件开发企业的项目经理到校对教师和学生进行短期培训。学校也鼓励教师承接企业委托的横向项目开发,通过实实在在的企业课题提高教师的工程实践能力。
4 学生实践教学的评价机制
为了保证软件开发课程群实践教学体系的良好运行,必须建立起一套易于操作的评价机制,对实践教学中涉及的各项能力进行有效评价。对学生的评价机制贯穿整个学习过程,包括学生学习评价机制、实验评价机制、课程设计评价机制、实习评价机制、毕业设计评价机制等等。实践教学的具体考核方法如表2所示。
表2 软件开发课程群实践教学考核方法
上表中,综合性和设计性实验由于涉及学生综合应用知识的能力和工程实践能力,仅仅看报告并不能客观评价一个学生,因此需要学生做课堂答辩,除了当堂演示系统运行之外,还要叙述自己的系统设计思路,并回答教师提问。课程设计为小组团队完成,为了考察一个学生的团队协作能力,协作能力的好坏小组成员最清楚,因此需要组员对考核者做小组评定。创新性实践教学是对学生更高层次的培养,并不需要每个学生都必须完成该项考核,对那些综合素质较高、创新能力强的学生,通过他们的获奖证书、发表的科研论文、申报的专利或者参与科研课题的总结报告,由班主任进行考核评定,作为学生评优、评先的重要依据。通过上表所述的各项考核方法,我们对学生基于CDIO的各项能力有一个客观的评价标准,使老师及时分析学生情况,从而为进一步调整优化工程化教学实践要求提供依据。
5 结束语
教学改革的最终目的是培养符合市场和社会需求的工程实践型人才,学生软件开发能力的培养是适应社会对计算机专业人才的需要。本文通过分析软件开发课程群和CDIO工程教育模式的特点,同时综合考虑应用型本科高校对学生的培养目标,对软件开发课程群的实践教学改革进行了探讨。软件开发课程群实践教学是一个多层次、全方位、重应用的完整体系,以培养学生CDIO能力为目标,包括实验教学、课程设计、顶岗实习、毕业设计及创新性实践活动等,从基础到课程综合知识的运用,到真正的软件开发流程训练,到学生创新思维能力的培养,一步步地将计算机专业学生培养成社会有用的软件人才。实践结果表明,本课程群实践教学体系一是能满足不同学生层次的学习需要;二是通过真实的企业环境进行工程化培训,学生的学习目的明确,团队意识、职业素养和就业能力等方面均有明显提高;三是通过校企实践教学基地的实训及创新实践教学的训练,部分学生的创新能力明显得到了提高,为今后研究性学习打下了坚实的基础。
参考文献:
[1] 王勇,王忠群.面向应用的计算机软件方向课程群研究[J].长春大学学报.2011,21(12):98-103.
[2] 谭德坤,吴润秀.以《数据结构》为核心的软件开发课程群建设[J].南昌工程学院学报,2010(2):32-34.
[3] 廖志芳,胡志刚,任胜兵等.软件工程CDIO“五位一体”实践教学体系[J].计算机教育,2010(11):128-131.
[4] 陈昊,明仲,彭小刚.软件工程课程群实验教学改革探讨[J].实验科学与技术,2011(4):93-96.
[5] 陶维安,范会联.应用型软件开发人才培养模式研究[J].教育与职业,2012(20):105-106.
[6] 洪小娟,杨小进,黄卫东. 依托课程群构建信管专业模拟实验平台[J].实验室研究与探索,2011(4):130-133,181.
[7] 丁卫平,陈建平,管致锦等.以程序设计课程群实践教学改革为契机,培养地方普通本科院校学生编程创新能力[J].计算机教育,2009(20):10-13.
[8] 王艳玲.借鉴CDIO理念的软件技术专业“双工程”实践教学改革探索[J].价值工程,2013(1):293-294.
[9] 雷建云.浅谈高校计算机专业软件实践教学体系的建立与实施[J].计算机教育,2009(8):110-111.
关键词:应用型;基于项目;实践训练;答辩考核
随着我国高等教育改革的进一步深化,由教育部提出针对在校大学生的创新型人才和创业型人才的培养正逐渐成为应用型院校转型的目标。那么如何让在校大学生具备软件项目开发的技能和知识也是软件工程专业的培养目标之一。培养学生软件开发的应用能力已经成为软件工程专业的人才培养的首要目标。[1]《软件工程导论》课程的教学任务也由原来软件开发理论知识的讲授转变为软件开发基本技能和文档撰写能力的训练和培养,通过学习这门课使学生能够了解软件开发的流程,并且知道在开发的过程中每个阶段都做什么和怎么去做,让学生能够直接进入到项目组里,参与软件项目开发。这样改革的好处是多样的:1.这样除了对学生应用能力进行了培养,而且让学生对软件项目的了解进一步加深,后续为以后的其它专业课的学习也打下了基础;2.在同步开设的其他课程中,进行横向联合,让学生都针对同一项目进行训练,让学生能够学有所用,大大提高了学习兴趣和积极性;3.对各门专业课的教学内容和方式都有所触动,促进了教学改革的深入。目前,国内各个高校的软件专业中都开设有《软件工程导论》这门课。多数学校还是当作一门专业基础理论课来讲授,这样的学校大多是研究型大学,学生基础比较扎实,对枯燥的理论可以接受,但是只学理论没有实践造成的后果是学完就忘,学生只会答题;还有一些学校对《软件工程导论》课程进行了一些改革,比如将理论基于一种开发环境的软件开发,试图将理论和实践相结合,但是多数是面向对象开发方式,理论多实践少,落到实际课堂教学上还是教师说的多,学生做的少,对学生实践能力培养并没有多大的改变。对课程的教学改革主要包括教学内容的改革,教学方式方法的改革,考核方法的改革。
一、教学内容的改革
目前《软件工程导论》课程的教学内容包括:软件开发基础知识,需求分析,总体设计、详细设计、编码、测试[2]、项目管理这些内容,采用的是结构化的软件开发方法。之前我们只讲理论知识,特别是开发过程中的一些技术和软件,但是学生学完即使会做题也不会开发项目。现在,我们将教师实际参与开发的项目带领学生从需求开始分析,进行总体设计和详细设计加入到授课内容中,结合实际的项目开发的内容,把理论和实践相结合。学生边学理论知识,边完成自己的项目,可以将学到的知识应用到项目中,做到学有所用。希望培养学生整体软件开发的方法、软件项目管理能力、软件需求分析能力、数据库设计能力、人机交互设计能力、软件测试计划及方案的制定能力、课程报告撰写能力、学习态度等各方面能力。
二、教学方式方法的改革
《软件工程导论》是一门理论课,多数是在多媒体教室由教师讲授为主进行授课。现在,在开课之初,我们要求每个学生申报一个题目,整个学习过程中学到哪个阶段,学生就自己去完成所申报题目的该阶段的任务,这样课堂上老师讲怎么开发软件,在课下布置了大量的阶段性文档要求学生去完成,而且各个阶段所采用的方法也不同,随着各阶段任务的完成,学生也体会到了项目开发的过程、方法。为了保证学生提交的阶段文档的质量和保证学生的项目能够顺利进行,我们将阶段评审添加到了教学过程中。学生需要提交的阶段任务文档有:《软件需求规格说明书》、《软件概要设计说明书》、《软件测试报告》和《课程综合报告》。其中《课程综合报告》中要求按照毕业论文的格式要求去排版和完成,希望同学们通过这样的训练能够在毕业设计中取得较好的效果和成绩。在教学改革时我们还尝试着和同时开设的《数据库原理与应用》、《面向对象程序设计》等课联合起来,分别针对同一题目进行阶段训练,在最终答辩的时候由三门课的老师同时参与答辩,答辩成绩被记入到三门课的最终成绩里,比如《数据库原理与应用》课学习如何设计数据库就应用在了《软件工程导论》课的总体设计阶段,学生需要画出E-R图,给出主要表结构;《面向对象程序设计》课最终就是根据《软件工程导论课》分析和设计的结果用JAVA语言开发出一个小项目,这样学生不仅写出了阶段文档,最终还能做出一个实际的项目,增加了完整性和学习积极性。
三、考核方法的改革
原来我们都是采用试卷考核的方式,但是试卷考核只能考察学生的知识掌握能力,并不能考核学生的实践应用能力,而我们希望通过这门课程让学生具备一定的软件开发实践能力,所以由试卷考核改为答辩考核和平时阶段性评审。[3]这也要求在开课之初就制定出比较详细和全面的考核方案,我们的考核方案从课程报告、答辩平时表现这三大方面出发进行考核,具体考核标准如表1。而且,在课程报告提交时,我们有统一的文档格式和内容要求,包括需求分析报告,概要设计报告、测试报告、课程设计报告,在平时授课阶段就需要提交上来;而答辩时,将学生答辩的项目原型与学生之前提交的需求、设计进行对应,审核是否是按照需求和设计进行的开发;而且在近几次的答辩中,我们将答辩所占的比重逐步增加,这样可以看出学生的表达能力、思维能力、项目综合运用能力的高低。《软件工程导论》课程改革的目标就是希望将枯燥、抽象的理论课变成充满趣味和挑战的实训课,让学生通过本课程学习能够知道项目开发各阶段的工作内容,且能够开发一个简单的项目,避免在毕业设计时犯一些软件开发的常识性错误,比如项目开发流程弄错,如何进行分析和设计等等。同时为了提高学生的创新能力,让学生自己申报题目,从需求分析到最终分析设计结束都需要学生自己动手来做,通过学习软件工程思想和方法去完成软件开发过程,可以调动学生的主观能动性,真正做到独立思考,能够激发学生的潜能和创新性,为创新型和应用型人才的培养打下坚实的基础。
参考文献
[1]王菁华.地方高校向应用型转型必须实现三个根本转变[J].职业教育,2016.
[2]韩万江.软件工程实例教程[M].机械工业出版社,2014,3.
关键词:软件工程;实践化教学;软件构造;教学方法
0引言
软件工程是一门实践性很强的课程,课程实践对于巩固课堂教学成果、培养学生软件工程能力具有重要作用,因此实践化教学已成为软件工程课程建设的一个基本方向[1-4]。本文所讨论的软件工程课程是指软件工程概论课程,一般会作为软件工程或计算机专业本科生基础课在大学二年级或三年级开设,从而为软件需求、软件设计、软件测试等后续专业课程学习打下基础。例如,复旦大学软件学院的软件工程课程在大二下学期开设,后续还开设了多门软件工程专业课程以及软件实践课程。因此,这类概论性质的软件工程课程实践教学的主要目的是通过实践巩固与加深对课程内容的理解,同时初步培养学生的软件工程能力。在此基础上,可在高年级专门开设综合性的软件实践课程,并突出规模性、综合性、集成性、创新性等方面的实践要求[2]。软件工程课程实践应当贴近工业界的软件开发实践,以一种迭代化的方式开展。通过多次迭代的系统理解、分析、纠错、改进等演化式的开发活动,不仅可增强学生的代码理解、修改等软件开发实践能力,还可强化对其软件设计准则、编码和文档习惯以及软件测试能力的培养[5]。考虑到授课对象的专业基础及可接受性,本文在软件工程课程教学与实践中采用以软件构造活动为中心的思想。软件构造是指通过将编码、验证、单元测试、集成测试及调试相结合,具体创建可运行的软件的过程[6]。作为刚经过2年专业学习、初步掌握编程能力的本科生而言,软件构造活动所覆盖的软件工程专业知识及能力是其最容易理解与接受的学习内容。以软件设计为例,其中包含两个层次[6]:体系结构设计关注软件顶层结构和组织,以及识别各种可用组件;详细设计关注为每个组件(或模块)提供足够的细节以支持软件构造。在这两个层次中,体系结构设计通常在大规模、分布式软件系统开发中有较多考虑,但在此阶段的学生由于缺乏所需专业知识和软件开发经验,一般很难理解体系结构设计。属于软件构造活动一部分的详细设计则建立在面向对象设计等更贴近编码开发能力的基础上,比较适合在软件工程课程中进行介绍与实践。此外,课程设计还充分考虑了软件工程师成长路径,按照局部编码、详细设计、总体设计、需求分析与测试的顺序逐步开展课程教学与实践。按照以上指导思想,本文设计了软件工程课程教学及配套实践内容,在复旦大学软件学院开展课程教学,并依托华为软件开发云DevCloud平台[7]开展实践教学,取得了良好效果。
1课程教学及实践安排
根据软件工程实践化教学的需要,同时考虑修读本课程学生的专业基础及可接受度,本文确定了以下3条课程教学内容安排基本原则:(1)以软件构造活动为中心。以详细设计、编码、单元测试等软件构造活动以及与之密切相关的版本管理等协作支持能力为中心,强调本科生可深入理解并切实掌握的软件工程能力。(2)突出实践化培养特色。通过课程实践项目加强学生对相关知识的理解、锻炼对应的软件工程能力,课程教学内容及进度安排配合实践项目进展过程。(3)体现软件工程师成长路径。课程教学内容安排体现企业中软件工程师的成长路径,按照局部编码、详细设计、总体设计、需求分析与测试的顺序逐步培养学生的软件工程能力,同时穿插版本管理和配置管理等团队协作能力培养。根据以上原则,本文设计了课程相关教学模块及实践内容。
1.1课程教学模块设计
课程教学内容模块及其教学顺序如表1所示。软件工程概述部分为学生提供了一个关于软件工程思想及其基本内容的概览,为其理解后续学习内容提供一个基本的上下文知识背景。后续学习过程从个人开发技能和必要的软件过程与团队协作能力开始,逐步展开软件设计、软件需求、软件测试等教学内容。其中,个人开发技能和软件设计两部分中与软件构造密切相关的内容是教学重点,属于学生较容易接受并掌握的基础开发能力。各个课程教学模块都需要与课程实践及相应的软件开发环境和工具相结合,突出各部分的实践要点。
1.2课程实践内容设计
课程的重点教学内容需要通过课程实践让学生进行体验与巩固。为此,本文设计了配套的课程实践项目。除第一次的体验性实验外,整个实践项目都是围绕一个开发项目(如“在线论文投稿系统”)要求,以一种小组协作和迭代化的方式开展。教学侧重点从编码能力、设计能力到分析能力逐步进阶,同时伴随着软件需求逐步增加与变更。实践项目依托华为软件开发云DevCloud平台进行,可实现整个软件开发与协作过程全程留痕,帮助学生更完整与系统地理解工程化软件开发,同时为课程项目评分提供依据。课程实践项目以4人为一组,设置组长1名,根据交付及完成情况进行整体评估打分,期末再通过组内协商或互评将实践项目评分分解到人。整个课程实践项目分阶段安排如下,其中针对卓越工程师班的特殊要求需单独注明。阶段1(个人任务):熟悉DevCloud及Git版本库,在事先准备好的Web项目内容基础上通过fork操作建立自己的代码仓库,利用Maven完成项目构建,并在华为云上进行在线部署。阶段2(小组任务—初始项目开发):利用SpringBoot+Vue实现一个在线论文投稿系统的注册、登录以及会议申请等基本功能,并在华为云上进行部署;要求使用DevCloud的需求规划、工作分配以及代码质量检查功能,确保功能实现的正确性和完整性,同时注重版本提交等开发过程的规范性。阶段3(小组任务—代码质量):实现系统中的会议申请与管理等相关功能;实践单元测试,要求项目中的代码测试覆盖率不低于80%;提升代码质量,要求使用DevCloud代码质量检查工具进行代码质量检查,并解决检查中暴露出来的代码质量问题。阶段4(小组任务—设计与持续集成):完成系统的稿件分配与审稿功能,回顾并检视软件设计质量,进行必要的重构与改进;为提交的代码打标签(如按照每次迭代后实现的功能打标签),根据标签实现选择性地编译构建;利用华为云平台构建CI/CD流水线,尝试持续集成、持续交付与持续部署(卓越班要求)。阶段5(小组任务—需求分析与测试):完成系统中的会议评审意见答复(rebuttal)与论文录用相关功能;开展需求分析,检视此前软件实现中的需求完备性和准确性;在单元测试的基础上实践集成测试;结合DevCloud和SonarQube的代码检测能力进一步改善代码质量;进一步完善CI/CD流水线,使每个任务的健康度都达到四星及以上(卓越班要求)。以上课程实践项目安排通过迭代化的方式逐步完善项目各项功能,每个阶段结束后都有可交付、可运行的软件版本。这种演化式的开发过程更有利于学生理解真实的软件开发过程,同时对软件代码和设计质量等方面要求有更深刻的理解与体会。与此同时,在每个课程项目阶段中都加入与课程教学内容相对应的实践要求。例如,第2阶段在完成初始项目功能开发的基础上,要求学生利用DevCloud的代码质量检查功能发现代码质量问题并进行修复,同时建立基本的版本提交规范;第3阶段在增量需求开发的基础上,进一步要求学生实践单元测试并解决大部分代码质量问题。此外,整个课程实践项目过程都贯穿了对软件设计能力和团队协作能力的要求:通过迭代化和演化式的开发过程让学生体验软件设计(特别是模块化设计)质量对软件持续演化与扩展能力的支持;持续的小组任务要求学生在项目中考虑前后端分离、模块划分、接口定义等设计问题,同时建立有效的分工协调、进度管理、交流讨论、版本分支与合并、集成与测试、构建与部署等团队协作机制。
2实践教学效果
采用上述实践化教学方式在复旦大学软件学院开展本科软件工程教学取得了良好效果。学生普遍反馈课程实践项目对其有一定压力,但对于理解软件工程理论及培养工程化开发能力有很大帮助。
2.1实践中存在的问题
在课程实践项目的每个阶段,都会对各小组交付情况进行评估,并通过课堂交流的方式邀请一些小组进行分享。通过该过程也发现了学生在课程实践中的一些问题,主要包括以下几个方面:(1)逻辑不严密、测试不充分。对输入的合法性检查不够,例如密码长度限制检查、必填数据项的非空检查等;未使用登录拦截器,可在未登录状态下直接使用URL访问特定页面。(2)代码提交不规范。一些小组提交频率过低,仅在项目开始和结束时各进行了一次提交;一些版本提交的粒度过大或逻辑不完整,对提交消息的描述也不够准确;有些小组的代码提交说明内容非常随意,缺乏可读性(如图1所示,其中第一列和第二列分别是代码提交ID和提交说明)。(3)缺少必要的分支管理。一些小组成员在各自分支上进行开发,主分支合并较晚,因而导致较多冲突,修复负担较重。(4)代码质量存在问题。典型的代码质量问题包括代码重复率和圈复杂度过高、标识符命名不规范、方法参数过多、在版本中包含alert语句、不合理的代码重复等。(5)用户界面不友好。界面上存在一些对用户不友好的情况,例如点击按钮后系统没有任何提示、执行操作后无法看到操作结果、一些重要信息无处查看等。(6)前后端分离及模块划分不佳。一些小组没有意识到在前后端分离及模块化开发过程中建立接口契约的重要性,出现了模块实现未按照契约编写的情况,导致小组项目集成时问题较多,拖慢了开发进度。
2.2进一步的实践探索
大部分小组通过阶段性反馈意识到相关问题后都进行了改进,最终大部分小组不仅圆满完成了各项基本要求,而且还在多个方面进行了一些有意义甚至创造性的实践探索,具体包括以下几个方面:(1)需求规划和任务交流。使用DevCloud进行需求分解与开发任务规划,在此基础上通过视频会议或即时通信讨论组的方式进行沟通讨论及结对开发,通过共享文档的方式约定开发接口、记录会议纪要以及协作完成实验报告。(2)设计思维和体系结构理解。在前后端分离的基础上,明确定义了后端接口及其契约,同时给出了包含后端模块划分及前端Web组件结构的完整设计方案,在设计方案基础上进行开发任务分配与协同。(3)演化式设计与软件重构。在迭代化的开发过程中不断评估设计方案的不足,据此对代码进行整理与重构,从而完善设计方案。(4)分支策略和开发协作。制定适合团队开发模式的分支策略,例如将主分支、特性分支、开发分支进行分离,建立规范化的代码分支(branching)与合并(merging)实践模式,保持主干清晰,及时提交并解决代码冲突;规范版本提交过程,采用规范化的模板,并按照新增特性、缺陷修复、重构改进等不同目的编写提交消息。(5)高质量编码。建立良好的代码注释风格;充分体现防御式编程,在前端输入验证的基础上,后端代码也进行输入值的合法性验证,并在发现问题时抛出异常;充分利用DevCloud的代码质量检查工具对前后端代码进行全面扫描,根据检查结果改进代码质量;开展代码评审实践,在发现代码缺陷的同时,也促进了组员对代码的理解与共享。(6)软件测试。初步建立测试驱动开发实践,通过JUnit工具编写测试用例,对类或方法进行单元测试,并保证一定的代码覆盖率;采用Web自动化测试方法,通过大量测试用例的自动运行保证后台接口质量。
【关键词】软件工程 高等学校 教学改革
一、高校软件工程教学概述
现阶段,软件工程课程已经逐渐的成为一门单独的新学科,而且在我国许多高校基本上均开设这门课程,因而其重要性可谓是不言而喻的。近些年以来,随着科学技术的不断发展,软件工程课程已经成为开发软件的必备知识,所以,要想真正的成为一名合格的大学生,那么就必须对软件工程知识加以熟练的掌握,这也是成为一名合格的信息人才所必须具备的一项技能。同时,高校在开展软件工程教学时,应当恰当的选择讲授方式,要想方设法的创新教学理念,优化课程教学结构,激发学生学习的热情,只有这样才能够培养出更多优秀的应有型人才,才能够进一步推动科技的蓬勃发展。我国很多高校都设有计算机科学技术专业,在这个专业的教学过程中,软件工程是一个基础性比较强的课程,而且也是学生必学的一门课程,只有切实的掌握了这门课程,学生学习软件知识才能够得心应手。当前,相当一部分的高校在进行软件工程教学时,选用的教材基本上均是清华大学出版社出版的《软件工程导论》。在具体的教学过程中,教师也都是采用理论知识教学和实际练习相结合的方式予以展开,简单的来说也就是在课堂上由教师把相关的理论知识教授给学生,然后再对学生进行相应的实训,让学生们亲自动手去设计一些东西。
二、软件工程教学的特点
(一) 综合性较强
学习软件工程课程需要相关的前导课程作为学生学习的基础,前导课程主要包括数据结构、计算机基础导论、简单的操作系统以及对数据库的基本处理能力等。通过对这些前导课程的学习,学生可以对局部性的问题有大体上的了解,并且能够通过自己的努力去解决专业问题。软件工程课程更为注重的是学生对全局问题的解决能力。我们都知道,软件工程课程是综合性比较强的学科,因而学生在学习的过程中,难以避免的会遇到一些无法独立解决的问题,这时就需要去与其他学生共同讨论,如果仍然解决不了,则需要去请教专业老师。从某种意义上说,对软件工程的研究其实就是在具体的开发过程中,应用自己已经学到的理论知识以及解决问题的方法,在一定的时间内且不超过预算的条件之下,做出高质量、高水平的软件。
(二)实践性较强
正如前面提到的,软件工程课程是一门实践性非常强的课程,是经过许多研究学者深入研究且精心提炼的结果。高校学生在进行软件工程课程学习时,应当在能够掌握基础概念和方法的前提下,切身的置身于软件开发的实践工作,只有这样才能够真正理解与体会书本上所讲授的知识的内在涵义,才能够切实的掌握知识与技能把,从而为日后的工作及学习奠定坚实的基础。
(三)课程发展速度较快
软件工程从上世纪六十年代末提出,在近几十年的时间里,软件工程的发展速度是非常惊人的。在软件开发过程中,通常有着多种多样的开发方法,不仅有较为传统的软件工程,还有专门针对某个软件的软件工程开发项目,甚至还有一些其他的软件工程开发项目,比如结构软件工程、形式软件工程以及净室型软件工程等。然而,许多高校所选用的学习教材无法把多样化的软件工程开发方法全面的涵盖进去,进而导致学生不能对比较前沿,比较先进的开发软件方法有整体上的认识。所以,教师在实施软件工程教学的过程中,切勿仅仅注重教材内容的讲授,还应该在具体的教学中适当的引入比较先进的软件开发方法,以便于最大限度拓展学生的思维,充分的开阔学生的视野。
(四)对经验丰富教师的需求迫切
软件工程是一门需要将理论和实践密切结合的课程,如果是尚未切身参与过软件开发的教师,可以说是无法完全够胜任课程的教学工作的,即便是已经从事软件开发工作多年的教师,在课堂教学的过程中,如果不注重联系实际,往往也无法把课程知识有效地教授给学生。软件工程课程需要不断地与实践接轨,高校应该提供给学生丰富的实习机会,让学生可以在实习过程中不断掌握丰富的软件工程专业知识,但是目前这些问题已经成为高校软件工程教学的难题。因此,采用何种方法才能提高高校软件工程教学的效果与效率,是摆在我们面前最重要的一个问题。
三、软件工程教学中所存在的主要问题
(一)教材存在一定的局限性
我们如果从高校软件工程教材的角度去分析高校软件工程课程的教学,通常不难发现高校所使用的教材存在着较强的局限性。高校目前的软件工程教学所沿用的依旧是以往传统的教学方法,在组织开展软件工程实验时,仍然以生命周期的方式予以研究,这样做的结果就很容易导致学生在软件工程学习中出现时效性严重不足的不良现象,学生无法切实的跟上信息行业的发展步伐,并且很多软件方面新兴起的技术学生也无法接触到,尤其是那些前沿的科研成果。过去传统的教学方式主要是教师把书本上的理论知识讲授给学生,学生可承担额听讲中仿佛是已经掌握了教师所讲授的知识,但实际上绝大多数的学生对教师讲解的专业知识仅仅是非常模糊的认识,这是因为该课程的实践性较强,只是进行理论知识教学是远远无法使学生掌握这门课程的。
(二) 实践次数少且质量不高
高校在进行软件工程教学时,不能够提供给学生比较合适实践的项目,这也是学生进行试验之后无法取得预期效果的原因之一。学生不能把自己所学习及掌握的理论知识很好地应用到具体的实践活动中去,这是实践质量差的一个重要原因,与此同时,另外的原因就是学生对教师所讲授的理论知识没有熟练地掌握,无法真正的确保知识的合理运用。因此,当学生做毕业论文时,便无法有效的将软件工程的优势予以充分的展现与彰显,甚至很多学生会将软件工程视为毕业设计中的一个软肋。除此之外,学生在进行课题选择时,也不知道到底什么样的题目适合自己,可能有些学生会选择软件开发这个题目,但是在他们的毕业论文中,出现错误的频率非常之多,学生对软件工程的相关知识了解甚少,这些问题在毕业论文的撰写中便可暴露出来。
(三)软件工程教师能力不足
现在,除了专门培养软件工程学生的学校之外,其他的学校也会开设软件工程课程,但是这些学校的教师资源质量不是很高,或者说是,这些教师进行软件工程教学相对比较欠缺。软件工程是一门对教师素质要求较高的课程,这门课程的教学迫切需要教师对教材的本质知识有非常深入的理解,而且教师还应该具备丰富的软件开发方面的经验,最好是掌握一些开发软件的亲身经历,只有这样的软件工程教师才能够把软件工程这门课程很好地教授给学生,并且在进行课程教授时才能够把理论知识与实践充分的结合起来,才能够促使学生真正的将这门知识掌握好,进同时对该课程产生强烈的学习欲望。高校软件工程课程在教学中存在着的一系列弊端及问题,导致高校软件工程课程的教学效果有欠理想,而如果想要把教学质量予以提高,那么就必须将上述问题妥善的解决。
四、高校软件工程课程教学改革途径
面对软件工程课程教学中所存在的诸多问题,教师应当针对软件工程课程的特点以及课程学习的重要性,同时充分的结合实际的教学情况,尽快做出切实可行的教学改革计划,要重点从教学内容、教学模式以及教学资源等方面去实施改革。现阶段,许多地方高校在进行软件工程教学时,使用的依然是传统的教师为课堂中心的教学模式;还有些高校虽然对理论知识的教学是非常重视的,但是却极大的忽略了该课程实践教学的必要性。以上这些内容都是原来传统教学出现的问题,软件工程课程是一个实践性非常强的课程,如果对学生只是单纯的进行理论知识的讲授,那么他们对这门课程的理解和掌握是不能够提供学生应用及实践的。对于这个问题,教师应当深刻予以了解,同时还应当尽快的开展教学改革。在软件工程的教学过程中,教师需要担任的角色就是讲授教材上的知识,指导学生进行具体的实践操作,学生在具体的学习中也应该积极主动地去进行实践操作,教师布置下来的任务必须积极的完成,并能够通过完成任务更为深入且全面的了解课程知识。此外,教师还应当切实的立足于学生的性格特点,有针对性的采取教学方式,以此开展课堂知识的讲解。
五、结束语:
总而言之,为了进一步提高软件工程教学的质量,本文软件工程课程的现状、教师在授课过程中所存在的问题以及应对措施等进行详细的阐述,以供教育教学工作者参考与借鉴。
参考文献:
[1]何月梅,杜海艳,王保民.《软件工程》课程教学改革的探索[J].中国成人教育,2010(13).
关键词:软件工程;毕业设计;课程教学;教学改革
中图分类号:TP434文献标识码:A文章编号:1672-7800(2012)010-0200-02
基金项目:铜仁学院2011年教学改革项目(2011)
作者简介:蒲天银(1974-),男,硕士,铜仁学院计算机科学系副教授,研究方向为项目管理、信息安全;饶正婵(1976-),女,硕士,铜仁学院计算机应用研究所讲师,研究方向为项目管理、数据挖掘。
0引言
当前,软件工程作为一个相对年轻的独立学科,在高校受到越来越多的关注,不仅如此,软件工程作为一种产业已成为软件发展的关键技术。因此,作为一名当代大学生,想要成为合格的信息技术人才,掌握一定的软件工程新技术、新方法是必不可少的。
随着现代计算机技术的飞速发展,软件业也得到了很快的提高,为跟上世界信息技术发展的步伐,从20世纪80年代起,我国大多高校在计算机科学与技术专业人才培养方案中开设了软件工程基础,此门课程一般安排在三年级进行,课程的开设对学生在大学四年的软件理论掌握中取得了不错的效果。但纵观近几年来高校的毕业设计可以看出,在实践性教学和教学效果检验等方面还存在着不少问题。课程教学中从教材的选用上看,重理论轻实践的现象比较突出,学生毕业后往往通过要用人单位长时间培训后才能适应岗位的要求,使得高校教育与社会的实际需求的脱节;造成了资源的严重浪费。
高校培养人才的目标是以社会需求为导向,计算机专业人才的培养也不过如此,学校的教育教学应该围绕这个导向定位来组织教学内容和配备教学资源。随着软件工程技术的发展,软件工程领域的教学内容不断丰富,教育教学手段日新月异,教学改革已势在必行。
1软件工程教学的现状概述
在计算机科学与技术本科专业的课程体系中,软件工程作为一门基础课程来开设,很多高校选择教材均为由清华大学出版社出版、张海藩教授编著的《软件工程导论》。教师在课程教学中,一般采用讲授与实训相结合的教学方法,即课堂上由教师讲授理论、原理,实训时由学生动手设计一个项目。由于该教材以理论内容为主,因此,该课程的教学存在诸多的问题,具体表现在:
(1)从教学内容上看,由于教材的局限性,目前的软件工程教学是以传统的教学方法为主,实验内容以生命周期法体系为主要内容,这样容易造成学生的学习时效性差,跟不上信息产业技术发展的步伐,大多新技术还没有传授给学生,特别是近几年新发展起来的构件技术、234建模技术。传统教学方式在课堂上主要讲授理论知识,学习者似乎能听懂,可听完后大部分学生还是似懂非懂。当学生在实训中进行设计时却不知从何入手,该运用什么知识、哪种方法。
(2)实践环节少且不够理想。总体来讲,目前在软件工程实训环节可供该课程选用的合适的项目不多,所以学生做实验所达到的效果与教学要求存在一定的差距。一方面是学生不能把理论知识有效地运用到实践活动中;另一方面学生没有真正掌握基础理论及运用理论的技能和方法。所以,在进行毕业论文设计时,不能将软件工程的理论充分运用到他们的设计实践中去,导致很多学生选题时无从下手,不知怎么做,大多学生即使选择了软件开发,但在开发的软件和撰写的文档在结构、内容等方面错误百出。
(3)教师问题。目前,除专门的软件工程学院的院校外,大多开设有计算机专业的综合院校软件工程课程的主讲教师本身也是一个问题。由于软件工程这门课程对授课教师的素质要求高,它不仅要求教师对工程内涵本身有深刻的理解,还要求教师必须要掌握一定的软件开发经验和一定的项目和工程背景,这样教师才能从自己的开发实践中理解软件工程的基本原理与方法,讲授时才能将理论与实践相结合,学生能直观地感觉到该门课程的重要性,从而产生强烈的学习兴趣。正是因为以往教学中存在的这些问题,导致教学效果不明显,并直接影响学生的就业竞争力。
2高校毕业设计现状
目前大多高校计算机专业毕业设计不很理想,具体表现在两个方面:
(1)从学生方面看,首先是学生入学后,通过3年的学习,学生在前三年级中一般都较为系统地学习了计算机软硬件方面的知识,并进行了实验、课程设计等多方面的训练。但由于大多实验、课程设计等实践训练属于考查范围,有一些学生抱着一种得过且过的心态,没有达到既定的学习目的,这样就造成既没有扎实的理论知识,也没有较强动手能力的尴尬局面。同时,目前大多高校将学生选题时间定在四年级第一学期,学生在导师的指导下准备毕业设计内容。但由于指导教师考虑到学生就业等实际情况,平时并没有对学生进行严格的时间要求和进度管理,很多学生直到毕业离校时才仓促完成任务,整个论文也是东拼西凑、质量不高。
(2)从指导教师方面看,首先是选题问题,指导老师把关不严,很多同学由于没有扎实的专业基础,30%左右的同学不敢选择设计类的问题,选择设计类的项目同学也存在问题,有的题目过大,如银行管理系统的开发,有的题目过小,如抢答器的设计;其次是指导过程不科学,在设计环节中,不论是软件开发还是硬件设计,大多同学只注重核心功能的实现,而忽略培养学生规范的设计过程及良好的设计习惯,使得毕业设计没达到对学生的锻炼价值。比如,在进行软件开发时只注重功能的实现,没有认真进行需求分析、设计方案的讨论、设计书的编写、编码风格的规范以及软件测试的要求。
3以毕业设计为导向,做好软件工程课程教学改革
3.1教学过程的正确引导
针对学生在毕业设计过程中存在的很多问题,作为教师如何将新的技术和方法传授给学生,使他们能真正掌握基本的软件工程的原理和方法是课程教学改革的核心内容。为此一般要求授课老师要能正确地把握目前软件工程的发展方向,掌握最新的软件开发技术,并能结合软件开发的实际例子,将该门课的精华有效地传授给学生。
3.2强化可行性分析与开题任务的结合
在学生毕业设计中,开题的任务是由指导教师与学生共同确定所选的毕业设计题目是否符合本科毕业设计基本要求。在软件开发过程中,可行性分析的主要任务是从经济、技术等方面分析拟将开发的系统在技术、花费财力、人力与物力等方面是否可行。首先,师生要分析所选的题目在法律上是否可行,有无违反国家的相关法律,有无违反当今社会的道德行为规范;其次,分析所选的题目在技术上是否可行,即所选的题目技术含量很高,现有市场还没有类似的产品,且该产品一旦开发成功,将带来巨大的收益;再次,如果该题目在法律上、技术上都是可行的,还应考虑经济上是否可行。
3.3将需求分析阶段在毕业设计过程中有效实施
软件需求分析的目的是澄清用户的要求,并把双方共同的理解明确地表达成一份书面文档——软件需求规格说明书。需求分析阶段对锻炼学生的沟通能力有很大的帮助,按照传统软件工程学的原理,需求分析的目的主要有3个:一是功能性需求分析,确定待开发软件需要哪些方面的功能;二是性能需求分析,确定待开发软件在性能方面有哪些具体的要求;三是数据需求分析,确定待开发软件在数据信息方面的需求。确定这3个需求的依据均源于对客户的了解,因此,需求分析的一个至关重要的任务便是与客户沟通。
在实际应用中,需求分析也是一个让人头疼的问题。用户的不配合是需求分析阶段的最大困难所在,在这种情况下,教学过程中可以考虑把学生分为若干小组,大家互相作为开发人员与用户,把即将完成的毕业设计题目作为项目,可以让学生身临其境地体会作为开发人员在需求分析阶段所应完成的任务,体会实际开发过程中用户以各种理由拒绝合作的无奈,以及应该以何种方式与客户沟通,如何调动客户的积极性与主动性。同时,也可以让学生体会作为客户与用户可以享受的权利及其应该承担的义务,使其走向软件编程的工作岗位时能更加懂得如何从客户与用户口中获取项目所需的功能、性能与数据。
3.4环环相扣,全面提升课堂教学的有效性
学生通过可行性分析、需求分析两个阶段的实践后,既学到了教材上的理论知识,又能与实践很好地结合起来,相信对课程教学已有了浓厚的兴趣。在接下来的设计环节中,作为教师要充分将工程体系的知识应用起来,结合现实生活中的工程问题举实例,让学生能主动地进入角色,处理好这些问题后,相信后面的问题就迎忍而解,既解决了理论课堂学习的枯燥无味,又帮助学生完成了毕业设计任务,全面提升了课堂教学的有效性。
参考文献:
[1]熊仕勇,张登国,黄星华.试论“软件工程”课程的实践性教学[J].重庆邮电大学学报:社会科学版,2007(6).
[2]何月梅,杜海艳,王保民.《软件工程》课程教学改革的探索[J].中国成人教育,2009(13).
1.CDIO模式下软件工程硕士培养过程的探索与实践
2.软件工程硕士胜任特征模型研究
3.软件工程硕士专业课教学中科学思维与创新思维能力的培养
4.国际化、工业化软件工程硕士培养体系实践
5.专业学位硕士研究生评教指标的构建及应用——以中国科学院研究生院软件工程硕士为例
6.目标驱动的软件工程硕士培养模式探索
7.软件工程硕士招生问题探讨
8.软件工程硕士实践能力培养探索与实践
9.创新的全日制软件工程硕士培养探索之路
10.软件工程硕士国际化培养模式的探索与实践
11.以知识体系为核心构建软件工程硕士教学与实践体系
12.软件学院软件工程硕士开放式教学体系研究
13.软件工程硕士“现代物流”课程的创新设计与教学实践
14.党建工作在软件工程硕士研究生培养中的作用——以浙江大学软件学院为例
15.软件工程硕士“算法与算法复杂性分析”的教学思考与实践
16.软件工程硕士“数字媒体信息安全”课程的教学探索
17.软件工程硕士论文质量评价模型及相关问题研究
18.教育技术学之教育软件工程硕士点建设研究
19.省属高校软件工程全日制工程硕士培养模式探索与研究
20.软件工程领域工程硕士培养模式与管理体系研究
21.软件工程硕士研究生专业学位教育——东北大学专业学位研究生教育的回顾与思考
22.软件工程专业工程硕士数字图像处理课程建设
23.探索软件工程领域专业硕士培养模式
24.校企合作软件工程硕士专业学位人才培养
25.服务地方产业发展需求的软件工程硕士培养模式研究
26.探索软件工程硕士的课程教学
27.软件工程硕士产学研合作培养模式的探索
28.软件工程硕士生实践能力培养探析
29.软件工程硕士教学质量评价指标体系建立的必要性
30.从企业用人需求看软件工程硕士培养
31.宁波大学科技学院将与同济大学联合培养软件工程硕士
32.软件工程硕士研究生培养方案改革
33.Sun中国携手南京大学全力培养企业架构设计方向软件工程硕士(MSE)
34.如何撰写工程报告类论文
35.2012级北京邮电大学软件工程硕士班在哈开课
36.基于软件工程专业硕士的三级思想教育模式探索与实践
37.哈工大软件学院“MSE+X”软件工程硕士跨国联合培养项目(英文)
38.软件质量管理与测试专业课程体系构建——基于北航软件学院工程硕士课程培养体系分析
39.国际软件工程专业硕士研究生教程初探
40.关于软件工程专业硕士研究生培养的新思考
41.软件工程专业学位硕士培养质量体系改革
42.软件工程硕士研究生知识结构模型研究
43.软件工程领域专业硕士培养模式初探
44.国家示范性软件学院工程硕士培养导师组模式探析
45.软件工程全日制专业硕士课程体系改革探讨
46.硕士阶段软件工程课程教学探索
47.面向卓越软件工程人才培养的实践教学体系研究
48.软件工程的研究与应用
49.计算机软件工程管理方案初探
50.谈软件工程中软件测试的重要性及方法
51.关注点分离在计算思维和软件工程中的方法论意义
52.软件工程在软件开发过程中的应用研究
53.软件工程专业“2+1+1”校企联合人才培养模式的探索与实践
54.软件工程学科的特征及其课程体系设计原则
55.影响软件工程学科建设的几个因素
56.软件工程思想在计算机语言类课程教学中的贯彻实施
57.面向Agent软件工程综述
58.多样化软件工程人才培养模式研究
59.渐进性阶梯式工程实践教学体系的构造
60.软件工程专业应用型人才培养模式的探索与实践
61.浅析软件工程中的数据流图的画法
62.软件工程学生团队构建的案例分析
63.软件工程专业课程体系研究
64.软件工程增设为一级学科后的机遇与挑战
65.软件工程国家精品课程建设的思考与实践
66.软件工程专业课程体系研究与实践
67.探析软件工程的开发和应用
68.基于能力培养的软件工程专业实践教学研究与探讨
69.关于“软件工程”课程体系的基本架构及课程系列设置的探讨
70.软件工程专业课程体系研究与实践
71.软件工程专业在线课程建设思考
72.基于项目驱动模式下的“软件工程”教学改革
73.UML结合软件工程教学改革探讨
74.基于校企合作的应用型软件工程人才培养模式研究
75.软件工程发展历程及其发展趋势探讨
76.CMM在软件工程中的应用研究及实现
77.基于案例的软件工程课程教学研究
78.软件工程学科何以独特——形式化方法的双重路径
79.软件工程课程教学改革的研究
80.软件工程课程案例教学方法的研究
81.CDIO与软件工程人才培养模式改革
82.应用型软件工程人才培养产学研一体化实训体系建设探索——以梧州学院软件工程人才培养为例
83.国外软件工程教学法初探
84.以社会需求为导向的软件工程专业课程体系改革的研究
85.“软件工程”课程启发式教学的研究与实践
86.面向对象软件开发及软件工程方法学实践与探讨
87.软件工程实践教学平台的设计与实现
88.软件工程专业本科毕业设计过程管理
89.基于项目实践的软件工程本科课程教学模式探讨
90.基于软件工程的系统设计与开发
91.案例驱动与项目导向结合的软件工程课程教学模式
92.软件工程人才团队协作能力培养的研究与实践
93.软件工程与UML关系概述
94.应用型本科高校教师MOOC教学现状分析——以《软件工程》课程为例
95.软件工程案例教学法探讨
96.软件工程专业实践能力培养体系设计探讨
97.软件工程专业应用型人才培养模式的探索与实践
98.传统软件工程与面向对象、构件软件工程的比较分析
99.软件工程专业“项目驱动”实验教学模式研究
100.面向对象技术与软件工程
101.软件工程课程模块化教学改革的实践与思考
102.软件工程经济的研究及发展趋势
103.面向应用型人才培养的软件工程课程教学改革
104.软件工程敏捷方法的实验框架及实施
105.案例教学法在软件工程教学中的应用
106.基于WORKSHOP的“软件工程”教学模式研究
107.“软件工程”课程教学改革的探讨
108.面向卓越工程师的软件工程专业课程体系建设——以安徽大学为例
109.创新实践教学体系,培养软件工程应用型人才
110.“项目驱动+案例教学”模式在软件工程教学中的应用
111.浅析需求分析在软件工程中的作用
112.软件工程实践教学方法探索
113.教育软件工程框架的构建
114.浅谈软件工程的发展
115.软件工程专业课程体系优化方法研究与实践
116.软件工程专业课程体系与课程群研究
117.软件工程的团队项目驱动教学模式探讨
118.软件工程与教育软件开发的思考
119.基于软件开发团队的软件工程教学实践研究
120.校企合作共建软件工程专业实践教学体系
121.软件工程中主要开发模型的比较分析
122.软件工程专业和计算机软件与理论专业的内涵与反思
123.软件工程专业人才培养模式探析