《计算机科学与技术(软件工程方向)专业规范.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术(软件工程方向)专业规范.docx(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第342页 共71页2.4计算机科学与技术(软件工程方向)专业规范一、软件工程专业教育的历史、现状及发展方向1. 软件工程学科与教育的发展 软件在当今的信息社会中占有重要的地位,软件产业是信息社会的支柱产业之一。随着软件应用日益广泛、软件规模日益扩大,人们开发、使用、维护软件不得不采用工程的方法,以求经济有效地解决软件问题。借助于计算机科学技术、数学、管理科学与工程诸多学科,今天的软件工程己由最初的一个学科方向发展成为以计算机科学技术为基础的一个新兴交叉学科。该学科的发展可分为概念提出、学科雏形和学科确立三个阶段。(1) 概念提
2、出1960年代末期,计算机程序在复杂度、规模和应用领域等方面的增长引人注目,这导致上千亿资金花费在软件开发上,许多人的工作和生活依赖于软件开发的成果。软件产品帮助人们获得了更高的工作和生产效率,同时也给人们提供了一个更加安全、灵活和宽松的工作与生活环境。尽管有很多成功之处,许多软件产品在成本、工期、质量等方面仍存在严重问题。主要原因是:1) 软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理。2) 个人或小组开发小型软件非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。3) 计算机和软件技术的快速发展,提高了客户对软件的期望,促进了软件产品的进化,为软件产品提出
3、了新的、更多的需求,因此增加了软件行业内的竞争,难以在可接受的开发进度内保证软件的质量。1968年在德国举行的NATO软件工程会议上,为应对“软件危机”的挑战,提出了“软件工程”的术语。这个时期有代表性的软件工程定义是“为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法”。1972年IEEE学会的计算机协会第一次出版了“软件工程学报”。此后,“软件工程”这个术语被广泛用于工业、政府和学术界,众多的出版物、团体和组织、专业会议在它们的名称里使用“软件工程”这个术语,很多大学的计算机科学系先后开设了软件工程课程。(2) 学科雏形软件工程早期的发展是理清软件工程过程的各种活动,
4、提出软件生命周期的概念和软件开发的瀑布模型,制定软件生命周期中主要活动的质量标准。标准是工程的起点和归宿。人们在制定各种标准时,加深了对软件产品的理解。软件不可靠、不可维护、不可移植导致开发和维护费用激增。特别是软件测试不能证明软件正确,且事后的更改不一定能增进软件的质量。这些问题要求计算机科学改进构造软件的方法,甚至开发出新的语言实现新的编程范型,设计高质量软件的规范或范型来开发软件。计算机科学从软件工程实践中得到了许多待解决的问题,从而推动了计算技术的进展,如数据流、控制流、事件驱动、状态机变换、面向对象、净室软件等方法。软件工程将这些技术规范化、模式化,并制作相应的工具,使得软件生产率更
5、高、质量更好、成本更低。它们相得益彰,相互促进。这个时期的软件工程定义特别强调,软件工程以计算机科学和数学为基础,用系统的、可控制的、有效的方式建造高质量的软件。有代表性的定义包括:1) “软件工程是一种工程形式,它运用计算机科学和数学原理,针对软件问题获得一种经济有效的解决方案。”2) “用系统的、规范的、可度量的方法,开发、运行和维护软件”。1991年,ACM和IEEE-CS的计算学科教程CC1991专题组将“软件工程”列为计算学科的九个知识领域之一。1980年代末到1990年代初,计算机硬件普遍采用大规模集成电路。在单主机计算模式下,基于瀑布模型的软件开发过程和结构式过程语言编程范型占主
6、导地位,软件工程得到极大的发展。以阶段论看待软件生命周期,给规范和规程的制定、工具研制、预算管理、工程核算、组织质量过程带来极大方便,基于瀑布模型的软件工程的研究在软件需求分析、软件设计、软件测试、软件质量保证、软件过程改进等多个子领域得到深化和扩展,形成了软件工程学科的雏形。(3) 学科确立1970年代末期,美国制定研究生教育计划时采纳了IEEE-CS提出的制定软件工程教程的建议,为软件工程教育打下了基础。1980年代末和1990年代初,软件工程教育得到卡内基-梅隆大学软件工程研究所(SEI)的培育和支持。他们调查软件工程教育的现状;出版软件工程推荐教程;在卡内基-梅隆大学建立软件工程硕士教
7、育计划;组织和推动软件工程教育者研讨会。1993年,IEEE-CS和ACM为把软件工程建设成为一个专业,建立了IEEE-CS/ACM联合指导委员会。随后,该指导委员会被软件工程协调委员会(SWECC)替代。SWECC给出了“软件工程职业道德规范”、“本科软件工程教育计划评价标准”和“软件工程知识体”(SWEBOK)。SWEBOK全面描述了软件工程实践所需的知识,为开发本科软件工程教育计划打下了基础。2004年8月,全世界500多位来自大学、科研机构和企业界的专家、教授经过多年的努力,推出了软件工程知识体、软件工程教育知识体(SEEK)两个文件的最终版本,标志着软件工程学科在世界范围正式确立,并
8、在本科教育层次上迅速发展。软件工程、计算机科学、计算机工程、信息系统、信息技术并列成为计算学科下的独立学科。(4) 我国的软件工程教育我国的软件工程基础技术研究始于1980年代初。当时,软件开发方法学成为研究热点。1980年在北京召开了我国首届软件工程研讨会,之后,许多高等学校和科研单位陆续开展了软件开发方法学、CASE工具和环境、面向对象技术等软件工程基础技术的研究。“软件工程核心支撑环境”,“软件工程技术、工具和环境的研究与开发(SEP)”等课题被列入国家重点科技攻关项目,其科研成果代表了我国软件工程技术研究的水平。与此同时,部分高校面向研究生开设了软件工程课程,开始引进和编写软件工程教材
9、。1984年和1985年,国家科委选择重点高校招收了两批(200人)软件工程硕士,为软件工程教育积累了经验。此后,高等院校开始为本科开设软件工程课程。部分高校从1988年开始试办软件工程专业(后来在学科调整时又归并到计算机科学与技术学科)。1990年代,软件重用和软件构件技术成为研究热点,面向对象方法和技术成为软件开发的主流技术,软件过程研究及软件企业的过程改善受到广泛重视。随着软件工程技术的发展,高校又增设了面向对象技术,支持面向对象技术的Smalltalk语言、软件过程管理、软件测试技术、软件过程度量等课程,软件工程领域的教学内容不断丰富,教学时数不断增加,教学改革不断深入。为适应我国经济
10、结构战略性调整,实现软件产业和软件人才培养的跨越式发展,2000年发布了18号文件国务院关于印发鼓励软件产业和集成电路产业发展的若干政策的通知,2001年经教育部和国家计委批准,全国成立了35所示范性软件学院。各高校软件学院和计算机学院(系)为培养高层次、实用型、复合型、具有国际竞争力的人才,要求学生在思维创新的基础上,提高技术创新和工程创新能力,提高软件工程实践和软件工程管理能力。这有效地促进了我国软件工程学科的发展,我国软件工程教育开始走向成熟。2. 软件工程学科概况SWECC发布的SWEBOK定义了软件工程学科的内涵,它由10个知识域构成。(1) 软件需求软件需求描述解决现实世界某个问题
11、的软件产品,及对软件产品的约束。软件需求涉及需求抽取、需求分析、建立需求规格说明和确认,涉及建模、软件开发的技术、经济、时间可行性分析。软件需求直接影响软件设计、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程和软件质量等。(2) 软件设计设计是软件工程最核心的内容。设计既是“过程”,也是这个过程的“结果”。软件设计由软件体系结构设计、软件详细设计两种活动组成。它涉及软件体系结构、构件、接口,以及系统或构件的其他特征,还涉及软件设计质量分析和评估、软件设计的符号、软件设计策略和方法等。(3) 软件构造通过编码、单元测试、集成测试、调试、确认等活动,生成可用的、有意义的软件。软件构造
12、除要求符合设计功能外,还要求控制和降低程序复杂性、预计变更、进行程序验证和制定软件构造标准。软件构造与软件配置管理、工具和方法、软件质量密切相关。(4) 软件测试测试是软件生存周期的重要部分,涉及测试的标准、测试技术、测试度量和测试过程。测试不再是编码完成后才开始的活动,测试的目的是标识缺陷和问题,改善产品质量。软件测试应该围绕整个开发和维护过程。测试在需求阶段就应该开始,测试计划和规程必须系统,并随着开发的进展不断求精。正确的软件工程质量观是预防,避免缺陷和问题比改正好。代码生成前的主要测试手段是静态技术(检查),代码生成后采用动态技术(执行代码)。测试的重点是动态技术,从程序无限的执行域中
13、选择一个有限的测试用例集,动态地验证程序是否达到预期行为。(5) 软件维护 软件产品交付后,需要改正软件的缺陷、提高软件性能或其他属性、使软件产品适应新的环境。软件维护是软件进化的继续。软件维护要支持系统快速地、便捷地满足新的需求。基于服务的软件维护越来越受到重视。软件维护是软件生存周期的组成部分。然而,历史上维护从未受到重视。现在情况有了改变,软件组织力图使软件运营时间更长,软件维护成为令人关注的焦点。(6) 软件配置管理为了系统的控制配置变更,维护整个系统生命周期中配置的一致性和可追踪性,必须按时间管理软件的不同配置,包括配置管理过程的管理、软件配置鉴别、配置管理控制、配置管理状态记录、配
14、置管理审计、软件发布和交付管理等。(7) 软件工程管理运用管理活动,如计划、协调、度量、监控、控制和报告,确保软件开发和维护是系统的、规范的、可度量的。它涉及基础设施管理、项目管理、度量和控制计划三个层次。度量是软件管理决策的基础。近年来软件度量的标准、测度、方法、规范发展较快。(8) 软件工程过程管理软件工程过程的目的是实现一个新的或者更好的过程。软件工程过程关注软件过程的定义、实现、评估、测量、管理、变更、改进,以及过程和产品的度量。软件工程过程分为:围绕软件生存周期过程的技术和管理活动,即需求获取、软件开发、维护和退役的各种活动;对软件生存周期的定义、实现、评估、度量、管理、变更和改进。
15、(9) 软件工程工具和方法软件工程工具是以计算机为基础的,用于辅助软件生存周期过程。通常,工具是为特定的软件工程方法设计的,以减少手工操作的负担,使软件工程更加系统化。软件工具的种类很多,从支持个人到整个生存周期。软件工具分为:需求工具、设计工具、构造工具、测试工具、维护工具、配置管理工具、工程管理工具、工程过程工具、软件质量工具等。软件工程方法支持软件工程活动,使软件开发更加系统,并能获得成功。软件工程方法不断发展。当前,软件工程方法分为:启发式方法,包括结构化方法、面向数据方法、面向对象方法和特定域方法;基于数学的形式化方法;用软件工程多种途径实现的原型方法,原型方法帮助确定软件需求、软件
16、体系结构、用户界面等。(10) 软件质量软件质量贯穿整个软件生存周期,涉及软件质量需求、软件质量度量、软件属性检测、软件质量管理技术和过程等。SWEBOK还把软件工程相关学科列为知识域,它们是软件工程发展不可或缺的部分。相关学科知识域包括计算机工程、计算机科学、数学、管理学、项目管理、质量管理、系统工程学和软件人类工程学八个领域。3. 软件工程学科的方法论软件工程学科是计算学科的分支,计算学科中理论、抽象、设计等三个学科形态,绑定、大问题的复杂性、概念和形式模型、一致性和完备性、效率、演化、抽象层次、按空间排序、按时间排序、重用、安全性、折衷与决策等12个基本概念,数学方法、系统科学方法在软件
17、工程学科中占有重要地位。此外,软件工程还十分重视管理过程,以提高软件产品的质量、降低开发成本、保证工程按时完成。系统性、规范性、可度量性也是软件工程非常关注的。4. 软件工程学科的相关学科软件工程学科的理论基础是数学、计算机科学。软件工程的研究和实践涉及人力、技术、资金、进度的综合管理,是开展最优化生产活动的过程;软件工程必须划分系统的边界,给出系统的解决方案。因此,软件工程的相关学科有计算机科学与技术、数学、计算机工程、管理学、系统工程和人类工程学等。(1) 计算机科学与技术在计算学科发展的早期,计算机科学家开发软件,电子工程师生产支持软件运行的硬件。随着软件规模、复杂性和重要性的增加,确保
18、软件按人们的意图运行格外重要。软件工程的主要基础是计算机科学与技术。有效的软件开发实践需要比计算机科学原理更多的内容,它不仅需要计算机科学的理论、方法和工具,还需要加强工程严密性、提高合理使用各种资源的管理水平。软件工程教育知识体反映了软件工程对计算机科学的依赖,以及作为计算基础的主要成分。(2) 工程学科软件工程强调采用工程化的方式开发软件,软件工程具有下列工程特征:1) 通过成本和收益的折衷分析调整软件工程策略。2) 能对软件工程涉及的某些对象,如质量、成本、工作量、进度等进行度量,要确认度量方法,并根据经验和实验数据进行估算。3) 依靠团队,强调团队的效率和纪律性。4) 工程师能胜任多种
19、角色,如研究、开发、设计、生产、测试、构造、操作、管理,以及销售、咨询和培训等。5) 在软件工程过程中选择和使用合适的工具。6) 通过专业协会和最佳实践提高个人能力。7) 重用设计和设计制品。工程活动以设计为中心,设计在软件工程活动中占有十分重要的地位。为了满足项目需求,工程设计过程必须对潜在的冲突和约束进行折衷。工程设计涉及技术、经济、法律和社会等方面的问题。因为软件的特殊性,软件工程与传统的工程学不同。软件工程更关注抽象、建模、信息组织和表示、变更管理等。软件工程在产品的设计阶段必须考虑实现和质量控制。持续的进化是软件产品的重要特征。软件工程设计的关键是工程设计决策,它将用于软件抽象的各个
20、层次。重用和基于构件开发在工程设计实践中越来越受到重视。(3) 管理学科软件开发是一个项目目标实现的过程,管理科学的目标性和约束性原则在软件工程中得到重要的体现。软件工程强调软件产品及其开发过程的成本、进度、质量和文档的属性,要求在特定的环境和一定的组织机构内,有效地利用有限资源(人力、物力、财力等),通过协调一系列相互关联的任务,在规定的时间内完成,并满足一定的性能、质量、数量、技术指标等要求。软件的特殊性增大了管理的难度,因此,软件工程在软件生存周期的整个过程中,对需求、计划、成本、风险、过程和质量进行度量、跟踪、管理与控制。二、软件工程专业培养目标和规格1. 人才培养目标培养德、智、体、
21、美全面发展,掌握自然科学和人文社科基础知识、计算机科学基础理论、软件工程专业及应用知识,具有软件开发能力,具有软件开发实践和项目组织的初步经验,具有创新、创业意识,具有竞争和团队精神,具有良好的外语运用能力,能适应技术进步和社会需求变化的高素质软件工程专门人才。2. 人才培养规格软件工程专业的学制一般为四年,授予工学学士学位。其素质结构、能力结构和知识结构要求如下:(1) 素质结构要求思想道德素质:热爱祖国,拥护中国共产党的领导,树立科学的世界观、人生观和价值观;具有责任心和社会责任感;具有法律意识,自觉遵纪守法;热爱本专业,注重职业道德修养;具有诚信意识和团队精神。文化素质:具有一定的文学艺
22、术修养、具有良好的文字和口头表达能力、具有交流和沟通能力与现代意识。专业素质:掌握科学思维方法、工程设计方法,具备良好的工程素养;具有创新、创业精神;具有严谨的科学态度和务实的工作作风。身心素质:具有较好的身体素质和心理素质。(2) 能力结构要求 掌握软件工程的知识与技能,具备软件工程师从事工程实践所需的专业能力。获取知识能力:终身学习能力、信息获取能力、适应学科发展的能力等。应用知识能力:需求分析和建模的能力、软件设计和实现的能力、软件评审与测试的能力、软件过程改进与项目管理的能力、设计人机交互界面的能力、使用软件开发工具的能力等。创新能力:在基础研发、工程设计和实践等方面具有一定的创新意识
23、和能力。(3) 知识结构要求 工具性知识:外语、文献检索、科技写作等。 人文社会科学知识:文学、哲学、政治学、社会学、法学、心理学、思想道德、职业道德、艺术等。自然科学知识:数学、物理学等。工程学知识:工程经济学、其他工程应用领域的基础知识。经济管理知识:经济学、管理学等。专业技术基础知识:计算机科学、数学基础知识,包括离散数学、程序设计语言和程序设计、数据结构、计算机体系结构、操作系统和网络、数据库等。专业知识:软件需求、软件建模与分析、软件设计、人机交互、软件验证与确认、软件进化、软件过程、软件质量和软件管理等。三、软件工程专业教育内容和知识体系1. 人才培养的教育内容及知识结构的总体框架
24、(1) 理论依据“软件工程”是一门用系统的、规范的、可度量的方法开发、运行和维护软件的学科。主要的教育知识领域包括:计算基础、数学和工程基础、职业实践、软件建模与分析、软件设计、软件验证与确认、软件进化、软件过程、软件质量和软件管理。软件工程教学既重视理论知识和较高层次分析问题、解决问题的方法,也重视软件设计和工程实践。本规范给出了知识单元的总体框架和课程体系的最小核心部分,并提出了课程体系设计的指导性建议。不同院系可根据自己的教育资源、系统和需求,对本课程体系进行调整和扩充。(2) 总体框架按照顶层设计的方法,理工科本科专业教育内容和知识体系由普通教育(通识教育)、专业教育和综合教育三部分构
25、成: 1) 普通教育包括:人文社会科学,自然科学,经济管理,外语,体育,实践训练等知识体系。2) 专业教育包括:相关学科基础,软件工程学科专业,专业实践训练等知识体系。 3) 综合教育包括:思想教育,学术与科技活动,文艺活动,体育活动,自选活动等知识体系。 2. 软件工程专业教育的知识体系(1) 软件工程专业教育知识体系概貌软件工程教育知识体系由知识领域、知识单元和知识点三个层次组成。最高层是知识领域(Area),代表一个特定的学科子领域,用于组织、分类和描述软件工程知识体系的顶层概貌。每个知识领域由前缀SE-加该领域的英文缩写词表示,比如SE-CMP代表计算基础,SE-MAA代表软件建模与分
26、析。知识领域之下又划分成更小的知识单元(Unit),代表各个知识领域中的不同方向,用知识领域缩写后面加小写英文字母后缀表示。例如,MAA.er表示知识领域SE-MAA中的“需求获取”知识单元。知识点(Topic)是整个体系结构中的最底层,代表知识单元中单独的主题模块。软件工程专业共有10个知识领域,42个知识单元,建议最小核心学时数为494。(2) 软件工程专业教育知识体系的知识领域软件工程专业教育共包括10个知识领域:SE-CMP 计算基础SE-FND数学和工程基础SE-PRF职业实践SE-MAA软件建模与分析SE-DES软件设计SE-VAV软件验证与确认SE-EVO软件进化SE-PRO软件
27、过程SE-QUA软件质量SE-MGT软件管理(3) 每个知识领域包含的核心知识单元软件工程教育知识体系概要说明了各个知识领域、知识单元、所需的最小建议学时等。知识体系各领域的详细情况列在表1中。表内各知识单元后面的括弧内给出了它们各自的核心学时数。有关知识领域、知识单元以及相关知识点的详细描述在附录1中给出。表1 知识领域和知识单元知识领域知识单元( 最小核心学时数494)SE-CMP计算基础(172)CMP.cf CMP.ct CMP.tl CMP.fm 计算机科学基础(140)构造技术(20)构造工具(4)形式化开发方法(8)SE-FND数学和工程基础(89)FND.mf FND.ef F
28、ND.ec 数学基础(56)软件的工程基础(23)软件的工程经济学(10)SE-PRF职业实践(35)PRF.psy PRF.comPRF.pr 团队激励/心理学(5)交流沟通技能(10)专业技能(20)SE-MAA软件建模与分析(53)MAA.mdMAA.tmMAA.afMAA.rfdMAA.erMAA.rsdMAA.rv建模基础(19)模型分类(12)分析基础(6)需求基础(3)需求获取(4)需求规约与文档(6)需求确认(3)SE-DES软件设计(45)DES.conDES.strDES.arDES.hciDES.ddDES.ste设计概念(3)设计策略(6)体系结构设计(9)人机界面设计
29、(12)详细设计(12)设计支持工具与评价(3)SE-VAV软件验证与确认(42)VAV.fndVAV.revVAV.tstVAV.hctVAV.par基本知识(5)评审(6)测试(21)人机用户界面测试和评价(6)问题分析和报告(4)SE-EVO软件进化(10)EVO.proEVO.ac进化过程(6)进化活动(4)SE-PRO软件过程(13)PRO.conPRO.imp过程概念(3)过程实施(10)SE-QUA软件质量(16)QUA.ccQUA.stdQUA.proQUA.pcaQUA.pda软件质量概念与文化(2)软件质量标准(2)软件质量过程(4)过程保证(4)产品保证(4)SE-MGT
30、软件管理(19)MGT.conMGT.ppMGT.perMGT.ctlMGT.cm管理概念(2)项目计划(6)项目人员和组织(2)项目控制(4)软件配置管理(5)本规范设计知识体系的一个原则是,使知识体系的核心尽可能小,主要包括获得软件工程本科学位所必须具备的知识。核心即必须。(4) 知识体系中的应用知识领域作为软件工程专业本科教育的一部分,学生应该在一个或多个应用领域拥有专长,为此必须学习一些上述核心单元之外的知识。学生可以专注于上述10个知识领域中的一个或多个,也可以专注于表2所列16个应用领域知识单元中的45个。对于每一个应用领域知识单元,学生应该在深入学习特定系统设计的同时,广泛学习有
31、关的领域知识,并且学习这些领域中典型产品的特性及其对系统设计与开发的影响。具体每个领域单元对应的知识点参见附录1。表2 知识体系中的应用领域知识领域知识单元SE-SAS特定系统和应用SAS.netSAS.infSAS.finSAS.surSAS.secSAS.sfySAS.embSAS.bioSAS.sciSAS.telSAS.avSAS.indSAS.mmSAS.mobSAS.abSAS.chl以网络为中心的系统信息系统和数据处理金融和电子商务系统容错和可存活系统高安全保密系统安全攸关系统嵌入式和实时系统生物医学系统科学系统电信系统航空和交通系统工业过程控制系统多媒体、游戏和娱乐系统小型移动
32、平台系统基于Agent的系统中文信息处理(5) 授课方式、最少讲授时间或实验时间本规范使用学时作为课时单位,表示以传统方式在课堂上授课的时间。为了避免任何可能的混淆,特作以下说明:1) 不限定授课方式:近年来教育技术与手段有了很大进步,产生了许多新的教学方式。规范仍采用学时作为统一授课单位。2) 课时数不包含课外的时间:即不包含教师的准备时间、学生实验时间和学生花在课堂外的时间。通常,课堂外花费的时间约为课内时间的2倍。3) 表1中列出的每个知识单元学时为最小学时数,但可以根据需要适当增加。3. 软件工程专业教育的课程体系 知识体系给出了软件工程专业的知识框架,在此知识体系的基础上构建相应的课
33、程和课程体系。各院校可参照本规范推荐的几种核心课程体系,遵循以下原则构建具有本校特色的课程与课程体系:1) 借鉴ACM和IEEE-CS联合推出的SE2004。2) 满足软件工程教育知识体最小核心要求。3) 加强计算机学科基础。4) 增强软件工程能力培养。 5) 加强团队精神和交流沟通能力。6) 与应用领域相结合。7) 课内、课外相结合。8) 符合中国高等教育的实际情况。课程教学包括理论课程教学和实验课程教学。一门课程可以由一个或若干个知识领域构成,也可以从各知识领域中抽取相关的知识单元组成。课程体系应覆盖知识体系的知识单元,尤其是核心知识单元。 软件工程专业课程体系由核心课程和选修课程组成,核
34、心课程应该覆盖知识体系中的全部核心单元。同时,各高校可选择一些反映学科前沿和学校特色的选修课程。(1) 课程设置课程设置分为以下不同类型:1) 数学基础课程:包括与本专业相关的数学基础知识。2) 计算基础课程:包括计算基础的入门知识。此类课程可以是计算机科学的成熟课程,也可以是软件工程教育计划新定义的课程。它们通常从第一年开始讲授,并延续到第二年甚至第三年。3) 软件工程核心课程:包括软件工程教育核心知识。此类课程是软件工程教育计划新定义的课程。它们通常从第二年开始,并延续到第三年甚至第四年。4) 非技术性基础课程:覆盖了知识领域中的其他一些非技术内容,是从事软件工程职业的毕业生所必需掌握的知
35、识和能力。5) 附加课程:覆盖了知识领域中的其他一些内容、其他相关学科教程中的内容或知识体系中16个应用领域中的内容。这些课程可以由各院校自行决定,办出特色,本规范不展开讨论。(2) 软件工程专业的课程体系及核心课程根据软件工程知识单元的分布,设计了27门课程和4个参考教学计划,每种计划均包含19门课程。表3给出了这些课程及所含的知识单元、参考学时数等。图1给出了四种参考教学计划的课程设置方案。附录2给出了每门课程的详细描述。表3 软件工程专业的课程体系课程编号课程名称包含的知识单元课程学时最小核心学时参考学时授课学时实验学时CS101程序设计基础CMP.cf。 CMP.tl。 PRF.pr。
36、 MAA.rfd。 DES.con。 VAV.rev。 VAV.tst394816CS102面向对象方法学CMP.cf。 CMP.ct。 DES.con。 DES.hci。 VAV.fnd。 EVO.pro364816CS103数据结构和算法CMP.cf。 VAV.tst314816CS105离散结构ICMP.cf。 FND.mf2448CS106离散结构IICMP.cf。 FND.mf。 MAA.md2748CS220计算机体系结构CMP.cf154816CS226操作系统和网络CMP.cf164816CS270数据库CMP.cf。 MAA.md134816NT272工程经济学FND.ef。
37、 FND.ec。 MGT.pp1332NT181团队激励和沟通PRF.psy。 PRF.com。 MAA.rsd11168NT291软件工程职业实践PRF.pr。 QUA.cc1416SE101软件工程与计算ICMP.cf。 CMP.ct。 CMP.tl。 FND.ef。 PRF.pr。 MAA.tm。 MAA.rfd。 MAA.er。 MAA.rsd。 DES.con。 DES.str。 DES.dd。 VAV.tst354816SE102软件工程与计算IICMP.cf。 PRF.pr。 MAA.md。 MAA.rv。 DES.str。 DES.dd。 DES.ste。 VAV.fnd。 V
38、AV.rev。 VAV.tst。 VAV.par。 EVO.pro364816SE200软件工程与计算IIICMP.cf。 CMP.ct。 FND.ef。 PRF.pr。 MAA.md。 DES.con。 DES.str。 DES.ar。 DES.hci。 DES.ev。 VAV.fnd。 VAV.rev。 PRO.imp。 MGT.con384816SE201软件工程导论CMP.ct。 FND.ef。 PRF.pr。 MAA.md。 MAA.tm。 MAA.rfd。 MAA.er。 MAA.rsd。 MAA.rv。 DES.con。 DES.str。 DES.ar。 DES.hci。 DES
39、.dd。 DES.ste。VAV.fnd。 VAV.rev。 VAV.tst。 VAV.par。 PRO.imp。 MGT.con344816SE211软件代码开发技术CMP.ct。 CMP.tl。 CMP.fm。 FND.mf。 MAA.md364816SE212人机交互的软件工程方法CMP.ct。 FND.ef。 PRF.psy。 MAA.md。 MAA.tm。 MAA.rfd。 DES.hci。 VAV.fnd。 VAV.rev。 VAV.tst。 VAV.hct。 QUA.pda253216SE213大型软件系统设计与软件体系结构MAA.md。 MAA.tm。 DES.str。 DES
40、.ar。 EVO.pro。 EVO.ac。 MGT.con。 MGT.pp。 MGT.cm283216SE221软件测试MAA.rfd。 VAV.fnd。 VAV.rev。 VAV.tst。 VAV.par。 QUA.pda23328SE311软件设计与体系结构CMP.ct。 MAA.md。 MAA.tm。 DES.str。 DES.ar。 DES.dd。 DES.ste。EVO.pro。 EVO.ac333216SE312软件详细设计CMP.ct。 CMP.tl。 CMP.fm。 MAA.tm。 DES.dd。 EVO.ac263216SE313软件工程的形式化方法CMP.fm。 FND.m
41、f。 MAA.md。 MAA.tm。 MAA.rsd。 MAA.rv。 DES.dd。 DES.ste。 EVO.ac343216SE321软件质量保证与测试FND.mf。 VAV.fnd。 VAV.rev。 VAV.tst。 VAV.par。 PRO.con。 QUA.std。rfd QUA.pro。 QUA.pca。 QUA.pda373216SE322软件需求分析MAA.tm。 MAA.rfd。 MAA.er。 MAA.rsd。 MAA.rv。 MAA.rfd18328软件工程核心课程组合I软件代码开发技术(SE211)软件设计与体系结构(SE311)软件质量保证与测试(SE321)软件
42、需求分析(SE322)软件项目管理(SE323) D软件工程核心课程组合II大型软件系统设计与软件体系结构(SE213)软件测试(SE221)软件详细设计(SE312)软件工程的形式化方法(SE313)软件过程与管理(SE324) E计算机科学优先课程程序设计基础(CS101)面向对象方法学(CS102)软件工程导论(SE201) A软件工程优先课程软件工程与计算I(SE101)软件工程与计算II(SE102)软件工程与计算III(SE200) B数学基础课程技术基础课程非技术基础课程离散结构I(CS105)数据结构和算法(CS103)工程经济学(NT272)离散结构II(CS106)计算机体
43、系结构(CS220)团队激励和沟通(NT181)操作系统和网络(CS226)软件工程职业实践(NT291)数据库(CS270)共性专业课程人机交互的软件工程方法(SE212)软件工程综合实习(SE400) CSE323软件项目管理MAA.mgt。 PRO.con。 PRO.imp。 MGT.con。 MGT.pp。 MGT.per。 MGT.ctl。 MGT.cm26328SE324软件过程与管理MAA.er。 MAA.rsd。 MAA.rfd。 EVO.pro。 PRO.con。 PRO.imp。 QUA.cc。 QUA.std。 QUA.pro。 QUA.pca。 QUA.pda。 MGT
44、.pp。 MGT.per。 MGT.ctl39488SE400软件工程综合实习(含毕业设计)CMP.ct。 PRF.psy。 PRF.com。 PRF.pr。 MAA.tm。 MAA.er。 MAA.rsd。 MAA.rv。 DES.str。 DES.ar。 DES.hci。 DES.dd。 DES.ste。VAV.rev。 VAV.tst。 MGT.pp。 MGT.per。 MGT.cm28420(注:实验学时指课内授课学时,具体安排时需要按课内外学时比例进行相应扩充。)图1课程设置的不同可选方案其中,程序设计基础(CS101)、面向对象方法学(CS102)和软件工程导论(SE201)是一组
45、计算机科学优先课程;软件工程与计算I(SE101)、软件工程与计算II(SE102)和软件工程与计算III(SE200)是一组软件工程优先课程。制定具体教学计划时只选其中一组。为了供不同的院校选择适合自己的软件工程专业核心课程,本规范把一部分软件工程专业核心课程分为两组。其中,软件代码开发技术(SE211)、软件设计与体系结构(SE311)、软件质量保证与测试(SE321)、软件需求分析(SE322)和软件项目管理(SE323)是一组;大型软件系统设计与软件体系结构(SE213)、软件测试(SE221)、软件详细设计(SE312)、软件工程的形式化方法(SE313)和软件过程与管理(SE324)是另一组。制定具体教学计划时只选其中一组。本规范根据计算机科学优先或软件工程优先,以及软件工程核心课程的不同组合方式,设计了四种参考教学计划方案,如图3-1所示,供各院校参考。四种教学计划的课程设置方案分别如下(见附录3):1)计算机科学优先课程(A)共性基础和专业课程(C)软件工程核心课程组合I (D)2)计算机科学优先课程(A)共性基础和专业课程(C)软件工程核心课程组合II(E)3)软件工程优先课程(B)共性基础和专业课程(C)软件工程核心课程组合I (D)4)软件工程优先课程(B)共性基础和专业课程(C)软件工程核心课程组合II(E)4. 软件工程专业的