《软件工程》教学大纲 课程编码:112720 课程名称:软件工程 学时/学分:60/2.5 先修课程:《C语言》、《数据结构》、《面向对象程序设计》、《数据库原理》 适用专业:信息与计算科学 开课教研室:信息与计算科学教研室 、课程性质与任务 1.课程性质:《软件工程》是计算机科学与技术的一门专业必修课程。 2.课程任务:通过学习,应使学生能熟练掌握生存周期与软件开发模式;掌握结构化 程序设计的编程思想;掌握面向对象分析、设计与编码方法;掌握有关软件的评审、测试与 维护,项目计划与项目管理方法;能用软件工程的方法参与软件项目的分析、设计、实现和 维护应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大 型软件开发项目打下坚实的理论基础。 二、课程教学基本要求 通过学习可以使学生掌握软件工程的基本概念、基本原理、实用的开发方法和技术;掌 握软件生存周期各阶段的任务;了解软件工程各领域的发展动向:如何用工程化的方法开发 软件项目,在开发过程中应遵循的流程、准则、标准和规范。同时,本课程也是一门实践性 很强的课程,它是各种软件开发经验的总结与提炼,对于本课程的学习不但应注重概念、原 理、方法和技术的掌握,也应注重方法和技术的应用,学习该课程为计算机科学领域培养高 级软件开发人员和系统分析员打下坚实的基础。 成绩考核形式:末考成绩(闭卷考査)(70%)+平时成绩(平时测验、作业、课堂提问、 课堂讨论等)(30%)。成绩评定采用百分制,60分为及格。 三、课程教学内容 第一章软件工程学概述 1.教学基本要求 掌握软件的特征、软件危机、软件工程中的五种软件开发模式,使学生理解软件工程 的概念及产生软件危机的原因;软件生命周期中各阶段的基本任务。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生了解软件的特点,软件生产发展的三个阶段以及各阶段的特点,软 件危机的产生及其表现形式;初步了解软件的生存周期模型;理解软件工程的定义及特点
《软件工程》教学大纲 课程编码:112720 课程名称:软件工程 学时/学分:60/2.5 先修课程:《C 语言》、《数据结构 》、《面向对象程序设计》、《 数据库原理》 适用专业:信息与计算科学 开课教研室:信息与计算科学教研室 一、课程性质与任务 1.课程性质:《软件工程》是计算机科学与技术的一门专业必修课程。 2.课程任务:通过学习,应使学生能熟练掌握生存周期与软件开发模式;掌握结构化 程序设计的编程思想;掌握面向对象分析、设计与编码方法;掌握有关软件的评审、测试与 维护,项目计划与项目管理方法;能用软件工程的方法参与软件项目的分析、设计、实现和 维护应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大 型软件开发项目打下坚实的理论基础。 二、课程教学基本要求 通过学习可以使学生掌握软件工程的基本概念、基本原理、实用的开发方法和技术;掌 握软件生存周期各阶段的任务;了解软件工程各领域的发展动向;如何用工程化的方法开发 软件项目,在开发过程中应遵循的流程、准则、标准和规范。同时,本课程也是一门实践性 很强的课程,它是各种软件开发经验的总结与提炼,对于本课程的学习不但应注重概念、原 理、方法和技术的掌握,也应注重方法和技术的应用,学习该课程为计算机科学领域培养高 级软件开发人员和系统分析员打下坚实的基础。 成绩考核形式:末考成绩(闭卷考查)(70%)+平时成绩(平时测验、作业、课堂提问、 课堂讨论等)(30%)。成绩评定采用百分制,60 分为及格。 三、课程教学内容 第一章 软件工程学概述 1.教学基本要求 掌握软件的特征、软件危机、软件工程中的五种软件开发模式,使学生理解软件工程 的概念及产生软件危机的原因;软件生命周期中各阶段的基本任务。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生了解软件的特点,软件生产发展的三个阶段以及各阶段的特点,软 件危机的产生及其表现形式;初步了解软件的生存周期模型;理解软件工程的定义及特点
软件生存期各阶段的特点和内容;深刻理解软件危机产生的原因;掌握软件生命周期中各阶 段的基本任务 3教学重点和难点 教学重点是软件危机、软件工程产生的原因,软件工程过程,软件生命周期模型。教 学难点是软件生命周期模型 4.教学内容 (1)软件危机 主要知识点:软件危机:概念、典型表现形式、软件危机案例;产生软件危机的原因 消除软件危机的途径。 (2)软件工程 主要知识点:软件工程概念和特性;软件工程基本原理;软件工程方法学。 (3)软件生命周期 主要知识点:软件定义时期;软件开发时期;运行维护(软件维护)时期。 (4)软件过程 主要知识点:软件过程和软件生命周期模型概念:瀑布模型:快速原型模型;增量模型: 螺旋模型;四种模型的比较:喷泉模型 第二章可行性研究 1.教学基本要求 掌握软件的可行性分析、软件计划及成本估算,使学生明确可行性分析的基础和主要任 务,掌握可行性研究的方法和步骤 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生深刻理解可行性研究的必要性,掌握可行性研究的任务及可行性研 究的具体步骤;了解系统流程图的作用及符号表示,重点掌握数据流图的画法及数据字典的 编写。 3教学重点和难点 教学重点是可行性研究任务:数据流图基本符号、绘制过程及应用;数据字典的用途 和建立。教学难点是数据流图的应用。 4.教学内容 (1)可行性研究的任务 主要知识点:可行性研究的目的;可行性研究的基本内容:经济、技术、操作 (2)可行性研究过程 主要知识点:过程;报告编写规范。 (3)系统流程图
软件生存期各阶段的特点和内容;深刻理解软件危机产生的原因;掌握软件生命周期中各阶 段的基本任务。 3.教学重点和难点 教学重点是软件危机、软件工程产生的原因,软件工程过程,软件生命周期模型。教 学难点是软件生命周期模型。 4.教学内容 (1)软件危机 主要知识点:软件危机:概念、典型表现形式、软件危机案例;产生软件危机的原因; 消除软件危机的途径。 (2)软件工程 主要知识点:软件工程概念和特性;软件工程基本原理;软件工程方法学。 (3)软件生命周期 主要知识点:软件定义时期;软件开发时期;运行维护(软件维护)时期。 (4)软件过程 主要知识点:软件过程和软件生命周期模型概念;瀑布模型;快速原型模型;增量模型; 螺旋模型;四种模型的比较;喷泉模型。 第二章 可行性研究 1.教学基本要求 掌握软件的可行性分析、软件计划及成本估算,使学生明确可行性分析的基础和主要任 务,掌握可行性研究的方法和步骤。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生深刻理解可行性研究的必要性,掌握可行性研究的任务及可行性研 究的具体步骤;了解系统流程图的作用及符号表示,重点掌握数据流图的画法及数据字典的 编写。 3.教学重点和难点 教学重点是可行性研究任务;数据流图基本符号、绘制过程及应用;数据字典的用途 和建立。教学难点是数据流图的应用。 4.教学内容 (1)可行性研究的任务 主要知识点:可行性研究的目的;可行性研究的基本内容:经济、技术、操作。 (2)可行性研究过程 主要知识点:过程;报告编写规范。 (3)系统流程图
主要知识点:概念;符号及例子;分层。 (4)数据流图 主要知识点:符号及例子;命名;用途。 (5)数据字典 主要知识点:数据字典的内容;定义数据的方法;数据字典的用途;数据字典的实现 (6)成本、效益分析 主要知识点:成本估计;成本益分析的方法 第三章软件需求分析 1.教学基本要求 掌握需求分析的任务和步骤、结构化分析方法及原型化分析方法,使学生掌握结构化 分析方法的指导原则、数据流图、数据词典和加工说明等描述手段。了解需求分析文档建立 和复审的方式 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生深刻理解需要分析阶段的概念及任务,熟练掌握数据流图的细化及 ER图以及规范化方法(如范式),IP0图的画法;掌握常用图形工具的使用方法。 3教学重点和难点 教学重点是基本技术、需求规格说明书的作用与组成。教学难点:基本技术 4.教学内容 (1)需求分析的任务与获取需求的方法 主要知识点:任务:;面向数据流自顶向下求精;快速建立软件原型 (2)分析建模与规格说明 主要知识点:分析建模;软件需求规格说明;实体一联系图:状态转换图 (3)图形工具 主要知识点:层次方框图; Warnier图;IPO图 第四章形式化说明技术 1.教学基本要求 掌握形式化方法的概念、优点和应用准则;初步掌握有穷状态机、 Petri网的概念和使 用 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生了解非形式化方法的缺点,掌握形式化方法的概念、优点和应用准 则;掌握有穷状态机、 Petri网的特点以及相关应用
主要知识点:概念;符号及例子;分层。 (4)数据流图 主要知识点:符号及例子;命名;用途。 (5)数据字典 主要知识点:数据字典的内容;定义数据的方法;数据字典的用途;数据字典的实现。 (6)成本、效益分析 主要知识点:成本估计;成本/效益分析的方法。 第三章 软件需求分析 1.教学基本要求 掌握需求分析的任务和步骤、结构化分析方法及原型化分析方法,使学生掌握结构化 分析方法的指导原则、数据流图、数据词典和加工说明等描述手段。了解需求分析文档建立 和复审的方式。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生深刻理解需要分析阶段的概念及任务,熟练掌握数据流图的细化及 ER 图以及规范化方法(如范式),IPO 图的画法;掌握常用图形工具的使用方法。 3.教学重点和难点 教学重点是基本技术、需求规格说明书的作用与组成。教学难点:基本技术。 4.教学内容 (1)需求分析的任务与获取需求的方法 主要知识点:任务;面向数据流自顶向下求精;快速建立软件原型。 (2)分析建模与规格说明 主要知识点:分析建模;软件需求规格说明;实体一联系图;状态转换图 (3)图形工具 主要知识点:层次方框图;Warnier 图;IPO 图。 第四章 形式化说明技术 1.教学基本要求 掌握形式化方法的概念、优点和应用准则;初步掌握有穷状态机、Petri 网的概念和使 用。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生了解非形式化方法的缺点,掌握形式化方法的概念、优点和应用准 则;掌握有穷状态机、Petri 网的特点以及相关应用
3教学重点和难点 教学重点是形式化方法的概念、优点和应用准则;有穷状态机。教学难点是有穷状态 4.教学内容 (1)概述 主要知识点:非形式化方法的缺点:形式化方法的优点;应用形式化方法的准则 (2)有穷状态机 主要知识点:概念、保险箱、电梯例子、评价 (3) Petri网 主要知识点:概念、电梯例子 第五章总体设计 1.教学基本要求 掌握软件结构设计中结构化设计方法和面向数据流的设计方法,使学生明确结构设计的 目标和任务,理解结构化设计的概念和原理,掌握结构化设计的步骤以及相关方法。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生了解总体设计的过程;深刻理解软件总体设计的基本任务,软件设 计的基本原理。理解模块化,抽象,信息隐蔽,模块独立性等概念,明确度量模块独立性的 校准一耦合性及内聚性。熟练掌握结构化设计方法(要求能划分数据流的类型,将其能换成 软件结构图,并能根据优化准则将其优化。) 3教学重点和难点 教学重点是软件设计过程中应遵循的基本原理;面向数据流的设计方法。教学难点是 变换分析、事务分析法的过程和应用 4.教学内容 (1)设计过程 主要知识点:设计过程 (2)设计原理 主要知识点:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立 (3)启发规则 主要知识点:改进软件结构提高模块独立性;模块规模应该适中;深度、宽度、扇出和 扇入都应适当;模块的作用域应该在控制域之内:力争降低模块接口的复杂程度;设计单入 口单出口的模块;模块功能应该可以预测。 (4)描绘软件结构的图形工具 主要知识点:层次图和HPO图;结构图
3.教学重点和难点 教学重点是形式化方法的概念、优点和应用准则;有穷状态机。教学难点是有穷状态 机。 4.教学内容 (1)概述 主要知识点:非形式化方法的缺点;形式化方法的优点;应用形式化方法的准则 (2)有穷状态机 主要知识点:概念、保险箱、电梯例子、评价 (3)Petri 网 主要知识点:概念、电梯例子 第五章 总体设计 1.教学基本要求 掌握软件结构设计中结构化设计方法和面向数据流的设计方法,使学生明确结构设计的 目标和任务,理解结构化设计的概念和原理,掌握结构化设计的步骤以及相关方法。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生了解总体设计的过程;深刻理解软件总体设计的基本任务,软件设 计的基本原理。理解模块化,抽象,信息隐蔽,模块独立性等概念,明确度量模块独立性的 校准—耦合性及内聚性。熟练掌握结构化设计方法(要求能划分数据流的类型,将其能换成 软件结构图,并能根据优化准则将其优化。) 3.教学重点和难点 教学重点是软件设计过程中应遵循的基本原理;面向数据流的设计方法。教学难点是 变换分析、事务分析法的过程和应用。 4.教学内容 (1)设计过程 主要知识点:设计过程 (2)设计原理 主要知识点:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。 (3)启发规则 主要知识点:改进软件结构提高模块独立性;模块规模应该适中;深度、宽度、扇出和 扇入都应适当;模块的作用域应该在控制域之内;力争降低模块接口的复杂程度;设计单入 口单出口的模块;模块功能应该可以预测。 (4)描绘软件结构的图形工具 主要知识点:层次图和 HIPO 图;结构图
(5)面向数据流的设计方法 主要知识点:变换流和事务流的概念:变换分析;事务分析:设计优化 第六章详细设计 1.教学基本要求 掌握详细设计方法采用的结构化程序设计的思想和原理;常用的算法过程的描述工具 算法的复杂性评价问题。使学生明确详细设计阶段的主要任务,掌握算法复杂性的度量方法。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生能熟练的使用详细设计描述工具来设计模块中的算法及程序的逻 辑结构。理解 Jackson方法的概念及程序复杂度的度量方法,学会使用 Jackson方法设计输 入输出数据结构和程序结构。 3教学重点和难点 教学重点是流程图、PAD图、过程设计语言的简单应用:过程设计的工具以及面向数 据结构的设计方法,程序复杂程度的定量度量。教学难点是用 Jackson方法设计小型题目。 4.教学内容 (1)结构程序设计 主要知识点:设计任务、概念、原则 (2)人机界面设计 主要知识点:界面设计概念、特性、设计问题:系统响应时间;设计过程;设计指南 (3)过程设计的工具 主要知识点:程序流程图、盒图、判定表、过程设计语言。 (4)面向数据结构的设计方法 主要知识点: Jackson图;改进的 Jackson图; Jackson方法。 (5)程序复杂程度的定量度量 主要知识点:程序图;环形复杂度概念及计算方法。 第七章实现 1.教学基本要求 了解程序设计语言的概念以及编码应当遵循的原则;理解编码设计的目标与任务、编 码使用的程序设计语言的特性以及程序设计风格的重要性;掌握软件测试的概念与主要任 务,软件的排错技术和软件可靠性的评测方法。理解软件测试的目标、原则以及测试方案的 建立和测试过程。掌握测试实例的构造方法 2.要求学生掌握的基本概念、理论、技能 通过本章教学了解几种常见的程序设计语言的特点,领会程序设计中应注意的问题
(5)面向数据流的设计方法 主要知识点:变换流和事务流的概念;变换分析;事务分析;设计优化。 第六章 详细设计 1.教学基本要求 掌握详细设计方法采用的结构化程序设计的思想和原理;常用的算法过程的描述工具; 算法的复杂性评价问题。使学生明确详细设计阶段的主要任务,掌握算法复杂性的度量方法。 2.要求学生掌握的基本概念、理论、技能 通过本章教学使学生能熟练的使用详细设计描述工具来设计模块中的算法及程序的逻 辑结构。理解 Jackson 方法的概念及程序复杂度的度量方法,学会使用 Jackson 方法设计输 入输出数据结构和程序结构。 3.教学重点和难点 教学重点是流程图、PAD 图、过程设计语言的简单应用;过程设计的工具以及面向数 据结构的设计方法,程序复杂程度的定量度量。教学难点是用 Jackson 方法设计小型题目。 4.教学内容 (1)结构程序设计 主要知识点:设计任务、概念、原则。 (2)人机界面设计 主要知识点:界面设计概念、特性、设计问题;系统响应时间;设计过程;设计指南。 (3)过程设计的工具 主要知识点:程序流程图、盒图、判定表、过程设计语言。 (4)面向数据结构的设计方法 主要知识点:Jackson 图;改进的 Jackson 图;Jackson 方法。 (5)程序复杂程度的定量度量 主要知识点:程序图;环形复杂度概念及计算方法。 第七章 实现 1.教学基本要求 了解程序设计语言的概念以及编码应当遵循的原则;理解编码设计的目标与任务、编 码使用的程序设计语言的特性以及程序设计风格的重要性;掌握软件测试的概念与主要任 务,软件的排错技术和软件可靠性的评测方法。理解软件测试的目标、原则以及测试方案的 建立和测试过程。掌握测试实例的构造方法。 2.要求学生掌握的基本概念、理论、技能 通过本章教学了解几种常见的程序设计语言的特点,领会程序设计中应注意的问题