当前位置:首页 > 专题范文 > 公文范文 > 正文

“软件工程”课程教学实施方案

发布时间: 2022-11-05 15:25:04 来源:网友投稿

摘要:“软件工程”是一门理论与实践并重的计算机软件专业基础课程。在教育部高等学校计算机科学与技术教学指导委员会统一组织下,作者针对软件工程课程的培养目标和教学实施中的关键问题,提出了该课程的教学实施方案。本文介绍了该实施方案的总体框架,结合不同类型的计算机人才培养阐述了课程实施的侧重点,并从课程实验和综合训练两个方面构建了实践教学方案。

关键词:软件工程;计算机科学与技术;核心课程;课程教学;教学实施

“软件工程”是计算机科学与技术专业和软件工程专业的一门专业基础核心课程,讲授软件工程的基本概念、基本原理和基本方法,强调软件开发问题的分析和解决。使学生从工程学角度认识软件在大型系统中的设计和应用,掌握软件工程的基本理论和方法,并将这些知识运用到软件开发的分析、设计、编码和测试等活动中,同时培养较好的团队合作能力和实践能力,具备一定的分析与解决问题能力和创新能力。

“软件工程”是一门理论与实践并重的基础课程,在教学实施方面存在较大的难度。现有的软件工程课程存在着体系不统一、定位不明确、知识与现实脱离等问题,课程内容比较庞杂和抽象,教学实践环节薄弱。对于缺乏软件开发实际经验的本科生来说,单纯地讲授抽象的理论知识往往使学生感到枯燥无味且难以理解。特别是随着软件工程日新月异的发展,传统的教学内容已经远远地落后于当前的理论和技术,无法满足现代软件工程人才的培养要求。本课程的教学目标是使学生了解和掌握现代软件工程的方法、技术和思想,具备作为软件工程师所需的专业能力。因此,如何使教学内容先进、讲授生动实际、实践效果良好,一直是软件工程课程教学需要解决的难点问题。

近年来,国内高校教师积极开展软件工程课程的教学改革,在教学内容、教学模式、实践体系等方面进行了深入探索和创新尝试,取得了一些有意义的成效,在不同层次上建设了一批软件工程精品课程。为了更好地总结软件工程教学改革的成功经验,在教育部高等学校计算机科学与技术教学指导委员会的统一组织下,由清华大学刘强、浙江大学陈越、南京大学骆斌、桂林电子科技大学古天龙、北方工业大学吴洁明、华中科技大学裴小兵、中国科学技术大学朱少民、清华大学白晓颖等老师组成课题组,结合课题组成员在软件工程教学第一线所获得的经验,共同研究形成了软件工程课程教学实施方案,目前该方案已由高等教育出版社出版。

本文介绍了该实施方案的总体框架,针对不同类型计算机人才的培养要求,围绕教学内容组织、课程讲授重点、实践教学环节等方面描述了课程的实施要点。

一、课程教学实施方案总体框架

软件工程课程既涉及计算学科的抽象和设计形态,又关注工程学科的系统性、规范性和可度量性等属性,强调培养学生的软件系统开发能力,案例教学和实践环节是课程教学的重要途径。

1 课程的教学定位与培养目标

本课程的教学定位包括三个方面:一是从软件生命周期的角度讲解软件工程的基本概念、基本原理和基本方法;二是从系统工程的角度讲解层次化的、系统性的、规范化的、可定量的软件工程方法学;三是从软件工程技术发展的角度讲授一些新技术和新方法,这样既有助于开拓学生视野和培养创新意识,又可以很好地适应现代软件行业发展的需要。经过本课程的学习,学生能够掌握软件工程的基础知识,从工程学角度认识软件在大型系统中的设计和应用,具备作为软件工程师从事软件开发所需的专业能力。

本课程通过一个具有一定规模的软件项目开发全过程,培养学生掌握扎实的软件工程基础知识,具备应用所学技术解决真实问题的能力。包括获取和分析用户需求、选择和设计适当应用解决方案以及使用规范化的软件工程方法和工具设计、实现和测试软件系统,并在过程管理、团队协作、谈判与沟通等方面使学生获得良好的工程化训练。

2 实施方案的总体框架 结合本课程教学实施过程中存在的问题,以及课程的教学定位和培养目标,课题组在设计教学实施方案时,重点考虑以下三个方面的问题。

一是教学内容的组织:如何合理地更新和组织教学内容,使传统与现代有机结合,更好地体现课程教学的基础性、先进性和系统性。

二是教学案例的讲授:如何运用典型案例解决教学内容中的难点和重点问题,使学生真正地理解所讲授的知识点。

三是软件工程能力的培养:如何建立良好的软件工程能力实践训练体系,使学生从可实践的角度学会运用现代软件工程的思想和技术解决软件开发问题。

围绕上述问题,本方案从总体上规划了以软件工程课程为核心的相关课程群,从基本描述、内容矩阵、内容大纲、课程实验、课程考核等方面阐述了软件工程课程教学实施方案的主体内容。并针对科学型、工程型和应用型学生的培养要求给出了教学内容的不同侧重点。

(1)软件工程课程群。软件工程课程群主要包括6门核心课程:软件工程、软件需求工程、面向服务的体系架构、软件质量保证与测试、软件项目管理、软件工程的形式化方法,还有一门独立的综合训练课程“软件工程项目实践”。

①“软件工程”课程的目的在于使学生掌握软件工程的基本概念、基本原理和基本方法,从工程学角度认识软件在大型系统中的设计和应用,具备作为软件工程师从事工程实践所需的专业能力。

②“软件需求工程”课程的目的在于使学生了解需求工程的相关背景、基本知识和基本活动,掌握需求工程领域的重要理论、方法和技术,并学会在实际开发中加以运用。

③“面向服务的体系架构”课程的目的在于结合互联网软件开发的需求,以面向服务的体系结构为主要软件范型,介绍软件工程的最新研究及业界成果。

④“软件质量保证与测试”课程的目的在于使学生了解并掌握软件产品质量保证的思想和管理体系以及软件测试的方法与技术,具有综合运用软件测试方法、技术和工具的能力。

⑤“软件项目管理”课程的目的在于使学生从工程学和管理学的角度认识软件项目管理理念,并建立软件项目管理的思维方式,具有解决软件开发项目问题的管理能力。

⑥“软件工程的形式化方法”课程的目的在于使学生全面理解形式化方法开发软件的范式,掌握建立安全关键软件系统、可信软件开发所必需的形式化方法基础知识。

⑦“软件工程项目实践”以一个完整的软件项目开发过程组织课程训练内容,适合于大学四年级学生的专业实践,使学生在实际的“动手做”和“真正练”中运用软件工程的思想和技术解决客户提出的问题。

上述课程群仅仅是一个参考性的框架,各院校可以根据自己的情况裁剪和替换其中的部分课程。例如,“面向服务的体系架构”重点讲授互联网应用系统设计内容,该课程可以用“软件系统设计与体系结构”课程替换,重点讲授一般大型软件系统体系结构设计内容。

(2)软件工程课程教学实施方案主体内容。软件工程教学内容的组织以IEEE最新发布的软件工程知识体

系为基础,课程知识单元包括软件需求、软件设计、软件构造、软件测试、软件演化、软件过程、软件工程管理等基础部分,突出当前流行的迭代开发过程、面向对象技术和UML语言等重点内容,融入企业的最佳实践和实际案例,覆盖IEEE的系列软件工程标准以及常用的软件工程工具。

本方案的主体部分按照科学型、工程型、应用型三类学生的培养要求,分别给出了软件工程课程的教学实施设计,具体包括以下内容。

①基本描述:包括课程名称、课程性质、预备基础知识、基本学时安排、教学定位、能力培养要求等。

②内容矩阵:构建了两层结构的课程知识点,并给出了讲授学时和掌握程度,共有10个知识单元和50多个知识点,不同培养要求的学生在知识点上略有不同。

③内容大纲:针对所有知识单元,分别给出教学要求、重点与难点以及讲授提示,特别强调了案例式互动的教学模式。

④课程实验:包括实验概述、实验内容、实验过程、实验评价和实验工具等,并给出了两类选题的实验项目描述。

⑤课程考核:包括考核形式、考核重点以及成绩比例等。

二、科学型、工程型、应用型分类教学的不同侧重点

本方案在教学内容组织上采用了统一的框架结构,涉及软件工程概述、软件过程、软件工程管理、软件需求工程、分析建模、软件设计、用户界面设计、软件构造、软件测试、软件交付与维护等10个部分。并针对科学型、工程型、应用型三种类型人才的不同定位,在具体的目标要求和实施侧重点上进行了区分。

1 教学目标的不同要求

在基础知识与技能方面,科学型的重点是培养学生认知和理解抽象事物,强调建模分析和创新设计,熟悉最新的理论、方法和技术;工程型的重点是要求学生掌握软件工程的先进技术,能够提出、权衡和选择各种设计方案:应用型的重点是要求学生掌握软件工程规范和工具,能够设计和实现软件应用系统。

在分析与解决问题能力方面,科学型的重点是在基础研究、应用基础研究和关键技术研究方面,能够提出创新的方法和设计:工程型的重点是在特定的情况下能够进行适当的选择,为一个或多个应用领域设计适当的解决方案;应用型的重点是针对具体的解决方案,运用特定的开发平台和技术,实现软件应用系统。

在团队协作能力方面,三种类型的学生应充分理解团队合作的重要性,具备个人工作与团队协作的能力,以便能够开发和发布高质量的软件产品。

在谈判与沟通能力方面,三种类型的学生可以运用合适的形式进行有效沟通,清楚地表达技术问题及其解决方法,具备倾听、说服和协商的技能。

2 教学实施的不同侧重点

(1)软件工程概述。科学型的教学应注重引导学生认真分析案例中体现出的软件工程领域科学问题,阐述软件工程领域中的前沿理论研究和最新技术发展动向;工程型和应用型的教学应注重引导学生认真分析案例中体现出的工程性问题,阐述软件工程领域中的业界最佳实践和最新技术发展动向。

(2)软件过程。科学型的教学应重点讲解敏捷开发过程,尝试在研发性项目中进行应用;工程型的教学应进一步结合具体的工程性项目,引导学生选择和改进适用的过程模型,并能够定义整个开发过程:应用型的教学应重点介绍一种具体的或者某公司的软件过程模型,使学生了解该过程的主要活动,并能够在具体的框架下开展工作。

(3)软件工程管理。科学型的教学应重点讲解民主式结构的开发小组,讲解如何制订小组层次的项目进度计划,培养较强的口头交流与协商能力:工程型的教学应重点介绍大型软件企业的层次式组织结构及其常见的角色职责与分工,讲解如何制订小组层次上的项目进度计划,培养较强的口头交流与协商能力;应用型的教学应重点介绍大型软件企业的层次式组织结构及其常见的开发人员角色职责与分工,强调团队协作的重要性。

(4)软件需求工程。科学型的教学在讲解基本知识与方法的基础上,补充介绍需求工程领域的最新理论和方法,激发有兴趣的学生进一步钻研;工程型的教学应重点讲解需求获取和需求管理的主要活动,引导学生运用所学的方法和技术,定义各种系统的软件需求,形成需求规格说明并进行需求评审:应用型的教学应讲解需求获取和需求管理的主要活动,引导学生阅读和理解一个现有系统的规格说明,并根据需要扩展新的需求。

(5)分析建模。科学型的教学应注重讲解基于UML的面向对象分析方法,并初步介绍形式化方法的基本知识;工程型的教学应介绍结构化分析技术,重点讲解基于UML的面向对象分析方法,并侧重于对实际的软件系统进行建模分析:应用型的教学应介绍结构化分析技术和基于UML的面向对象分析方法,引导学生学会分析和理解软件系统的相关模型。

(6)软件设计。科学型和工程型的教学应该强调各种不同的设计方案,引导学生通过比较和分析这些方案的优劣,权衡和选择合适的设计方案,并且在应用设计原则进行详细设计时,应该尽量使用重用技术,掌握常用的设计模式;应用型的教学应介绍常用的软件体系结构,引导学生在特定的体系结构框架下学会应用良好的设计原则详细设计一个应用系统。

(7)用户界面设计。科学型和工程型的教学应该能够对不同界面设计进行评价,学会抽象出系统的界面设计模板;应用型的教学应该介绍常见的用户界面风格,讲解如何运用用户界面设计工具完成具体的界面设计。

(8)软件构造。在学习软件工程之前,学生已经具各了良好的程序设计基础,但可能缺少软件工程的概念和训练。通过分析程序代码实例,从可读性、规范性、正确性、容错性、可重用性等方面讲解良好的编码实践,强调代码走查和单元测试技术是软件编码的一部分,在课程实验项目中训练学生应用测试驱动的软件开发技术,掌握编写高质量代码的基本能力。

(9)软件测试。科学型的教学在讲解基础知识和方法的同时,可以结合一个具体的测试要求,引导学生学习编写相应的小规模测试工具;工程型的教学应全面介绍质量保证体系和常见的软件测试工具,引导学生设计简单的测试用例,并能够运用工具完成简单的测试要求,也可以编写一些小规模的测试工具;应用型的教学应介绍一些常见的测试工具,引导学生设计简单的测试用例,学会运用工具完成简单的测试要求。

(10)软件交付与维护。这部分内容以讲授基础知识为主,同时可以通过课程实验项目,使学生体会软件发布与部署工作。

三、实践教学环节与考核

实践教学是本课程重要的组成部分,通常包括与课堂讲授同步的课程实验,也可以单独设立一门综合训练课程。

1 软件工程课程实验 软件工程的课程实验通常要求学生以开发团队(1个团队通常由3~5人组成)的形式开发一个具有一定规模的软件系统。侧重培养学生发现问题、独立分析问题和解决问题的能力以及团队合作精神,使学生初步体会一个软件项目开发的全过程。

实验题目应该是从实际项目中经过简化和提炼得到

的一定规模的模拟案例,其类型可以是多种多样的。本方案示范性地给出了两种类型系统的问题描述,以便教师在课程实验中直接引用或参考。

第一类:具有实际应用背景、规模较大且需求复杂,以股票交易系统为例加以描述。

第二类:具有应用背景、中小规模且需求相对直观,以视频游戏Survivor为例加以描述。

在第一次实验课上,一个企业、任课教师或助教、被选定的潜在市场代表人物等可以作为软件开发的客户代表,提出软件的问题描述。在后续的开发过程中,任课教师或助教需要扮演高层项目经理的角色,对每一阶段的活动进行组织管理,并与学生保持有效的沟通。最后,客户代表应该参与评价学生的工作。

课程实验项目的软件开发过程分成实验准备、需求分析、软件设计、编程实现、集成测试、软件交付和软件维护等部分,在课时有限的情况下可以取消“软件维护”部分。课程实验的过程设计应注重将小组协作、过程管理与参与兴趣相结合,通过诸如每周例会制度、关键阶段评审机制、严格控制项目进度等一系列措施,注重软件工程标准与软件工程工具的使用,保证学生在一个规范的和可控的过程中完成实验项目的开发。

实验考核结合各小组提交的实际工程制品进行,应注意在评价整个小组成果的同时区分个人的贡献。具体评价内容与比例为:软件需求规格说明20%,软件设计文档20%,模块代码25%,集成系统25%,软件测试文档10%。

2 软件工程项目综合训练 本课程是一门综合性的实践课程,没有太多的讲授内容,更多的是关注于一个完整项目开发的实训。它需要营造一个典型企业中的软件工程环境,包括开发过程模型、系列文档模板、软件编码规范、阶段评审标准、软件工程工具等各种基基础设施。

下图列出了软件工程项目综合训练的过程规划和活动内容。在训练过程中,最好有一个真实的客户代表提出一个真实的项目需求。整个开发过程经历一个软件系统的多次迭代,并采用规范的项目管理技术对项目本身进行管理,关注质量问题。教师和助教人员应具备足够的实际开发经验,在项目开发中切实起到指导作用。

本课程的考核通过阶段评价汇总而成,其中项目规划阶段占10%,第一次迭代占30%,第二次迭代占30%,稳定与交付阶段占20%,每周的检查与汇报情况占5%,开发小组的管理与协作占5%。

3 课程考核

软件工程课程的考核应该包括平时成绩、期末考试和实验成绩3个部分,其中平时成绩可以通过个人作业或小组讨论等方式进行评定,期末考试可以采用开卷或闭卷形式,重点考查学生对软件工程的基本概念、基本理论、基本方法的理解和掌握程度。在课程的总成绩中,平时成绩占10%,期末考试成绩占50%,实验成绩占40%。

本方案在教学内容组织上力求生动实际,紧跟学科发展;在教学方式上注重案例教学,调动学生积极性;在实践教学上努力营造一个适合软件工程课程实验项目的软件工程环境,注重实验题目的选择和整个过程的管理。

参考文献:

[1]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2009.

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

[责任编辑:余大品]

最新文章

版权所有:博古范文网 2012-2024 未经授权禁止复制或建立镜像[博古范文网]所有资源完全免费共享

Powered by 博古范文网 © All Rights Reserved.。浙ICP备12018771号-1