1、第1章 软件工程学概述 1 1、什么是软件危机?、什么是软件危机?P1P12 2、软件危机产生的原因有哪些?、软件危机产生的原因有哪些?P3P33 3、什么是软件工程?、什么是软件工程?P5P54 4、软件工程方法学包含哪些要素?、软件工程方法学包含哪些要素?P9P95 5、在软件过程中有哪些模型?他们各自的特点、在软件过程中有哪些模型?他们各自的特点是哪些?是哪些?P15P15-P31P31(*瀑布模型、渐增型和变换型、喷泉模型、快速原型法瀑布模型、渐增型和变换型、喷泉模型、快速原型法)第2章 可行性研究 1、可行性研究的目的是什么?P352、应从哪些方面研究可行性?P353、如何画系统流程
2、图?P38-P404、如何画数据流图?P40-P375、了解数据字典及成本效益分析。数据流图数据流图(Data Flow DiagramData Flow Diagram,DFDDFD)是描述系统中数据流)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。及把逻辑输入转换为逻辑输出所需的加工处理。数据存储数据存储数据源点数据源点或终点或终点 数据处理数据处理(数据加工数据加工)加工名数据流数据流数据流名文件名实体名箭箭 头头圆或椭圆圆或椭圆单或双杠单或双杠矩形框矩形框还有一些辅
3、助的图例还有一些辅助的图例:一、数据流图的图符一、数据流图的图符四种基本图形符号:四种基本图形符号:TAB*CTAB*CTAB+CTAB+CTABC+TABC+*与与+或或互斥+举例:举例:储户储户1记录存款信息打印存款单存款单存款信息存款存单3计算利息4打印利息清单存款信息利息值利息清单D1存款信息存款信息2取款单第3章 需求分析 1、需求分析的基本任务是什么?P56-P582、分析建模 2.1什么是模型?模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。2.2数据模型(E-R)、2.3功能模型(2.4节数据流图)
4、、行为模型(状态转换图是行为模型的基础)3、要从哪些方面验证软件需求?P70第5章 总体设计 1、在设计过程中,总体设计一般有哪两个主要阶段组成?(系统设计阶段、结构设计阶段)P91总体设计步骤?P92、P932、设计原理 P94-P99(模块化、抽象、模块独立、)3、什么模块化?模块独立性包含哪些内容?度量准则是什么?P95P994、启发规则有哪些?P100P1024、描绘软件结构的图形工具P102-P1045、面向数据流的设计方法P105P1125.2.1 模块化u 模块是程序对象有名字的集合例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。u 模块化就是将系统划分为若干个模块
5、,每个模块完成一个子功能模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。5.2.5 模块独立 “模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:功能:即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。逻辑:即描述模块内部怎么做。状态:即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。
6、这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。模块独立性的度量标准是两个定性准则:耦合性 用于描述模块之间联系的紧密程度。内聚性 用于描述模块内部联系的紧密程度。模块独立性比较强的模块应该是具有高内聚性和的低耦合度。启发式规则 P99-102会计算软件结构中的深度、宽度、扇入、扇出。数据流有两种类型:数据流有两种类型:变换型:变换型:具有顺序处理的特点具有顺序处理的特点事务型:事务型:具有平行分别处理的特点具有平行分别处理的特点变换中心变换输入输出图图 变换型数据流图的基本模型变换型数据流图的基本模型 图 事务型数据流图
7、的基本模型事务中心输入流接收路径加工路径变换分析设计:把具有变换流特点的数据流图按预先确定的模式映射成软件结构。不具有显著的事务特点。虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以采用事务分析方法为宜。两者的主要差别仅在于由数据流图到软件结构的映射方法不同。第第6 6章章 详细设计详细设计1、结构程序设计中有哪几种基本控制结构?P1182、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)P124P1293、了解程序复杂度的定量度量(McCabe)6.16.1结构程序设计结构程序设计6.1 结构程
8、序设计图图6.1 3种基本的控制结构种基本的控制结构6.16.1结构程序设计结构程序设计其他常用的控制结构图图6.2 其他常用的控制结构其他常用的控制结构6.3.1 6.3.1 程序流程图程序流程图 程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程序流程图中经常使用的基本符号如图6.3所示。图图6.3 程序流程图中使用的符号程序流程图中使用的符号NS图又称为盒图,它是为了保证结构化程序设计而由Nassi和Shneiderman共同提出的一种图形工具。在NS图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。NS
9、图中,基本控制结构的表示符号如图6.4所示。6.3.2 N-S6.3.2 N-S图图6.3.2 N-S6.3.2 N-S图图图图6.4 盒图的基本符号盒图的基本符号图图6.5 PAD6.5 PAD中基本符号中基本符号顺序结构;顺序结构;(b)(b)分支结构;分支结构;(c)(c)多分支多分支CASECASE结构;结构;(d)(d)当型循环;当型循环;(e)(e);直到型循环;直到型循环;(f)(f)语句标号;(语句标号;(g g)定义)定义6.3.3 PAD6.3.3 PAD图图6.3.3 PAD6.3.3 PAD图图图图6.6 使用使用PAD图提供的定义功能来逐步求精的例子图提供的定义功能来
10、逐步求精的例子6.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量 定量度量程序复杂程度的方法很有价值:把程序的定量度量程序复杂程度的方法很有价值:把程序的复杂程度复杂程度乘以乘以适当常数适当常数即可即可估算出软件中错误的数量估算出软件中错误的数量以以及及软件开发需要用的工作量软件开发需要用的工作量,定量度量的结果可以用来,定量度量的结果可以用来比较两个不同的设计比较两个不同的设计或或两个不同算法的优劣两个不同算法的优劣;程序的定;程序的定量的复杂程度可以作为模块规模的精确限度。量的复杂程度可以作为模块规模的精确限度。6.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量6.5.
11、1 McCabe方法 McCabe方法根据程序控制流的复杂程度定量度量程序方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。的复杂程度,这样度量出的结果称为程序的环形复杂度。为了突出表示程序的控制流,人们通常使用流图为了突出表示程序的控制流,人们通常使用流图(也称也称为程序图为程序图)。所谓流图实质上是。所谓流图实质上是“退化了的退化了的”程序流程图,程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。操作以及分支或循环的具体条件。6.5 6.5 程序复杂程度的定量度量
12、程序复杂程度的定量度量图图6.16 把程序流程图影射成流图把程序流程图影射成流图环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。(1)流图中的区域数等于环形复杂度。(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。6.5.1 6.5.1 计算环形复杂度的方法计算环形复杂度的方法第第7 7章章 实现实现 1、测试技术P149P179 (1)软件测试的目标P150 (2)软件测试准则 P150 (3)测试方法 P151 (4)
13、测试步骤 P151 (5)测试阶段的信息流 P1522、调试的途径有哪些?P1783、软件可靠性和可用性的基本概念P179 编码:把软件设计结果翻译成用某种程序语言书写的程序。测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。实现实现编码和测试7.27.2软件测试基础软件测试基础7.2 软件测试基础 软件测试:为发现程序中的错误而执行程序的过程。软件测试:为发现程序中的错误而执行程序的过程。软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、软件测试是有风险的行为、并
14、非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求)码、追溯至用户需求)测试方法(黑盒测试和白盒测试)测试方法(黑盒测试和白盒测试)测试步骤(模块测试、子系统测试、系统测试、验收测试、测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)平行运行)模块模块模块接口测试模块接口测试局部数据结构测试局部数据结构测试重要路径测试重要路径测试错误处理测试错误处理测试边界条件测试边界条件测试I/O I/O 参数值的个数、类参数值的个数、类型、次序、格式是否正型、次序、格式是否正确,确,I/OI/O文件属
15、性、操作文件属性、操作是否正确等。是否正确等。数据说明是否正确、数据说明是否正确、一致,变量及其初一致,变量及其初值定义是否正确等。值定义是否正确等。检查检查“错误处错误处理程序理程序”本身本身的错误。的错误。边界条件常包括循环边边界条件常包括循环边界,最大最小值、控制界,最大最小值、控制流中等于、大于、小于流中等于、大于、小于的比较值等。的比较值等。重要路径通常是指完成重要路径通常是指完成模块功能的主要路径,模块功能的主要路径,一般是控制结构。一般是控制结构。也称模块测试(也称模块测试(modulemodule testing testing)7.3.1 7.3.1 单元测试重点单元测试重点
16、7.3 单元测试语语句句覆覆盖盖判判定定覆覆盖盖条条件件覆覆盖盖判判定定条条件件覆覆盖盖条条件件组组合合覆覆盖盖弱弱强强7.6 7.6 白盒测试技术白盒测试技术7.6 白盒测试技术路路径径覆覆盖盖 语句覆盖语句覆盖:选择足够的测试用例,使得程序中每个语句至选择足够的测试用例,使得程序中每个语句至少都能被执行一次。少都能被执行一次。判定覆盖判定覆盖:执行足够的测试用例,使得程序中每个判定至执行足够的测试用例,使得程序中每个判定至少都获得一次少都获得一次“真真”值和值和“假假”值。值。条件覆盖条件覆盖:执行足够的测试用例,使得判定中的每个条件获:执行足够的测试用例,使得判定中的每个条件获得各种可能
17、的结果。得各种可能的结果。判定判定/条件覆盖条件覆盖:执行足够的测试用例,使得判定中每个条执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。件取到各种可能的值,并使每个判定取到各种可能的结果。条件组合覆盖条件组合覆盖:执行足够的例子,使得每个判定中条件的执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。各种可能组合都至少出现一次。路径覆盖路径覆盖:执行足够的例子,使得每执行足够的例子,使得每条路径条路径都至少出现一都至少出现一次。次。白盒法白盒法常用的覆盖标准常用的覆盖标准等等价价分分类类法法边边值值分分析析法法错错误误推推测测法法黑盒法黑盒
18、法 不考虑程序的内部结构与特性,不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性只根据程序功能或程序的外部特性设计测试用例。设计测试用例。7.7 7.7 黑盒测试技术黑盒测试技术7.7 黑盒测试技术 调试调试(也称为纠错)作为成功测试的后果出现,也就是说,(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。调试是在测试发现错误之后排除错误的过程。调试过程调试过程如下图所示:如下图所示:7.8 7.8 调试调试7.8 调试 无论采用什么方法,调试的目标都是寻找软件错误的原因并改正错误。通常需要把系统地分析、直觉和运气组合起来,才能实现上述目标。一般说
19、来,有下列3种调试途径可以采用:u蛮干法u回溯法u原因排除法7.8 7.8 调试途径调试途径 软件可靠性的定义:软件可靠性的定义:对于软件可靠性有许多不同的定义,对于软件可靠性有许多不同的定义,其中多数人承认的一个定义是:其中多数人承认的一个定义是:软件可靠性是程序在给定软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率的时间间隔内,按照规格说明书的规定成功地运行的概率 软件可用性的一个定义:软件可用性的一个定义:软件可用性是程序在软件可用性是程序在给定的时间给定的时间点点,按照规格说明书的规定,成功地运行的概率。,按照规格说明书的规定,成功地运行的概率。7.9 7.9
20、调试调试7.9 软件的可靠性第8章 维 护 1 1、软件维护的定义、软件维护的定义P189P1892 2、决定软件的可维护性的因素有哪些?、决定软件的可维护性的因素有哪些?P195-P196P195-P1968.18.1软件维护的定义软件维护的定义8.1 软件维护的定义 软件维护软件维护是指软件系统交付使用以后,为了改正错误或满足新是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作可的需求而修改软件的过程。按照不同的维护目的,维护工作可分成分成4类。类。完善性维护完善性维护(Perfective Maintenance):扩充原有系统的功):扩充
21、原有系统的功能,提高原有系统的性能,满足用户的实际需要。能,提高原有系统的性能,满足用户的实际需要。纠错性维护纠错性维护(Corrective Maintenance):对在测试阶段未能):对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。诊断、定位、纠错以及验证、修改的回归测试过程。适应性维护适应性维护(Adaptive Maintenance):):要使运行的软件能要使运行的软件能适应运行环境的变动而修改软件的过程。适应运行环境的变动而修改软件的过程。预防性维护预防性维护(P
22、reventive Maintenance):为了进一步改善):为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。(基础而对软件进行修改。(8.5节)节)第第9 9章章 面向对象相关内容面向对象相关内容 1、面向对象方法学概述P203P2102、面向对象建模(涵盖第9章和第10章)3、面向对象分析的基本过程4、面向对象的设计准则9.1.1 要点9.1 概述 面向对象方法学的面向对象方法学的出发点和基本原则出发点和基本原则,是,是尽可能模拟人类习惯尽可能模拟人类习惯的思维方式,的思维方式,使开发软件的方法与过程
23、使开发软件的方法与过程尽可能接近人类认识世尽可能接近人类认识世界解决问题的方法与过程界解决问题的方法与过程,也就是使描述问题的问题空间,也就是使描述问题的问题空间(也称也称为问题域为问题域)与实现解法的解空间与实现解法的解空间(也称为求解域也称为求解域)在结构上尽可能在结构上尽可能一致。一致。认为客观世界是由各种对象组成的,任何事物都是对象,复认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。杂的对象可以由比较简单的对象以某种方式组合而成。把所有对象都划分成各种对象类把所有对象都划分成各种对象类(简称为类,简称为类,class),每个对,每个对
24、象类都定义了一组数据和一组方法。象类都定义了一组数据和一组方法。按照子类按照子类(或称为派生类或称为派生类)与父类与父类(或称为基类或称为基类)的关系,把若的关系,把若干个对象类组成一个层次结构的系统干个对象类组成一个层次结构的系统(也称为类等级也称为类等级)。对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。(1)面向对象分析的三个模型面向对象建模是面向对象分析的关键。面向对象的模型包括面向对象的模型包括:对象模型、动态模型和功能模型。对象模型对象模型描述了系统的静态结构;动态模型动态模型描述了系统的交互次序;功能模型功能模型描述了系统的数据变换。不同的问题,三个子
25、模型的侧重程度不同,但是,对象对象模型是最基础的、最核心的、最重要的模型是最基础的、最核心的、最重要的。无论解决什么问题,首先要在问题域中提取和定义出对象模型。当问题涉问题涉及用户界及用户界面面与过程控制与过程控制时,动态模型是重点动态模型是重点。如果问题涉及大量数据变问题涉及大量数据变换换,则功能模型非常重要功能模型非常重要。对象模型中的操作(服务)可以出现在动态模型和功能模型内。9.3 3个子模型与5个层次面向对象设计的准则面向对象设计的准则模块化模块化 2.2.抽象抽象 3.3.信息隐藏信息隐藏 4.4.弱耦合弱耦合 5.5.强内聚强内聚 6.6.可重用可重用 基本概念、方法、原理软件危
26、机的基本概念、产生原因及消除软件危机的途径软件工程的基本原理软件生命周期的三个时期和八个阶段及各阶段成果软件开发模型及特点软件设计的原则、主要任务软件工程方法学基本要素及方法可行性研究的目的、任务、方法需求分析的任务、获取需求的方法模块化、模块独立软件测试的目的、方法、步骤及技术软件可维护性面向对象设计的准则数据流图数据字典软件结构图过程设计的工具:程序流程图、N-S图、PAD图、判定表UML图 用例图、类图、活动图与状态图、时序图与协作图、组件图与部署图建模、工具考试题型一、单项选择题(每小题1分,共10分)二、填空题(每小题1分,共20分)三、简答题(共40分)四、综合应用题综合应用题(共30分)祝大家考试愉快!
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。