评助理工程师论文助理工程师论文范例:案例分析在本科软件工程教育中的应用研究摘要:近年来,案例教学被广泛应用于软件工程教育中。现阶段软件工程教育工作遇到了前所未有的困难和问题,将案例教学方法引入到软件工程教育中,可有效解决这些问题。提出应将案例分析教学方法应用于高中、大学甚至继续教育等阶段的各种软件开发项目、软件模块设计,以及软件课程教学中。关键词:软件工程;案例分析;软件工程教育;缺陷清单0引言随着计算机技术与信息技术对人们日常生活的影响日益广泛深入,设计开发新的计算机软件系统并且快速地将其应用到实际工作中已成为计算机软件领域的重中之重。近20年来,计算机软件工程师充分应用计算机科学技术、计算机工程技术、数学分析等知识来设计、开发、测试以及优化各种各样的计算机应用软件以满足人们的实际需要、随着软件行业的技术变革,以及企业对软件工程师要求的变化,软件工程师的工作任务也在不断地变化。因此,培养能够适应软件行业发展的软件工程师一直是软件工程教育追求的目标[1-3]。1软件工程教育所面临的问题软件工程作为一个新兴的学科,目前还不成熟,甚至有人质疑它是否为工程类学科,这在某种程度上反映出软件工程教学中可使用的材料极为匮乏。ACM/IEEECS在软件工程教育中的指导方针不仅有力地支持和改进了软件工程教育工作,而且对软件工程教学辅助材料,如教科书和网络资源等的发展也起到了一定的推动作用。软件工程作为一个专业性领域,其学生不仅需要更多的理论基础知识,而且需要进行更多的实践。文献[8]为软件工程课程教学给出的指导方针之一是“所有的课程必须要有现实基础”,另一个指导方针是“SE的概念、原理,以及解决方法应该贯穿于整个教学活动中以帮助学生建立起一个软件工程心态”。问题就在于如何很好地提供一个基于以上两个指导方针的教学和实践环境,以帮助学生建立起一个“软件工程心态”。不幸的是,有关案例分析在软件教学的研究非常有限,例如通过一些非常准现实的例子来说明计划、需求、设计、以及构建等问题,但一般缺少以下几个部分:(1)现实性异常(通常情况下,空间不能满足全部的要求和设计文档)。(2)完整性(仅仅涵盖了软件生命周期的一部分)。(3)将教材和实际应用分开的能力。(4)案例整体融入教学活动的方法。(5)案例的风格。经典的风格可以激励学生专注于问题的分析解决。(6)如何指导教师使用案例分析法进行教学。迄今为止,案例分析法已在计算机信息处理技术的两个领域得到了合理有效的应用。一是在计算机伦理教学中。现在有大量的关于计算伦理教学的文章、书籍,并在网页中使用到案例分析,Epstein所使用的机器人杀手的例子可以说是案例分析的经典使用[9]。二是MBCS—大学预修的计算机科学课程考试项目[10]。MBCS使用了一种非常有吸引力的“案例训练”风格,对各种情况作出了更加真实完善的假设,主要目的是为了进行AP计算机课程的教学,从而为AP计算机科学的课程考试作准备。本文所描述的案例分析法在特点和风格上同MBCS非常相似。2案例分析案例分析自1871年首次在哈佛法学院使用后,逐渐成为教育教学效率研究中的一个主要方面[2-6],并且在诸如商业、法律、医药等专业领域的实践教学中成为一种公认的普遍的教学方法。“案例分析”作为一术语被广泛地使用,但它最朴素最原始的表现形式仅仅是一个用来说明概念或者一种技术的实例,如果进一步对其解释,那就是个人或者团队结合现实生活的情况,运用所学的知识和技能对所遇到的问题分析解决。案例分析通常以叙事的形式对现实世界的活动,甚至环境进行描述,当然,这种描述通常需要用背景(场景,人物,事件的发生次序,以及问题和冲突等)、假设、以及数据等与所描述的环境有关的一系列因素来诠释。案例分析提倡参与、讨论和理解,虽然它既可以用于以教师为中心的教学方法中,也可以用于以学生为中心的教学方法中,但在通常情况下,它更多地用于以学生为中心的教学方法中。此时,教师仅仅是一名辅助者。此外,基于问题的学习主要专注于解决问题,自我引导,以及团队协作的能力[7]。因此,案例分析在这方面也有着特殊的研究应用价值和意义。本文所给出的案例分析的主要作用是模拟职场环境,以及激励学生去适应纷繁复杂的现实世界。2.1方案分析本文的案例分析方案主要是将单一软件产品的研发分割为数个案例模块,每一个案例模块都应该与产品研发的每一步骤相对应。此外,案例模块也是通过叙事的风格来描述的,其中包括人物、事件等,这些事件甚至可以是实际软件开发项目的一部分。例如,开发团队的形成;与管理人员、消费者或者来访用户的交谈;产品的调研;经典界面的设计;设计雏形的制定;系统的测试等,虽然说一个案例的分析仅仅是针对某一特定的领域,但是它们可以作为参照来设计其它相似的案例,案例模块可以说是“微型案例分析”。案例分析应该涵盖软件产品的整个生命周期,包括项目管理、需求分析、产品的规范、设计、实施、测试以及维护等,在案例分析的初始阶段就应该充分考虑,为以后的研究案例分析、识别案例分析问题、构建叙述框架、描述软件开发团队,以及制定软件开发计划、分割相关案例模块等整个案例分析流程打下一个坚实的基础。2.2问题识别为了很好地提出案例分析问题,项目组需要分析研究大量可能的软件系统,如一款电脑游戏、空中交通管理软件、学术策划系统、数学教育应用系统、免疫系统仿真软件、天气预报系统以及“智能屋”软件系统等。通过咨询从事软件工程教学的老师,以及同本科阶段的学生进行交流,决定选用“智能屋”作为案例分析的研究对象。为了更好地进行案例分析,将智能屋定义为一个家庭管理系统,这一系统集成安全措施、环境调节(温度、湿度、亮度),娱乐交流于一体,为居住者提供了极大的方便。智能屋主要是由各种家用设备(空调、音箱、洒水器等)、传感器、设备控制器、通信设备以及所有设备的管理者—计算机系统所组成的。数字家庭需要安装各种各样的环境传感器(温度传感器、亮度传感器、湿度传感器、功率传感器、触发传感器,以及水流传感器等),通过无线网络读取各个传感器的数值,并存储在数据库中。DH系统由可编程器件(恒温控制器、湿度控制器、小家电控制器以及亮度控制器)组成,这样居住者在不论任何地方,都可以通过网络随心所欲地对家庭的环境特征进行管理控制。居住者可以通过DH控制器直接设置整个系统的参数(温度、湿度、亮度以及各个家电的状态),并且可以分时间段对参数进行设置。2.3教学评估评估对于课程设计者来说,向来是比较棘手的事情,对于有着更多学习目标以形成更高认知能力的软件工程来说,评估将会更加麻烦。其难点在于如何构建一种适应于学习科学的评估体制。一个健全的评估体制应该与学习目标相适应,对指令进行整合,这样不仅不会给教师和学生带来负担,而且能够很好地提供反馈信息,增加学生们的学习机会[11]。软件工程的评估体制更应该注重学生的能力,而不是成绩[1-7],因为对于软件工程师这一职业来说,能力更加重要。由于评估和学习目标的同步性,使得软件工程教育中对学习目标的考察变得十分重要。一般情况下,软件工程教育事业有着复杂的教育目标,诸如一般常识、理解性知识(事实、概念、程序、元认知等)、相关的技能,以及这些知识和技能的应用和解决问题,人际交流和团队建设的能力等都应该包括在内。这里需要强调的是解决问题的能力应该包括分析、推理以及评价之类的高级认知能力[2]。理解和分析能力对问题研究是非常重要的,虽然复杂,但却是必不可缺的,因为课程的最终目的就是熟练地掌握知识和技能,并且能够灵活运用以对复杂的现实问题进行软件开发。2.4缺陷清单软件质量保证(SQA)在软件工程教学中是非常复杂的,因为它涉及到3种主题类型,在此,我们将缺陷清单引入软件工程本科阶段教学中,要求学生通过由内到外进行全面地审查来发现并改正缺陷。引入缺陷清单的目的是为了缩短改正缺陷所需的时间以及精力,提高所交付软件的质量。缺陷数据的分析主要是通过5种推测来完成的,通过分析各种推测的优势和局限性来决定最终的结果。当然,这种方法在帮助软件工程的该领域教学工作者的同时,也有需要改进的地方甚至有被其它方法所替代的可能。缺陷清单广泛应用在软件工程中,并且能够完美地和软件生命周期地各个阶段相结合,其中有需求清单,设计清单,实施清单以及测试清单等,当然有时并不包括所有清单,需要针对特殊的开发者或者特殊的工程定制清单[6],近来,研究者针对一些特殊的问题设计了一些特定的清单,像软件安全清单[11]和成本管理清单[10],此外,基于清单的SOA技术将随着技术和工具的变化而变化,例如:面向对象的程序设计引导了基于清单的SQA验证技术的广泛使用;用例模型导致了新的检查法的产生[11]。现今,单项清单正在不断地融合,对清单处理器以及缺陷检测估计器的研究也已经成为一种趋势。本文所描述的方法是非常新颖独特的,它允许在整个软件过程中使用清单,可以应用在本科生和研究生的软件课程教育中[7,8],当然,这种方法对清单的数量,各个清单分支的数量,以及清单使用的次数和使用清单的学生数量也需要进行特殊说明。3结束语案例分析教学法已经有效地应用于许多专业领域,使用案例分析教学法可以教导学生在处理现实问题时,受实际条件限制时以及处理人与技术的关系时,应该如何分析问题,从而做出决定。虽然案例模块在软件工程教学中的使用受到一定的限制,但这项技术对于软件工程教学依然是非常重要的,本文所描述的案例分析方案使用案例模块为软件工程的教学建立起一个框架,通过数字家庭软件系统这个简单而又全面的例子说明了软件产品的研发流程,此外,文章还介绍了可以用于各种软件工程项目教学的案例模块的知识。参考文献:[1]DALCHERD.,DREVINL.LearningfrominformationsystemsfailuresbyusingnarrativeandantenarrativeMethods[J].Proceed-ingsofSAICSIT2003:137-142.[2]GARGK.,VARMAV..Astudyoftheeffectivenessofcasestudyapproachinsoftwareengineeringeducation[J].IEEEproceedingsof20thConferenceonSoftwareEngineeringEducationandTraining(CSEET2007),Dublin,July2007.[3]GOLDENE.,BASSL..Creatingmeaningfulassessmentsforpro-fessionaldevelopmenteducationinsoftwarearchitecture[M].20thConferenceonSoftwareEngineeringEducation&Training(CSEET'07),2007:283-290.[4]BIFFL,S.,GROSSMANN,W..Evaluatingtheaccuracyofdefectestimationmodelsbasedoninspectiondatafromtwoinspectioncy-cles[M].Proceedingsofthe23rdInternationalConferenceonSoft-wareEngineering(ICSE-2001):145-154.[5]BRYKCZYNSKI,B..Asurveyofsoftwareinspectionchecklists[J].ACMSoftwareEngineeringNotes,24(1),January1999:82-89.[6]DEALMEIDA,J.R.,JR.,CAMARGO,J.B.,JR.,etal.Bestprac-ticesincodeinspectionforsafety-criticalsoftware[J].IEEESoft-ware,20(3),May-June2003:56-63.[7]DUNSMORE,A.,ROPER,M.,WOOD,M..Thedevelopmentandeval