绪论:写作既是个人情感的抒发,也是对学术真理的探索,欢迎阅读由发表云整理的11篇软件工程论文范文,希望它们能为您的写作提供参考和启发。
二、校企合作存在的问题
(一)学校与企业之间交流不畅通
高校与企业虽然已经开始合作,但是校企之间缺少信息交流,学校很难及时了解市场的变化情况,企业也较难了解学校科研方面的新成果。在人才培养上,学校对当下市场需要什么样的人才,这些人才需要具备怎样的素质和技能都知之甚少,学校与企业之间没有真正建立起以社会发展为主导的适应社会发展的人才培养机制;在课程设置上,学校还是侧重于理论知识的学习,应用型课程开设的少,忽视实践技能的培养,偏离校企合作的最终目的。
(二)校企合作没有真正做到服务地方经济和特色产业
校企合作是以服务地方经济和促进社会发展为目的的,但是在实际操作中没有做到,使得校企合作动力不足,没有建立互惠互助的合作模式,因而合作积极性不高。从学校的角度来看,学校科研大多是以自己的爱好兴趣进行,没有结合地方企业的发展情况,脱离实际。从企业方面来看,面对激烈的竞争市场,学校的科研成果虽有一定的商业价值,但是企业重视眼前的利益,经营周期短,不愿大学生来企业实习,对引进的新技术缺乏科技内在助力。
(三)校企合作的管理体制及政策法规不健全
校企合作模式中,虽说学校与企业之间在某些层面中达成了合作的关系,但是在其管理体系上尚没有一套统一的合作机制,导致管理层面失效或缺失现象出现。另外,校企合作关系中,两者各自隶属于不同的管理部门,各自有其相应的管理体系,在管理中往往会因为利益关系而出现一些问题,影响校企合作的效果。所以,校企合作模式办学,亟待一套完善统一的管理体制以及政策法规来规范和协调双方之间的关系,以促进校企合作的共赢开展。
(四)校企双方利益分配机制不完善
校企合作双方是隶属于不同机构的部门,对合作所得利益的分配存在差异,如科研成果转让过程中的价格问题、合作共建研发实体的各方投资比例与利益分配问题、成果的归属权问题以及知识产权问题、相互兼职待遇问题等,这些问题的产生主要在于缺乏利益共享、风险共担的机制和制度。
三、软件专业综合改革措施
(一)采用“3+1”办学模式,优化人才培养方案
现在企业发展需要的技术人才不仅要有扎实的理论基础,还应该有较强的实际动手能力和工程实践能力。在传统教学中,老师和学生们闭门造车,偏重理论知识。对于这一情况,学校采用“3+1”模式,即3年在学校学习理论知识,通过校内学习使学生掌握软件工程专业理论知识和基础技能,提高学生的认知能力,熟悉各种专业软件的操作技能。1年在企业进行实习和顶岗见习,培养学生的实际操作能力及运用所学的知识参与真正的软件开发项目和解决遇到的实际问题,还可以利用这难得的机会了解一些软件的业务工作状况和开发软件所用的工具等,提升学生的职业素养和团队意识,增强学生的沟通能力,以备成为一名合格的员工。人才培养方案是以人才培养目标为指导,以现有的资源进行合理教学的一整套教学培养措施和方法。制定优良的教学方案应根据社会对人才的需要情况来设计,制定适应社会发展的培养方案,培养具有创新能力和团队合作能力的优秀软件工程人才。在学生进入企业实习这一环节,学校与企业需要建立完善的安全教育机制和顶岗实习制度,由于学生刚进企业,对企业的环境还不能适应,应定期组织企业、学生、老师进行交流,帮助学生解决困难。在教育方面,实现资源共享,老师进企业学习,工程师进教室授课,老师与工程师合作开发软件项目等。通过共建、共享校企双方的优质师资队伍,不但能有效地提升课堂教学质量,还能增加学生实践动手的机会,让理论知识与实践能够充分的结合,适合学校人才培养的发展规律。
我国高等教育长期存在重理论、轻实践的问题,因此教育部多次强调并明确指出要大力加强实践教学,建立和完善校内外实习基地,高度重视毕业实习,提高毕业设计、毕业论文的质量。软件工程专业是一门理论与实践联系非常紧密的学科,若按照传统重视理论的培养模式,毕业生则难以满足当前社会用人单位的需求[3]。对于相对新兴的软件工程机电一体化方向专业,其专业知识结构及培养目标决定学生面临的毕业实习与设计问题更复杂,目前存在的主要问题表现在如下几方面。(1)就业与选题的矛盾。基于该类专业的培养目标,毕业生目前就业意向主要有三:一是在软件产业从事编码测试、系统分析设计或具有软件领域知识的复合型技术服务、销售和管理(软件方向);二是在机械电子工程应用背景专业领域从事软件开发及机械研究、产品设计、制造、管理等工作(工程应用方向);三是考研、考公务员和自主创业等(考研方向)。因就业方向的多元化、毕业实习设计老师(包括软件企业导师)的专业领域和人数限制、实习条件的限制等多重原因,学生难免产生选题与就业意向不相符的矛盾。(2)毕业实习设计与考研、公务员招考时间安排上的冲突。毕业实习设计一般都安排在第4学年的第7学期、第8学期,而这期间,每年一度的全国研究生招生考试和公务员的国考、省考也同时举行,这就导致“考研方向”的学生在备考和完成学业间的矛盾,如不进行相应调整,势必影响毕业实践环节的教学质量。(3)软件方向与专业方向的不协调因素。软件方向学生一般采用3+1的培养模式,也就是说,第4学年大多在软件企业完成基于项目驱动的毕业实习和毕业设计;而工程应用方向和考研方向往往还有几门课程需要在校学习,在时间和内容安排上往往存在冲突。(4)毕业实习与毕业设计不能有机对接。毕业实习是毕业设计的重要准备阶段,毕业实习要结合毕业设计课题,到生产第一线进行专业实践与社会实践,收集与毕业设计有关的信息和资料,毕业实习的内容和质量对毕业设计的质量有直接的影响。毕业设计要将所学基础知识、专业理论与毕业实习的实践相结合,注重分析问题、解决问题能力的培养,它能在一定程度上检验毕业实习的效果[4]。软件工程培养实用型、复合型人才的特点使其对毕业实习与设计的衔接要求更高,而且该类专业多元的就业意向及其他复合因素使得学生的实习与设计内容往往不能有机衔接。目前软件工程专业毕业实习设计的教学工作中,面对学生就业自主化的严峻形势,存在着毕业实习与毕业设计不能有效衔接、教师对两者核心含义把握不好、设计(论文)选题及内容与经济社会对人才需求脱离以及忽视对学生的创造能力意识培养和训练等影响毕业设计论文质量的问题,因此进行全新的教学改革已经迫在眉睫。
2毕业实习设计指导需考虑的因素
1)学习动机。自我效能感、学习动机和学业成就三者之间存在相关关系,且自我效能感与学业成就、学习动机和学业成就之间均呈显著正相关[5]。自我效能感是人们对自身能否利用所拥有的技能完成某项工作行为的自信程度;学习动机是推动学生进行学习活动的内在动因,是激励、指引、维持、调节学生学习的强大动力[6];学业成就指经过学习和训练后所获得学业方面的知识和技能,是学生学习状况和水平的集中体现。高校毕业班级学生处于即将告别学生时代而走向社会的特殊阶段,毕业、考研和就业等诸多问题以及社会价值日趋多元和竞争压力日益加剧的强烈冲击,对其学习和心理产生了重大影响[7]。为增强学生的学习动机,从选题入手,贯穿毕业实习设计各环节,融学生兴趣爱好、就业意向与学生毕业实习设计于一体,激发学生的内在动力,是取得好的设计质量的关键因素之一。2)项目驱动。有效地整合指导教师的各类纵向、横向在研项目并将其进行深入的挖掘和提炼,根据毕业实践环节具体要求细分软件工程项目,将其引入到学生毕业实习设计中,采用以项目驱动为主体的人才培养模式,优化管理体制与实验室运行机制,探索一种新的实践教学模式,以期实现实践教学过程可控化、项目实施团队化、项目资源共享化的目标,培养具有扎实的工程实践能力、较强的技术创新能力、良好的团队协作能力和可持续发展能力的人才[3]。3)导师制。采用指导教师全程负责制是确保后续创新模式实现的关键。导师可以是从学校选定的各方向专业教师,也可以是从企业选出的工程技术人员,还可以是两者的结合(双导师制)。导师既要完成毕业实习与毕业设计的组织工作,又要完成这两个环节连贯且相互渗透的业务指导工作。为确保这种教学模式有条不紊地实施,指导教师应认真履行相应的职责。首先,根据毕业实纲和设计大纲的要求,与企业协调好学生的毕业实习设计课题和企业的生产技术工作需要之间的关系,落实毕业实习内容及合适的毕业设计课题;其次,要对学生毕业课题进行方案论证,及时提供指导和质量监督,确保教学任务的完成[4]。
3毕业实习设计指导创新模式的设计
结合软件工程机电一体化方向的专业特色,在现有基础上设计的毕业实习设计创新模式总体框架如图1所示,其主要内容包括如下几方面。1)以学生为本,模块化组织。基于学生的学习动机,根据学生某方面的专业特长和未来的发展取向,该模式分为3个大模块:以软件设计、软件测试、软件维护和软件项目管理等为目标的软件模块(软件方向);立志于进一步深造的考研、公务员考试等模块(考研方向);面向工程的工程应用模块(工程应用方向)。大模块下再设子模块,如以工程应用为背景的模块又分为UG、PRO/E等大型软件的工程应用模块;以单片机、PLC等程序开发为主的工控模块;CAD、UG、PRO/E等面向应用软件的二次开发模块。学生根据学业基础、就业意向及学习兴趣自主选择。2)毕业实习设计一体化。毕业实习与毕业设计是保证教学质量的重要阶段,二者的关系越来越密切,将二者人为分割的教学模式已不太适应教学的需要,必须建立二者紧密结合的教学新模式。具体来说,软件模块将毕业实习和毕业设计两个阶段合并为一个阶段,形成一个相对较长的时间整体,与大型软件公司合作,安排在第4学年,这也是软件工程专业目前比较流行的模式;工程应用模块中学生可以根据毕业设计课题有针对性地开展毕业实习工作,实习、设计由同一导师指导,采取集中实习和反复调研的形式,实习围绕设计的需要展开;考研模块则将实习和设计的时间提前,第6学期即由指导老师提前介入,预先安排相应工作,在充分保证设计质量的前提下,为考研创造条件。至于软件方向与背景专业方向课程安排上的冲突,软件学院采取课程置换与学分互认方式,拓宽学生的专业课程知识,达到多元方向的均衡。3)导师制和项目驱动贯穿始终。采取导师负责制,将部分学生(考研方向)的毕业设计提前到第6学期开始,到第8学期结束,历时1年半时间。在导师的指导与安排下,学生开展的工作包括文献检索,熟悉设备,仪器校准,实验计划,实验开展,项目调研、开展、改进和总结各环节。基于项目驱动,每一学生的实习设计选题均为某方向科研子项或工程子项,学生通过一个完整的项目链,在熟悉科学研究方法、步骤和科研组织等环节基础上,全面培养动手能力、独立工作能力和创造性的思维能力。4)建立全程质量监控体系。“全程”指从毕业设计选题、毕业实习指导、教师下任务书、学生做开题报告、方案设计、实验、中期检查、撰写论文到答辩评分、总结归档等质量形成的全过程;以制订计划、明确目标执行计划检查、反馈处理、纠偏制订新的计划、目标为质量监控途径。针对毕业实习、毕业设计的各个环节,制订详细可行的规范,把握各阶段的时间节点和考核标准,目前要求教研室审核的关键节点包括选题、任务书、开题、中期检查、综合评价、答辩等。
4工程实践环境的构建
要保证上述模式的良好运行,必须有一个稳定而可行的工程实践环境。我们一直注重软件工程专业实践应用型人才培养,不断加强与IT等用人企业的合作。从软件工程机电一体化方向专业开办以来,江西理工大学软件学院先后在中兴软件、中天电子、江西微软、上海杰普等多家大型软件公司和IT培训机构建有校外实习基地,在江西铜业公司、中金岭南股份公司、恒天动力有限公司等建有校外专业背景方向实习基地。打造相对稳定、整体素质较高的导师队伍是实现该创新模式的有效保障,学院应考虑:①从实习基地遴选指导教师;②选派软件方向教师到合作基地工程实训;③选派专业方向教师到国内知名院校访学。对毕业实习设计各环节,软件学院制定有详细的《毕业实习设计规范》,系部成立“软件工程毕业设计领导小组”。教研室针对该内容进行深入调研与问题分析,在教师中开展动员,提前落实并布置工作;在学生中宣传动员,使学生在思想上有准备,重视毕业实习、毕业设计;在毕业设计过程中,强调过程质量控制和管理,及时跟踪控制,及时发现问题、解决问题。
1.1代码的复用代码的复用可以说是软件复用中最简单的部分,这种软件复用方式在面向结构化和面向对象的软件设计方法中均有所体现:面向结构化的软件设计方式中,我们将软件重复的部分抽象为一个函数,通过对函数传递不同的参数,从而实现不同模块对函数的调用;在面向对象的软件设计方法中,我们可以依靠类的继承关系,使得子类在继承的过程中能够重复使用基类的一些代码、成员变量等等,这些都是软件复用中代码复用的具体例子。
1.2设计的复用代码的复用仅仅是软件复用中最简单的层次,与其相比,设计的复用能够实现软件系统模块级别的复用,显得更为强大。设计的复用主要体现在以下三个方面:(1)第一,从现有的系统中提取一些可以复用的部分,然后重写运用到新系统当中。(2)第二,将对目前系统的设计重新运用到其他的系统中,从而实现整个软件系统级别设计的复用。(3)第三,实现独立于一些系统的软件构件,这些软件构件的复用级别比代码复用的粒度更大,这种构件的抽象级别往往更高,从而使得构件能够被广泛运用到多个系统当中,提高构件的复用次数。2.3分析的复用与软件设计的复用不同,软件分析的复用运用于软件的概要设计阶段,与软件的具体实现关联比较少,因此实现软件复用的几率更加大。软件的分析复用也可以有三种不同的方式:第一,抽象出现有软件系统的重复分析部分,应用于其他软件系统的分析上;第二,将分析的方法运用到不同的软硬件平台上,从而能够产生不同的设计;第三,可以实现一些分析的构件,从而实现软件分析阶段的软件复用。
1.4测试信息的复用测试过程也属于软件工程的重要模块,因此在软件的测试部分也可以应用软件复用的方法,软件测试信息的复用主要包括两方面的内容:(1)第一,测试用例的复用,就是将一个系统的软件测试用例,提取一些通用的部分运用到另一个软件系统中,从而实现软件测试用例的复用。(2)第二,测试过程信息的复用,软件测试可以通过软件自动化测试工具记录一些相关的测试信息,这些测试信息可以为其他系统的测试提供参考。这两种方式都可以实现软件测试信息的复用。
2实现软件复用的相关技术
“C”是很多高校普遍开设的一门课程,大部分学校教学方法大同小异:课堂讲授+上机实验,教学目标也集中于让学生掌握C的各种重难点,比如数组、函数、指针等。其实不同专业人才培养目标中本课程的作用差异较大,采用模式化的教学方法和雷同的教学目标是不合理的。此外很多教学方法忽略了编程思想锻炼,局限于讲授语言本身,变成了教“语言”而不是“程序设计”。
1.2学生动手应用能力较弱
多年来,大部分学生学习完本课程后,仍难以针对一个简单应用编制程序,此问题十分普遍。一般C语言教材,都是先介绍程序设计基础知识,然后介绍各种数据类型和输入输出等语句,由于内容枯燥,因此学生逐渐丧失了学习兴趣,甚至不愿上机,浪费了宝贵的实验机会。此外各种例题、习题也是数学性较强或者演示性质较强,比如牛顿迭代、水仙花数、10整数排序等,这些内容和实际应用关系相去甚远。
1.3未体现卓越工程师培养特色
如前所述,卓越工程师培养的不仅是一个程序员,更重要的是培养学生具有扎实的理论基础和创新能力,为进一步从事设计、架构规划打基础。由于课时所限,计算机专业的一些理论课程如自动机、组合数学等一般未纳入软件工程的培养方案,但对于卓越工程师而言,初步学习这些内容是必要的。此时如果在相关课程中融合部分上述知识将大有益处。
1.4没有为后续课程打下良好基础
一方面由于例题和习题所限,在学习“C语言”时学生未能充分理解软件工程的一些重要思想如模块化等,导致编程时思路混乱、僵硬。另外由于课时所限,结构、文件等章节经常被略讲甚至不讲,导致学生在后续课程学习时基础薄弱。
2教学改革措施
针对上述问题,结合软件工程卓越工程师培养目标,在近年来的教学实践中我们采取了如下教学改革措施:
2.1实验室授课
对于程序设计课程,学生在课堂听讲时,是一种静态的信息接收过程。当讲到各种知识点时,如果能够即时编程验证,将成倍地提高学生对信息的吸收消化效果。基于此,近年来我们努力实现了全程在实验室机房授课,学生可以实时动手分析,教师也可以从讲台主机远程指导、控制学生设备,效果良好。
2.2采用国外教材及引入软件工程思想
“C”的国内教材大都偏向初学者,存在细节被过度简化的问题,不利于实现培养面向实践的工程师的目标。为此我们采用国外知名教材进行授课。该教材的最大特色是面向应用,对C语言的应用特征、程序设计的特色描述详尽,例题及习题应用性很强,并且可结合软件工程的基本思想进行讲解,例如商品条码校验位计算、扑克牌发放及手牌比较、零件数据管理等。学生学习后,在后续应用性课程中能够很快上手并进行拓展。
2.3编程思维训练
我院“C”课程开设在大一上期,其目的是引导学生进入编程领域。因此在教学时,我们避免拘泥于C本身的语法细节,而是淡化其语言色彩,偏重讲述如何利用程序语言来处理问题。在此列举一例:很多C课程都会讲授如何编程打印一个由星号组成的菱形。某些教材上给出的解法是将菱形分为上半部和下半部分,用两个循环来打印,这种方法对学生思维训练无太大帮助。笔者在授课时,采用了如下思路:将菱形放入一个二维坐标系(原点在左上角),画出菱形所在区域边界,由此写出区域的解析表达式|x-3|+|y+3|≤3,从而得到程序循环中的核心判断语句.
2.4有机引入计算机理论课程知识
如前所述,软件工程专业一般不开设有限状态机等理论课程,但是作为卓越工程师,掌握这些知识是必要的。为此我们在课程中有意识地引入了这方面的知识,给学生提供初步认知,为有意自学者提供基础。例如,一直以来学生在学习“计算一个句子中单词个数”这一经典程序时,总是不明所以。为此我们另辟蹊径,采用如下方法讲授。首先抽取问题核心:把句子看成是由字母序列和空格序列(单词间可能有多个空格)交替组成的一个字符串。程序处理的方式,是对句子中的所有字符进行逐一扫描,然后在这个过程中判定单词的出现,如出现则把计数变量加1。其次将问题抽象化:用有限状态机来描述上述过程。其中“1”代表当前扫描字符“位于字母串中”这一状态,“0”代表当前扫描字符“位于空格串中”这一状态。当“扫描到字母”事件或者“扫描到空格”事件发生时,扫描器的状会被改变,如图箭头所示。我们关心的是当处于状态0时,“扫描到字母”事件发生的情况。此时意味着之前扫描到的是空格,现在是字母,即到了一个单词起始处,故此时计数变量加1。然后引导学生将问题转化为表格描述,(第一行表示事件,第一列表示状态,中间单元格表示某事件发生后,应进行的状态转换及其他操作),进一步地可以精炼为(b)。由此可得到示流程图。在此基础上学生很容易写出程序。这种教学法十分透彻,为学生今后自学相关知识打开了一扇大门。
2.5作业批改及考试规范化
为了避免传统教学中学生作业及考试批改过程低效,分析困难,且难以发现问题的缺陷的情况,我们开发了一套C语言作业及考试批改系统,该系统通过代码分析及用例执行等方式,客观地对学生程序进行判定,一方面提高了教学效率,另一方面更重要的是促使学生养成良好的编程习惯,改变了以往在纸面上写代码的随意性,从而培养起作为一个软件工程卓越工程师必备的素质。
2软件工程专业课程体系理论设计
以行业、企业实际对人才需求为引导,软件工程专业毕业生真实就业情况调查为依托,地方高校软件工程专业课程一线教师众多教学研究成果为参考,专业教师在企业挂职学习经验体会为借鉴,围绕地方高校软件工程专业课程教学体系存在事实问题,来对地方本科院校软件工程课程体系建设进行设计建设。设计建议如下:
2.1学科建设
以专业相关的行业、企业人才的实际需求和当前使用的主流开发工具或技术为依托来不断调整专业架构,优化专业人才培养方案,完善人才培养目标,对专业进行合理定位,系统性调整教学方式方法,从而实现以行业、企业对人才的需求来引导地方本科院校软件工程专业的学科建设。
2.2校企办学
学科建设以输出满足行业、企业需求合格的应用型人才为目标,通过校企联合办学,对学生进行定向培养、训练,专业课程体系嵌入资格认证课程模块,实训课程以企业开发项目方式贯穿培养环节以达到提高专业人才的实际动手能力。
2.3师资建设
采取教师企业挂职锻炼参与企业项目研究开发,共同承接开发项目等方式锻炼提高师资队伍实战能力。教师在企业实战经历和相关经验成果带入到日常的教学环节,不仅能促进专业教师学术、科研能力提升,还能够最大程度丰富、提高专业学科建设[2]。
3三层结构课程体系建设
软件工程专业课程体系建设以工程教育理念为指导,项目实战为背景,社会需求为导向,提高学生专业素养、理论知识体系以及实践能力为宗旨。学生完整地专业培养环节结束后具有程序设计,系统分析,软件设计、开发,项目管理,网络和移动通信终端应用开发能力。课程体系模式结构如图1所示。
3.1基础理论由公共基础课程和专业基础课程构成:①公共基础课程主要涵括地方高校各现行必修公共课程,②专业基础课程是专业课程坚实的理论基础,专业必修前导课程,是对软件工程专业基本“计算”概念理解、掌握,问题计算求解能力和构建中小规模软件系统综合能力的初步培养。
3.2专业理论以市场对人才需求为导向、行业最新前沿技术为引领、专业骨干课程为核心、专业素质全面拓展和综合素养整体提高为目标来对专业主干课程进行建设[3],主要包括以下几类课程:
3.2.1面向行业认知能力培养课程主要包括对行业、企业认知学习以及计算机专业知识学习等专业认知方面课程。一般包括行业相关法律、法规,从业道德规范,行为准则,经营管理常规模式,软件项目开发流程等认知类课程。
3.2.2计算机编程与算法设计能力课程算法设计类课程主要包含离散数学、数据结构、算法分析以及数据结构课程设计等方面的课程;编程课程主要包含C语言程序设计、面向对象程序设计等传统程序设计语言课,还包括当下企业应用最为广泛的,最流行的技术前沿课程。
3.2.3软件工程专业系统分析课程系统分析能力课程主要包括操作系统、计算机网络,软件工程、数据库原理等系统类课程。
3.2.4系统实现与集成能力课程系统实现与集成能力方面课程主要包括网络编程、移动互联开发编程、编译技术、软件开发以及软件测试等课程[4]。
3.3实践以校企联合培养为手段,一至两学年时长为周期,贴近企业实际需求为指导,综合技能全面提高为目的来对专业学生进行实践能力培养,方式如下:
3.3.1校企共同建设实训课程以项目介入为主线,企业实际效益项目和高校产学研项目为实际授课主体。引进企业优秀项目人才或具有企业项目实战经验的教师来对专业人才展开课程实训,全面提高学生专业技能水平,综合素养。校企共同培养模式不但能够提高学生工程实践能力,知识转化生产实际速度,同时反向激发学生探究、学习知识的热情,最终提高就业竞争力[5]。
3.3.2合作企业岗位实训针对毕业学生和部分专业老师做岗位综合实训:①学生岗位实训:让学生真实参与企业项目实战,充分消化吸收前期所学理论和技能知识,进一步提升学生综合能力,为就业夯实基础。②老师岗位实训:专业老师参与企业项目研发,并将企业项目开发经验和技术进行梳理总结、编纂成册,运用到实际日常教学环节,促进教学质量提高,有利于缩短理论转化实际成果周期。
3.3.3校企合作运用项目方式指导学生做毕业论文(设计)毕业论文(设计)是对学生的专业知识掌握程度与提升高度的一次全面的考核,同时也是培养学生综合运用所学知识,独立地分析问题和解决问题的能力的一次全面的实训。但是传统的教育模式导致大多地方院校工科专业学生毕业论文流于形式,与实际脱节。通过与企业合作运用项目方式指导学生做毕业论文(设计)弱化学生对毕业论文(设计)的抵触情绪,可以进一步让学生了解行业企业实际运作规范及最新技术,进一步加强对学生实践和技能能力的培养,为毕业后从容就业夯实基础。
2研究认知规律与学生心理,强调案例化教学和探索式学习
《软件工程》的知识是根据很多软件开发过程中提炼出来的,对于缺乏软件开发经验的学生来说只是简单的讲授课本上的知识会让学生理解不了。所以,首先收集软件开发案例,然后将好的案例放到平时的理论课程中,学生通过了解软件开发过程掌握软件工程的思想和方法。教学过程应该注重鼓励学生探索学习知识,启发学生自己想办法查阅资料,最好能够和软件企业的开发人员聊天接触开发知识,体会一个工程师的工作。老师上课的时候喜欢“一言谈”,这样教学不受学生喜爱,如果增加课堂上的互动,可以使得教室内气氛活跃、宽松,积极启发学生多问问问题,针对问的比较多的问题进行专项训练和专题报告。介绍学生了解网络课程和网络中的教学资源,激发学生学习兴趣,让学生自主学习。利用网络聊天工具,创造机会和学生多交流,引导他们思考讨论软件工程的问题,这样的话,老师由知识的灌输者成为学习的引导者,学生学习兴趣会提高,学习效果也得到了提升。
3根据课程特点结合实际开发因素进行实践教学
实践教学是本课程中一个重要的组成部分,它要求学生以开发团队(一个团队通常由3~5人组成)的方式开发一个具有一定规模的软件系统,侧重培养学生发现问题、独立分析问题和解决问题的能力以及团队合作精神,使学生初步体会到一个软件开发项目全过程。课程实验项目的软件开发过程分成实验准备、分析设计、编程测试和软件交付等部分,具体要求如下:(1)准备实验:实训课堂中学生首先接触到一个软件描述,内容很简单。学生自发的联系队友组成一个团队,并且制定开发计划。(2)分析设计:开发团队根据软件描述实现需求分析,最终形成需求分析规格说明。软件需求规格说明完成后,设计软件系统的总体框架,分模块完成,每个团队都将得到开发任务,最好能够实现竞争性开发。(3)编程测试:得到任务的团队,实现项目开发包括文档,测试和调试代码。(4)软件交付:团队集成的完整系统交给老师验收。
4研究软件工程环境
提供一个软件开发项目对学生来说是不够的,他们还需要一个符合软件工程的开发环境,在这个环境里面体会软件工程的思想和方法,怎样这样一个学生喜欢效果好的软件开发工程环境呢?通过研究软件工程应该具备的基本要素,软件工程工具的使用引入课堂中来,特别是课程实验项目中,学生可以使用管理工具,他们会发现各种制品控制在有序管理之下,使用他们建模和测试进行软件分析、设计和测试效果要比没用他们好很多。老师认真编写规范的实验指导书,包括开发过程模型、系列文档模板、软件编码规范、段评审标准等,使实验和实践环节规范有序,改变了学生以往突出个人技巧的杂乱过程。
一、软件工程实践课程现状分析
软件工程实践课是一门实践性非常强的学科,但目前实践教学体系与软件产业需求以及专业培养目标十分不协调,实践课程教学缺乏理论指导,产学脱节,所学内容大都比较陈旧落后;本学科教师掌握的学科内理论知识较多,实践操作能力和教学经验较少,导致软件工程专业学生常常是纸上谈兵,创新能力欠缺,实践操作能力差,学科发展后劲不足。
二、优化软件工程实践课程的教学模式
软件工程实践课程的教学过程当中,加强工程实践教学环节,提高解决实际问题的能力是培养软件人才的主要目标。从以下几个方面着手优化软件工程实践课程的教学模式。
1、注重教学理论与教学实践相结合,采取多元化教学
在理论教学中,采取多元化教学方式,让学生积极参与教学过程,激发学生学习兴趣。例如,可采用多媒体课件+Mooc混合模式进行教学,强化课程相关理论,在教学同时进行Mooc制作,通过微信平台等共享,使学生能够及时对课程内容复习。同时开展丰富的教学实验和社会实践,在课堂教学当中,缩减理论教学时长,增加教学实践,锻炼学生实践操作能力,
2、明确软件工程技术发展方向,大力开展实践案例教学
研究软件工程技术发展方向,对软件工程人才的培养意义重大。有时候,软件工程将相关工程中引入管理工程学和系统工程学以促进软件工程学的发展。软件工程在技术上有如下基本要求:更好的适应操作环境,丰富的拓展接口,后期维护的方便性;软件工程又具有软件开发语言较丰富,软件开发具有开放性等特点。软件工程主要的发展方向是:可视化编程,web应用程序设计,數据库管理,软件测试,图形图像制作,多媒体制作等。因此,对软件开发者提出了更高的要求,就需要在软件工程实践课程的教学优化过程中,着眼于全球化、模块化、开放化加大教学优化力度,大力开展软件工程实践案例教学。多多设计贴近学生生活的工程化案例,且软件生命周期的各个阶段都应在工程化案例教学中得以体现。在设计软件工程教学案例时,难度适中,模块数量不易过多。
软件工程专业技能训练是实践教学体系的着力点。在典型案例的讲解过程中,引导学生能够学会结合企业需求,兼顾多方面因素,使开发的软件具有良好的兼容性,更加适众,及时对软件做好调试,更好的提高软件工作效率;满足客户的个性化需求,在软件内留有功能扩展接口等。在实践案例教学过程中,培养学生的合作意识和团队意识,完成案例分析到职场应用的有效过渡。
3、提高教师专业素养,构建新型软件工程人才培养模式
2针对本专业硬件实验教学模式的探索
西安交通大学软件学院结合专业特点,提出紧耦合层进式的硬件实验教学体系,对实验教学做出了一些有益的尝试和探索。
2.1构建新的硬件实验教学体系,开展层次化的实验教学
软件工程专业和传统的计算机专业以培养计算机软硬件设计与开发的研发人员的培养目标有所不同,所以在硬件课程以及硬件实验课程体系上,两个专业的定位应有所区别。西安交大软件学院根据培养目标的要求,本着硬件为软件所用的宗旨,开设的硬件课程有数字逻辑与系统设计、汇编与接口技术、计算机组织与结构、嵌入式系统与软件开发等。经过几年的教学改革实践,我们认为实验教学不能完全依附于课堂教学,而应该在紧密联系课堂教学的前提下,有目的地开设独立的实验课,才能更好地配合理论课教学,充分发挥实验教学培养学生独立工作能力的优势。在实践过程中,我们恪守“掌握基础是重点、研究创新是升华”理念。首先必须保证绝大多数人能接受基本实验技能的训练,不盲目跟风式开展开放性实验。实践证明初始阶段就进行开放性实验往往会让学习能力不强的学生不知从何下手,失去了研究实验的兴趣,从而背离了进行实验教学的初衷。我们的思路是稳扎稳打,逐步推进。我们勾画了以数字逻辑实验为基础,以嵌入式及SOPC(SystemonaProgrammableChip,可编程片上系统)实验为终结,包含时序组合逻辑实验、计算机部件实验以及整机实验为一体的计算机硬件实验教学课程群。要求本科生从大学二年级到四年级硬件实验内容不断线、衔接连贯,并按学生兴趣和能力有层次的提高;强调各门课程相互联系紧密结合,分层次培养学生的独立组织硬件实验的能力、软硬件综合调试能力和综合设计能力[4]。在此基础上,我们提出了一种紧耦合层进式的硬件实验教学体系,如图1所示。在这种紧耦合层进式的实验教学体系下,根据教学的不同要求,将实验划分为3个不同层次,即基础性实验、综合设计实验、研究创新实验。其中,基础性实验主要指相关硬件课程的课内实验,通常为8~16学时的必修性实验课,通过这类实验使学生初步掌握本门课程中基本实验技能以及基本模块的实现。综合设计实验主要是面向所有本科生开设的选修性实验,一般为32学时,通过这些实验要求学生整合各个基本模块,进而能设计并实现简单功能的电路或系统。按照学院学分设置及学分要求,基本上每个学生都会选择2~3门硬件实验课程,这样学生都能对硬件底层具有一定的了解,对于普通的高级软件应用开发基本够用。最高层次的研究创新实验,我们安排为开放性实验,针对少数有余力且感兴趣的学生,要求其能够独立地设计一些较为复杂且具有应用背景的课题,旨在对专业知识进行扩展并培养自身的创新能力,这类课程要求必须选修过相关实验课程的学生,方能进行选修。
2.2紧密联系理论课教学,采用以EDA技术为主的实验教学环境
本专业的硬件理论课教学的宗旨是着重从系统角度来理解计算机的运作,着重培养学生对硬件系统的分析及应用能力,作为统一的教学体系,实验教学也应围绕这一主导思想。我们在实施硬件实验教学时,更关注硬件部件是如何完成其设定功能,部件之间如何进行相互配合、协调运作,而弱化硬件内部具体物理实现。我们采用了EDA为主的硬件实验教学方式,利用QUARTUS等功能强大的EDA开发工具、Verilog或VHDL硬件编程语言,配合相应实验箱进行实验功能设计、仿真及验证,使学生基本不用关注硬件的具体实现,进一步简化了硬件设计、测试等过程。其中数字逻辑与系统设计、计算机组织与结构、SOPC系统设计等实验课程均利用QUARTUS工具进行开发,基于杭州康芯电子有限公司的KX_DG3B数字系统开发平台和GW48系列FPGA开发平台来进行实现,实验环境上具有顺承性,只要在硬件实验起始课程中进行一次讲解,学生就能轻车熟路地使用。这样就避免每个老师都在EDA软件的讲解上耗费大量时间,其他课程老师则主要把精力放在本门课相关电路及部件的设计实现上,节约了宝贵的实验内容讲解的时间。EDA教学环境及FPGA平台的使用,一方面可以提供的是虚拟器件和仪器,且开发平台可反复编程,所需硬件连接较少,实验设备不易损坏,使学生可以放开手脚大胆地进行实验。另一方面,学生在课堂上完不成的实验,可以在自己的计算机上装载相应开发工具,利用课余时间继续完成后跟随下组实验进行硬件验证即可,实验安排上就可以比较灵活。因此,利用EDA技术,学生很方便地开展综合性、设计性、自主性的实验,进而可完成大型硬件的原型设计,或进行创新性课题的研究,这将大大激发学生的学习兴趣和热情,提高学生硬件设计能力,从而改变目前学生硬件动手能力差的情况[5]。
2.3强调各课程实验内容的耦合衔接与贯通,注重软硬件之间的协同
构建紧耦合层进式的实验教学体系,离不开各个实验课程内容之间的关联协调和贯通。计算机硬件实验教学过程作为一个系统,其组成部分是每门课程的实验内容。在选取实验内容时,为避免实验内容的孤立,既注重课程间知识的交叉渗透,又尽量体现知识体系的整体性和逻辑性。以“数字系统设计专题实验”开放实验为例,很多学生选择用硬连线方式实现一个基本模型机,而同时在“计算机组织与结构专题实验”中则要求学生基于微程序的思想来实现一个同样功能的模型机,通过这两者的实现比较,学生能直观地映证出理论课上所讲述的两种方法实现CU时各自优缺点,透彻理解并牢固掌握该知识点。传统的计算机硬件实验课程的主要任务是验证计算机的工作原理,以配合对应的计算机硬件理论课程,忽略了各实验课程间的融合性,而技术的发展需要软硬结合、软件硬化或交融[6]。单纯的软件实验和硬件实验都不利于学生软硬件综合素质的培养,传统的软硬件设计相分离的设计方法已成为阻碍设计和实现复杂、大规模系统的关键因素。在“嵌入式系统与软件开发专题实验”以及“SOPC系统设计专题实验”中,我们要求学生完成一个总的计算机软硬件综合设计的项目。以接近于实际应用环境,完成高质量综合设计为训练手段,使学生建立系统的概念与工程的概念。这样一方面可以使学生从根本上了解计算机的整个硬件系统、软件控制之间的协调机制,彻底打通软件实验与硬件实验之间的壁垒,另一方面,这样既有硬件也有软件的题目也更能激发起软件专业学生的学习兴趣,发挥其编程方面的特长,提高学生的主动性及创新热情。
2.4建立灵活的考核机制,满足不同实验类型的要求
对于实验课程的考核,我们采用针对不同实验类型实行不同考核机制的方法。对于课内的基础性实验,考核时坚持沿用传统的课堂表现和实验报告相结合的方式,现场表现采用单人单机现场演示,老师提问学生作答的方式,由老师根据学生考勤及现场表现给定分数。实验报告的成绩则细化对问题的分析能力以及文档写作能力等方面的要求给定。最终成绩由这两项按权值给定。对于综合设计实验,由于整个实验内容往往由多个子实验来组成,而且通常采用两三个学生分组进行的形式,所以考核时应更为细致,也要由课堂表现和实验报告两部分综合给出,但较之基础性实验标准不同。首先,课堂表现由老师评分以及小组成员互评两项组成,要求在每次实验中指导教师都认真地记录学生的考勤及实验表现,这里的实验表现主要考查遵守实验规则、设计能力,分析、解决问题能力以及对理论设计的实现能力等几个方面。其次在实验结束后,还要求学生撰写实验报告,实验报告依据学生的总结能力、分析能力和写作能力给出。创新设计型实验一般也采用分组的形式,但最终成绩是由实验开发中几个部分的考核成绩综合给出。选题准备阶段的成绩由指导教师根据学生提交系统选题报告,按照系统规模、难易程度、创新性及个人分工给出。设计阶段的成绩由学生提交系统设计报告和现场答辩两部分给出。答辩类似于工程中的评审,需要通过学生讲解、演示,回答在场所有学生及教师的质疑,一方面对项目可行性进行充分的推敲,另一方面使各组成员充分了解其他小组的思路及设计方法,对自己项目实施起到学习借鉴作用。系统实现调试阶段成绩由学生提交系统实现及测试报告给出。最后验收阶段由现场验收和项目总结报告两部分组成。上述多样化的考核标准满足了层进式课程体系中不同层次的考核要求,更加客观地反映了学生的实践能力和知识运用水平,提高了实验教学的整体质量,达到了实践创新的培养目标。
二、为信息使用者实时高效获取多方信息提供可能
在传统会计模式下,会计人员处理数据传输数据具有一定时滞,即时报告也受到技术与成本效益原则的约束。在软件工程技术下,计算机自动快速处理使得及时获得报告信息成为可能,其强大的综合数据库也使得根据管理层需要提取各种信息组合得以实现。无论是提供定期信息还是实时信息,综合信息还是明细信息,技术上的限制已不复存在。在会计信息系统下,利用网络传递电子数据,计算机处理数据,与实际经济业务没有或很少有时间上的延迟,而会计软件不受会计分期限制,能即时反复处理数据,生成财务报告。管理层可根据需要在任何时间内得到最新的财务数据。另外财务软件系统清晰地记录了各项数据之间的勾稽关系,能够更为便捷地提取相关项目并对其进行深入细致的分析。
三、提高了效率,解放了人力
受传统手工操作能力的限制,会计工作需要多名会计人员分工协作才能完成数据处理。而专业财务软件出现后,会计人员不再需要手工记账、算账和编制报表,在输入记账凭证后,凭证通过计算机进行传递并自动进行核算和编制报表工作,而经常性的账务处理如固定资产折旧、各部门某些书刊费用分摊等能在每月自动核算,减少重复工作。这使得会计人员能从传统的日常业务中解脱出来,更多致力于财务会计信息的深加工,注重财务监管、财务分析、战略财务规划等。
四、便于加强内部控制与外部监管
传统手工会计系统的内部控制以人工控制实现,主观性很强。而财务软件的引入,使得内部控制兼具人工控制与程序控制的特点。财务软件系统许多应用程序中包含了内部控制功能,比如对特殊交易事项需要具有相应权限人员授权,再未获得授权时系统会进行控制与反映,这限制了某些人员擅自进行越权交易;再如软件要求各项会计处理必须按照一定的程序来进行,能够很好地规范某些违反规定的行为。另外现在企业实行电算化会计,也为外部监管工作带来极大的便利。传统会计数据通常采用纸质为载体,数据储存不易,且占用大量空间,而会计电算化的实现,使得所有会计数据均以“比特”方式保存在磁性介质上,便于查找。基于网络平台的财务软件能够通过网络进行数据传输,因此审计机构可以通过相应软件进行远程办公,这样既提高了工作效率,也节约了大量的工作经费。
2用户方面
⑴养成计算机软件维护的意识。对于多用户而言,计算机软件的维护似乎没有什么实际意义,只要不影响到自己的工作,没有必要去进行维护。⑵安装防护能力强的杀毒软件。为了保证计算机软件的安全运行,安装防护能力较强的杀毒软件是必要的。⑶经常清理计算机内存。计算机内存过多也会影响软件的安全性和运行效率,因而要定期进行计算机内存清理。对计算机内存进行清理包括对无用文件的清理,也包括对非常用软件的清理,尤其要注意的是要尽量减少C盘的储存数据。⑷经常对硬盘进行维护。对硬盘进行维护能减少垃圾数据对软件的影响,维护硬盘主要在于:第一,定期对硬盘进行扫描、清理、木马查杀等,清理废弃的数据,减少对内存的占用。第二,要注意对重要文件进行备份,减少计算机风险。⑸养成文明上网的习惯。第一,不浏览不健康的网站,减少电脑接触病毒的机会。第二,不打开来路不明的链接地址。第三,不进行“翻墙”行为,减少恶意木马的攻击。
3计算机软件工程维护中需注意的问题
3.1促进软件开发者和用户的合作维护并不是某一方的工作,而是软件开发者和用户共同的课题。作为软件开发者,应该不断改进技术,在提高软件使用性能的同时加强对软件防护性技术的探索。作为用户,应该在计算机使用过程中养成良好的软件维护意识,并将工作过程中出现的问题反馈给计算机软件开发者,以便在后期开发中改进相应技术。
3.2加强对相关软件维护知识的宣传为了提高用户的计算机维护技术,应该加强维护知识的宣传。首先,经营商应在用户购买电脑时给予详细的讲解,让用户意识到软件维护的重要性。第二,开发者应制订详细的维护说明书,减少用户的疑惑。第三,网络管理者可以在相应电脑界面给出维护建议,提醒用户及时对电脑进行维护。
传统软件开发过程的主要组成部分是其开发周期模型。软件生存期模型是软件工程思想的具体化,是跨越软件生存期的系统开发、运行、维护所实施的全部活动和任务的过程框架。传统典型的几种生命周期模型,包括瀑布模型、增量模型、演化模型和螺旋模型等多种。在软件应用开发过程中,每种模型都有其不足之处。其特性不符合软件应用开发的初始需求不明晰、快速开发、特性经常变化等特点。瀑布模型的优点是清楚地标识出了软件开发的阶段。它采用自顶向下逐步求精的方式把整个开发过程分成不同的阶段,每个阶段的工作都很明确,因此便于控制开发过程。当所有的阶段都完成之后,该软件的开发过程也随之结束。在软件应用开发方面,瀑布模型的缺点正是它自身的顺序性所导致的。实际的软件应用开发过程中,在需求阶段很难把用户的需求完全明确下来,因此,当需求变更时将会导致阶段反复,而且都要重复需求、设计、编码、测试等过程。
1.2软件应用模型更新
随着网络技术和Interact的迅速发展,大量系统都是基于www的。这些系统的开发、维护和管理需要新的方法,这些方法有别于传统的软件工程方法。传统软件工程方法和技术应用已经无法直接用到基于软件的系统开发中。当企业向面向对象的软件应用开发技术转向时,支持软件开发的活动也必然要有所改变,即意味要改变开发过程、资源和组织结构。面向对象的软件应用开发需要新的、符合其特点的软件工程过程。
2软件工程过程
2.1软件工程过程模型组成
针对软件工程应用的特点,以及软件应用系统的开发和传统软件开发的显著区别上,本文提出了软件工程过程模型,作为软件应用的开发框架。软件工程主要包括开发过程模型、项目管理模型及组织公共模型等组成部分。开发过程模型介绍了开发的生命周期;项目管理过程介绍了项目管理的基本流程、项目管理方法的建立,可以大大地增加组织在项目管理方面不断成功的可能性;二者交叉部分是组织的公共过程。项目管理过程贯穿软件开发过程的始终。
2.2软件开发过程
本过程模型基于迭代思想,一次迭代包括了生成一个可执行版本的开发活动,还有使用这个版本所必需的其他辅助成分,如版本描述、用户文档等。因此一个开发迭代在某种意义上是在所有工作流中的一次完整的经过,这些工作流至少包括:需求、分析和设计、实现、测试、等,其本身就像一个小型的瀑布项目。在软件开发过程中,包括软件工程人员、如见需求、软件设计、软件实现和软件测试几个部分。软件工程人员则又可以分为程序开发人员、质量管理人员、项目管理人员、内容提供人员和客户等等。在这几个环节中,软件工程人员是基础,软件需求是动力,软件设计和软件测试是手段,软件实现是目的,几个环节缺一不可。以下仅简要介绍软件测试的内容。软件测试可以分为多种,包括性能测试、功能测试、安全性测试、兼容性测试和可用性测试等等。在软件工程过程中,基于软件系统的测试、确认和验收是一项重要而富有挑战性的工作.基于软件的应用系统的测试与传统的软件测试不同,不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。因此,我们必须为测试和评估复杂的基于软件的系统,研究新的方法和技术。
3软件工程项目管理
3.1项目管理概念
软件项目管理(WebbasedProjectManagement,WPM),即以软件应用程序为主要表现方式的架构来进行的项目设计及管理,这样的架构中包含了浏览器、网络和软件服务器等关键主体,主要体现在网站设计、以浏览器为客户端的软件应用程序开发等项目管理中。随着软件项目的规模不断加大、参与人员的增多、对规范性的要求愈加严格,软件开发已经告别了个人英雄主义的模式,工程化的软件开发时代已经来临。由此,项目管理开始逐步地在软件研发各项活动中处于核心地位。软件项目管理又可以分为项目准备过程、策划与计划过程、启动过程、跟踪管理过程和关闭过程。
3.2项目管理过程
首先是项目准备,项目准备包括外部项目准备和内部项目准备,主要是准备项目招标的方案,分析项目的可行性。其次是项目启动,这一阶段主要是根据招标内容设计软件工程的计划方案。再次是项目计划,主要是为软件项目所需要的人才和技术设备做策划。接着是项目跟踪,即根据计划内容对整个软件工程的设计过程做评估。最后是项目结束,项目检测通过后验收。软件工程过程不是建立后就一成不变的,它需要在实践过程中持续改进。当企业在项目管理上走向成熟,并达到了一定程度的成功时,就获得了可持续性竞争优势.然而,企业的竞争者不会坐视这些,他们必然也在不断进步。