首页范文软件工程导论十篇软件工程导论十篇

软件工程导论十篇

发布时间:2024-04-24 15:54:42

软件工程导论篇1

创新型和创业型人才的培养是当前推进高校教育教学改革的重点。软件工程专业是近年来就业比较热门的专业之一。《软件工程导论》课程是该专业非常重要的一门专业基础课程,也是软件开发系列课程的基础。针对当前该门课程在教学中存在的问题,并结合当前各高校开展的应用型转型的发展目标,文章提出基于项目的实践训练的授课形式的教学模式,以进一步改善软件工程专业人才培养的效果。

关键词:

应用型;基于项目;实践训练;答辩考核

随着我国高等教育改革的进一步深化,由教育部提出针对在校大学生的创新型人才和创业型人才的培养正逐渐成为应用型院校转型的目标。那么如何让在校大学生具备软件项目开发的技能和知识也是软件工程专业的培养目标之一。培养学生软件开发的应用能力已经成为软件工程专业的人才培养的首要目标。[1]《软件工程导论》课程的教学任务也由原来软件开发理论知识的讲授转变为软件开发基本技能和文档撰写能力的训练和培养,通过学习这门课使学生能够了解软件开发的流程,并且知道在开发的过程中每个阶段都做什么和怎么去做,让学生能够直接进入到项目组里,参与软件项目开发。这样改革的好处是多样的:1.这样除了对学生应用能力进行了培养,而且让学生对软件项目的了解进一步加深,后续为以后的其它专业课的学习也打下了基础;2.在同步开设的其他课程中,进行横向联合,让学生都针对同一项目进行训练,让学生能够学有所用,大大提高了学习兴趣和积极性;3.对各门专业课的教学内容和方式都有所触动,促进了教学改革的深入。目前,国内各个高校的软件专业中都开设有《软件工程导论》这门课。多数学校还是当作一门专业基础理论课来讲授,这样的学校大多是研究型大学,学生基础比较扎实,对枯燥的理论可以接受,但是只学理论没有实践造成的后果是学完就忘,学生只会答题;还有一些学校对《软件工程导论》课程进行了一些改革,比如将理论基于一种开发环境的软件开发,试图将理论和实践相结合,但是多数是面向对象开发方式,理论多实践少,落到实际课堂教学上还是教师说的多,学生做的少,对学生实践能力培养并没有多大的改变。对课程的教学改革主要包括教学内容的改革,教学方式方法的改革,考核方法的改革。

一、教学内容的改革

目前《软件工程导论》课程的教学内容包括:软件开发基础知识,需求分析,总体设计、详细设计、编码、测试[2]、项目管理这些内容,采用的是结构化的软件开发方法。之前我们只讲理论知识,特别是开发过程中的一些技术和软件,但是学生学完即使会做题也不会开发项目。现在,我们将教师实际参与开发的项目带领学生从需求开始分析,进行总体设计和详细设计加入到授课内容中,结合实际的项目开发的内容,把理论和实践相结合。学生边学理论知识,边完成自己的项目,可以将学到的知识应用到项目中,做到学有所用。希望培养学生整体软件开发的方法、软件项目管理能力、软件需求分析能力、数据库设计能力、人机交互设计能力、软件测试计划及方案的制定能力、课程报告撰写能力、学习态度等各方面能力。

二、教学方式方法的改革

《软件工程导论》是一门理论课,多数是在多媒体教室由教师讲授为主进行授课。现在,在开课之初,我们要求每个学生申报一个题目,整个学习过程中学到哪个阶段,学生就自己去完成所申报题目的该阶段的任务,这样课堂上老师讲怎么开发软件,在课下布置了大量的阶段性文档要求学生去完成,而且各个阶段所采用的方法也不同,随着各阶段任务的完成,学生也体会到了项目开发的过程、方法。为了保证学生提交的阶段文档的质量和保证学生的项目能够顺利进行,我们将阶段评审添加到了教学过程中。学生需要提交的阶段任务文档有:《软件需求规格说明书》、《软件概要设计说明书》、《软件测试报告》和《课程综合报告》。其中《课程综合报告》中要求按照毕业论文的格式要求去排版和完成,希望同学们通过这样的训练能够在毕业设计中取得较好的效果和成绩。在教学改革时我们还尝试着和同时开设的《数据库原理与应用》、《面向对象程序设计》等课联合起来,分别针对同一题目进行阶段训练,在最终答辩的时候由三门课的老师同时参与答辩,答辩成绩被记入到三门课的最终成绩里,比如《数据库原理与应用》课学习如何设计数据库就应用在了《软件工程导论》课的总体设计阶段,学生需要画出e-R图,给出主要表结构;《面向对象程序设计》课最终就是根据《软件工程导论课》分析和设计的结果用JaVa语言开发出一个小项目,这样学生不仅写出了阶段文档,最终还能做出一个实际的项目,增加了完整性和学习积极性。

三、考核方法的改革

原来我们都是采用试卷考核的方式,但是试卷考核只能考察学生的知识掌握能力,并不能考核学生的实践应用能力,而我们希望通过这门课程让学生具备一定的软件开发实践能力,所以由试卷考核改为答辩考核和平时阶段性评审。[3]这也要求在开课之初就制定出比较详细和全面的考核方案,我们的考核方案从课程报告、答辩平时表现这三大方面出发进行考核。而且,在课程报告提交时,我们有统一的文档格式和内容要求,包括需求分析报告,概要设计报告、测试报告、课程设计报告,在平时授课阶段就需要提交上来;而答辩时,将学生答辩的项目原型与学生之前提交的需求、设计进行对应,审核是否是按照需求和设计进行的开发;而且在近几次的答辩中,我们将答辩所占的比重逐步增加,这样可以看出学生的表达能力、思维能力、项目综合运用能力的高低。《软件工程导论》课程改革的目标就是希望将枯燥、抽象的理论课变成充满趣味和挑战的实训课,让学生通过本课程学习能够知道项目开发各阶段的工作内容,且能够开发一个简单的项目,避免在毕业设计时犯一些软件开发的常识性错误,比如项目开发流程弄错,如何进行分析和设计等等。同时为了提高学生的创新能力,让学生自己申报题目,从需求分析到最终分析设计结束都需要学生自己动手来做,通过学习软件工程思想和方法去完成软件开发过程,可以调动学生的主观能动性,真正做到独立思考,能够激发学生的潜能和创新性,为创新型和应用型人才的培养打下坚实的基础。

作者:苏丹邹红崔晓微仲晓庆马英瑞单位:大庆师范学院

参考文献

[1]王菁华.地方高校向应用型转型必须实现三个根本转变[J].职业教育,2016.

软件工程导论篇2

关键词:行动导向;软件工程概论;教学模式;职业能力;工作过程

软件工程专业培养应用型、技能型的软件人才,在我国现阶段软件人才培养过程中,一直面临着“市场对软件人才旺盛的需求,而软件专业毕业生难以上岗工作”的尴尬境况,这充分说明传统的教学方法越来越不适应社会、企业发展的要求。行动导向教学倡导学生在行动中学习,为了行动而学习,其目标是培养学生的行动能力。行动导向教学模式在德国职业教学中得到了成功,无论是从理论层面,还是从实践操作层面,行动导向的教学模式都被认为是将专业学科体系和职业行动体系实现集成化的良好教学方案。

1.行动导向教学理论

1.1行动导向教学的特点及内涵

行动导向教学理论是20世纪80年代在德国盛行的一种教学模式,其教学过程强调职业实践,强调学生通过典型的职业活动获得技能和知识进而形成经验和能力。行动导向学习过程的中心是学生,教师在学习过程中起着组织、管理、协调和监督作用。教师采取“咨询计划决策实施检查评估”的整体行动实现与学生互动,让学生“独立地制定、实施和评估计划,独立地获取信息”,使学生在实践中获得专业知识、掌握职业技能,从而构建属于自己的经验、知识和能力体系。其特点主要有:

(1)教学目标的明确性。职业教育的目标是培养学生的关键能力,在注重专业教育的同时,能力素质的修养不容忽视。软件工程教学必须围绕培养学生综合能力这个目标,为将来在工作环境或劳动组织者变化的条件下自主学习来适应新的工作要求打下基础。

(2)教学内容的整合性。软件工程课的知识需要精确而扎实,并不一定追求多而深。针对这样的需求,教学过程中需要因材施教,把连贯的知识整合起来,把书本上的知识和现实的工作需要整合起来,为学生营造新的学习领域。以企业及工作环境需求和人才培养的导向为主线调整课堂教学内容,把听说能力、阅读能力、判断能力、分析能力的培养融入教学中,使教学内容更贴近学生的现实生活,更具实用性。

(3)教学手段的多样性。采用行动导向教学,打破传统的“教师是课堂的主角”模式,转变为学生成为课堂的真正主人。教师以引导、启发、调整为主,创造生动活泼的教学气氛。把学生从被动接受转变为主动思考,从传统的模式思维转变为创新思维。

(4)教学评价的开放性。行动导向教学注重培养学生创新思维的分析能力、团队协作能力、动手能力、概括分析能力等综合能力,并极大地拓展学生思考问题的深度、广度,锻炼了学生毅志力,培养了学生的个人职业素养。

1.2行动导向教学的主要教学方法

行动导向教学有一套可单项使用,也可综合使用的教学方法,根据学习内容和教学目标选择使用。

1)目标单一的知识传授与技能教学法。

①谈话教学:通过师生之间的谈话进行教学的方法,适合个体化教学辅导。②4阶段教学法:把教学过程分为准备、教师示范、学生模仿和练结4个阶段进行的程序化的技能培训教学方法。

2)行为调整和心理训练的教学方法。

角色扮演法:一种模拟情境活动的教学方法。设计一个与现实某一条件下可能相近的环境,根据学习者在这一环境可能扮演的角色,组织设计一套适合这一角色的测试项目。将学习者安排在逼真的模拟工作环境中,提出多种可能出现的问题,让其进行处理,用这些方法测评其心理素质及潜在能力的一系列方法。

3)综合能力教学方法。

①项目教学法:从职业的实际出发选择具有典型性的事例作为教学内容,学生在教师的指导下,按照要求搜集、选择信息资料,通过小组的共同研究,创造性地去解决问题,得出结论或完成问题。②案例教学法:通过对一个具体教育情境的描述,引导学生对这些特殊情境进行讨论。

1.3行动导向教学与传统教学的区别

传统教学以教师传授为主,注重认知目标的实现,学生参与度不强。传统教学在对系统化理论化的文化知识的传播上是适用的,但在对实践能力要求强、与实际工作需要结合紧密的计算机类课程的教育中是不适用的。计算机类本、专科学生的教学中,有相当多课程的教学并不一定都苛求系统化,理论知识够用即可,更重要的是实际能力的培养;对知识和技能的构建、整合和应用过程有具体而细致的目标要求。软件工程技术人才培养的目标是要求培养学生既能适应岗位,又能尽快适应工作环境。行动导向教学模式是基于学生的学习活动来构建知识、培养能力和职业素养,并能将这种能力在其他职业环境中得以运用和扩展,进而达到学用一致的目的。

通过以上分析,笔者尝试从教学形式、学习内容、教师地位、学生参与度和教学评价标准等方面,分析传统教学与行动导向教学的差异,见,表1。

从表1中可以看出,行动导向教学法对软件工程教育教学目标的获取有明显的优势,相对传统教学,它更适合也更需要在计算机教学中开展和实施。

2.行动导向教学的应用过程

在软件工程教学中实施行动导向教学,首先要建立工作任务,课程内容以工作任务进行组织,以开发的项目为中心,教学重点就是教会学生如何运用课程内容,开发该项目,进而完成工作任务。项目和工作任务之间形成一个对应关系,这就要为完成每一个工作任务设计一个项目。项目在形式上是一个具有实际价值的“产品”,内容上视为一个工作任务,其目标是培养学生的专业能力和职业素养。完成工作任务需要学习(行动)过程,通过学习(行动)来获取方法。通过一个个工作任务的实施,让学生理解和把握课程要求的知识和技能,培养分析问题和解决问题的能力以及团队精神、合作能力等。学生在“做中学”,教师在“做中教”,从而提高学生的各种关键能力。

软件工程概论是计算机专业的一门核心课程。结合课程目标从设计思路、课程目标、课程内容与要求、教学方法等几个方面进行行动导向教学尝试。

2.1设计思路

本课程以“突出能力培养”“紧扣工作任务”为原则选择与软件工程相关的知识,如软件工程方法学概述、系统分析、系统设计、系统实现、系统测试、系统运行、面向对象方法学等学习项目。项目的确定以软件工程师的工作任务和职业能力分析结果为依据,并以项目开发基本操作过程为主线编排。课程内容的选取结合高等院校学生的实际情况和就业需要,按照满足职业能,力培养要求的原则,紧紧围绕工作任务来进行。

每个项目的学习都按软件开发流程进行,以工作任务为中心融理论于实践,实现理论与实践一体化。教学过程中,要通过校企合作、顶岗实习等多种途径,充分开发学习资源,给学生提供丰富的实践机会,强化实训和实际操作,培养学生的动手能力。

2.2课程目标

通过任务引领的项目活动,掌握软件工程基本技能和相关理论知识,能胜任本专业软件工程师岗位的工作,同时具有诚实、善于沟通和合作的品质,在此基础上形成以下职业能力:

(1)编写各阶段文档的能力;

(2)熟练掌握使用结构化方法、面向对象方法进行软件开发;

(3)具备从事软件系统的测试与管理的基本能力;

(4)从工程的角度培养学生对已学知识的综合运用能力。

2.3课程内容与要求

针对上面的设计思路和课程目标,将软件工程概论课程相关的知识分解为7个学习项目;教学实施过程中,可分为3个阶段,具体内容见表2。

2.4情境设计

结合学生的毕业设计,对课程内容进行情境设计。限于篇幅有限,只列出面向对象方法学之面向对象分析的情境设计,见表3。

3.创新点

此项目按照行动导向教学的思想内涵结合信阳师院计算机与信息技术学院的实际情况,以软件工程概论等课程为依托实施行动导向教学,培养学生创新能力。

3.1教学设计原则的改变

软件工程概论在教学设计中始终贯彻以学生就业为导向,与企业合作为依托,以软件开发职业岗位群的需要确定人才培养目标为主体,以培养学生职业素质和职业能力为根本,将提高学生的就业竞争力和可持续就业能力作为课程教学根本目标的指导思想。由企业专家、项目组教师和校外课程专家共同组成了软件工程概论课程开发组,共同进行基于典型工作过程的教学设计。

3.2教学模式的设计与创新

传统的显性课程及教学模式在一定程度上关注学生技能的培养,较少关注学生的情感、态度等关键能力的培养。这种模式对学生职业能力的培养不全面,不能适应社会发展的需求;而行动导向教学模式设计,将单一课程的学科知识转变成系列的工作过程,将课本上死板的原理转变成现实运用的活技术,缩短了理论与实际运用的距离。它不仅涵盖了职业岗位所需的技术知识、技术能力,而且还将社会能力、方法能力、情感与态度能力一起融入到整个学习过程中,学生的能力得到全方位的提高。项目组依据软件开发的实际工作过程整合教学内容,依据企业项目需要调整工学结合的教学组织形式,设计了“校企结合、订单培养、顶岗学习、课题组”等多种教学形式,提高了学生的创新能力。

3.3课程教学体系的改变

行动导向教学与传统教学计划的最大不同是,基本固定第1阶段的课程,半固定第2阶段的课程,灵活安排第3阶段的课程。根据实际需要可以调整第2阶段的部分课程,根据市场需要和项目开发的要求开设第3阶段的课程。该课程的构建与开发,紧贴信阳市及周边地区经济与社会发展的需要,紧贴软件工程师岗位群的需要,以软件工程师岗位群所需知识、素质和关键能力构建课程体系。在软件工程专业调研基础上,打破了原有的具有明显学科化倾向的课程体系结构,依据“以典型工作任务为主线,以培养职业能力为核心”的指导思想重新构建了以工作过程为导向、以实际项目为载体与岗位能力相对应的课程体系。

软件工程导论篇3

关键词:探究式教学科学性系统性《软件工程》教学

《软件工程》课程是软件工程学科的一门专业课,因其具有较强的工程性和实践应用性,于是这门课程主要讲述软件系统开发的方法、技术规范和标准以及开发工具等,并且在软件工程学科人才培养体系中占有重要的地位。教师如何引导学生用科学的结构化方法进行软件项目开发,以及应遵循的开发流程、技术标准和技术规范非常重要。《软件工程》因其具有较强的工程性和实践性,教师在知识点的讲授过程中不能用简单的点对点方式进行知识灌输,学生通过死记硬背的方法而孤立地、片面地掌握某个原理,就可能会出现“虚有理论,缺乏实践”的现象。其原因是很多学生死记硬背很多基本原理,一旦让其具体应用就不知所云了。其结果是培养了许多理论具有片面性,实践能力越来越差的学生。因此,教师如何科学的引导学生掌握《软件工程》这门学科的开发思想才是关键点,首先要让学生有清晰地认识度,《软件工程》这门学科不是教条而是一种分析问题、解决问题的实用工具,掌握其基本原理是该课程的基础和前提,但核心是解决问题的思想方法、实践开发的思维。针对上述问题,本文系统地介绍了探究式教学方法在《软件工程》教学中的应用。

一、探究式教学的基本环节

探究教学思想在古代就已经存在了,例如在中国古代的孔子“启发式教学”,以及古希腊苏格拉底的“产婆术”[1]。杜威倡导“智慧五步法”,主张科学教学应遵循下列基本过程[2]:(1)在情景中感到要解决某种问题的暗示;(2)明确要解决的疑问是什么;(3)提出解决问题的假设;(4)推断所定假设的内在含义;(5)在行动中检验假设。探究式学习是学生在科学课中自己探索问题的学习方式[3],最大的特点是学习具有积极主动性,教师在引导学生进行探究式学习的过程中大致可分为四个教学环节:第一,具有观察和分析问题的能力。主要培养学生观察待解决问题的能力,通过学会对相关理论的分析,培养学生发掘规律的兴趣和能力。第二,确定研究目标。通过引导学生利用已学的知识,更准确的确定问题。第三,假设和逻辑推理。让学生大胆假设,小心求证,即提出合理的假设,在应用基本原理或方法进行逻辑推理寻求问题的答案。第四,把理论结论应用于实践。通过逻辑推理得出的理论结论还需要应用到实践中去检验,让学生明白到理论很重要,实践检验理论更重要。

二、探究式教学方法在《软件工程》中的应用

下面以《软件工程》课程中的软件工程管理为例子,简单说明这种教学模式,以下依次就是每个教学环节。

(一)让学生观察和分析待求软件的复杂度

例如,在一般性硬件系统中对可靠性设计有一条非常重要的基本原则———简单即为可靠。其实,这个原则也适合应用在软件系统中,现有的软件复杂性度量方法非常多,其中比较著名和实用的就是mcCabeQa方法,它能够比较便捷地计算出软件复杂度,并且可对软件进行检查、分析和查找可能导致错误的代码。通过对mcCabeQa方法的学习探讨,让学生自己总结出适合计算软件复杂度的理论方法。

(二)确定研究目标———软件工程管理的内容

软件工程管理的基本内容有哪些?我们的目标是逐一找出这些管理的内容,这些是我们需要探究的一个关键点,也是我们确定研究的目标。

(三)提出假设然后逻辑推理

软件工程管理有一个重要的内容是软件质量评估,所以我们需要对软件的质量作一些假设,然后在根据现实约束环节进行推理论证我们的假设是否合理。

(四)得出结论作用于实践

在步骤3的假设和推理后,我们可以得出软件工程管理的基本准则,最后让学生把这些准则应用到具体实际的软件开发中去。

(五)经验总结和讨论

通过实践以后,让同学们总结出经验。让学生充分认识到我们不能照搬书本上的方法和原理,要具体问题具体分析,把理论融汇到实践中去,在用实践来指导理论。

三、结论

传统的教学模式是一种以教师为主角的“填鸭式”教学,我们应该改变这种教学模式,创建以学生为中心的学习型教学模式。教师的责任是引导学生去发现和探索真理,这才是教育理论中的探究式教学。

参考文献:

[1]刘彬,李灏.孔子启发式教学法与苏格拉底产婆术之探源[J].中美英语教学,2006(6):64-67.

软件工程导论篇4

1、软件工程课程教学中存在的问题及探索

软件工程课程内容具有较强的理论性和实践性,学生在学习过程中感到内容抽象、工程方法复杂、难于理解,具体原因如下:(1)在现行的教材中,大部分都是从软件工程的基本理论与思想来讲述的,学生感觉太抽象;(2)对于学生来说,本课程涉及的理论知识抽象、难懂,如面向对象分析与设计理论、需求获取方法等;(3)本课程包含很多基本技术和方法,如数据流图、数据字典、结构化分析方法、面向对象分析方法、集成测试方法、项目管理的基本方法等,学生想深刻理解这些技术和方法的思想很困难;(4)软件工程项目规模较大,不可能在一门课的时间内把所有的细节都讲清楚,学生对软件工程项目的实现模糊不清;(5)新形势下学生的学习热情不高,畏难情绪严重,在学习上的钻劲和毅力不够。

针对这些情况,国内从事软件工程课程教学的老师对此进行了大量的理论教学与实践教学的探索。为了提高学生学习软件工程课程的积极性和主动性,帮助学生把学习软件工程的理论知识与软件项目开发结合起来,并提高运用软件工程相关理论和方法解决实际问题的能力,金陵科技学院在2009年9月从2007级计算机科学与技术专业部分学生中开始采用任务驱动的学习方法,即整个软件工程课程教学就是开发一个完整项目的过程,即明确软件工程项目开发分为六个阶段:可行性分析、需求分析、项目设计、项目实现、项目测试和运行维护,在每一个阶段,首先介绍实验任务,再给学生们讲解实现这些实验任务必须具备的基本知识,让学生们带着实验任务学习,并在规定的时间内完成这一阶段的实验,它与其他的任务驱动的软件工程教学有着本质的区别,很多文献提出的任务驱动实质上还是一个分模块的教学方法,而我们的教学方法是为了开发一个完整的软件项目,反过来学习理论的过程,即边实践边理论的过程。这样做的目的是对软件工程课程教学内容进行系统的规划、教学方法进行全面的改革,以期提高软件工程的教学效果。

2、任务驱动的软件工程课程教学方案研究

2.1本项研究的意义

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等诸多方面,软件工程课程在计算机学科的教学体系中占有重要的地位。该项研究可以为软件工程课程教学提供教学内容、教学方法和实验项目设计方面的指导,为学生学习软件工程课程提供一种全新的思路,多方面帮助学生掌握软件工程的基本原理和方法,培养和提高学生理解软件工程分析设计过程和运用高级语言进行编程的能力。所以说,该项研究具有非常重要的现实意义。

2.2本项研究的主要内容

任务驱动的软件工程教学方案研究主要是把软件工程的基本原理和方法融入一个完整的软件项目开发当中,用开发过程中的实际需求来驱动学生学习书本上深奥的软件工程理论知识,具体内容安排如下。

2.2.1设计课程教学所必需的实验项目

实验项目设计成功与否是整个项目成功的关键,本项目首先由课程组教师从和我院合作的企业中选择一个合适的软件项目并进行适当的整理,然后采用软件工程的思想将开发分成一个个小的实验任务,对于比较复杂的实验内容,可以分为两个或多个实验来做,最后再进行汇总。对于每一个实验任务制定实现这一任务的实验目的、实验要求、实验内容、实验步骤和预期的实验结果,让学生们很容易理解并实现这些实验任务。

2.2.2制定课程教学计划

理论知识的讲解是完成实验任务的必备条件。为了让学生能够最快地掌握软件工程的基本原理和方法,本项研究详细分析实现每个实验项目需要的基本理论知识,然后按照书本相关内容的先后顺序串联起来并编写成教学计划,把软件工程最精华的内容和最新的发展体现出来。老师给学生们布置完实验任务后引导学生反过来学习这些完成实验所必需的书本内容的教学方法,它可以使学生的学习带有目的性,并增加其学习的积极性和主动性。

2.2.3编写课程教学的辅导材料

实验项目和教学计划确定了实验任务和讲授的基本知识,为了帮助学生更好地掌握软件工程各个过程之间的衔接知识,深刻理解软件工程技术、过程和方法,对软件项目开发过程中相关知识的重点和难点进行辅导,编写一套学习指导,这是本项研究成功的重要基础;为了巩固各个知识点,对于课后的大量习题,给出习题解析,它与学习指导相互促进,相得益彰,这也是我院计算机专业软件工程课程授课所必备条件之一。

2.2.4构建课程教学的网络资源信息平台

在院内软件工程课程网站上各种学习资料,并开发专门的老师与学生、学生与学生交流区,这样,学生可以随时获得该课程的最新资料,还可以把学习中遇到的问题及时反映到老师那里;老师可以根据网上学生反馈适时改变教学内容和教学进度。

2.2.5开发课程教学资料,进行教学试点研究

本项研究从2008年开始,金陵科技学院信息技术学院软件工程课程网站于2009年3月建立,多媒体课件在2008年底已完成。为了检验本次教学改革的效果,从2009年9月份开始在金陵科技学院2007级计算机科学与技术专业部分学生中进行试行软件工程课程实施方案,我们多次与学生交流,探索实施方案中存在的问题,及时整改,使之更适合实际。

2.3本项研究的总结

在实施过程中绝大多数学生在实验教学和理论教学中同学表现出极高的热情,项目组老师一致认为达到了预期的目标,但也存在一些问题,主要表现在:(1)软件工程各步骤全体学生都能够完成,但是各组学生完成的情况差别很大;(2)个别能力特强的学生感觉“吃不饱”。2010年我们在全院计算机专业软件工程课程教学中实施任务驱动的教学方法,并在此基础上整理出了一本软件工程教材,并与机械工业出版社签订了2011年底的出版协议。

3、结语

任务驱动的软件工程课程教学研究与实践是以实验为课程教学的主线,靠实验带动理论的学习,学生变被动学习为主动学习,这样能够极大地调动学生积极性和主动性,充分地挖掘学生学习潜能,最大限度地提高学生学习兴趣。

参考文献:

[1]由布西.中美《软件工程》教材编写及教学实施方法比较研究[J].计算机教育,2008(20)

[2]刘金锋,李海平.案例教学法在软件工程教学中的应用[J].成功(教育),2011(3)

[3]巫华芳等.软件工程教学案例设计初探[J].教育与职业,2007,(27)

软件工程导论篇5

1.1教学理念

传统软件工程教学比较注重理论教学、教师讲授为中心的教学理念。在课程教学中,教师往往会花费大量时间与精力把统一、规范的软件设计与开发理论、方法及技术教授给学生,力求让学生形成良好的软件设计与开发思想与习惯。在此情况下,学生可能对整个软件设计及开发流程有了“理性”认识,但却缺乏真实软件系统实践开发的“感性”认识。实际上,理论指导下的具体的软件系统开发案例及经验介绍更为重要。

1.2教学内容

国内一些学校的软件工程教学仍然是以传统的软件工程理论及技术作为重点,教学中讲解的内容以“需求分析—总体设计—详细设计—编码及实现—测试维护”这种从顶向下、逐步细化的思路为教学线索。在实践中,主要以开发图书馆管理系统、人事管理系统等miS系统作为课程的实践内容。实际上,软件设计及开发技术发展迅猛,特别是近年来的云计算、移动互联网及大数据等新技术不断涌现,必然要求在软件工程教学中注入新的知识元素。教师必须对教学内容及时更新与补充,否则学生所学知识将严重滞后于技术的发展。

1.3教学方法

软件工程课程的理论性与综合性强,必须具备许多的先导课程知识(如程序设计语言、数据结构与算法等),一般是在大学四年级才开设。在教学中,如果只采用单一教学方法或者过于注重理论教学而轻视实践教学,时间一长,学生(尤其是大四学生)很容易产生厌倦的情绪,影响教学效果。此外,该课程的授课对象为即将毕业的大四学生,如能运用一些实际的软件开发系统或启发式案例进行教学,讲透系统中的一些重要知识点、核心算法以及关键技术,不仅能够充分发挥多种教学方法的交叉优势,更能够对学生毕业设计以及就业产生积极影响。

1.4课程考核

目前,一些学校的软件工程课程采用的是传统的笔试加平时成绩的考核方式。笔试主要考核学生对软件工程基本理论及知识点的掌握程度,比如瀑布模型、数据流图、耦合与内聚、详细设计工具(程序流程图、n-S图、paD图)以及Cmm等。这种考核方式能够增进学生对软件工程概念性与原理性知识的记忆,却不能促进学生软件设计与开发能力的提高。

2引入mooC的软件工程系列课程教学改革

mooC(massiveopenonlineCourses),即大规模在线开放课程。2012年以来,美国一些顶尖高校陆续开发了网络学习平台,如哈佛大学与麻省理工联合发起的edX、斯坦福大学创立的Udacity和Coursera,以及可汗学院(Khanacademy)。这些mooC学习平台能够提供免费网络课程,教学效果明显,热遍全球。我国的北大与清华于2013年5月加入了edX,并上线了多门课程;北大、上海交大与复旦加盟了Coursera。我国一些重点大学也正在利用mooC方式进行教学方法改革。mooC中很多课程始于计算机专业,mooC对计算机及软件工程专业的影响也是最大的。在现行的各个mooC平台中,计算机与软件工程课程的比例是最大的。例如,Coursera平台上现有计算机类课程94门(其中软件工程课程为55门);edX平台上现有计算机类课程21门(其中软件工程课程为10门);Udacity平台现有计算机类课程23门(其中软件工程课程为18门)。因此,在传统软件工程系列课程教学中引入mooC进行教学改革,势在必行。

2.1形成“以学生为中心”的教学理念

在软件工程教学中,可将mooC作为课堂教学的强化与补充,形成混合式课程,采取传统教师课堂讲授与学生mooC在线学习相结合的混合教学模式。同时,应改变注重理论教学、教师讲授为中心的传统教学理念,变换教师与学生角色,切实形成以学生为中心的新的教学理念。mooC将充分体现以学生为中心的教学理念,可以重新构造软件工程个性化学习轨迹,实现师生及学生之间的互动讨论与协作、即时的系统测试以及学习反馈与评价。

2.2设计“传统知识与新理论及新技术”相结合的教学内容

在教学过程中,在传统课本知识基础上,需要引入一些新的软件设计、开发模型及技术。一方面,建议同学们参考新版书籍或mooC上的电子资料;另一方面,及时补充当下流行的软件设计与开发方法及热门技术。例如,在云计算SaaS模式中,以Blog,SnS,RSS等为特征的web2.0服务方式造就了数量众多的服务资源,包括webServices、webapi等,使得没有或较少编程专业知识的终端用户能够实现面向服务的软件设计与开发工作。像类似于Soa架构,webServices与组合,RSS技术,企业mashup技术等内容需要补充到课堂内容教学中。

2.3发展“以案例为驱动”的理论及实践教学方法

教师将mooC作为软件工程教学线上环节,提供以案例为驱动的理论及实践教学微视频,让学生提前自主预习课程知识。教师在课堂上重点讲解具体案例,梳理各个理论知识点以及核心的算法及关键技术。其中,案例的选择非常重要,可以选择教师自己科研工作中实际开发的软件服务系统或者开源的软件系统,制作成微视频,结合自己的切身实践经验,把宏观的理论知识以及微观的具体技术细节教授给学生。

2.4采用“引导和激励”的课程考核方式

mooC支撑下的软件工程课程考核,应以软件设计与开发能力为目标,将课程考核分成平时考核、期中考核与期末考核3种方式。借助mooC,根据学生的在线学习轨迹,汇总学生的在线学习情况,加大平时成绩考核力度。在课堂教学中期,引入具体项目设计与开发任务,以项目开发的完成情况作为期中考核标准。期末考核采用课程论文形式,对给出项目要求书写需求文档、总体设计与详细设计方案,以及数据库设计说明。

3构建以“就业”为导向的软件工程人才培养新模式

1)国际知名it企业尤其注重扎实的数据结构、算法和代码以及软件设计能力;良好的英文读写以及听说能力。2)8家it企业都要求熟练掌握一门或以上的程序设计语言,C\C++\JaVa仍然是主流的软件开发语言,而像python、.net、pB、VS2008等也受欢迎。3)8家it企业基本上都要求熟悉数据库理论及技术,尤其是mySQL、SQLServer以及oracle数据库。4)一些流行新模型及新技术,比如Hadoop云模型、android应用开发系列技术,也是目前企业所急需的。根据以上的总结,在软件工程人才培养的过程中,应以“就业”为导向,以培养符合市场需求、受欢迎的软件工程人才为目标,具体建议如下:1)必须加大与软件工程相关性非常强的先导课程的教学与实践能力培养。尤其需要投入大量时间与精力到数据结构、算法设计以及数据库理论与技术这3门课程的教学中,使学生具备扎实的软件设计与开发基础能力。2)务必培养学生精通至少1门程序设计语言,熟练使用至少1种开发工具,并在此前提下,以开发出一个在一定代码量(万级)以上的自己的“软件作品”为大学四年的实践目标。3)教师要及时引导学生了解并掌握一些软件新理论、新模型与新技术,鼓励学生参与学术活动,并邀请公司技术主管或教师以及高年级学生中的技术达人定期举行技术讲座。

4结语

软件工程导论篇6

关键词:软件工程;基本架构;课程体系

中图分类号:G642文献标识码:B

1概述

随着我国现代化和信息化建设的快速发展,计算机软件产业已初具规模,并呈现持续快速发展的态势。社会对软件工程人才有着旺盛的需求,并要求高校培养出基础理论和专业知识扎实、工程实践能力强、具有持续创新能力的高层次复合型软件工程人才。他们需熟练地掌握和运用先进的软件工程化管理方法和最新的软件技术,同时,面对新挑战要善于钻研、勇于创新,以便能够很快地成为软件企业的技术中坚和引领软件企业发展的领导者。

早在上世纪八十年代初期,“软件工程”课程便已经成为北京航空航天大学(以下简称北航)计算机科学与工程系(现为计算机学院)的研究生学位课,随后又成为本科生的专业必修课程。九十年代,本科生和研究生课程体系又逐步增加了“软件测试技术”、“个人软件过程”、“面向对象技术”、“人机用户界面设计”、“信息系统分析与设计”、“软件过程管理”、“软件体系结构”、“软件需求管理”、“软件项目管理”等系列课程,不断强化对软件工程技术和管理方面专业知识的讲授,以及规范化软件工程方法的训练。2001年以来,我们将量化的软件过程控制思想和一些日趋成熟的工程训练方法引入到软件工程课程实践中,并指导“软件工程”课程实践,进一步强化对学生软件工程实践能力的培养。

然而,面对不断涌现出来的软件工程新概念、新方法、新技术和新工具,如UmL、Cmm&Cmmi、构件化开发等,“软件工程”课程体系的设计和教学方法的改革依然是一个严峻的课题:

(1)从课程设置和讲授方法上看,“软件工程”学科特有的工程性,技术与管理的综合性,新兴学科的快速发展和变化等特点,使得“软件工程”课程体系设计面临一系列突出问题,包括培养目标的确定、授课内容的遴选、课程系列的设计和组织、讲授的方法、实践环节的设计、考核的方式、学习效果的评判、课程体系的评估与持续改进等。特别是在课程设计和软件开发实践环节中,由于缺乏对过程的有效指导和控制,难以有效地培养学生的软件工程能力,包括在软件过程管理、软件项目管理、软件配置管理、软件质量管理,以及需求分析、体系结构设计、规范的模型构建与分析、文档撰写等方面的基本训练。

(2)从教学效果上看,来自学生、教师,以及社会各方面的反馈表明,“软件工程”课程系列的重要性已得到普遍认可,然而实际效果与期望之间还存在着显著差距,突出表现在“软件工程”课程大多属于“基本概念和方法的概论”加上部分“新技术的讲座”。这使得学生的学习效果不佳,普遍存在基础知识掌握不牢固、基本概念的理解含混在后续课程、毕业设计和软件开发实践中无法自觉有效地运用成熟的软件开发方法。

此外,由于“软件工程”相关课程的设置和内容的选择主要取决于任课老师的个人观点,缺乏整体和系统的设计及论证。

针对上述问题,北航软件工程研究所对“软件工程”课程体系开展了长期的研究。自2001年以来,以“软件工程”课程系列的主讲教师为主体,我们分别从“软件工程”课程体系建设的总体目标、指导思想、课程体系的总体框架、每门课程的讲授内容、彼此之间的衔接和课程实践设计等方面进行了反复探讨,重点开展了面向本科生和研究生的一体化“软件工程”课程体系研究与建设,进一步凝练了软件工程人才培养的基本理念和目标,以及与之相适应的课程体系。

2指导思想和目标

北航计算机科学与技术学科是国家重点一级学科。本学科确定的建设目标是成为国内一流、国际知名的高水平研究型学科,培养高素质、高层次人才。作为本学科的骨干课程,“软件工程”课程体系的基本定位是面向软件行业发展的基本需求,培养基础理论和专业知识扎实、工程实践能力强并具有团队协作和创新能力的高层次软件工程复合型人才。

为此,我们确立了“软件工程”课程体系建设的指导思想,即从多个层面向学生系统地和渐进式地介绍日渐完善、成熟的主流软件工程化方法、技术和工具,并强化规范和基于统计过程控制的软件工程训练,同时引导学生积极探索最新的研究领域,及时了解最新的研究成果,培养学生在软件工程实践中发现问题和解决问题的能力,使学生深刻理解并牢固掌握基本思想和方法,进而逐步培养学生在大型软件系统开发过程中自觉运用软件工程化方法的能力、组织管理与团队协作能力以及对于软件工程化方法的持续改进与创新能力。

3“软件工程”课程体系的基本架构

软件工程领域的新问题、新概念、新方法、新技术、新工具层出不穷。一方面,软件工程领域的知识爆炸向课程的设置提出了挑战;另一方面,其知识结构的相对稳定性和发展规律也提供了构建“软件工程”课程体系的基本架构的基础。通过对软件工程知识体系的深入剖析以及我们20多年软件工程课程成功教学实践的凝练,对照软件工程知识体系SweBoK、aCm和教育部颁布的本科生软件工程方向专业规范,本文提出了一种基于软件工程技术和管理双主线,面向本科生和研究生两个层级的“软件工程”课程体系基本架构,简称为指数型(2n)组合架构,如图1所示。在这个架构下,我们将课程体系的总体目标、讲授内容和实践要点等进行适当的分解,以确定各门课程的目的、主要内容以及相互之间的关联,并帮助学生根据需求选择不同的课程组合。

该架构包括如下基本要素:

(1)两条主线:软件工程技术和软件工程管理;

(2)两类学生:本科生和研究生;

(3)两个层次:面向本科生的基础知识和基本训练、面向研究生的系统化方法与综合实践;

(4)两种能力:规范化的工程实施(包括开发和管理)能力和持续改进与创新能力;

(5)两类课程:软件工程技术类课程、软件工程管理类课程;

(6)两种教学方法相结合:课堂讲授、小型项目实践的过程追踪与指导;

(7)两方面的考评:基础知识和基本能力的考试、小型项目实践的过程结果。

在这种架构下,要素之间彼此交叉支撑,各类课程系列得以分层细化,并具有以下特点:

(1)主线清楚,面向技术和面向管理的两类课程的划分有助于突出各自的侧重点,避免教学内容的偏颇和重复,强调彼此的关联与支撑。

(2)层次分明,界定了本科生和研究生各自的学习重点和对能力培养的基本要求。

(3)分级细化,明确专业课程及其定位,优选各类选修课程。

(4)易于调整,在基本结构保持相对稳定的前提下,可以针对新近的技术发展动态,分层级地对各门课程的内容进行调整,或增减课程。

(5)易于评估,基于该架构,有助于直观地评估课程的增减或者课程内容的调整对整个课程体系的影响。

4“软件工程”课程系列的设计

上述“软件工程”课程体系的基本架构可以用来指导课程系列的设计和组织以及对课程系列讲授内容的重点、覆盖面等进行评估。

对于“软件工程”专业的学生而言,应当学习课程包含了三条课程主线(或称三类课程),其中计算机科学与技术专业课程是公共专业课程体系,而软件工程技术和软件工程管理这两类课程构成软件工程课程系列。表1中扼要地列举了软件工程方向的本科生和研究生应当选修的课程系列(其中阴影部分为重点课程),包括:

(1)计算机科学与技术学科/专业公共基础课程:奠定计算机专业基础,扩宽知识面。

①公共课:数学分析/高等代数、大学英语、工程训练、大学语文、第二外语等。

②基础课:

a)计算机基础:计算机导论、算法和数据结构、高级语言程序设计(1、2);

b)计算机理论:数理逻辑、集合论和图论、组合数学、概率统计(a);

c)计算机硬件:数子电路和数字逻辑、计算机原理和汇编语言、计算机接口与通讯、计算机体系结构、计算机网络;

d)计算机软件:编译技术、操作系统、数据库系统原理。

(2)软件工程专业课程,包括:

①软件工程技术类课

a)必修课:面向对象技术;

b)选修课:

i.软件代码开发技术、软件质量保证与软件测试技术、软件工程工具与应用;

ii.相关选修课:嵌入式软件开发技术、web应用软件开发技术、信息系统分析与设计。

②软件工程管理类课

a)必修课:软件工程导论;

b)选修课:

i.个体软件过程、软件项目管理、软件配置管理;

ii.相关选修课:团队协作与社会实践、软件经济学基础。

5结论

本文简要介绍了本学科“软件工程”课程体系建设中需要考虑的主要问题,给出了一种“软件工程”课程体系基本框架,分析了其主要特点,并在此基础上,给出了一个基本的“软件工程”课程系列。

如前所述,课程体系建设涉及多个要素,“软件工程”课程体系更受到软件工程这一新兴学科发展的影响,因此,其基本架构应当能够很好地组织软件课程系列,并适应软件工程的发展和变化。在这样一个基本框架下,能够比较清晰地判断课程及其内容的覆盖面和取舍是否恰当,为课程系列的构建提供了有效的支持。

教学方法的改革,特别是与之配套的教学实践的设计和对实践过程的指导,是一项艰巨的、富有挑战性和长期性的研究课题。多年来,我们针对本科生的软件工程课、研究生的高级软件工程课等课程各自的要求和特点,进行了多年的研究和实践,积累了重要的经验。实践证明,参考这样的架构,有助于相关课程的组织和协调以及持续的改进。

参考文献:

[1]北京航空航天大学.北京航空航天大学计算机学院“十一五”发展规划[Z].2006.

软件工程导论篇7

关键词:校企合作;软件工程人才;培养模式;创新能力;实践教学;国际交流

中图分类号:G642

文献标识码:B

文章编号:1672-5913(2008)21-0029-04

软件产业既是我国重点发展的具有战略性质的基础产业,又是能将现代it技术与我国深厚文化底蕴融合的创意型产业。软件产业的发展是推动经济发展、保障国家安全的决定性因素,对促进国民经济增长、国防建设现代化、社会信息化,推动新技术的发展和新产业的产生,推进经济结构调整、转变经济增长方式,促进经济、社会协调发展和先进文化的传播具有重要的战略意义。

软件是信息产业和传统产业的核心和灵魂,我国虽然是软件应用大国,但目前还不是软件产业大国。为此,我国近年来了一系列政策和措施,扶持软件产业的发展,如《关于鼓励软件和集成电路产业发展的若干政策》(国发[2000]18号文件)、《振兴软件产业行动纲要》(2002至2005)[2002]47号文件等。随着政策环境不断改善,我国软件产值增长速度明显加快,从1998年的325亿增长到2005年的3900亿,软件技术渗透到各行各业、各个领域,促进了新学科的发展和新产业的建立。但与发达国家速度相比,我国软件产业仍有较大的差距。

目前,制约我国软件产业品牌化、规模化和多元化发展的主要瓶颈是软件人才结构性矛盾突出,具体表现为:

(1)高端人才供给匮乏,缺乏高层次、高素质、创新型人才。即缺乏能够紧跟世界前沿技术动态和趋势,掌握符合国际标准的软件工程规范和技术规范,具有大型系统的开发管理经验,熟练运用一门以上外语,具有良好的团队协作能力,进而能够参与国际软件发展与竞争的高层次软件工程人才;如成都市软件协会分布的《成都市软件从业人员2007年上半年供需报告》称,2007年成都市软件从业人员缺口约8900人,而其中的高端人才缺口约6900人。软件产业的迅速发展对软件行业从业人员提出了更高的要求,尽管国内高校软件工程人才的培养数量日益攀升,但是高端软件工程人才的匮乏却严重阻碍了我国it企业的发展。

(2)人才规模不足,离产业发展需求还有差距;现在我国共有一万多家企业在从事软件开发及相关业务,而目前全国的软件工程人才总量与之相差甚远,缺口很大。

(3)人才知识结构不合理,目前我国的软件工程人才主要集中于编程人员,而软件架构师、项目管理、文档管理、测试等等人才比较缺乏。缺少面向产业、适应企业需求、工程能力强的人才,学生进入企业要“转型”,形成企业人才的“滞后”现象。

1面向校企合作,优化和完善知识结构和课程体系

相对于计算机科学与技术专业而言,我们认为软件工程专业应重点培养工程与技术方面的人才,更强调软件设计与开发过程中的系统性、可操作性和可重用性。

为此,我们参考和借鉴ieee在2003年推出的软件工程课程大纲以及ieee/aCm软件工程学科组于2004年5月公布的软件工程教育知识体系(CCSe2004SeeK),认为软件工程人才的合理知识结构应包括通用的软件工程知识、软件应用领域的专业知识和具体软件工具和环境的知识几个方面。其中通用的软件工程知识应涵盖软件工程基础知识和技能,而软件应用领域的专业知识指还应该具有行业领域的知识,如嵌入式软件工程硕士必须具备特定行业,如移动设备、数字家电、数控机床、汽车电子、医疗电子、航空航天、工业控制等领域的相关知识,才能胜任工作。

为此,在进行软件工程教学方案与课程内容体系改革的过程中,我们根据软件产业发展的需求,动态调整课程设置,逐步加大选修课的比例。从学校来讲,要从企业的实际需要和it发展出发,制定适应企业需求的培养方案及人才培养模式,为企业发展提供更为广泛的服务体系,也为学生提供良好的就业环境。在多模式校企合作中,我们提出了一种定制式课程建设框架。即将选修课划分成若干模块,以适应不同企业需求。同时,由于不同层次软件工程人才的定位不同,相应的课程设置与教学方法也应有明显的区别。其中软件工程本科教育定位在以技术能力培养为主,本科生在校期间计算机软硬件基础学习较多,形成思维定势,但开发大项目实践经验很少,没有切身体会,如果没有经常性的编程练习,学习兴趣逐渐消失,因此对本科生而言,重点应放在编程与系统设计能力的培养上。基于此,我们开设的软件工程核心课程包括软件工程概论、软件测试技术、人机交互技术等课程。软件工程硕士教育定位以工程能力培养为主,注重软件工程方法与系统开发能力的培养。特别是在职工程硕士,他们在工作中有很多机会接触项目,参与程度较深,工作经验丰富,深感系统开发中方法和管理的重要性,对研究开发方法、过程、工具有实际需求,深感软件工程对于解决实际开发中遇到的问题很有帮助,他们希望对新技术、新方法有更多的介绍,希望通过课程能够互相交流,共同提高。对于他们,应以实例学习和管理为主线,介绍软件系统开发的实例和软件项目管理的基础。其课程的设置要注重专业知识的前瞻性和国际性,基于此,我们开设了软件项目管理、软件体系结构、系统分析与设计等高级课程。

对软件工程教学方法与课程体系进行改革,还应根据软件产业发展的需求以及与企业接轨,动态调整课程设置,逐步加大选修课的比例,其中部分课程(如软件项目管理、软件体系结构、人机交互技术等)尝试实施双语教学,通过引进国外软件工程经典和优秀教材,从使用英文教材、中英文结合教学入门,逐步增加英语授课比例,最后过渡到全英语教学。

2改革实践教学,构建适应企业需求的立体化实践体系

实践教学是实用性软件工程人才培养的重要环节,也是创新能力培养的关键环节。必须建立多层次立体化实践教学体系,才能达到全面培养学生创新能力的目的。

2.1在理论教学中培养学生的实践能力

变理论教学与实践教学的分离为融合,实践教学与理论教学并重,组织和鼓励师生参加实践教学改革。在课程教学内容的选择上,注意采用最新、最有用的知识,紧跟社会潮流;对课程实验、课程设计,要求授课教师既讲授理论知识,又指导上机实验,充分体现理论教学与实践教学为一体的教育思想。同时,在教学计划的指定上,加大实验学时比例,理论教学精讲,实验教学多练,加强实验教学改革,建立企业实际项目库,以企业实际项目开发为背景,科学设置实验题目,通过实验促使学生将所学理论知识转化为分析与解决问题的能力。

为了培养学生的创新意识,提高学生的创业能力,必须重视课内外实践教学环节对培养和发展学生能力素质的不可替代的作用,加强课内和课外实践教学的整合,在培养计划中进行统筹安排,形成完善的实践教学体系。在实践教学的环节中,加大综合性、设计性实验的比例,加强实习、工程实践、课程设计、毕业设计(论文)环节中的工程训练,把提高学生的创新能力和实践动手能力贯穿于培养计划的始终。

2.2在课题研究中提高学生的实践能力

引进软件企业的实际项目,让学生结合实际项目进行软件开发综合训练。软件开发实训严格按照软件工程开发流程进行,聘请企业资深技术人员进行指导,通过软件开发实训,既培养学生的实战能力,同时又培养学生的沟通协调能力和团队合作精神,为毕业设计和就业打下良好的基础。

目前,我们和摩托罗拉中国有限公司、苏州国芯科技有限公司、紫金电子有限公司等多家单位联合建立了苏州大学摩托罗拉单片机实验室、江苏省嵌入式软件技术中心苏州大学分中心等具备一定科研能力的实验室,从而为学生创新能力的提高创造了条件。同时,学院成立了自己的开放实验室,主要为学院学习成绩优异且有较强科研能力的学生提供了进行创新性实验的条件,并制定了完善的开放实验室条例,规定了其运行机制及运行模式。如进入开放实验室的学生必须结成科研小组,采用自主选题、指导教师指定课题或企业提供课题等方式,经开放实验室评审委员会评定后才能进入开放实验室。科研小组必须在一定时期内完成一定的科研任务,并提交课题总结报告或论文。由于开放实验室必须以课题小组形式申报课题,开放实验室在培养学生创新能力的同时,还培养了学生的团队开发能力。因此,开放实验室为广大学生提供了自由发展的空间,大大激发了学生的学习热情、创造激情,为其成才创造了有利条件。

2.3在各种专业竞赛中增强学生的实践能力

为培养学生的实践能力,学院经常组织开展各种软件设计程序竞赛,支持学生参加国内外举办的各种软件设计大赛,培养学生的创新精神和迎接挑战的能力。近年来,多次组队参加aCm/iCpC(国际大学生程序设计竞赛)并获得铜奖。参加省程序设计大赛获一等奖,参加微软“创新杯”全国大学生软件开发大赛等。这些专业竞赛促进了学生实践能力的提高。

3加强校企合作,构建与产业水平同步的工程实践环境

工程实践环境是教学体系的重要环节,其重点在于构建一个和产业技术水平同步的高水平的学生工业实习基地。为学生提供实际项目开发机会,使得学生能在毕业前深入体会企业文化,完善自身职业素质和工程能力。

3.1加强实习基地建设,提高学生工程实践能力

目前,我们已在苏州工业园区、苏州新区的摩托罗拉、amD、罗技、旺宏等世界知名it企业建立了软件工程专业教学与实习基地,并与中创软件工程股份有限公司合作在昆山成立了苏州大学中创软件工程学院实习基地,与福华先进微电子(上海)有限公司联合招收嵌入式软件工程硕士。在实践中教,在实践中学,使得软件工程专业学生实践能力明显增强。我们将企业实习划分成三个阶段。一是认知实习,时间一般为一周,主要让学生全面了解企业的运作模式、各企业主要研究方向以及当前流行的开发工具和软硬件平台。二是暑期社会实践,时间为50天,主要让学生利用暑假深入企业,参与企业的一些小型项目或一些模块的开发,甚至是文档的整理工作,目的是让学生知道所学知识到底能如何运用、并初步具备运用所学知识进行一些实际项目开发的能力。三是毕业实习,时间为一学期,主要让学生综合利用所学知识进行较为完整的项目开发,目的是让学生毕业后具备独立胜任项目开发与设计的能力。在实习基地建设中,应注重学生管理与质量监控。以毕业设计为例,我们制定了一系列有关毕业设计的规章制度,如毕业设计计划、毕业设计选题原则与类型、毕业设计的步骤、校外毕业设计试行办法等条例,并发放企业严格执行。对于安排毕业实习生多的企业,我们还专门安排指导教师长驻企业,从而确保了毕业设计和论文的质量。

3.2聘请国内外著名企业的高水平专家,拉近学生与社会、企业之间的距离

我们聘请企业授课教师、高水平企业技术骨干作为学校课程指导小组顾问,并定期聘请国内外有丰富实践经验的企业家、技术骨干为学生开设相关专业课程,最大限度地拉近了理论与实践的距离,拉近了学生与企业之间的距离。我们还定期举办专场讲座或技术报告会,请一些著名it公司的高级技术、管理专家给学生作专题讲座,让学生及时了解最新的业界动态,跟踪it领域的最新研究成果,从而保证了学生既能掌握软件工程领域坚实的基础理论和宽广的专业知识,又能掌握解决工程问题的最先进技术方法和实用的技术手段,让他们有较强的知识、能力和素质去适应多变的社会需求。每位软件工程硕士生除了配备双向选择的校内指导教师以外,还配备由实习单位推荐的一位具有丰富工程经验的企业人员作为校外企业指导教师。企业导师着重对实习和毕业设计的各个环节进行具体指导和严格把关,校内导师则是对学生进行设计思想的理论指导和毕业论文的指导。同时,学院还设专人对学生实习过程进行跟踪、指导与控制,在双导师之间积极促成沟通,共同完成对软件工程研究生的指导。

3.3搭建学生与企业双向选择的交流平台

由于学生在兴趣、专长和职业规划上的差异,因而他们对实习企业有各自的选择标准,但同时企业也要选择适合本单位要求的学生,为了使学生更好地找到适合自身特点的实习单位,企业能招收符合自身要求的学生,学院通过网上公布实习单位及其相关信息,学生自主报名、学院推荐,实习单位进行笔试、面试等考核程序,确定学生的实习单位。通过这种选择,企业与学生之间一开始就有了很好的信任度,双方都能最大限度地发挥主动性、积极性和创造性。

4结束语

信息化需要大批软件工程人才,各高校软件工程人才的培养应该有自己的定位和特色,目前要特别重视软件工程能力和素质的培养。实践能力是学生综合素质的重要组成部分,本文针对当前国内高校软件工程人才培养机制存在的主要不足,从改革实践教学、加强校企合作、开展国际交流合作等方面,阐述了如何加强学生的实践创新能力,培养适应企业需求的高素质的软件工程人才的几点做法,为高质量、实用性的软件软件工程人才培养作出了有益的探索。

参考文献

[1]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术发展战略研究报告暨专业规范(试行)[m]高.等教育出版社,2006,9.

[2]教育部软件工程学科课程体系研究课题组.中国软件工程学科教程CCSe2004[m].清华大学出版社,2004,11.

[3]杨芙清.中国软件工程二十六年.2006中国计算机大会特邀报告[R].北京,2006,10.

[4]骆斌.软件工程专业工程化实践教学体系的构建与实施[J].计算机教育,2005,(4):25~28.

[5]张广泉,杨季文.多层次软件工程人才培养的探索与实践[J].计算机教育,2005.(12):40~41.

软件工程导论篇8

一、引言

软件工程是一门交叉性的工程学科,它将计算机科学、数学、工程学和管理学等基本原理应用于软件的开发与维护中,研究重点是大型软件系统的分析与评价、规格说明、设计和演化,同时也涉及管理、质量、创新、标准、个人技能、团队协作和专业实践等方面的内容。然而,软件工程开展近30年后,人们才对软件工程核心的知识体系达成共识。在国际上,ieee-cs和acm联合组建的软件工程协调委员会(swecc)了软件工程知识体系和推荐实践swebok2004[1],为软件工程职业实践建立了合适的准则和规范集,以作为产业决策、职业认证、课程教育的依据。基于swebok,swecc进一步定义了其中可以纳入教育程序的知识体系,包括本科生软件工程教育计划se2004中的seek、研究生软件工程教育计划gswe2009[2]中的cbok、软件工程职业道德规范和职业实践。

我国2002年启动了软件工程硕士培养程序。借助于计算机科学技术、数学、管理科学与工程诸多学科,软件工程已由计算机科学与技术专业下的一个学科方向,发展为一个独立的新兴交叉一级学科。但由于我国传统的高等教育注重科学研究能力培养,工程化人才教育开展时间较短,培养体系尚在不断改革完善,因此在很多院校中软件工程学科还没有脱离计算机科学与技术的范围,所培养的软件工程人才与工业界的要求尚有一定距离,整个硕士培养过程中,课程体系的设置是影响研究生业务能力和素质的重要因素,因此以企业需求为导向,以软件工程知识体系为核心,以训练实践能力的为目标的层次化软件工程课程体系改革对促进高等教育面向社会需求培养人才,全面提高工程教育人才培养质量具有十分重要的示范和引导作用。特别是在硕士生的培养上,对课程学习与学位论文的要本文由收集整理求一般是同等并重,合理的课程体系是高等院校保证培养目标和形成办学特色的重要手段。软件工程硕士的定位和其他学生不同,这为我们的课程设置、建设与管理提出了新的挑战。

通过对国内众多高校的软件工程专业培养方案和课程设置进行分析,将其分为以下四种主要类型[3]:

(1)完全独立型:将软件工程彻底从计算机科学与技术专业分离出来,作为独立的一级学科,课程设置上综合计算机、数学、管理科学与工程等学科,偏重于数学基础,但实践能力较缺乏。

(2)以计算机科学与技术主体课程为基础,以软件工程理论课程为核心,加强实践教学型。以计算机科学与技术的课程体系为主体,教学中突出软件工程的知识体系,加强实践教学,根据企业需求或者人才市场需要,按照工程思想进行实践教学,同时校企结合,试图在实践中摸索和学习软件工程的工程理念,但在进行实践之前的软件工程理论基础不牢固。

(3)实践加强型的计算机科学与技术课程体系,在这个模式下,课程体系基本和计算机科学与技术相同,只是加强了实践环节,学生在学习和就业方面没有脱离计算机科学与技术专业,工作中所学的工程理念需要自己去学习。

(4)其他类型,鼓励学生参加各种软件大赛,推荐学生参加各种证书的考试,获取各种软件企业证书。这种类型中,学生所学内容较多,但是正是为了考试而学习,基础不扎实,同时真正的工程实践能力不够。

因此我们认为,目前的软件工程还没有脱离计算机科学与技术的范围,无论是从传统计算机科学与技术专业与软件工程专业的区别,还是本科生与研究生的区别来看,针对软件工程硕士的课程体系建设和教学改革研究都是十分有必要的,同时也是迫切的。

二、生源基础分析

gswe2009对给出了软件工程硕士的三种主要生源:

(1)在职程序员,由于没有受到过正规研究生教育,有些企业的在职人员对理论知识匮乏,因此具有系统学习的愿望;

(2)其他领域的专业人员,由于软件工程职业的兴起,以及目前人才市场对该专业的需求,使得其他领域的专业人员想要加入软件工程的队伍;

(3)没有工作经验的本科毕业生,在当前就业压力下,许多本科毕业生毕业后选择继续深造。

在我国,软件工程硕士研究生多是没有工作经验的本科毕业生,正式由于这些大学本科毕业生的基础专业各不相同,使得软件工程硕士研究生的课程设置更加复杂和重要。

三、知识体系分析

2004年8月,有全世界五百多位专家教授推出的软件工程知识体(swebok)和软件工程教育知识体(seek)两个文件的最终版本,包含了软件工程核心类的知识领域、基础类或前导类的知识领域以及其他相关领域的知识。2009年,gswe2009中的教育知识体系cbok主要来源于swebok,同时也参考了seek2004、incose2003和haskins2007。与swebok2010同步,gswe2009包含了一个新的知识领域ka(职业实践)和四个关于教育的ka(工程经济学基础、计算基础、数学基础和工程基础),同时两个在swebok中没有出现的ka(系统工程基础和职业操守指导)被加入了cbok。此外,cbok还调整了一些知识单元和知识点[4]。gswe2009由准备知识、核心知识、大学特有知识、选择性知识和顶点经验所构成。其中的大学特有知识有学生的入学基础决定,在整个硕士研究生的培养过程中,主要为学生设置学习专业核心知识之前的准备知识以及在学生职业实践课程中所需要的选择性知识,而顶点经验需要学生在学习专业核心知识和进行职业实践的过程中积累,因此,课程设置中准备知识和专业核心知识的设置以及学习方式尤为重要。

四、课程设置分析

通过对软件工程知识体系进行分析,软件工程硕士研究生应具备的主要能力有:基础开发技能、团队合作技能、发现并解决问题技能、系统建模技能、文档撰写技能。我们将硕士研究生的培养阶段分为:理论知识学习、职业实践、论文撰写三个阶段。在前两个阶段中,我们给出了三单元课程、两步实践的方式,三单元课程分别是:必选课单元、必修课单元、自选课单元,两步实践有:模拟职业实践、实际职业实践。传统的理论学习和职业实践通常是完全分开的两个阶段,但在软件工程这个特殊的学科,我们将理论学习和职业实践结合起来,在进入理论学习第二单元的同时进入模拟职业实践阶段。理论学习三个单元具体设置如下:

(1)必选课:选择工程经济学基础(例如知识产权与法律、企业管理与文化、领导学、信息经济学、市场营销学等)、计算基础(例如算法设计与分析、高级软件工程、高级数据库、高级操作系统、高级网络技术)、数学基础(离散数学、组合数学、工程数学、数值分析)等准备知识中的专业主干课程按学科分类作为新生入学的必选课,取代以往将某些固定课程作为所有学生的基础课的方式,方便根据学生大学所学专业来选择自己所欠缺的准备知识进行学习,是知识的储备阶段,在本单元根据学生所选课程的成绩作为给定学分的依据。

(2)必修课:将软件工程基础中的核心知识(例如软件体系结构、软件项目管理、软件质量保证与软件测试技术、软件系统建模原理和方法、基于cmm的软件过程改进、软件开发方法、软件需求工程)作为所有学生的必修课,培养学生能够系统全面地了解软件工程的概念,旨在学生具有扎实的软件工程及相关专业基础理论,熟练掌握软件工程知识和技能,并且具备作为软件工程师从事工程实践所需的专业能力。在学习核心知识的同时,适当加入模拟职业实践的训练,根据学生的学习方向,将学生进行分组,进行模拟题目的训练,题目可以是各类大赛的题目、教师的科研课题以及学生自己选题,这是学生职业实践的第一步,培养学生基础开发技能、团队合作技能、系统建模以及独立创新技能,之所以称之为模拟职业实践,是因为这一步的实践题目并不是真正的软件工程课题,而是采用软件工程思想的实际课题,为下一步学生进入企业进行第二步的实际职业实践奠定基础,在本单元根据学生的课堂表现以及最后考核给出一部分成绩,另一部分成绩给出的依据是学生实践课题的完成情况以及在小组中的贡献程度,培养学生动手实践的同时,也提高了学生认识自我、团结合作的能力。

(3)自选课:学生根据自己对软件工程的理解以及通过对上一个单元所做题目的分析,选择自己所需要补充的基础专业知识,自行选择和学习,培养学生发现并解决问题以及自觉学习的能力。在这一单元中,导师根据学生所选专业知识的准确性以及学习之后对该软件工程专业的认识给出学生的成绩。

传统的课程设置一般都是先学习再实践,或者是边学习边实践的过程,前者学生在学习理论的同时没有实践练习,导致学生理论与实践结合得不好,后者在学习的过程中进行实践,锻炼了动手能力,但是学生往往不知所以然,只是按照老师的讲解去实践,对理论的指导作用理解不够,而我们通过上面学习-实践-学习的过程,学生不但对软件工程相关知识有所掌握,也具备了一定的实践能力,同时也培养了学生具有不断补充知识、总结自己、提高自己的意识和能力,在实践中体会到理论知识的作用,从而能够主动学习。在这个过程中,学生在学习软件工程核心知识的同时进入了职业实践的第一步模拟职业实践,将理论和实践很好地融合在一起,使理论的学习过程不再枯燥。

在职业实践的第二步实际职业实践中,学生自己从课堂走出去,到实习基地、用人单位或者是校企合作的相关公司企业进行真正的软件工程实践,学习良好的职业道德,正规的软件工程管理方式,同时在实践中学习和总结自己的研究生学习过程,进入第三阶段论文撰写,这就避免了以往硕士研究生写论文闭门造车的现象,为论文提供了更好的实践依据,提高了硕士论文的质量,这一步通过从实践中回到学习上来培养学生的总结、概括、撰写文档的能力。

软件工程导论篇9

关键词:软件工程;案例教学法;分析设计

abstract:thisarticleonthecaseteachingmethodinsoftwareengineeringmadeapreliminarydiscussion,atthesametime,wearebrieflyintroducedinsoftwareengineeringtotrythecaseinsomeoftheteachingexperience.中国

Keywords:softwareengineering;caseteachingmethod;Designanalysis

1引言

随着计算机应用日益普及和深化,正在运行使用着的计算机软件的数量以惊人的速度急剧膨胀,而且现代软件的规模往往十分庞大,所以指导计算机软件开发和维护的工程学科—软件工程,日益显示其重要地位。然而学习者一般不好理解软件工程的实践性,不能将所学的知识真正应用到软件开发过程中去。如何将理论与实际联系起来呢?我们认为在软件工程中采用案例教学发将会弥补这一缺憾。

案例教学法以对案例的分析解决为主线,通过对案例中的问题进行分析,激发学生的求知欲,调动学生的积极性,使学生自觉主动的学习案例,掌握原理和方法,实行科学的教育思想观念的一种教学方式。它是一种互动式的教学方法,可以实现启发式教学,能够极大的促进学生的学习兴趣,实现真正的教学相长。它更是实现理论联系实际的现实可实施的途径。案例教学法在软件工程教学中的应用将在更大程度上激发学生学习的学习兴趣和参与的积极性。同时,利于学生掌握理论知识,并运用知识解决软件开发中的实际问题,最终提高教学质量,达到学校教育培养的目标。

有鉴于此,本文试对案例教学法在软件工程中的应用作了初步探讨,以期对教育同行和广大学习者有所启发和借鉴。

2案例教学法的含义

案例教学法(casemethodsofteaching)可简单地界定为一种运用案例进行教学的一种方法,它是美国当今教育行业中非常盛行而有效的一种方法,在我国正在慢慢推广开来。1910年,美国哈佛商学院最先使用案例教学,开创了案例教学的先河。案例教学法于20世纪80年代初传入我国,它有利于培养学生分析问题、解决问题的能力,提高教学效果。

案例教学是在学生掌握了有关基本知识和分析技术的基础上,在教师的精心策划和指导下,根据教学目的和教学要求,运用典型案例,将学生带入特定的现场进行案例分析,通过学生的独立思考和集体协作,进一步提高识别,分析和解决某一具体问题的能力,同时培养学生的沟通能力和协作精神的教学方式。通过案例分析,学生可以获得蕴涵其中的那些已形成的教育原理、教学方法等知识,同时可以提高和发展学生的创造能力以及解决实际问题能力。更重要的是,通过案例教学获得的知识是内化了的知识,是“做中学”获得自己理解了的能驾驭的知识,不再像传统教学下获得的抽象的、过度概括化的生硬知识,它能立即被用到类似教学实践情境中去解决处理类似的疑难教学问题。所以从美国教育家舒尔1986年在美国教育研究协会(aeRa)年会重要演讲中发出要发展关于教学的案例知识的呼吁,时至今日,在众多国家的教育研究领域中都能发现案例教学法的应用。

3软件工程案例的选择

概括而言,案例是含有问题或疑难情境在内的真实发生的典型性事件。没有案例,案例教学无从谈起,没有好的案例,便没有有效的案例教学,所以案例的选择在案例教学中至关重要。一个高质量的案例应该具备以下几个特点。

(1)目的性。案例教学的目的是为了让学生理论联系实际,通过案例让学生掌握基本的原理和概念,提高发现问题,解决实际问题的能力。一个好的案例应该使学生在讨论中加深对教材中某一重点或难点知识的理解和把握,能利用课堂学习的理论知识来分析和解决案例中所涉及的问题。所以案例的选择一定要围绕教学目的和教学要求来。如果脱离这两个中心,即使案例再生动,其教学效果也大打折扣。

(2)真实性。案例一定是现实中发生的真实事件,是常见又复杂的问题,有助于学生实践能力的提高。

(3)启发性。一个好的案例需要蕴涵一定的问题,能启发学生思考,发现多种解决的途径。问题越诱人深入,越能够给学生留下较多的思维空间,教学效果越好。

(4)生动性。案例必须生动活泼,引人入胜,这样才能引起学生的兴趣,以便展开深入的思考。

软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。它强调使用生存周期方法学和各种结构分析及结构设计技术,所以软件工程案例即是选择一些典型的软件开发系统,介绍其开发和维护的过程。

我们根据讲解软件工程课的具体体会和开发软件的实际经验,撰写了五个案例,开发了《软件工程案例分析》网络课件,详细介绍五个软件系统的开发过程,互动的方式讲述了用软件工程的方法是如何进行分析和设计的,同时在系统开发的每个过程中提出大量的问题供学生思考。案例选择了房产管理系统、财务管理系统、机票预定系统、计算机储蓄系统四个应用软件系统,同时为了提高学习者理解开发软件的难度,特别介绍L-SimpLe语言编译系统。采用传统的生命周期方法学,从问题定义、可行性研究、需求分析、总体设计到详细设计做了比较详细的研究。系统中五个案例涉及到当前人们日常生活中关注的几个领域:房产管理、财务管理、计算机储蓄、机票预定,还有计算机的语言编译系统。案例既具有典型性,同时又具有真实性。我们选择四个应用软件和一个系统软件,一方面考虑到目前软件市场涉及应用范围的广泛性,另一方面考虑到软件工程学习者中大部分为计算机专业,对于系统软件也有一定爱好,对于将来开发系统软件作一个铺垫。

4软件工程案例教学的主要环节

案例教学的需要具备三个主要环节:

阅读案例,个人分析——分组讨论,集体交流——总结归纳,消化提升

我们尝试的软件工程案例教学中同样采用了这三个阶段:

(1)阅读案例,个人分析

学生首先对具体案例进行必要的基础知识的了解,认真阅读案例,并且要有个人的研究与分析,用软件工程的传统途径—生命周期方法学作为理论指导,熟悉软件开发过程各阶段的基本任务。

其次,学生需要尽快进入案例情境,了解、掌握案例中揭示的有关事实、情况,自居案例中的教师角色,设身处地地分析思考案例中教师的行为及对策的合理性与不合理性。在案例的分析过程中,要注意寻找其中的因果关系,只有弄清问题产生的原因,才可能找到问题的合理解决手段。注意区分基本性问题和现时性问题。基本性问题即抽象或一般的问题,常与事实背后的概念、原理、规则等有关,需要通过对案例中所包括的信息进行解释、分析、演绎、推理和抽象以得到概括化的结论。现时性问题即案例中教师所面对的特殊决定、疑难问题等要求在一定的时间范围内得到解决的那些问题,需将自己已有的知识或过去形成的经验与案例展示的背景材料、内外部因素等整合起来进行综合评判来提出多种经得起别人反驳的见解、对策以及方案。

(2)分组讨论,集体交流

分组讨论是案例教学中非常重要的环节,本质上是一种概念或想法的交流。围绕案例的重点,难点,疑点,进行讨论,辩论和争论。每个学生可以自由的抒发己见,相互启迪,互相借鉴,重点是想法的交流。要求每个学生简要介绍自己对软件开发所做的分析设计,并提出自己对该软件开发流程的看法,供大家讨论与切磋,可以按照案例中所提出的问题一个一个讨论。在教师的引导下,让学生进行课堂发言,进行全体学生的交流。本阶段要讨论主要解决两个问题: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

软件工程导论篇10

关键词:一般系统论;工程系统论;软件

0引言

将应对软件危机作为机会,以此得到的软件工程理论创立于上世纪六七十年代,到现在也有了三十多年历史并已成为了一门独立学科。在发展中必然会遇到一些问题,其中最为突出的两个问题是:第一,已有的理论成果还是不能够跟上实践需求;第二,软件工程要得到发展,必须建立在现有理论基础上,同时还需要对软件工程基础的框架和体系进行深入的研究。要鼓励创新,让理论基础能够变得更加扎实,且多用一些新的看问题的角度来对问题进行研究。如果想要让难题很快地得到解决,就需要将一般系统论以及工程系统论中联立到实际的软件工程研究上来,建立好完善的科学体系和基本理论。

1工程系统论介绍

在上个世纪末期,国内学者在一般系统论基础上,利用自己的努力创造了工程系统论。他们建立的理论中有着和工程系统有关的规律,该理论是将一般系统论和实践结合在一起得到的理论,它能够对所有的领域中的工程起到作用。关于工程的具体定义,指的就是依据某组设想目标,并且通过科学知识以及相关的技术来让人以组织的形式开展活动,能够让现有的实体转变成为一个有着价值的产品涉及到的整个过程。在实际的工程活动中包含有九个基本要素,主要就是资源、用户、行动者、方法、目标、时间、过程、活动以及环境。将环境排除在外,剩余的八个要素在一个框架之内,同时还有着紧密的联系,是一个完全的整体。我们将这个整体叫做工程系统。在研究工程系统论的过程中,研究的目标就是不同的工程系统,研究的目的就是为了找到工程系统里面存在的所有共有规律。工程系统论在整个学科体系里面处于最中间的层次。相较于一般系统论,工程系统论、社会系统论以及生物系统论这三者能够组合形成派生科学。也就是说工程系统论的概念、原理方法都会被一般系统论限制。和具体工程系统论相比,它属于工程元科学,也就是说它是综合性更强的一门学科,能够对所有的工程学科进行讨论。由于工程系统论具备特殊的处于中间层次的特点,能够使得它作为一般系统论的知识来源,同时它还能够给具体工程系统论提供更加广阔的发展空间。具体工程系统论主要的内容中必须含有软件工程系统论这一内容。工程系统论有着十分科学合理的思想,再加上辩证的理论,能够帮助指导复杂系统中的操作以及方法论。原本系统工程技术存在很多的局限,不过工程系统论在这方面有着很大的突破,它有了更大的范围,能够跨越很大的时空来对人工系统的发展进行操控。同时工程系统论没有对以前的内容进行抛弃,里面还是涵盖了系统工程等方面有效的技术以及措施,在这个基础上,添加了顶层指导,因此它有着宏观性以及普适性,可以被广泛地运用在复杂的人工系统中,有着很光明的未来。

2研究软件工程系统论的重要性

因为网络技术得到了很大的发展,进行网络开发的工具也越来越先进,使得软件开发的整体环境出现了很大的提升和变化,和软件开发有关的概念也有了很不一样的定义。现在在进行对象程序设计的过程中,有了新的方法,一些传统的面向过程以及结构方法都已经被摒弃,如今更加注重的是面向角色程序设计的方法。在设计角色的技术上,每个不同的部分都会有所侧重,但是整体必须要做到协调。现在的技术强调的一点就是对即将被开发出来的系统进行分析时,需要做到更加规范化以及自然。这种更为系统化的分析模式和工程系统论基本的思维模式十分契合,因此也能够用到复杂系统的开发过程中。现在软件开发十分重要,而且在发展的过程中,是一定需要有着理论依据来支持的。与此同时,还需要有在软件出现问题时,对这些问题进行解决的理论工具,平时不仅要研究新的开发方法和工具,同时更加重要的就是找到新方法来对软件工程进行指导。这样的情况之下,建立起一个基本的框架和体系就显得很必要。

3软件工程系统论的研究内容以及可行性

3.1软件工程系统论相关研究内容

3.1.1软件工程系统的一般结构软件工程系统有着一定的发展规律,也兼具复杂性,它发展是有着基础部分,并且能够对复杂的情况进行处理;系统基本组成部分有着自己的特性,并且其功能与空间和时间都有着分不开的联系;环境因素也是影响软件结构、功能、状态等的原因。

3.1.2软件工程系统的层次结构软件工程系统层次结构主要有系统化的层次以及不同层次之间的联系等部分。还包括系统基层性质、特别性质;层次结构上有着无限性、协调平衡性以及相对性。

3.1.3软件工程系统的协调性和复杂性此块内容有着系统复合过程的分类、状态等;处于复合状态时具备的协调性以及协同性;能够对系统目标、方法以及特征进行适应的内容。

3.1.4软件工程系统的突现性该部分主要突出了软件工程系统有着突现性的特点;同时还有环境对于系统突现性的影响;刻画了突现性的具体内容,并且突现性在整体与部分两者间的关系。

3.1.5软件工程系统的无序性以及有序性该部分涉及了无序性、有序性分别发生的原因、表现以及特点;使得无序性变成有序性需要的条件等。

3.2软件工程系统论研究的可行性

首先,软件工程与系统科学之间有着分不开的联系,软件工程中,理论方面最主要的基础就是系统开发设计系统以及数学模型,在软件工程的方法和技术上,都突出了系统并且科学的基本思想。在软件工程系统中,比较重要的方法有结构化方法以及面向对象方法等,这些其实都对系统科学思想方法进行了延续。软件工程中,进行支配的核心思想就是用不一样产品的方式来处理软件产品,这就是指在进行软件生产的过程中需要将监督、审核以及研究可行性等内容纳入其中,这样才能够确保质量、经费达到具体的标准,让最终的目标得到实现。因此引进工程系统论原理以及相关的方法实行的可行性很大。第二,系统相对复杂,在开发软件工程的过程里面会有很多的任务,同时指标十分庞大,涉及了很多方面的知识以及学科类型,需要很长的研究周期,再有人员素质、运行机制以及环境等多种因素对其的影响,因此软件工程里面一定要多利用工程系统论里面的科学思想,找到内在隐含着的规律,提升整个系统开发时的总体设计的水平。第三,自从系统论有关的思想推行很久之后,能够促进软件工程向前发展,使得人们对软件工程上需要用到的原理以及方法有着更多的了解。除此之外,我国现在从事相关软件开发的人员变得越来越多,这些人员基本都能够具备很多的理论知识以及科研开发背景,他们能够提供好的工程例子来让工程相关人员进行专门的理论研究。因此研究以及建立这两个层面上,软件工程系统论都能够将原本的障碍给攻破。

4开展软件工程系统论的研究势在必行

软件工程的定义就是能够对计算机软件的开发以及维护起到指导作用的学科。开发软件工程的整个过程有着很鲜明的特点,也就是项目生命周期存在的阶段性、复杂性以及系统性。早在上世纪六七十年代,国外的很多学者就开始研究起了软件工程,他们主要集中在对基本原理、方法等方面进行研究,具体可分为过程模型、方法技术、工具环境以及标准规范等内容,并且他们在研究中得到了一些很好的开发方法,对后世有着很大的影响。比方说结构化方法、面向对象方法、净室方法等,都是很有影响力的。虽然这些方法也并不是很完善,有着很多的缺点和不足,不过这些方法都是能够推动整个软件工程进行发展的有利因素。图灵机模型以及冯-诺依曼体系是现代计算机发展的理论支撑。图灵机中涉及的想法主要就是将问题细化,让其成为机械求解,有着很多步骤的过程,计算机语言则是作为辅助思想进行表现的一个形式。对软件进行开发其实就是通过程序员的操作,将求解问题域变得更加形式化的一个阶段。对于求解的问题,程序员需要先进行分析,知道它的主要特征,然后建立起相关的模型,找到合适的算法,用设计语言来描述这一程序,最后能够顺利的得到想要的结果。按照人们的一贯理解表达方法来看,冯-诺依曼的程序具体执行的过程是与其相悖的,存在着很大的差别,而且程序员一般都会关注怎么实现目标、怎么进行编程这些方面,对问题的认识还不够深入,同时思维上也有一定的惯性。在软件管理以及设计上面,人们一般都会用非系统的思维来应对,这就使得设计结果不具备系统性以及整体性。比方说,程序员关注点一般在工程流程以及步骤上,但是整个系统特点也是需要进行注意的部分,这方面不注意,就会带来问题;程序员只关注局部而没有这种协调整体;过分关注程序模块以及设计上的优化,并没有关注全局优化以及结构分析的部分;进行工程开发的时候没有进行合理的沟通和协调,使得系统设计架构不够完整,软件设计上存在着很多的矛盾和不足;软件自身也存在一定的特点,这会使得工程开发时很容易缺少沟通,只是各自忙自己的。特别是一些大软件的开发过程中,包含了很多的小项目,分工很细,并且包括了很多的层次,时间上要求很高,很容易出现将大系统分成不相干的一些小系统的情况,这样很难对系统性和完整性进行把控。在系统工程方法的具体应用方面,也是国外学者的脚步更快。win2stonw.Royce博士最初提出了“软件系统工程”这个词语[5]。他们的观点为,一个项目若是没有系统工程方法,那么就会使得软件不能够适配于硬件,导致软件不能够一直使用下去。开发产品时,没有注意系统方面的相关工作,就会让软件危机加剧。美国的RichardH.thayer等学者对完善了软件系统工程的具体定义。他们的观点为,软件系统工程其实和系统工程十分相似,需要技术以及管理这两个方面。软件系统工程并不是指一项任务,它其实是一个理念或者可以说是一个过程。最高层需要在软件工程的实施里面用到这个理念。在对软件系统工程以及软件工程之间的关系进行研究时,他们还提到,在初期开发软件的时候,软件系统工程主要就是对软件需求进行具体的分析,并且设计具体的结构。软件系统最终进行测试和系统功能的部分也是包括在软件系统工程中的。很明显,总体来说他们的观点认为软件系统工程是软件工程的一个部分。因为每个学者研究时的目标以及角度都是不同的,所以本文的软件工程系统与这些学者提出的团建系统工程并不是同一个概念,但是这两者都能够体现出和系统论有关的思想。全球另外还有许多学者研究了软件工程开发这一方面的内容。比方说,wooldridget等学者提出了Gaia方法,它能够对主题进行分析以及设计,他们认为工程中应该多用到maSe和maS-Commonkads;高翔等学者对应用角色模型中用到的设计方法进行了研究;张志军等学者在软系统方法这个基础之上,提出了具体的开发技术;冯栅等学者提出了建立在智能体系之上的方法。这之前提到的所有方法都是能够结合实际工程方法,来反映出现在软件工程方面到底遇到了什么问题。美国有关的学者提出的软件工程系统理论并不能够运用到系统论的整体过程里,它只能够符合某些特定阶段的要求。而且这里面不具备工程系统论内容,同时还没有运用工程系统论有关思想来对软件工程科学体系进行研究和考察。基于现在的文献搜索情况以及互联网使用情况,能够知道现在全球所有报道中提到工程系统论在软件工程上运用的方法理论。网络技术得到了很大的发展,同时开发的工具也变得越来越先进,这些原因就是推动软件开发环境变化的主要因素,同时也对人们在时空观念、生命周期以及软件方式等方面产生了影响。角色技术在程序设计上出现了更为侧重的现象,并且能够做到各部分之间都有着很好的协调,用更加规范化以及自然的方法来对即将要开发的系统进行描述,能够让开发的效率变得更高,并且和一些专家之间建立很好的联系。在现代软件工程的发展过程中,就必须要所有的科学都具有理论上的基础,软件危机一直存在使得我们必须研究出很好的理论武器来进行治理,在研究一些新型的开发工具和整个开发过程里面,最为重要的就是需要将研究的领域和新技术结合到一起,并且对软件工程发展的指导用到新的方法论。所以,对一般系统论和工程系统论对软件工程系统规律进行研究,以此来建立起一个更为科学化的软件工程系统体系,并且得到软件工程系统论的基本方法。就是因为这些研究是建立在一个新角度上的,所以能够对贯彻系统科学思想有利,将研究软件工程的起点提升,让对软件工程的基础研究变得更加系统、全面和科学,同时也能够为另外的信息工程学发展提供一定的借鉴。

5软件工程系统论的学科地位、研究内容及可行性

其实从大方向来说,也就是从整个科学范围内来讲,软件工程系统理论应该是在一般工程理论下一个层次的,也在一般系统理论之下,这就是说,软件系统理论的应用应该是在两者应用的前提下,对软件系统的应用起到一定的约束作用。当然这种关系也在随着应用领域的不同而不断发生变化,比如说在机电领域,细化还可以说在航天领域、汽车领域等,他们的关系是平等的,但是其应用却是交叉的。对于软件工程的研究,可以参照一般工程研究的方法,也就是可以把软件工程的研究分成几大部分,比如软件工程管理、软件工程技术系统、软件工程过程系统、软件工程对象系统、软件工程支持系统、软件工程组织系统等六大子系统,在这些原理的实现过程中,又包含着在相关工程中的应用,例如性能工程、质量工程、架构工程、测试工程等,这些相关工程包括很多,其中会涉及到很多软件工程领域的应用,在对软件工程做研究的时候也会结合这些相关工程做出不同分析,这里简要举例说明,关于软件工程系统理论研究,应该从以下几方面出发:(1)结构角度:结构角度的出发点就是软件的一般结构,从软件工程应用的环境、状态、结构及一些规律;在系统组成角度来说,这些要素在功能匹配、空间利用等方面都有一些规律,都需要结合一些性状;我们平常所说的系统的复杂性就是在这些领域面对这种复杂问题、复杂规律时所用的处理办法及途径等问题,当然考虑这些因素也是为了在最大程度上保证软件工程的严谨性。(2)系统层次角度:软件系统在建立过程中是分层次建立的,其中每个层次又都有着千丝万缕的联系,其中就包括层次之间的协调及平衡性,软件系统的的无限性及相对性不能一概而论,要视应用领域而定。(3)协调性及复合型:首先说复合性,需要从复合内涵、分析过程、分类方式及过程方式等角度考虑;然后协调性就是要从系统的特征方法、目标种类等方面来看;协调性还包括对协调度的把握及衡量。(4)突显性:软件工程在这方面的的表现很突出,同时也是因为具备了一些突出性的条件;在系统的内各部分只见的关联部分也有其对整体的作用;同时还必须考虑的一点就是该工程对软件应用环境整体有无影响。(5)无序性及有序性:这个角度需要从有序无序的根源出发,也就是其发生原因、因素等一些初始方面考虑;还有两者的相互转化条件等。(6)范式:软件系统一般都会有一般范式,但是这种范式的角度,需要从范式的标准、组成构成、分类等方面考虑。(7)信息角度:信息与软件工程有很多联系,在软件工程中有一定地位;软件工程的基本特征及相关衡量问题;模糊性信息、信息反馈及其对系统稳定性的影响、随机性信息、未确知性信息的分析与处理。(8)全局化:顾名思义,就是对整个工程的把握,包括对整体的优化,对其中某一部分、某一环节的优化;还包括全局中的分类、特点、方式等。全局工作如果能够做好,那么应该可以在我国软件工程领域开启新的篇章了,因为目前我国的软件工程在全局掌控方面很差,空白之处还有很多,这项工作做好,就会在理论和实践上都有很大提高,也会还会发展很多分支出来。首要说的就是软件工程与各方科学工程有着很多联系。软件工程从底层来说就是数学模型的建立,一些数学算法的解决,数学模型的建立等。其实在系统科学的建立过程中,软件工程的思维技术都是贯穿始末的,这也使得面向对象式的软件工程在不断发展,也因此使得这些进步都是围绕着系统科学思想的。这个过程需要工程审核、工程需求、工程计划联系在一起来考虑,这么做的原因也是为了能够保证工程进展的有序性和保质保量,这个过程在综合进程、经费、质量等多方面因素后才能保证工程最后的结果,这些不确定性也导致了系统科学工程的思想能够应用在软件工程上的结果。另一方面,软件工程的开发过程和人力及人的思想是分不开的,也可以这样说,整个软件工程就是一个大型人工智能系统,这个开发过程经历思索、设计、开发等较长周期后,使得整个工程在经济投入、运行时间都有很大的变动,而且在这期间很多因素都会影响软件工程的进展。在客观上来讲,这个过程需要实时的进行评价、评估,而且是对各个方面,比如说管理方面,解决问题原则方面,把握发展思路方法方面,借此来提高软件系统工程的整体水平。再者,软件工程的发展已经有些年份了,而且已经经历了软件的推广,这个过程也有二三十年了,这个发展的结果就是,逐渐大众化,越来越多的人对这个工程及相关软件的应用都有了很多认识,更有一部分人通过学习逐渐变成相关专业人员,这个队伍在逐渐扩大,而且这些人的理论知识都是相当扎实丰富的,这个软件工程在建立过长中基本上是不用担心知识瓶颈或者技术难题的。

6结语

通过上述总结可以达到对软件工程及其开发研究过程概括的结果,再者期间会有很多实际问题涌现出来,更重要的是很多学术问题会被发现,当然这个过程会随着应用领域的不同而不同,随之而来的就是一些技术难题。但是软件系统的建立也有它的短处,就是软件系统是离散的,这种结构使得如果其中的某一个环节出现了轻微偏差,那么就会造成结果发生较大的偏差。还有就是软件工程的建立属于高等知识类型的,这中类型的定位也是它不容易管理的原因之一,也是不容易实现规范化的原因。这方面的管理必须有相应的专业管理人员进行相关工作,要求了工作人员应具备很高的协调管理能力、人才规划管理能力,其实这也可以成为一门艺术,这条艺术之路走对了就是使得整个工程井井有条,但是从当前软件工程的发展来看,这条艺术之路还很长,我们仍须努力。

参考文献:

[1]李刚,董火民,杨子江,韩红强.软件工程标准化现状与分析[a].第四届中国软件工程大会论文集[C],2013.

[2]介艺橙.成都置信房地产成本管理系统的设计与实现[D].电子科技大学,2013.

[3]王连成,工程系统论与工程科学体系[J].中国工程科学,2011(6).