美国高校软件工程课程本科教学内容设置及分析
摘要:软件工程课程具有涉及知识广泛以及强调实践的特点,历来是计算机专业教学的难点。文章通过分析美国计算机科学专业排名并列第一的4所高校及北卡罗来纳州立大学的软件工程课程教学内容、方法以及实验内容,总结美国高校该门课程教学特点,提出软件工程课程应用型教学设置建议,以供国内高校借鉴。
关键词:软件工程;美国高校;教学内容
0、引言
软件工程课程是计算机专业中一门讲授软件工程原理和技术并对软件开发有重要指导作用的核心课程,具有涉及知识广泛和强调实践2个特点。由于该课程涉及内容较多,而且本身还在不断发展,该门课程历来是专业课教学的难点。长期以来,一个不争的事实是我国IT用人单位常常对刚进入工作岗位的毕业生不满意,他们认为学生在学校里并没有为自己将来所从事的工作作好必要的准备。同时,学术界也同样意识到上述问题。Jazayeri Mehdi认为现在课堂上所采用的教学内容由任课教师决定,任课教师要求学生预先定义好软件架构和处理流程,使项目限
定在可控的范围内,这种方式不会出现用户需求不兼容等情况,但与企业实际的软件开发环境有较大差距。
我国高校软件工程的教学内容也存在上述问题,即教学内容与企业人才需求不匹配。作为人才培养基地,高校应该围绕社会对人才的实际需求,培养学生获得应有的软件工程实践能力,选择一种更贴近现实软件开发环境的方式编排教学内容,这也是我国进行软件工程教学研究所探讨的内容。
美国在信息技术人才的培养上有着很成熟的经验,若我们能有效地学习和借鉴其经验,会对我国的软件工程课程教学有一定帮助。鉴于软件工程课程在软件人才培养方面的重要作用,笔者将阐述5所具有代表性的美国高校的计算机科学专业软件工程本科教学过程中的特点,并进行分析和总结,以期为我们的教学提供有益的借鉴和参考。
《美国新闻与世界报道》(U.S.News&WorldRepon)是美国最权威的对高校及专业排名的周刊之一,该周刊于2012年将美国大学的计算机科学专业进行专业排名,其中,4所排名并列第一的高校分别是卡耐基·梅隆大学(CarnegieMellon University,CMU)、麻省理工学院(Massachusetts Institute of Technology,MIT)、加州大学伯克利分校(Universi 0f Califo
rnia-Berkeley,UC Berkeley)和斯坦福大学(StanfordUniversity,Stanford),而北卡罗来纳州立大学(North Carolina State University,NCSU)位居全美第47名。
1、美国高校课程教学内容设置
上述5所高校计算机科学与技术专业本科教学都设置了与软件工程相关的课程,尽管名称不尽相同,但是课程讲授的重点都包括软件工程领域中一些核心问题。值得一提的是CMU的软件工程研究所在全世界都很知名,该校计算机科学系本科教学有专门的软件工程方向,然而该校计算机科学系其他方向的本科毕业生若想获得学士学位,就必须修2门与软件工程有关的课程才能毕业。上述5所高校软件工程课程信息如表1所示。
1.1 麻省理工学院
线上编程课排名1)软件工程原理(Software EngineeringConcepts)。
该课程总结了现阶段软件工程的进展,并且对传统方法和现代软件工程方法的可靠性作了比较和分析。授课内容包括软件过程、生命周期、需求获取和规约撰写、设计原则、测试、分析和复查、质量管理和评估、产品和过程控制、COTS和重用、开发团队组织和人员管理,
还有软件工程中程序设计语言的选择和编码知识。课程作业涵盖软件系统和软件开发项目设计中需要了解的问题,包括12个阅读作业。该课程没有专门的实践作业,但是为了强化学生对软件工程概念的理解,要求学生在教师每次讲解后,撰写一篇相关内容的小论文。
2)软件工程实验(Laboratory in SoftwareEngineering)。
该课程介绍大型软件系统开发的相关概念和技术,学生主要学习基于抽象识别和描述的编程技术。课程包括以下内容:软件模块化、需求规格说明、数据抽象、对象建模、设计模式以及测试,涵盖一系列从1个问题的分析到解决实现软件开发过程的技术介绍。该课程比较有特的内容是要求学生完成一个桌面弹球的编程项目,可以由学生自行决定单独完成或分组完成。
1.2 卡耐基·梅隆大学
1)软件构造:对象、设计和并发原理(Construction:Objeets,Design,and Concurrency)。
该课程以库和框架组件为基础开发软件进行教学内容的编排。为了使学生有在一定规模下构
造软件系统的相关概念,该课程教学还培养学生对数据组织基本构件的理解能力,加强学生的算法、程序结构和计算机结构相关知识。课程内容涵盖4个方面:①设计复杂系统的概念;②面向对象编程;③程序的动态和静态分析;④并行和分布式软件。该课程的课程作业是让学生完成2个已完成架构的分布式大规模软件,一个是多媒体游戏系统,另外一个是图形用户接口的具体实现。
2)软件工程导论(Introduetion to SoftwareEngineering)。
该课程讲授现代软件工程的基本原理,既包括计算机科学的技术知识,又包括将这些知识应用到复杂软件开发的过程中。课程内容包括软件构造的设计方法、模式、编码、静态和动态分析、测试和检查、软件体系结构和框架。与软件过程有关的内容包括构造、需求工程、过程模型和评估、团队开发以及包括开源服务外包和开源程序在内的供应链问题。该课程有很强的技术指向性,课程作业包括程序设计和文档撰写方面的内容。学生需要根据现代软件工程知识和工具创建一个自己的项目。
1.3 加州大学伯克利分校加州大学伯克利分校在软件工程的课程教学内容中,已经取消结构化程序设计部分的内容,主要介绍面向对象方法的软件开发以及敏捷方法过程中的极限编程,
并且详细介绍需求获取的方法。软件工程的课程项目中涉及团队开发的内容,还增加了版本控制的内容,介绍软件重用。主要教学内容包括介绍开发和修改大型软件系统的理念和技术、面向对象和敏捷设计技术、设计模式和模型设计语言、验证、静态分析、测试、版本控制和调试、成本和质量估计和控制、项目团队组织和管理。课程目的是培养学生具有面向对象软件开发方法的详细知识及应用的能力,同时培养学生运用现代技术进行中等规模软件从设想阶段到部署阶段设计的能力,以及团队开发的经验和撰写技术报告的能力。该课程实践环节的作业要求学生在协同工作的环境下,完成一个项目并提交程序。
1.4 斯坦福大学
斯坦福大学计算机系的课程设置列表中并没有软件工程这门课,但是其开设的面向对象系统分析这门课中,除了介绍面向对象系统分析的内容,还介绍软件工程部分相关内容。主要内容包括面向对象编程的原理和编程领域内容,如多线程编程、过程交互、数据库访问等,还包括团队协作编程的概念和方法。
该课程目标是培养学生大规模程序开发的能力,激发学生的兴趣;培养学生通过可用的文档分析问题和解决问题的能力,提升信心;还培养学生能够在企业开发程序的能力。
1.5 北卡罗来纳州立大学
北卡罗来纳州立大学的软件工程课程内容包括软件工程化方法应用质量保证,项目管理,需求分析,需求规约、设计、开发、测试,维护。分析北卡罗来纳州立大学软件工程主要是因为该校在敏捷开发的实验中,将结对编程(PairPrograming)实验做得很有特。该门课程的实验环境已经开源,可在互联网中下载使用。
2、美国高校软件工程教学总结
2.1 教学内容紧跟行业发展趋势
从美国高校软件工程的教学内容可以看出,很多高校已经摈弃将侧重点放在介绍面向过程的结构化软件构建方法,而主要介绍可修改性和可重用性更高的面向对象软件工程方法。
在教学内容编排上,部分高校将能力成熟度模型(CMM,CapabilityManurity Model for Sottwam)应用于实践教学环节。除此之外,美国高校还介绍软件行业中长期积累的管理技术、组织模式和实践准则。
另外,包括北卡罗来纳州立大学在内的很多高校在软件工程课程实践的过程中,将敏捷开发方法引入实践教学。该校通过对结对编程作业进行设计,帮助学生理解软件工程的概念,让学生更加适应企业对毕业生的需求。
2.2 教学方法形式多样
并不是所有高校的软件工程课程都要求实现实际的项目,还有强调非技术性技巧的教学内容。例如,麻省理工学院的软件工程原理课程作业就包括阅读作业和小论文撰写作业,该校通过作业帮助学生理解软件开发过程的概念和理念。
除此之外,大部分高校都将实践引入该门课程的教学,这个过程既包括以项目驱动为主的教学法,又侧重团队开发的教学内容。’实践过程可帮助学生处理如何定义问题域、需求跟踪等不可预见的技术问题。部分高校在课程实践过程中还引入已架构好但是尚未完成的一些项目让学生参与,强调软件工程实际开发过程中所用到的辅助工具,如用项目管理软件实现教学内容。
2.3 与行业人员和企业合作进行教学
教师在讲解理论课程的过程中,邀请软件开发行业人员开展讲座,将讲座作为教学单元;也有学校请业内人士扮演客户角,向学生提出各种需求问题并引导学生出解决问题的方法。在这个教学环节中,学生可以学到在实践生产过程中才能学到的知识和技能。另外,这还培养了学生的人际交往能力。
值得一提的是斯坦福大学的软件工程实践环节与微软、谷歌、BMW、NOKIA等世界知名企业合作。这些企业提出项目需求,由学生分组进行项目分析和实践,最后以竞赛的方式进行考核并根据比赛成绩给出该门课程的成绩。
2.4 强调学生的实践动手能力
除了个别课程不要求学生实际动手完成项目外,几乎所有课程都需要学生完成一些实践作业。学生在实践过程中完成的代码行数至少在1000行,学生通过实践提升了自己的动手能力,加深了对课程核心概念的理解。
2.5 建立有效的授课团队
讲授软件工程课程的教师比较固定,同时为了对学生的学习效果进行跟踪,高校还配备大量
助教。这样的教学梯队不但能有效地积累教学经验,而且能有效地督促学生学习。
3、软件工程课程应用型教学设置建议
3.1 教学展开方式
参照美国高校计算机科学与技术专业软件工程本科课程的内容,结合培养应用型软件工程人才的教学定位,我们可从软件生命周期、系统工程以及软件工程技术发展3个角度展开教学。教学过程采用项目驱动教学法,把一个项目分解为涵盖不同知识点的不同任务,让学生分析任务并实现项目。学生可以课程教学团队设计的案例为项目背景,采用探究式的学习策略对项目进行独立研究。助教采用提问和讨论的方式考查学生,学生需对案例中的问题或产生的矛盾提出相应解决方法和策略。这个过程可提高学生的动手能力,帮助学生在复杂条件下利用所学理论、方法和技术解决实际问题,帮助教师掌握学生在课程学习各个环节的学习情况。
3.2 教学内容编排
针对软件工程课程应用型教学的具体目标,教学内容可从软件工程概述、软件需求工程、软
件设计、软件编码、软件测试、面向对象软件工程、软件项目管理、软件维护和软件质量保证等方面进行编排。
软件工程概述部分培养学生软件开发工程化的思想,使学生具有分析案例中出现的工程性问题的能力,了解业界最新的软件开发实践和技术发展动向,了解和掌握一种具体或最佳的软件过程模型并能够在该模型框架下开展工作。软件需求工程讲解需求获取和需求管理的主要活动,培养学生具有阅读、理解和撰写需求规格说明书的能力,倾听、协商和说服的能力,描述技术问题并到解决方法的能力。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论