《软件工程》复习大纲
第1章:软件工程的范畴
重点掌握如下的内容:
1掌握软件工程、软件危机、生命周期的概念 1%
2掌握维护的3种分类并能够结合具体例子进行判断 1%
3掌握为什么没有计划、文档和测试阶段 1%
了解如下内容:
1了解软件工程的传统生命周期模型(瀑布模型)的阶段划分和各阶段的主要任务
2了解传统的维护观念与现代的维护观念之间的区别
3了解纠错与成本之间的关系
4了解面向对象范型与传统范型在生命周期模型方面的比较
5了解如下术语的区别:客户、开发者和用户;内部软件、合同软件、商用现货软件(即COTS软件)和开源软件;过错、差错和故障
第2章:软件生命周期模型
重点掌握如下的内容:
1 掌握编码-修补模型、瀑布模型、快速原型开发模型、开源模型、敏捷过程模型、同步-稳定模型、螺旋模型等这些模型的模型图(如果有图的话)以及优缺点和适用场合。5-10%
了解如下内容:
1了解Winburg小型实例研究以及进化树生命周期模型图,并理解基准这个概念
2了解迭代和递增的区别,掌握米勒法则和逐步求精法这两个概念,了解迭代递增模型的五个核心工作流以及它们何时在迭代递增模型的生命周期中占据主导地位
第3章:软件过程
重点掌握如下的内容:
1掌握每个工作流(包括需求流、分析流、设计流、实现流、测试流)的目标 1%
2掌握需求流的每个步骤(了解应用领域、建立业务模型、找出限制条件),了解主要限制条件(包括最终期限、可靠性、成本),掌握以下观点:开发者能够给予客户的应该是客户需要的而不是客户想要的 1%
3掌握设计流的两个步骤:结构设计和详细设计的设计内容 1%
4掌握统一过程的四个阶段以及每个阶段的目标 1%
了解如下内容:
1了解以下概念:软件过程、软件过程的五个工作流、统一过程、统一建模语言UML
2掌握规格说明文档中可能出现的问题(包括模糊、不完备和矛盾),掌握软件项目管理计划的组成部分(包括可交付的东西、里程碑和预算)
3了解测试流在各种制品中的体现形式,了解以下概念:可追踪性、评审、走查、审查、单元测试、集成测试、产品测试、验收测试、对COTS软件产品进行测试的特点
4了解交付后维护阶段中出现的问题,了解回归测试
5了解一维和二维生命周期模型
6了解能力成熟度模型(即CMM)的五种分类
7了解用于软件的CMM(即SW-CMM)的五个级别
第4章:软件小组
重点掌握如下的内容:
1掌握民主小组、传统的主程序员小组、现代分级编程小组、同步稳定小组、敏捷过程小组以及开源编程小组这些小组组织方式的优缺点以及适用场合 2% 2掌握如下概念:无我编程、专业化、等级性、主程序员、后备程序员、编程秘书、程序员、小组领导、小组经理、结对编程 1%
3掌握传统的主程序员小组中各个角色负责的任务 2%
了解如下内容:
1了解组织开发小组时可能出现的问题,掌握布鲁克斯法则,了解组织开发小组的两种极端方法
2了解现代分级编程小组中小组领导和小组经理负责的区域
第5章:软件工程工具
重点掌握如下的内容:
1掌握逐步求精法,了解逐步求精法小型实例研究中出现的每一次求精,了解前瞻技术,掌握逐步求精法的难点1-5%
2掌握软件度量的两种分类(即产品度量和过程度量)以及度量时用到的具体指标(例如:代码行、每千行代码检测出的错误数、平均故障间隔时间等等),掌握五种基本度量(即规模、成本、持续时间、工作量、质量)1%
3掌握CASE工具的概念以及分类(即高端与低端,工具与工作平台与环境)
1%
4掌握软件版本的两种分类(即修订版和变种版)以及这两种分类的区别 1% 了解如下内容:
1了解两种类型的软件工程工具(即理论分析工具和软件工具)
2了解成本效益分析法以及使用时的难点
3了解具体的CASE工具
4了解版本控制过程中出现的问题和用到的技术
5了解配置控制工具以及基准和冻结这两个概念,了解建造工具
第6章:测试
重点掌握如下的内容:
1掌握质量的定义以及软件质量保证小组(即SQA小组)的责任 2%
2掌握走查时小组成员的构成、走查清单的构成、走查的两个步骤、走查的两种方式以及这两种方式之间的区别 2%
3掌握审查时小组成员的构成、审查的五个步骤 2%
4掌握走查与审查之间的区别 2%
5掌握需要测试的五个行为特性(即实用性、可靠性、健壮性、性能和正确性)的定义以及相关度量指标(如平均故障间隔时间、平均修复时间)1%
6掌握测试的两种分类 1%
了解如下内容:
1了解验证和确认的区别
2,了解开发小组与SQA小组之间应该保持管理独立的重要性
3了解非执行测试的定义和方法
4了解审查时的度量指标
5了解正确性与产品的可用性之间的关系
6了解执行测试应该由谁来完成,了解测试何时应该停止
第7章:从模块到对象
重点掌握如下的内容:
1掌握以下概念的定义:模块、模块内聚、模块耦合 1%
2掌握内聚的七个等级分类(即偶然性、逻辑性、时间性、过程性、通信性、功能性以及信息性)以及每个等级的定义,并能够结合具体例子判断内聚等级 1-5%
3掌握耦合的五个等级分类(即内容、共用、控制、印记以及数据)以及每个等级的定义,并能够结合具体例子判断耦合等级 1-5%
4掌握UML图标:注释、继承、聚合、关联 1-2%
了解如下内容:
1了解以下概念:模块操作、模块逻辑、模块背景。
2了解时间性、过程性、通信性内聚之间的共同点,了解逻辑性内聚和控制耦合之间的联系
3了解以下概念:抽象、封装、信息隐藏、抽象数据类型、数据封装、类、对象、多态、动态绑定
4了解面向对象范型的缺点(包括脆弱的基类问题、继承树中低层对象的数据存储问题、多态和动态绑定在维护时带来的负面问题)
第8章:可重用性和可移植性
重点掌握如下的内容:
1掌握可移植和重用的定义 1%
了解如下内容:
1了解重用的两种类型(偶然重用和有意重用)以及重用时出现的障碍,了解不在此开发综合症
2了解设计时重用的四种类型(库或工具包、框架、设计模式、软件体系结构) 3了解不兼容性的四个方面(硬件、操作系统、数值计算软件、编译器)
第11章:需求
重点掌握如下的内容:
1掌握需求流的步骤(包括理解应用域、建立业务模型、找出限制条件),了解在每个步骤中需要的技术(包括构建术语表、访谈、发放调查问卷、检查业务表格、直接观察用户、绘制用例图)2%
2掌握用例图的四个基本组成部分的绘制过程,例如:图书循环问题和ATM问题等课后题的用例图的绘制。5-10%
了解如下内容:
1了解在确定客户需求时出现的三种问题(客户不知道需求、客户不知道如何表达需求、客户弄错了需求)
2了解访谈的两种类型(即程式化的访谈和非程式化的访谈)以及它们之间的区别
3了解需求的两种类型(功能性需求和非功能性需求)
4了解传统需求阶段中建立快速原型的好处,了解在建立快速原型时需要考虑的要求(包括用户友好、图形用户界面、人的因素、外观一致性)
5了解快速原型发挥作用之后被丢弃的原因,了解确保丢弃快速原型的方法
6了解需求流中用到的CASE工具、度量指标和面临的挑战
第12章:传统的分析
重点掌握如下的内容:
1掌握按照形式化的程度对已知的编写规格说明文档的技术(自然语言、实体-关系模型、结构化系统分析、有穷状态机、Petri网)进行的三种分类(非形式化、半形式化以及形式化)1-5%
2掌握使用非形式化技术编写规格说明文档时出现的三种问题 1%
3掌握数据流图的四种基本要素(源或者目的地、流、处理、存储)的图形和含义,掌握数据流图顶层图的绘制。例如:图书循环问题和ATM问题的绘制。5-10%
4掌握判决树的绘制4-6%
5掌握实体关系模型中出现的关系的三种种类(一对一、一对多、多对多)1% 6掌握有穷状态机的五个基本组成部分(状态集、输入集、转换函数、初始状态和最终状态集)的图形和含义2%
7掌握Petri网的四个基本组成部分(位置集、转换集、输入函数和输出函数)的图形和含义 1%
8掌握三种编写规格说明文档的技术的优缺点 1%
了解如下内容:
1了解规格说明文档必须满足的两个相互矛盾的要求(既是非技术性的又是技术性的)
2了解结构化系统分析技术的九个步骤以及某些步骤所需要的图形或者表格(包括数据流图、数据字典、判决树、数据实时访问图)
3了解令牌的作用,了解禁止弧和常规弧的区别,掌握在简单的Petri网上激发转换时令牌的变化情况
4了解在传统的分析阶段用到的测试技术、CASE工具、度量指标和面临的挑战
第13章:面向对象分析
重点掌握如下的内容:
1掌握面向对象分析技术的形式化程度 1%
2掌握统一过程中需要抽取出的三种类(实体类、边界类和控制类)的定义 1% 3掌握抽取实体类的三个步骤(功能建模、实体类建模、动态建模)2%
4能用名词提取法绘制类图。例如:电梯问题和图书循环问题的绘制。5-10% 了解如下内容:
1了解正常场景与异常场景的区别
2了解实体类建模的两种技术(名词提取法、CRC卡片法)
3了解CRC卡片法的名称含义
4了解动态建模时绘制的状态图
5了解边界类和控制类的抽取方法
6了解在传统的分析阶段用到的CASE工具和面临的挑战
第14章:设计
重点掌握如下的内容:
1掌握数据流分析这种面向操作设计技术的使用过程,掌握在简单的数据流图中寻找输入的最高抽象点与输出的最高抽象点的方法1-5%
2掌握面向对象分析技术(OOD技术)的两个关键步骤 2%
了解如下内容:
1了解设计的三种类别(面向操作设计、面向数据设计、面向对象设计) 2了解传统的设计阶段中的三个活动(结构设计、详细设计、设计测试) 3了解依据抽象点将产品划分成的三个模块(输入、转换、输出)
4了解伪代码(即程序描述语言PDL)的用处
5了解事物分析这种面向操作设计技术中的两个概念:分析器与分配器
6了解在设计阶段用到的测试技术、CASE工具、度量指标和面临的挑战
第15章:实现
重点掌握如下的内容:
1掌握编程语言发展历程中出现的四代,并能够结合具体编程语言判断出属于哪一代 1%
2掌握良好的编程习惯(包括在命名变量、编写注释、使用常量、代码编排、嵌套语句方面的习惯)1%
3掌握三种集成方式(自顶向下、自底向上、三明治)的步骤、优缺点,并能够结合具体的集成顺序判断出是哪一种集成方式 2%
4掌握单元测试的两种基本方法(黑盒测试与玻璃盒测试)的定义,了解不能彻底地进行这两种测试的原因 2%
5掌握选择测试用例的两个原则 1%
6掌握使用等价测试技术、边界值分析技术、功能测试技术设计简单题目的测试用例的过程5-10%
7掌握使用语句覆盖、分支覆盖、路径覆盖技术设计简单题目的测试用例的过程 5-10%
了解如下内容:
1了解在确定编程语言时需要考虑的情况
2了解三条通常的编码标准
3了解重用不仅仅是代码的重用
4在集成步骤中,了解以下概念:存根和驱动、逻辑代码制品和操作代码制品 5了解完全定义-使用路径覆盖技术
6了解在测试对象时出现的潜在问题
7了解测试与调试的区别,掌握发现新错误的可能性与已检测出的旧错误数之间的关系
8了解产品测试与验收测试包含的相同的四个测试方面,掌握产品测试与验收测试的本质区别
9了解在实现阶段用到的CASE工具、度量指标和面临的挑战
第16章:交付后维护
1掌握逆向工程、正向工程、再工程、重构的定义 1%
第17章:UML的进一步讨论
1掌握UML的定义 1%
2掌握在UML中出现的图标(包括类图、聚合、多重性、组合、泛化、继承、关联、注释、用例图、交互图、顺序图、协作图、状态图、活动图、包、)及其含义 1-2%
第18章:新兴技术
了解软件工程的新兴技术
《软件工程》复习大纲
第1章:软件工程的范畴
重点掌握如下的内容:
1掌握软件工程、软件危机、生命周期的概念 1%
2掌握维护的3种分类并能够结合具体例子进行判断 1%
3掌握为什么没有计划、文档和测试阶段 1%
了解如下内容:
1了解软件工程的传统生命周期模型(瀑布模型)的阶段划分和各阶段的主要任务
2了解传统的维护观念与现代的维护观念之间的区别
3了解纠错与成本之间的关系
4了解面向对象范型与传统范型在生命周期模型方面的比较
5了解如下术语的区别:客户、开发者和用户;内部软件、合同软件、商用现货软件(即COTS软件)和开源软件;过错、差错和故障
第2章:软件生命周期模型
重点掌握如下的内容:
1 掌握编码-修补模型、瀑布模型、快速原型开发模型、开源模型、敏捷过程模型、同步-稳定模型、螺旋模型等这些模型的模型图(如果有图的话)以及优缺点和适用场合。5-10%
了解如下内容:
1了解Winburg小型实例研究以及进化树生命周期模型图,并理解基准这个概念
2了解迭代和递增的区别,掌握米勒法则和逐步求精法这两个概念,了解迭代递增模型的五个核心工作流以及它们何时在迭代递增模型的生命周期中占据主导地位
第3章:软件过程
重点掌握如下的内容:
1掌握每个工作流(包括需求流、分析流、设计流、实现流、测试流)的目标 1%
2掌握需求流的每个步骤(了解应用领域、建立业务模型、找出限制条件),了解主要限制条件(包括最终期限、可靠性、成本),掌握以下观点:开发者能够给予客户的应该是客户需要的而不是客户想要的 1%
3掌握设计流的两个步骤:结构设计和详细设计的设计内容 1%
4掌握统一过程的四个阶段以及每个阶段的目标 1%
了解如下内容:
1了解以下概念:软件过程、软件过程的五个工作流、统一过程、统一建模语言UML
2掌握规格说明文档中可能出现的问题(包括模糊、不完备和矛盾),掌握软件项目管理计划的组成部分(包括可交付的东西、里程碑和预算)
3了解测试流在各种制品中的体现形式,了解以下概念:可追踪性、评审、走查、审查、单元测试、集成测试、产品测试、验收测试、对COTS软件产品进行测试的特点
4了解交付后维护阶段中出现的问题,了解回归测试
5了解一维和二维生命周期模型
6了解能力成熟度模型(即CMM)的五种分类
7了解用于软件的CMM(即SW-CMM)的五个级别
第4章:软件小组
重点掌握如下的内容:
1掌握民主小组、传统的主程序员小组、现代分级编程小组、同步稳定小组、敏捷过程小组以及开源编程小组这些小组组织方式的优缺点以及适用场合 2% 2掌握如下概念:无我编程、专业化、等级性、主程序员、后备程序员、编程秘书、程序员、小组领导、小组经理、结对编程 1%
3掌握传统的主程序员小组中各个角色负责的任务 2%
了解如下内容:
1了解组织开发小组时可能出现的问题,掌握布鲁克斯法则,了解组织开发小组的两种极端方法
2了解现代分级编程小组中小组领导和小组经理负责的区域
第5章:软件工程工具
重点掌握如下的内容:
1掌握逐步求精法,了解逐步求精法小型实例研究中出现的每一次求精,了解前瞻技术,掌握逐步求精法的难点1-5%
2掌握软件度量的两种分类(即产品度量和过程度量)以及度量时用到的具体指标(例如:代码行、每千行代码检测出的错误数、平均故障间隔时间等等),掌握五种基本度量(即规模、成本、持续时间、工作量、质量)1%
3掌握CASE工具的概念以及分类(即高端与低端,工具与工作平台与环境)
1%
4掌握软件版本的两种分类(即修订版和变种版)以及这两种分类的区别 1% 了解如下内容:
1了解两种类型的软件工程工具(即理论分析工具和软件工具)
2了解成本效益分析法以及使用时的难点
3了解具体的CASE工具
4了解版本控制过程中出现的问题和用到的技术
5了解配置控制工具以及基准和冻结这两个概念,了解建造工具
第6章:测试
重点掌握如下的内容:
1掌握质量的定义以及软件质量保证小组(即SQA小组)的责任 2%
2掌握走查时小组成员的构成、走查清单的构成、走查的两个步骤、走查的两种方式以及这两种方式之间的区别 2%
3掌握审查时小组成员的构成、审查的五个步骤 2%
4掌握走查与审查之间的区别 2%
5掌握需要测试的五个行为特性(即实用性、可靠性、健壮性、性能和正确性)的定义以及相关度量指标(如平均故障间隔时间、平均修复时间)1%
6掌握测试的两种分类 1%
了解如下内容:
1了解验证和确认的区别
2,了解开发小组与SQA小组之间应该保持管理独立的重要性
3了解非执行测试的定义和方法
4了解审查时的度量指标
5了解正确性与产品的可用性之间的关系
6了解执行测试应该由谁来完成,了解测试何时应该停止
第7章:从模块到对象
重点掌握如下的内容:
1掌握以下概念的定义:模块、模块内聚、模块耦合 1%
2掌握内聚的七个等级分类(即偶然性、逻辑性、时间性、过程性、通信性、功能性以及信息性)以及每个等级的定义,并能够结合具体例子判断内聚等级 1-5%
3掌握耦合的五个等级分类(即内容、共用、控制、印记以及数据)以及每个等级的定义,并能够结合具体例子判断耦合等级 1-5%
4掌握UML图标:注释、继承、聚合、关联 1-2%
了解如下内容:
1了解以下概念:模块操作、模块逻辑、模块背景。
2了解时间性、过程性、通信性内聚之间的共同点,了解逻辑性内聚和控制耦合之间的联系
3了解以下概念:抽象、封装、信息隐藏、抽象数据类型、数据封装、类、对象、多态、动态绑定
4了解面向对象范型的缺点(包括脆弱的基类问题、继承树中低层对象的数据存储问题、多态和动态绑定在维护时带来的负面问题)
第8章:可重用性和可移植性
重点掌握如下的内容:
1掌握可移植和重用的定义 1%
了解如下内容:
1了解重用的两种类型(偶然重用和有意重用)以及重用时出现的障碍,了解不在此开发综合症
2了解设计时重用的四种类型(库或工具包、框架、设计模式、软件体系结构) 3了解不兼容性的四个方面(硬件、操作系统、数值计算软件、编译器)
第11章:需求
重点掌握如下的内容:
1掌握需求流的步骤(包括理解应用域、建立业务模型、找出限制条件),了解在每个步骤中需要的技术(包括构建术语表、访谈、发放调查问卷、检查业务表格、直接观察用户、绘制用例图)2%
2掌握用例图的四个基本组成部分的绘制过程,例如:图书循环问题和ATM问题等课后题的用例图的绘制。5-10%
了解如下内容:
1了解在确定客户需求时出现的三种问题(客户不知道需求、客户不知道如何表达需求、客户弄错了需求)
2了解访谈的两种类型(即程式化的访谈和非程式化的访谈)以及它们之间的区别
3了解需求的两种类型(功能性需求和非功能性需求)
4了解传统需求阶段中建立快速原型的好处,了解在建立快速原型时需要考虑的要求(包括用户友好、图形用户界面、人的因素、外观一致性)
5了解快速原型发挥作用之后被丢弃的原因,了解确保丢弃快速原型的方法
6了解需求流中用到的CASE工具、度量指标和面临的挑战
第12章:传统的分析
重点掌握如下的内容:
1掌握按照形式化的程度对已知的编写规格说明文档的技术(自然语言、实体-关系模型、结构化系统分析、有穷状态机、Petri网)进行的三种分类(非形式化、半形式化以及形式化)1-5%
2掌握使用非形式化技术编写规格说明文档时出现的三种问题 1%
3掌握数据流图的四种基本要素(源或者目的地、流、处理、存储)的图形和含义,掌握数据流图顶层图的绘制。例如:图书循环问题和ATM问题的绘制。5-10%
4掌握判决树的绘制4-6%
5掌握实体关系模型中出现的关系的三种种类(一对一、一对多、多对多)1% 6掌握有穷状态机的五个基本组成部分(状态集、输入集、转换函数、初始状态和最终状态集)的图形和含义2%
7掌握Petri网的四个基本组成部分(位置集、转换集、输入函数和输出函数)的图形和含义 1%
8掌握三种编写规格说明文档的技术的优缺点 1%
了解如下内容:
1了解规格说明文档必须满足的两个相互矛盾的要求(既是非技术性的又是技术性的)
2了解结构化系统分析技术的九个步骤以及某些步骤所需要的图形或者表格(包括数据流图、数据字典、判决树、数据实时访问图)
3了解令牌的作用,了解禁止弧和常规弧的区别,掌握在简单的Petri网上激发转换时令牌的变化情况
4了解在传统的分析阶段用到的测试技术、CASE工具、度量指标和面临的挑战
第13章:面向对象分析
重点掌握如下的内容:
1掌握面向对象分析技术的形式化程度 1%
2掌握统一过程中需要抽取出的三种类(实体类、边界类和控制类)的定义 1% 3掌握抽取实体类的三个步骤(功能建模、实体类建模、动态建模)2%
4能用名词提取法绘制类图。例如:电梯问题和图书循环问题的绘制。5-10% 了解如下内容:
1了解正常场景与异常场景的区别
2了解实体类建模的两种技术(名词提取法、CRC卡片法)
3了解CRC卡片法的名称含义
4了解动态建模时绘制的状态图
5了解边界类和控制类的抽取方法
6了解在传统的分析阶段用到的CASE工具和面临的挑战
第14章:设计
重点掌握如下的内容:
1掌握数据流分析这种面向操作设计技术的使用过程,掌握在简单的数据流图中寻找输入的最高抽象点与输出的最高抽象点的方法1-5%
2掌握面向对象分析技术(OOD技术)的两个关键步骤 2%
了解如下内容:
1了解设计的三种类别(面向操作设计、面向数据设计、面向对象设计) 2了解传统的设计阶段中的三个活动(结构设计、详细设计、设计测试) 3了解依据抽象点将产品划分成的三个模块(输入、转换、输出)
4了解伪代码(即程序描述语言PDL)的用处
5了解事物分析这种面向操作设计技术中的两个概念:分析器与分配器
6了解在设计阶段用到的测试技术、CASE工具、度量指标和面临的挑战
第15章:实现
重点掌握如下的内容:
1掌握编程语言发展历程中出现的四代,并能够结合具体编程语言判断出属于哪一代 1%
2掌握良好的编程习惯(包括在命名变量、编写注释、使用常量、代码编排、嵌套语句方面的习惯)1%
3掌握三种集成方式(自顶向下、自底向上、三明治)的步骤、优缺点,并能够结合具体的集成顺序判断出是哪一种集成方式 2%
4掌握单元测试的两种基本方法(黑盒测试与玻璃盒测试)的定义,了解不能彻底地进行这两种测试的原因 2%
5掌握选择测试用例的两个原则 1%
6掌握使用等价测试技术、边界值分析技术、功能测试技术设计简单题目的测试用例的过程5-10%
7掌握使用语句覆盖、分支覆盖、路径覆盖技术设计简单题目的测试用例的过程 5-10%
了解如下内容:
1了解在确定编程语言时需要考虑的情况
2了解三条通常的编码标准
3了解重用不仅仅是代码的重用
4在集成步骤中,了解以下概念:存根和驱动、逻辑代码制品和操作代码制品 5了解完全定义-使用路径覆盖技术
6了解在测试对象时出现的潜在问题
7了解测试与调试的区别,掌握发现新错误的可能性与已检测出的旧错误数之间的关系
8了解产品测试与验收测试包含的相同的四个测试方面,掌握产品测试与验收测试的本质区别
9了解在实现阶段用到的CASE工具、度量指标和面临的挑战
第16章:交付后维护
1掌握逆向工程、正向工程、再工程、重构的定义 1%
第17章:UML的进一步讨论
1掌握UML的定义 1%
2掌握在UML中出现的图标(包括类图、聚合、多重性、组合、泛化、继承、关联、注释、用例图、交互图、顺序图、协作图、状态图、活动图、包、)及其含义 1-2%
第18章:新兴技术
了解软件工程的新兴技术