(二)实践少,理论与实践相脱节,学生动手能力差
(三)校企合作不够
校企合作是实现高校软件工程人才培养与企业需求无缝连接,培养高素质软件人才的重要途径之一,尽管目前很多高校的软件工程专业都建立了校企合作模式,取得了不错的成绩,但校企合作存在着缺乏相应的政策引导、缺少双方交流的平台、企业积极性不高、合作松散、管理手段缺乏等问题。这样就会出现高校培养的软件人才动手能力差,无法满足企业的需要,而软件企业又找不到合适人才的尴尬局面。校企合作力度不够在地方院校表现的更为突出,主要原因是地方院校的软件工程专业在影响力与办学规模上与国家级软件学院有一定的差距,知名的软件企业很少愿意与地方院校合作,另一方面,地方院校缺乏政策与资金的支持,缺乏寻求与企业合作的机会。
二、应用驱动为导向的人才培养模式的改革措施
(一)以应用为导向加强师资建设
师资建设是专业建的首位,教师在人才培养中起着不可替代的作用。目前,软件工程专业的师资建设主要还是以理论研究为导向,多数教师从学校硕士或博士毕业后直接到高校工作,主要以理论研究为主,缺乏大型软件项目开发经验,不太了解软件产业的新技术与新动向,从而在教学过程中出现重理论、轻实践的现象,很不利于软件工程专业人才的培养。以应用为导向的师资建设就是在现有的以理论研究为导向的基础上,注重提高教师的实际动手能力,可以从以下3个方面做起:①改变传统的以学历和科研为导向的高校教师招聘方式,软件工程专业应当招聘一批具有大型软件项目开发资深经验的软件工程师,比例占师资总数的30%~40%为为宜;鉴于软件技术的快速更新,应定期派遣教师到知名软件公司的一线进行学习和培训;倡导并且增加教师带动学生参加研发类横向课题的机会,提高教师与学生的实际动手能力。
(二)案例式课堂教学
改变传统的“灌输式”的“教授/接受式”教学模式,使用案例驱动式的教学模式,就是指教师本着理论与实际有机结合的宗旨,遵循教学目的的要求,以案例为基本素材,通过师生、生生之间的双向和多向互动,让学生把所学的理论知识运用于“实践活动”中,以提高学生发现问题、分析问题和解决实际问题的能力。一方面,教师首先应准备一些引入型案例,例如,千年虫问题,来说明工程化方法对软件开发的重要性,并且提高学生的兴趣;另一方面,教师应该准备好一个能覆盖软件工程的各个环节和阶段、难度适宜的实际软件项目案例,这个案例最好是教师实际参加过的或者熟悉的项目,并且有必要的软件文档,然后把这个案例作为一个实际情境,结合案例引入并讲授各个知识点,必须要求学生撰写相应的文档和程序,然后与使用案例的已有标准文档和程序进行比较,找到自己的不足,加深对知识点的学习与理解,做到理论与实际相结合。
(三)项目式综合实训
鉴于软件工程专业的实践性很强,应该以实际应用项目为驱动进行软件工程的课程综合实训,让学生按照软件工程开发的流程去独立地完成一个应用项目。首先,教师选择一些中小型的,生活中经常接触的项目作为综合实训项目库,项目的选择一定要难度适宜,太简单体现不出软件工程化开发方法的优点,但是也不能太难,难度控制在学生可以运用所学习的知识、技能,通过讨论和合作可以完成,然后由学生人组成的小组从中选择合适的项目。然后,每个小组模拟软件企业中的一个项目开发小组,进行分工合作,由组长作为项目经理与指导教师沟通,指导教师模拟实际的客户。最后,项目组严格按照软件项目的开发流程来一步一步完成任务,应该包括可行性研究、需求分析、系统设计、实现与测试等阶段。在每个阶段学生应该提交必要的文档,可以按照《计算机软件文档编制规范》(GB-T8567-2006)撰写可行性分析报告(FAR)、软件需求规格说明(SRS)、软件(结构)设计说明(SDD)、软件测试报告(STR)等。在每个阶段,学生应利用流行的软件工程工具,例如,MicrosoftProject、RationalRose等。
(四)顶岗式专业实习
三、结束语
2软件工程的管理方法
2.1构建软件工程管理体系
构建合理的软件工程管理体系主要包括以下内容:第一,构建人才体系。在软件工程管理中,人才对管理有着重要的作用,人才是做好软件工程管理的前提。第二,为了提高工作人员工作中的积极性,确保项目中所有目标能够得到落实,应当加强人力资源管理。第三,在人才的管理中切记要以平等的态度进行管理,而不是控制[5]。
2.2加强风险管理和进度管理
对于软件项目管理中的风险管理和进度管理,我们也应当分为两个方面来进行探讨。第一,构建风险管理体制,只有这样才能及时发现软件工程管理中存在的风险,并对存在的风险进行及时处理。第二,提高项目中风险管理人员的风险意识,确保风险管理人员能够对风险有一清楚的认识,并且能够对风险进行合理的分析,针对风险提出有效的风险防范制度。在风险管理中风险管理人员应当将风险报告提交给项目经理,对项目中存在的风险进行有效的防范,阻止风险出现,确保企业的顺利发展[6]。
2.3加强对项目团队的管理
首先,应当增加工作人员之间的联系与沟通,使整个团队中的人员都具有沟通意识和团队合作精神。其次,对各个工作人员的工作内容进行明确分工,合理地将责任分配到每个工作人员,保证工作开展后一切都能顺利地进行。最后,调动项目中工作人员的积极性和注重性,使团队中的工作人员都能够完全投入到工作之中,提升团队工作能力,改善工作人员的工作态度,做好软件工程管理工作。
2.4对软件工程进行监督
3结语
关键词:软件工程;案例教学法;分析设计
Abstract:Thisarticleonthecaseteachingmethodinsoftwareengineeringmadeapreliminarydiscussion,atthesametime,wearebrieflyintroducedinsoftwareengineeringtotrythecaseinsomeoftheteachingexperience.中国
Keywords:softwareengineering;caseteachingmethod;DesignAnalysis
1引言
随着计算机应用日益普及和深化,正在运行使用着的计算机软件的数量以惊人的速度急剧膨胀,而且现代软件的规模往往十分庞大,所以指导计算机软件开发和维护的工程学科—软件工程,日益显示其重要地位。然而学习者一般不好理解软件工程的实践性,不能将所学的知识真正应用到软件开发过程中去。如何将理论与实际联系起来呢?我们认为在软件工程中采用案例教学发将会弥补这一缺憾。
案例教学法以对案例的分析解决为主线,通过对案例中的问题进行分析,激发学生的求知欲,调动学生的积极性,使学生自觉主动的学习案例,掌握原理和方法,实行科学的教育思想观念的一种教学方式。它是一种互动式的教学方法,可以实现启发式教学,能够极大的促进学生的学习兴趣,实现真正的教学相长。它更是实现理论联系实际的现实可实施的途径。案例教学法在软件工程教学中的应用将在更大程度上激发学生学习的学习兴趣和参与的积极性。同时,利于学生掌握理论知识,并运用知识解决软件开发中的实际问题,最终提高教学质量,达到学校教育培养的目标。
有鉴于此,本文试对案例教学法在软件工程中的应用作了初步探讨,以期对教育同行和广大学习者有所启发和借鉴。
2案例教学法的含义
案例教学法(casemethodsofteaching)可简单地界定为一种运用案例进行教学的一种方法,它是美国当今教育行业中非常盛行而有效的一种方法,在我国正在慢慢推广开来。1910年,美国哈佛商学院最先使用案例教学,开创了案例教学的先河。案例教学法于20世纪80年代初传入我国,它有利于培养学生分析问题、解决问题的能力,提高教学效果。
案例教学是在学生掌握了有关基本知识和分析技术的基础上,在教师的精心策划和指导下,根据教学目的和教学要求,运用典型案例,将学生带入特定的现场进行案例分析,通过学生的独立思考和集体协作,进一步提高识别,分析和解决某一具体问题的能力,同时培养学生的沟通能力和协作精神的教学方式。通过案例分析,学生可以获得蕴涵其中的那些已形成的教育原理、教学方法等知识,同时可以提高和发展学生的创造能力以及解决实际问题能力。更重要的是,通过案例教学获得的知识是内化了的知识,是“做中学”获得自己理解了的能驾驭的知识,不再像传统教学下获得的抽象的、过度概括化的生硬知识,它能立即被用到类似教学实践情境中去解决处理类似的疑难教学问题。所以从美国教育家舒尔1986年在美国教育研究协会(AERA)年会重要演讲中发出要发展关于教学的案例知识的呼吁,时至今日,在众多国家的教育研究领域中都能发现案例教学法的应用。
3软件工程案例的选择
概括而言,案例是含有问题或疑难情境在内的真实发生的典型性事件。没有案例,案例教学无从谈起,没有好的案例,便没有有效的案例教学,所以案例的选择在案例教学中至关重要。一个高质量的案例应该具备以下几个特点。
(1)目的性。案例教学的目的是为了让学生理论联系实际,通过案例让学生掌握基本的原理和概念,提高发现问题,解决实际问题的能力。一个好的案例应该使学生在讨论中加深对教材中某一重点或难点知识的理解和把握,能利用课堂学习的理论知识来分析和解决案例中所涉及的问题。所以案例的选择一定要围绕教学目的和教学要求来。如果脱离这两个中心,即使案例再生动,其教学效果也大打折扣。
(2)真实性。案例一定是现实中发生的真实事件,是常见又复杂的问题,有助于学生实践能力的提高。
(3)启发性。一个好的案例需要蕴涵一定的问题,能启发学生思考,发现多种解决的途径。问题越诱人深入,越能够给学生留下较多的思维空间,教学效果越好。
(4)生动性。案例必须生动活泼,引人入胜,这样才能引起学生的兴趣,以便展开深入的思考。
4软件工程案例教学的主要环节
案例教学的需要具备三个主要环节:
阅读案例,个人分析——分组讨论,集体交流——总结归纳,消化提升
我们尝试的软件工程案例教学中同样采用了这三个阶段:
(1)阅读案例,个人分析
学生首先对具体案例进行必要的基础知识的了解,认真阅读案例,并且要有个人的研究与分析,用软件工程的传统途径—生命周期方法学作为理论指导,熟悉软件开发过程各阶段的基本任务。
(2)分组讨论,集体交流
(3)总结归纳,消化提升
总结归纳是软件工程案例教学的最后阶段,要求学生要对每个案例写出学习报告。该报告中包含学生在阅读案例中所得到的具体收获;通过分析与设计软件,提出自己所解决的实际问题;对理论上软件工程概念和案例中的实际是否一一相对应;以及对软件工程仍然存在的困惑。通过反思进一步加深对案例的认识,真正作到理论和实践的相结合。
案例教学中,师生都要注意角色转换,如果学生仍然热衷于将自己置身于教学过程之外,只做一名旁观者,案例教学也就失去了它的价值。学生只有真正地深入案例、体验角色,才会有案例情境的“再现”,案例教学的价值才能被体现。而教师在教学过程中也要不断变换自己的角色,可充当监督员,激励启发学生,监督案例分析、讨论情况;可充当示范员,向学生演示、讲解、分析案例中的事实、图表、材料等;可充当主人翁,制定下一步的工作计划并在实施中起主导作用;可作仲裁,解决各种争端;可充当交警,使讨论回到预定的轨道上来;等等。
5结束语
传统的“黑板教育学”越来越受到冷落,案例教学已经提到教育改革的重要日程上来。华东师范法学教育系郑金洲曾指出,案例教学并不是单纯的一种教学方法,它实际上是以教学内容的变革为前提条件的,正是有了形形的案例,才使案例教学成为可能;案例教学也并不是一种单纯的教授法,它实际上也是以学生行为的转变为前提条件的;如果学生仍然热衷于自己先前的角色,把自己置身于教学过程之外,只是一个旁观者,案例教学也就失去意义。
笔者从事软件工程的教学工作,在软件工程中进行案例教学法的尝试,并且在实践中得到了一定的效果。然而,在软件工程案例教学中仍有很多问题需要进一步研究探讨,比如在案例中如何体现软件的测试阶段,它需要具体的环境来实现;如何在案例中能够让学生更深入理解软件的维护过程等等问题,都是有待于我们进一步完善,使案例教学在软件工程中得到进一步的推广。
参考文献
[1]张海藩.《软件工程导论》.清华大学出版社
[2]李为民,.如何开展案例教学-哈佛大学商学院琳达教授对新教师利用案例教学的几点忠告》.北京:经济干部管理学院学报,2004.1
[3]Stein,M.K.,Smith,M.S.,Henningsen,M.A.,Silver,E.A.(2000),ImplementingStandards\|BasedMathematicsInstruction,NewYork:TeacherCollegePress
⑴开发出自带防护功能的软件。计算机系统非常庞大,除了必备软件,在许多行业还装有专门的软件。面对如此复杂的软件系统,软件的维护工作不易开展。因此,在软件的开发过程中要加大对防护功能的有效应用,使软件自带效果较好的升级、保密、病毒查杀等功能,使其在软件运行过程中做好第一道防护工作。⑵在程序设计中使用高级语言。每一个软件都是由一定层次的语言编码而成的,像机器语言和换边语言这样层次较低的语言,虽然在操作的过程中较简单,但是不利于在使用的过程中进行软件的维护。因此,要在软件开发时使用较高层次的语言,增加软件对用户指令的智能识别能力,通过技术的手段让软件维护工作简单化、精细化。⑶严格把关软件的质量。计算机软件不同于其它实物,它的质量优劣直接影响着软件的运行效果,质量好的软件给软件维护减轻了负担,能够减少计算机软件问题的出现,这也意味着对计算机软件在源头上进行了维护。
2用户方面
⑴养成计算机软件维护的意识。对于多用户而言,计算机软件的维护似乎没有什么实际意义,只要不影响到自己的工作,没有必要去进行维护。⑵安装防护能力强的杀毒软件。为了保证计算机软件的安全运行,安装防护能力较强的杀毒软件是必要的。⑶经常清理计算机内存。计算机内存过多也会影响软件的安全性和运行效率,因而要定期进行计算机内存清理。对计算机内存进行清理包括对无用文件的清理,也包括对非常用软件的清理,尤其要注意的是要尽量减少C盘的储存数据。⑷经常对硬盘进行维护。对硬盘进行维护能减少垃圾数据对软件的影响,维护硬盘主要在于:第一,定期对硬盘进行扫描、清理、木马查杀等,清理废弃的数据,减少对内存的占用。第二,要注意对重要文件进行备份,减少计算机风险。⑸养成文明上网的习惯。第一,不浏览不健康的网站,减少电脑接触病毒的机会。第二,不打开来路不明的链接地址。第三,不进行“翻墙”行为,减少恶意木马的攻击。
3计算机软件工程维护中需注意的问题
3.1促进软件开发者和用户的合作维护并不是某一方的工作,而是软件开发者和用户共同的课题。作为软件开发者,应该不断改进技术,在提高软件使用性能的同时加强对软件防护性技术的探索。作为用户,应该在计算机使用过程中养成良好的软件维护意识,并将工作过程中出现的问题反馈给计算机软件开发者,以便在后期开发中改进相应技术。
4结语
1.1软件设计的评判标准基于构件的软件需要具备可复用性高的特点
1.2软件开发的基本理念
基于构件的软件开发中的构件技术主要是在数据和算法结构上进行提升,这是一种在应用级别基础上的集成化技术。对于构件化软件开发的基本理念,更多的考虑方面是对象个体在实际的应用领域进行开发过程中的作用。换句话说是把软件逐渐分解成为几个独立的单元,然后再将不同的软件构件对象进行组装,最后才形成完整的软件集成。
1.3软件开发的具体过程
对于基于构件的软件开发,首先是关于软件系统的生存周期,构件化软件系统的生存周期相比传统的软件系统工程较简单。具体分为系统的分析、蓝图的设计以及构件集成等。对于架构的设计,能否进行十分系统的架构设计对于基于构件的软件系统有十分重要的作用,它能够真正保障系统在运行的过程中进行有效地操作。架构的设计指的是对于构件化的软件系统评估,然后进行选择和最后的设置。该设计的目标是依据用户实际需要,对系统进行规范化设计之后再选择适当的架构设计方案,对整个系统的各项实际实施的环节需要充分明确下来。所谓系统的集成指的是构件能够按照系统的构架将系统组装成模块,在组装的过程中一般只需要对基本代码进行编写,然后在构件之间要能够进行互相的调用。结束以上步骤后就能够形成所需要的系统文档。最后的环节是对系统进行测试,这个测试环节是为了检验该系统能否真正满足客户的设计要求,以及在系统的具体运行中是否会出现问题,以便及时进行修改。该环节主要的目的是能够真正根据系统的要求来确定构件化系统的真正形成。