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

工程论文 2019-06-25 点击:

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

  软件工程课程是计算机专业中一门讲授软件工程原理和技术并对软件开发有重要指导作用的核心课程,具有涉及知识广泛和强调实践2个特点。由于该课程涉及内容较多,而且本身还在不断发展,该门课程历来是专业课教学的难点。长期以来,一个不争的事实是我国IT用人单位常常对刚进入工作岗位的毕业生不满意,他们认为学生在学校里并没有为自己将来所从事的工作作好必要的准备。同时,学术界也同样意识到上述问题。JazayeriMehdi认为现在课堂上所采用的教学内容由任课教师决定,任课教师要求学生预先定义好软件架构和处理流程,使项目限定在可控的范围内,这种方式不会出现用户需求不兼容等情况,但与企业实际的软件开发环境有较大差距。我国高校软件工程的教学内容也存在上述问题,即教学内容与企业人才需求不匹配。作为人才培养基地,高校应该围绕社会对人才的实际需求,培养学生获得应有的软件工程实践能力,选择一种更贴近现实软件开发环境的方式编排教学内容,这也是我国进行软件工程教学研究所探讨的内容。
  美国在信息技术人才的培养上有着很成熟的经验,若我们能有效地学习和借鉴其经验,会对我国的软件工程课程教学有一定帮助。鉴于软件工程课程在软件人才培养方面的重要作用,笔者将阐述5所具有代表性的美国高校的计算机科学专业软件工程本科教学过程中的特点,并进行分析和总结,以期为我们的教学提供有益的借鉴和参考。《美国新闻与世界报道》(U.SNews&WorldReport)是美国最权威的对高校及专业排名的周刊之一,该周刊于2012年将美国大学的计算机科学专业进行专业排名,其中,4所排名并列第一的高校分别是卡耐基?梅隆大学(CarnegieMellonUniversity,CMU)、麻省理工学院(MassachusettsInstituteofTechnology,MIT)、加州大学伯克利分校(UniversityofCalifornia–Berkeley,UCBerkeley)和斯坦福大学(StanfordUniversity,Stanford),而北卡罗来纳州立大学(NorthCarolinaStateUniversity,NCSU)位居全美第47名。上述5所高校计算机科学与技术专业本科教学都设置了与软件工程相关的课程,尽管名称不尽相同,但是课程讲授的重点都包括软件工程领域中一些核心问题。值得一提的是CMU的软件工程研究所在全世界都很知名,该校计算机科学系本科教学有专门的软件工程方向,然而该校计算机科学系其他方向的本科毕业生若想获得学士学位,就必须修2门与软件工程有关的课程才能毕业。该课程总结了现阶段软件工程的进展,并且对传统方法和现代软件工程方法的可靠性作了比较和分析。授课内容包括软件过程、生命周期、需求获取和规约撰写、设计原则、测试、分析和复查、质量管理和评估、产品和过程控制、COTS和重用、开发团队组织和人员管理,还有软件工程中程序设计语言的选择和编码知识。课程作业涵盖软件系统和软件开发项目设计中需要了解的问题,包括12个阅读作业。该课程没有专门的实践作业,但是为了强化学生对软件工程概念的理解,要求学生在教师每次讲解后,撰写一篇相关内容的小论文。
  该课程介绍大型软件系统开发的相关概念和技术,学生主要学习基于抽象识别和描述的编程技术。课程包括以下内容:软件模块化、需求规格说明、数据抽象、对象建模、设计模式以及测试,涵盖一系列从1个问题的分析到解决实现软件开发过程的技术介绍。该课程比较有特色的内容是要求学生完成一个桌面弹球的编程项目,可以由学生自行决定单独完成或分组完成。软件构造:对象、设计和并发原理(Construction:Objects,Design,andConcurrency)。该课程以库和框架组件为基础开发软件进行教学内容的编排。为了使学生有在一定规模下构造软件系统的相关概念,该课程教学还培养学生对数据组织基本构件的理解能力,加强学生的算法、程序结构和计算机结构相关知识。课程内容涵盖4个方面:①设计复杂系统的概念;②面向对象编程;③程序的动态和静态分析;④并行和分布式软件。该课程的课程作业是让学生完成2个已完成架构的分布式大规模软件,一个是多媒体游戏系统,另外一个是图形用户接口的具体实现。该课程讲授现代软件工程的基本原理,既包括计算机科学的技术知识,又包括将这些知识应用到复杂软件开发的过程中。课程内容包括软件构造的设计方法、模式、编码、静态和动态分析、测试和检查、软件体系结构和框架。与软件过程有关的内容包括构造、需求工程、过程模型和评估、团队开发以及包括开源服务外包和开源程序在内的供应链问题。该课程有很强的技术指向性,课程作业包括程序设计和文档撰写方面的内容。学生需要根据现代软件工程知识和工具创建一个自己的项目。
  加州大学伯克利分校在软件工程的课程教学内容中,已经取消结构化程序设计部分的内容,主要介绍面向对象方法的软件开发以及敏捷方法过程中的极限编程,并且详细介绍需求获取的方法。软件工程的课程项目中涉及团队开发的内容,还增加了版本控制的内容,介绍软件重用。主要教学内容包括介绍开发和修改大型软件系统的理念和技术、面向对象和敏捷设计技术、设计模式和模型设计语言、验证、静态分析、测试、版本控制和调试、成本和质量估计和控制、项目团队组织和管理。课程目的是培养学生具有面向对象软件开发方法的详细知识及应用的能力,同时培养学生运用现代技术进行中等规模软件从设想阶段到部署阶段设计的能力,以及团队开发的经验和撰写技术报告的能力。该课程实践环节的作业要求学生在协同工作的环境下,完成一个项目并提交程序。
  斯坦福大学计算机系的课程设置列表中并没有软件工程这门课,但是其开设的面向对象系统分析这门课中,除了介绍面向对象系统分析的内容,还介绍软件工程部分相关内容。主要内容包括面向对象编程的原理和编程领域内容,如多线程编程、过程交互、数据库访问等,还包括团队协作编程的概念和方法。该课程目标是培养学生大规模程序开发的能力,激发学生的兴趣;培养学生通过可用的文档分析问题和解决问题的能力,提升信心;还培养学生能够在企业开发程序的能力。北卡罗来纳州立大学的软件工程课程内容包括软件工程化方法应用质量保证,项目管理,需求分析,需求规约、设计、开发、测试,维护。分析北卡罗来纳州立大学软件工程主要是因为该校在敏捷开发的实验中,将结对编程(PairPrograming)实验做得很有特色。该门课程的实验环境已经开源,可在互联网中下载使用。

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

http://m.rjdtv.com/gongchenglunwen/286.html

相关推荐

猜你喜欢

大家正在看