美国高校软件工程课程本科教学内容设置

点赞:19056 浏览:83005 近期更新时间:2024-03-03 作者:网友分享原创网站原创

摘 要:软件工程课程具有涉及知识广泛以及强调实践的特点,历来是计算机专业教学的难点.文章通过分析美国计算机科学专业排名并列第一的4所高校及北卡罗来纳州立大学的软件工程课程教学内容、方法以及实验内容,总结美国高校该门课程教学特点,提出软件工程课程应用型教学设置建议,以供国内高校借鉴.

关 键 词:软件工程;美国高校;教学内容

0、引言

软件工程课程是计算机专业中一门讲授软件工程原理和技术并对软件开发有重要指导作用的核心课程,具有涉及知识广泛和强调实践2个特点.由于该课程涉及内容较多,而且本身还在不断发展,该门课程历来是专业课教学的难点.长期以来,一个不争的事实是我国IT用人单位常常对刚进入工作岗位的毕业生不满意,他们认为学生在学校里并没有为自己将来所从事的工作作好必要的准备.同时,学术界也同样意识到上述问题.JazayeriMehdi认为现在课堂上所采用的教学内容由任课教师决定,任课教师要求学生预先定义好软件架构和处理流程,使项目限定在可控的范围内,这种方式不会出现用户需求不兼容等情况,但与企业实际的软件开发环境有较大差距.

我国高校软件工程的教学内容也存在上述问题,即教学内容与企业人才需求不匹配.作为人才培养基地,高校应该围绕社会对人才的实际需求,培养学生获得应有的软件工程实践能力,选择一种更贴近现实软件开发环境的方式编排教学内容,这也是我国进行软件工程教学研究所探讨的内容.

美国在信息技术人才的培养上有着很成熟的经验,若我们能有效地学习和借鉴其经验,会对我国的软件工程课程教学有一定帮助.鉴于软件工程课程在软件人才培养方面的重要作用,笔者将阐述5所具有代表性的美国高校的计算机科学专业软件工程本科教学过程中的特点,并进行分析和总结,以期为我们的教学提供有益的借鉴和参考.

《美国新闻与世界报道》(U.S.News&WorldRepon)是美国最权威的对高校及专业排名的周刊之一,该周刊于2012年将美国大学的计算机科学专业进行专业排名,其中,4所排名并列第一的高校分别是卡耐基·梅隆大学(CarnegieMellonUniversity,CMU)、麻省理工学院(MassachusettsInstituteofTechnology,MIT)、加州大学伯克利分校(Universi0fCalifornia-Berkeley,UCBerkeley)和斯坦福大学(StanfordUniversity,Stanford),而北卡罗来纳州立大学(NorthCarolinaStateUniversity,NCSU)位居全美第47名.


1.美国高校课程教学内容设置

上述5所高校计算机科学与技术专业本科教学都设置了与软件工程相关的课程,尽管名称不尽相同,但是课程讲授的重点都包括软件工程领域中一些核心问题.值得一提的是CMU的软件工程研究所在全世界都很知名,该校计算机科学系本科教学有专门的软件工程方向,然而该校计算机科学系其他方向的本科毕业生若想获得学士学位,就必须修2门与软件工程有关的课程才能毕业.上述5所高校软件工程课程信息如表1所示.

1.1麻省理工学院

1)软件工程原理(SoftwareEngineeringConcepts).

该课程总结了现阶段软件工程的进展,并且对传统方法和现代软件工程方法的可靠性作了比较和分析.授课内容包括软件过程、生命周期、需求获取和规约撰写、设计原则、测试、分析和复查、质量管理和评估、产品和过程控制、COTS和重用、开发团队组织和人员管理,还有软件工程中程序设计语言的选择和编码知识.课程作业涵盖软件系统和软件开发项目设计中需要了解的问题,包括12个阅读作业.该课程没有专门的实践作业,但是为了强化学生对软件工程概念的理解,要求学生在教师每次讲解后,撰写一篇相关内容的小论文.

2)软件工程实验(LaboratoryinSoftwareEngineering).

该课程介绍大型软件系统开发的相关概念和技术,学生主要学习基于抽象识别和描述的编程技术.课程包括以下内容:软件模块化、需求规格说明、数据抽象、对象建模、设计模式以及测试,涵盖一系列从1个问题的分析到解决实现软件开发过程的技术介绍.该课程比较有特色的内容是要求学生完成一个桌面弹球的编程项目,可以由学生自行决定单独完成或分组完成.

1.2卡耐基·梅隆大学

1)软件构造:对象、设计和并发原理(Construction:Objeets,Design,andConcurrency).

该课程以库和框架组件为基础开发软件进行教学内容的编排.为了使学生有在一定规模下构造软件系统的相关概念,该课程教学还培养学生对数据组织基本构件的理解能力,加强学生的算法、程序结构和计算机结构相关知识.课程内容涵盖4个方面:①设计复杂系统的概念;②面向对象编程;③程序的动态和静态分析;④并行和分布式软件.该课程的课程作业是让学生完成2个已完成架构的分布式大规模软件,一个是多媒体游戏系统,另外一个是图形用户接口的具体实现.

2)软件工程导论(IntroduetiontoSoftwareEngineering).

该课程讲授现代软件工程的基本原理,既包括计算机科学的技术知识,又包括将这些知识应用到复杂软件开发的过程中.课程内容包括软件构造的设计方法、模式、编码、静态和动态分析、测试和检查、软件体系结构和框架.与软件过程有关的内容包括构造、需求工程、过程模型和评估、团队开发以及包括开源怎么写作外包和开源程序在内的供应链问题.该课程有很强的技术指向性,课程作业包括程序设计和文档撰写方面的内容.学生需要根据现代软件工程知识和工具创建一个自己的项目.

1.3加州大学伯克利分校加州大学伯克利分校在软件工程的课程教学内容中,已经取消结构化程序设计部分的内容,主要介绍面向对象方法的软件开发以及敏捷方法过程中的极限编程,并且详细介绍需求获取的方法.软件工程的课程项目中涉及团队开发的内容,还增加了版本控制的内容,介绍软件重用.主要教学内容包括介绍开发和修改大型软件系统的理念和技术、面向对象和敏捷设计技术、设计模式和模型设计语言、验证、静态分析、测试、版本控制和调试、成本和质量估计和控制、项目团队组织和管理.课程目的是培养学生具有面向对象软件开发方法的详细知识及应用的能力,同时培养学生运用现代技术进行中等规模软件从设想阶段到部署阶段设计的能力,以及团队开发的经验和撰写技术报告的能力.该课程实践环节的作业要求学生在协同工作的环境下,完成一个项目并提交程序.

1.4斯坦福大学

斯坦福大学计算机系的课程设置列表中并没有软件工程这门课,但是其开设的面向对象系统分析这门课中,除了介绍面向对象系统分析的内容,还介绍软件工程部分相关内容.主要内容包括面向对象编程的原理和编程领域内容,如多线程编程、过程交互、数据库访问等,还包括团队协作编程的概念和方法.

该课程目标是培养学生大规模程序开发的能力,激发学生的兴趣;培养学生通过可用的文档分析问题和解决问题的能力,提升信心;还培养学生能够在企业开发程序的能力.

1.5北卡罗来纳州立大学

北卡罗来纳州立大学的软件工程课程内容包括软件工程化方法应用质量保证,项目管理,需求分析,需求规约、设计、开发、测试,维护.分析北卡罗来纳州立大学软件工程主要是因为该校在敏捷开发的实验中,将结对编程(PairPrograming)实验做得很有特色.该门课程的实验环境已经开源,可在互联网中下载使用.

2.美国高校软件工程教学总结

2.1教学内容紧跟行业发展趋势

从美国高校软件工程的教学内容可以看出,很多高校已经摈弃将侧重点放在介绍面向过程的结构化软件构建方法,而主要介绍可修改性和可重用性更高的面向对象软件工程方法.

在教学内容编排上,部分高校将能力成熟度模型(CMM,CapabilityManurityModelforSottwam)应用于实践教学环节.除此之外,美国高校还介绍软件行业中长期积累的管理技术、组织模式和实践准则.

另外,包括北卡罗来纳州立大学在内的很多高校在软件工程课程实践的过程中,将敏捷开发方法引入实践教学.该校通过对结对编程作业进行设计,帮助学生理解软件工程的概念,让学生更加适应企业对毕业生的需求.

2.2教学方法形式多样

并不是所有高校的软件工程课程都要求实现实际的项目,还有强调非技术性技巧的教学内容.例如,麻省理工学院的软件工程原理课程作业就包括阅读作业和小论文撰写作业,该校通过作业帮助学生理解软件开发过程的概念和理念.

除此之外,大部分高校都将实践引入该门课程的教学,这个过程既包括以项目驱动为主的教学法,又侧重团队开发的教学内容.’实践过程可帮助学生处理如何定义问题域、需求跟踪等不可预见的技术问题.部分高校在课程实践过程中还引入已架构好但是尚未完成的一些项目让学生参与,强调软件工程实际开发过程中所用到的辅助工具,如用项目管理软件实现教学内容.

2.3与行业人员和企业合作进行教学

教师在讲解理论课程的过程中,邀请软件开发行业人员开展讲座,将讲座作为教学单元;也有学校请业内人士扮演客户角色,向学生提出各种需求问题并引导学生找出解决问题的方法.在这个教学环节中,学生可以学到在实践生产过程中才能学到的知识和技能.另外,这还培养了学生的人际交往能力.

值得一提的是斯坦福大学的软件工程实践环节与微软、谷歌、BMW、NOKIA等世界知名企业合作.这些企业提出项目需求,由学生分组进行项目分析和实践,最后以竞赛的方式进行考核并根据比赛成绩给出该门课程的成绩.

2.4强调学生的实践动手能力

除了个别课程不要求学生实际动手完成项目外,几乎所有课程都需要学生完成一些实践作业.学生在实践过程中完成的代码行数至少在1000行,学生通过实践提升了自己的动手能力,加深了对课程核心概念的理解.

2.5建立有效的授课团队

讲授软件工程课程的教师比较固定,同时为了对学生的学习效果进行跟踪,高校还配备大量助教.这样的教学梯队不但能有效地积累教学经验,而且能有效地督促学生学习.

3.软件工程课程应用型教学设置建议

3.1教学展开方式

参照美国高校计算机科学与技术专业软件工程本科课程的内容,结合培养应用型软件工程人才的教学定位,我们可从软件生命周期、系统工程以及软件工程技术发展3个角度展开教学.教学过程采用项目驱动教学法,把一个项目分解为涵盖不同知识点的不同任务,让学生分析任务并实现项目.学生可以课程教学团队设计的案例为项目背景,采用探究式的学习策略对项目进行独立研究.助教采用提问和讨论的方式考查学生,学生需对案例中的问题或产生的矛盾提出相应解决方法和策略.这个过程可提高学生的动手能力,帮助学生在复杂条件下利用所学理论、方法和技术解决实际问题,帮助教师掌握学生在课程学习各个环节的学习情况.

3.2教学内容编排

针对软件工程课程应用型教学的具体目标,教学内容可从软件工程概述、软件需求工程、软件设计、软件编码、软件测试、面向对象软件工程、软件项目管理、软件维护和软件质量保证等方面进行编排.

软件工程概述部分培养学生软件开发工程化的思想,使学生具有分析案例中出现的工程性问题的能力,了解业界最新的软件开发实践和技术发展动向,了解和掌握一种具体或最佳的软件过程模型并能够在该模型框架下开展工作.软件需求工程讲解需求获取和需求管理的主要活动,培养学生具有阅读、理解和撰写需求规格说明书的能力,倾听、协商和说服的能力,描述技术问题并找到解决方法的能力.

软件设计部分培养学生具有依照启发式设计原则在已有的软件体系结构框架下设计应用系统的能力;在用户界面设计方面,帮助学生运用用户界面设计工具进行界面设计.

软件编码可在项目实训中采用结对编程方法,提高学生编写高质量代码的能力.

软件测试教学内容根据软件测试的不同阶段,为学生介绍相应的测试工具,引导学生设计简单的测试用例并用相应的测试工具进行测试.

面向对象软件工程的教学内容引导学生学会理解和分析客观世界中的静态、动态等对象,使用UML面向对象的分析和设计方法实现软件系统模型.

软件项目管理介绍现代软件企业的组织结构,帮助学生了解项目参与人员的角色、分工与职责,具备个人与团队协同工作的能力.

软件维护和软件质量保证除了讲授基础知识外,还通过项目实训帮助学生了解软件质量要求、软件发布以及软件部署工作等知识点.

3.3项目实训和考核方式

1)项目实训环节.

该环节关注一个完整项目开发的实训,要求学生以学习小组(1个小组通常由2~4人组成)的形式完成一个软件项目.这个过程需要课程团队构建一个包括软件开发环境、开发过程框架、文档模板、编码规范、阶段评审标准等一系列参考标准在内的现代IT企业软件工程环境,使学生对软件项目开发有直观的了解.

实训项目应对实际项目进行简化和提炼,分解成能够涵盖软件工程学科不同知识点的一个个任务.实训项目以软件质量保证为目标,由小组协同完成.在这个过程中,教师可引入项目过程管理中的如周期性例会制度、项目进度控制、关键阶段评审等机制,以确保项目开发过程的规范化和可控化.实训项目涵盖知识点的内容和比例为:需求规格说明书(20%)、设计相关文档(20%)、代码(25%)、项目功能完成情况(25%)和软件测试及文档(10%).

美国高校软件工程课程本科教学内容设置参考属性评定
有关论文范文主题研究: 关于软件工程的论文范文文献 大学生适用: 硕士毕业论文、专科论文
相关参考文献下载数量: 21 写作解决问题: 学术论文怎么写
毕业论文开题报告: 论文模板、论文摘要 职称论文适用: 论文发表、初级职称
所属大学生专业类别: 学术论文怎么写 论文题目推荐度: 优质选题

2)考核方式.

软件工程课程的成绩可以由平时成绩、期末考试和实训成绩3部分组成.平时成绩和实训成绩由助教根据学习小组完成项目的情况和课程讨论的效果予以评定;期末考试侧重考查学生对软件工程基本原理和概念的掌握程度,可通过开卷或闭卷方式进行考核.总成绩由平时成绩(10%)、期末考试成绩(40%)和实训成绩(50%)构成.

这种考核方式在为学生提供软件工程课程项目实训环境的基础上,力求利用项目驱动教学法完成教学任务,注重项目完成过程中的管理.教学内容注重紧跟学科发展,通过革新理论学习和实践教学环节调动学生积极性.

4.结语

根据现代软件工程的要求,美国高校能及时更新软件工程教学内容,弱化结构化程序设计教学内容,强调面向对象分析和设计的教学内容.同时,积极介绍并实践软件工程领域的新方法、新技术和工具.

美国高校软件工程教学内容能够根据学生个人能力、学校专业特色和软件生命周期不同阶段的特点展开课程教学,有效地融合不同的教学方法.美国高校相关专业的教师能与行业专家建立长期的合作关系,从而积累教学和实践经验,形成一个长效机制.教师在实践环节中可选择适应软件工程教学需要的软件工程工具,充分利用已有的开源软件资源,如开源的代码分析工具、项目管理工具等,同时可以借鉴北卡罗来纳州立大学的“PairEvlu”软件进行敏捷方法的具体实践.

软件工程课程特点对教师和学生都提出了很高的要求.高校教师应该围绕我国IT行业人才需求及培养目标,借鉴国外高校先进的教学方法,设计成熟的教学理论和实践内容,结合学校和学生的实际情况开展教学工作,为培养高素质的专业人才探索出一条适合国内软件工程课程的教学法.