《软件工程导论第五版复习重点34162.pptx》由会员分享,可在线阅读,更多相关《软件工程导论第五版复习重点34162.pptx(74页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 11 1 软件工程学概述软件工程学概述2 2 可行性研究可行性研究3 3 需求分析需求分析4 4形式化说明技术形式化说明技术5 5总体设计总体设计6 6 详细设计详细设计7 7 实现实现8 8 维护维护9 9 面向对象相关内容面向对象相关内容10 10 软件项目管理软件项目管理软件工程导论复习软件工程导论复习 2 2第第第第1 1 1 1章章章章 软件工程学概述软件工程学概述软件工程学概述软件工程学概述 1 1、什么是软件危机?、什么是软件危机?P1P12 2、软件危机产生的原因有哪些?、软件危机产生的原因有哪些?P3P33 3、什么是软件工程?、什么是软件工程?P5P54 4、软件工程方
2、法学包含哪些要素?、软件工程方法学包含哪些要素?P9P95 5、在在软软件件过过程程中中有有哪哪些些模模型型?他他们们各各自自的的特特点点是是哪些?哪些?P15P15P22P223 3第第第第2 2 2 2章章章章 可行性研究可行性研究可行性研究可行性研究 1 1、可行性研究的目的是什么?P252、应从哪些方面研究可行性?P253、如何画系统流程图?P27P304、如何画数据流图?P30P375、了解数据字典及成本效益分析。4 4数数据据流流图图(Data Data Flow Flow DiagramDiagram,DFDDFD)是是描描述述系系统统中中数数据据流流程程的的图图形形工工具具,它
3、它标标识识了了一一个个系系统统的的逻逻辑辑输输入入和和逻逻辑辑输输出出,以以及及把逻辑输入转换为逻辑输出所需的加工处理。把逻辑输入转换为逻辑输出所需的加工处理。2.42.4数据流图数据流图2.4 2.4 2.4 数据流图(数据流图(数据流图(DFDDFDDFD)数据存储数据存储数据源点数据源点或终点或终点处处 理理加工名数据流数据流数据流名文件名实体名箭箭 头头圆或椭圆圆或椭圆单或双杠单或双杠矩形框矩形框还有一些辅助的图例还有一些辅助的图例:一、数据流图的图符一、数据流图的图符四种基本图形符号:四种基本图形符号:TAB*CTAB*CTAB+CTAB+CTABC+TABC+*与与+或或互斥+5
4、52.42.4数据流图数据流图举例:举例:储户储户1记录存款信息打印存款信息存款单存款信息存款存单3计算利息4打印利息清单存款信息利息值利息清单D1存款信息存款信息26 6细化后的计算机储蓄系统软件结构细化后的计算机储蓄系统软件结构细化后的计算机储蓄系统软件结构细化后的计算机储蓄系统软件结构7 7第第第第3 3 3 3章章章章 需求分析需求分析需求分析需求分析 1 1 1 1、需求分析的基本任务是什么?、需求分析的基本任务是什么?、需求分析的基本任务是什么?、需求分析的基本任务是什么?P46-P48P46-P48P46-P48P46-P482 2 2 2、分析建模、分析建模、分析建模、分析建模
5、 2.12.1什么是模型?什么是模型?什么是模型?什么是模型?模型:就是为了理解事物而对事物做出的一种模型:就是为了理解事物而对事物做出的一种模型:就是为了理解事物而对事物做出的一种模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。符号和组织这些符号的规则组成。符号和组织这些符号的规则组成。符号和组织这些符号的规则组成。2.22.22.22.2数
6、据模型(数据模型(数据模型(数据模型(E-RE-RE-RE-R)、)、)、)、功能模型(功能模型(功能模型(功能模型(2.42.42.42.4节数据流图)、节数据流图)、节数据流图)、节数据流图)、行为模型行为模型行为模型行为模型(状态转换图是行为模型的基础)(状态转换图是行为模型的基础)(状态转换图是行为模型的基础)(状态转换图是行为模型的基础)3 3 3 3、要从哪些方面验证软件需求?、要从哪些方面验证软件需求?、要从哪些方面验证软件需求?、要从哪些方面验证软件需求?P60P60P60P608 8第第第第4 4 4 4章章章章 形式化说明技术形式化说明技术形式化说明技术形式化说明技术 软件
7、工软件工程的使程的使用方法用方法非形式化:用自然语言描述需求规格说明非形式化:用自然语言描述需求规格说明半形式化:用数据流图或实体半形式化:用数据流图或实体联系图联系图建立模型建立模型形式化:描述系统性质的基于数学的技术形式化:描述系统性质的基于数学的技术1、有穷状态机P67P722、Petri网技术P72P759 9第第第第5 5 5 5章章章章 总体设计总体设计总体设计总体设计 1 1、在在设设计计过过程程中中,总总体体设设计计一一般般有有哪哪两两个个主主要阶段组成?要阶段组成?P81P812 2、什什么么模模块块化化?模模块块独独立立性性包包含含哪哪些些内内容容?度量准则是什么?度量准则
8、是什么?P85P89P85P893 3、启发规则有哪些?、启发规则有哪些?P90P92P90P924 4、描绘软件结构的图形工具、描绘软件结构的图形工具P92-P94P92-P945 5、面向数据流的设计方法、面向数据流的设计方法P95P102P95P10210105.25.2设计原理设计原理5.2.1 5.2.1 5.2.1 模块化模块化模块化u 模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。u 模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易
9、于测试和调试,因而也有助于提高软件的可靠性。1111模块化降低软件复杂度的模块化降低软件复杂度的简单证明简单证明5.2.55.2.5模块独立模块独立5.2.5 5.2.5 5.2.5 模块独立模块独立模块独立 “模块模块”,又称,又称“构件构件”,一般指用一个名字可调用的一段程,一般指用一个名字可调用的一段程序。它一般具有如下序。它一般具有如下三个基本属性三个基本属性:功能功能 即指该模块实现什么功能,做什么事情。必须注意:模块即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。功能,应是该模块本身的功能加上它所调用的所有子模块的功能。逻
10、辑逻辑 即描述模块内部怎么做。即描述模块内部怎么做。状态状态 即该模块使用时的环境和条件。即该模块使用时的环境和条件。所谓模块的独立性,所谓模块的独立性,是指软件系统中每个模块只涉及软件要是指软件系统中每个模块只涉及软件要求的具体的子功能求的具体的子功能,而,而和软件系统中其他模块的接口是简单的和软件系统中其他模块的接口是简单的。即功能专一即功能专一,模块之间无过多的相互作用的模块模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、易。独立性强的模块,还能
11、减少错误的影响,使模块容易组合、修改及测试。修改及测试。12125.2.5 5.2.5 模块独立性模块独立性模块独立性的度量标准是两个定性准则模块独立性的度量标准是两个定性准则:耦合性耦合性耦合性耦合性 用于描述模块之间联系的紧密程度。用于描述模块之间联系的紧密程度。内聚性内聚性内聚性内聚性 用于描述模块内部联系的紧密程度。用于描述模块内部联系的紧密程度。模块独立性比较强的模块应该是具有高内聚性和的低耦模块独立性比较强的模块应该是具有高内聚性和的低耦合度。合度。1313图图5.8 变换型数据流图的基本模型变换型数据流图的基本模型 5.5.1 5.5.1 5.5.1 5.5.1 概念概念概念概念
12、 变换流变换流变换流变换流1414图 事务型数据流图的基本模型5.5.1 5.5.1 5.5.1 5.5.1 概念概念概念概念 事务流事务流事务流事务流1515l变换分析设计:把具有变换流特点的数据流图按预先确定的模变换分析设计:把具有变换流特点的数据流图按预先确定的模式映射成软件结构式映射成软件结构。不具有显著的事务特点不具有显著的事务特点。l虽然在任何情况下都可以使用变换分析方法设计软件结构,但虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在是在数据流具有明显的事务特点数据流具有明显的事务特点时,也就是有一个明显的时,也就是有一个明显的“发发射中心射中心”(事务中心事务中心)时,
13、还是以采用事务分析方法为宜。时,还是以采用事务分析方法为宜。l两者的主要差别仅在于由数据流图到软件结构的映射方法不同。两者的主要差别仅在于由数据流图到软件结构的映射方法不同。1616第第第第6 6 6 6章章章章 详细设计详细设计详细设计详细设计 1 1 1 1、结构程序设计中有哪几种基本控制结构?、结构程序设计中有哪几种基本控制结构?、结构程序设计中有哪几种基本控制结构?、结构程序设计中有哪几种基本控制结构?P108P108P108P1082 2 2 2、了解人机界面的设计。、了解人机界面的设计。、了解人机界面的设计。、了解人机界面的设计。3 3 3 3、掌掌掌掌握握握握过过过过程程程程设设
14、设设计计计计的的的的工工工工具具具具(程程程程序序序序流流流流程程程程图图图图、盒盒盒盒图图图图、PADPADPADPAD图图图图,判定树)判定树)判定树)判定树)P114P119P114P119P114P119P114P1194 4 4 4、面向数据结构的设计方法(、面向数据结构的设计方法(、面向数据结构的设计方法(、面向数据结构的设计方法(JacksonJacksonJacksonJackson图)图)图)图)5 5 5 5、程序复杂度的定量度量(、程序复杂度的定量度量(、程序复杂度的定量度量(、程序复杂度的定量度量(McCabeMcCabeMcCabeMcCabe)17176.16.1结
15、构程序设计结构程序设计6.1 6.1 6.1 结构程序设计结构程序设计结构程序设计图图6.1 3种基本的控制结构种基本的控制结构18186.16.1结构程序设计结构程序设计其他常用的控制结构其他常用的控制结构其他常用的控制结构图图6.2 其他常用的控制结构其他常用的控制结构19196.3.1 6.3.1 程序流程图程序流程图 程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程序流程图中经常使用的基本符号如图6.3所示。图图6.3 程序流程图中使用的符号程序流程图中使用的符号2020uNS图又称为盒图,它是为了保证结构化程序设计而由Nassi和S
16、hneiderman共同提出的一种图形工具。u在NS图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。uNS图中,基本控制结构的表示符号如图6.4所示。6.3.2 N-S6.3.2 N-S图图21216.3.2 N-S6.3.2 N-S图图图图6.4 盒图的基本符号盒图的基本符号2222图图6.5 PAD6.5 PAD中基本符号中基本符号(a)(a)顺序结构;顺序结构;(b)(b)分支结构;分支结构;(c)(c)多分支多分支CASECASE结构;结构;(d)(d)当型循环;当型循环;(e)(e);直到型循环;直到型循环;(f)(f)语句标号;(语句标号;(g
17、g)定义)定义6.3.3 PAD6.3.3 PAD图图23236.3.3 PAD6.3.3 PAD图图图图6.6 使用使用PAD图提供的定义功能来逐步求精的例子图提供的定义功能来逐步求精的例子24246.4 6.4 面向数据结构的设计方法面向数据结构的设计方法6.4 6.4 6.4 面向数据结构的设计方法面向数据结构的设计方法面向数据结构的设计方法 Jackson方法和方法和Warnier方法是最著名的两个面方法是最著名的两个面向数据结构的设计方法向数据结构的设计方法2525uJackson方法是由英国的M.A.Jackson在1975年首先提出的,他同时还提出了与这种方法配套使用的、用于描述
18、系统数据结构和程序结构的图形工具,被称为Jackson图。uJackson方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构图。u这一方法对输入、输出数据结构明确的中、小型系统特别有效,如商业应用中的文件、表格处理。该方法也可与其他方法结合,用于模块的详细设计。6.4 6.4 面向数据结构的设计方法面向数据结构的设计方法6.4.1 Jackson6.4.1 Jackson6.4.1 Jackson图图图2626图6.8 三种基本结构在Jackson图中的表示符号(a)顺序结构;(b)选择结构;(c);循环结构6.4.1 Jackson6.4.1 J
19、ackson图图(a)(c)(b)27276.4 6.4 面向数据结构的设计方法面向数据结构的设计方法6.4.2 6.4.2 6.4.2 改进的改进的改进的 JacksonJacksonJackson图图图图图6.9 改进的改进的Jackson图图28286.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量 定量度量程序复杂程度的方法很有价值:把程序的定量度量程序复杂程度的方法很有价值:把程序的复杂程度复杂程度乘以乘以适当常数适当常数即可即可估算出软件中错误的数量估算出软件中错误的数量以以及及软件开发需要用的工作量软件开发需要用的工作量,定量度量的结果可以用来,定量度量的结果可以用来比
20、较两个不同的设计比较两个不同的设计或或两个不同算法的优劣两个不同算法的优劣;程序的定;程序的定量的复杂程度可以作为模块规模的精确限度。量的复杂程度可以作为模块规模的精确限度。29296.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量6.5.1 McCabe6.5.1 McCabe6.5.1 McCabe方法方法方法u McCabe方法根据程序控制流的复杂程度定量度量程方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂序的复杂程度,这样度量出的结果称为程序的环形复杂度。度。u 为了突出表示程序的控制流,人们通常使用流图为了突出表示程序的控制流,人们通
21、常使用流图(也称也称为程序图为程序图)。所谓流图实质上是。所谓流图实质上是“退化了的退化了的”程序流程图,程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。操作以及分支或循环的具体条件。30306.5 6.5 程序复杂程度的定量度量程序复杂程度的定量度量图图6.16 把程序流程图影射成流图把程序流程图影射成流图3131 环形复杂度定量度量程序的逻辑复杂度。有了描绘程环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述序控制流的流图之后,可以用下述3 3种方法中的任何一种来种方法中的任
22、何一种来计算环形复杂度。计算环形复杂度。(1)(1)流图中的区域数等于环形复杂度。流图中的区域数等于环形复杂度。(2)(2)流图流图G G的环形复杂度的环形复杂度V(G)=E-N+2,V(G)=E-N+2,其中,其中,E E是流图中边的是流图中边的条数,条数,N N是结点数。是结点数。(3)(3)流图流图G G的环形复杂度的环形复杂度V(G)=P+1V(G)=P+1,其中,其中,P P是流图中判定是流图中判定结点的数目。结点的数目。6.5.1 6.5.1 计算环形复杂度的方法计算环形复杂度的方法3232第第第第7 7 7 7章章章章 实现实现实现实现 1 1、编码、编码2 2、测试技术、测试技
23、术P139P169P139P1693 3、调试的途径有哪些?、调试的途径有哪些?P168P1684 4、软件可靠性和可用性的基本概念、软件可靠性和可用性的基本概念P169P1693333u 编码:把软件设计结果翻译成用某种程序语言书写的程序。u 测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。实现实现编码和测试编码和测试34347.27.2软件测试基础软件测试基础7.2 7.2 7.2 软件测试基础软件测试基础软件测试基础u 软件测试:为发现程序中的错误而执行程序的过程。软件测试:为发现程序中的错误而执行程序的过程。u 软件测试的准则(尽早和不断的测试、彻底测试的不软
24、件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求)检查自己的代码、追溯至用户需求)u 测试方法(黑盒测试和白盒测试)测试方法(黑盒测试和白盒测试)u 测试步骤(模块测试、子系统测试、系统测试、验收测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)测试、平行运行)3535uu 测试内容测试内容测试内容测试内容模块模块模块接口测试模块接口测试局部数据结构测试局部数据结构测
25、试重要路径测试重要路径测试错误处理测试错误处理测试边界条件测试边界条件测试I/O I/O 参数值的个数、类参数值的个数、类型、次序、格式是否正型、次序、格式是否正确,确,I/OI/O文件属性、操作文件属性、操作是否正确等。是否正确等。数据说明是否正确、数据说明是否正确、一致,变量及其初一致,变量及其初值定义是否正确等。值定义是否正确等。检查检查“错误处错误处理程序理程序”本身本身的错误。的错误。边界条件常包括循环边边界条件常包括循环边界,最大最小值、控制界,最大最小值、控制流中等于、大于、小于流中等于、大于、小于的比较值等。的比较值等。重要重要路径通常是指完成路径通常是指完成模块功能的主要路径
26、,模块功能的主要路径,一般是控制结构。一般是控制结构。也称模块测试(也称模块测试(modulemodule testing testing)7.3.1 7.3.1 单元测试重点单元测试重点7.3 7.3 7.3 单元测试单元测试单元测试3636l l白盒法又称为逻辑覆盖法,其测试用例选择,白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。是按照不同覆盖标准确定的。语语句句覆覆盖盖判判定定覆覆盖盖条条件件覆覆盖盖判判定定条条件件覆覆盖盖条条件件组组合合覆覆盖盖弱弱强强7.6 7.6 白盒测试技术白盒测试技术7.6 7.6 7.6 白盒测试技术白盒测试技术白盒测试技术3737 语语
27、句句覆覆盖盖:选选择择足足够够的的测测试试用用例例,使使得得程程序序中中每每个个语语句至少都能被执行一次。句至少都能被执行一次。判定覆盖判定覆盖:执行足够的测试用例,使得程序中每个判执行足够的测试用例,使得程序中每个判定至少都获得一次定至少都获得一次“真真”值和值和“假假”值。值。条条件件覆覆盖盖:执执行行足足够够的的测测试试用用例例,使使得得判判定定中中的的每每个个条件获得各种可能的结果。条件获得各种可能的结果。判判定定/条条件件覆覆盖盖:执执行行足足够够的的测测试试用用例例,使使得得判判定定中中每每个个条条件件取取到到各各种种可可能能的的值值,并并使使每每个个判判定定取取到到各各种种可可能
28、能的结果。的结果。条条件件组组合合覆覆盖盖:执执行行足足够够的的例例子子,使使得得每每个个判判定定中中条条件的各种可能组合都至少出现一次。件的各种可能组合都至少出现一次。白盒法白盒法白盒法白盒法常用的覆盖标准常用的覆盖标准常用的覆盖标准常用的覆盖标准3838等等价价分分类类法法边边值值分分析析法法错错误误推推测测法法黑盒法黑盒法 不考虑程序的内部结构与特性,不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性只根据程序功能或程序的外部特性设计测试用例。设计测试用例。7.7 7.7 黑盒测试技术黑盒测试技术7.7 7.7 7.7 黑盒测试技术黑盒测试技术黑盒测试技术39391 1、等价分类
29、法、等价分类法基基本本思思想想:根根据据程程序序的的I/OI/O特特性性,将将程程序序的的定定义义域域划划分分为为有有限限个个等等价价区区段段 “等等价价类类”,从从等等价价类类中中选选择择出出的的用例,具有用例,具有“代表性代表性”。等价类分为:等价类分为:有有效效等等价价类类 对对于于程程序序的的规规格格说说明明是是合合理理的的、有有意意义义的输入数据构成的集合。的输入数据构成的集合。无效等价类无效等价类 对于程序的规格说明,是不合理的,是对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。没有意义的输入数据构成的集合。40402 2、边值分析法、边值分析法l l基基本本思思想
30、想:选选择择等等价价类类的的边边缘缘值值作作为为测测试试用用例例,让让每每个个等等价价类类的的边边界界都都得得到到测测试试,选选择择测测试试用用例例既既考考虑虑输输入入亦亦考虑考虑输出输出。l l分析步骤:分析步骤:A A、先划分等价类。、先划分等价类。B B、选择测试用例,测试等价类边界。、选择测试用例,测试等价类边界。l l边界边界选择原则:选择原则:A A、按照输入值范围的边界。、按照输入值范围的边界。B B、按照输入、按照输入/输出值个数的边界。输出值个数的边界。C C、输出值域的边界。、输出值域的边界。D D、输入、输入/输出有序集的边界。输出有序集的边界。41413 3、错误推测法
31、、错误推测法l l 错误推测法的概念错误推测法的概念错误推测法的概念错误推测法的概念:凭经验或直觉推测可能的错误,凭经验或直觉推测可能的错误,凭经验或直觉推测可能的错误,凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选列出程序中可能有的错误和容易发生错误的特殊情况,选列出程序中可能有的错误和容易发生错误的特殊情况,选列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例择测试用例择测试用例择测试用例。l l 错误推测方法的基本思想错误推测方法的基本思想错误推测方法的基本思想错误推测方法的基本思想:列举出程序中所有可能列举出程序中所有可能列举出程序中所有可能列
32、举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试有的错误和容易发生错误的特殊情况,根据它们选择测试有的错误和容易发生错误的特殊情况,根据它们选择测试有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如:用例。例如:用例。例如:用例。例如:uu 在单元测试时曾列出的许多在模块中常见的错误、以前在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误等,这些就是经验的总结。产品测试中曾经发现的错误等,这些就是经验的总结。uu 还有,输入数据和输出数据为还有,输入数据和输出数据为0 0的情况、输入表格为空格的情况、输入表格为空格或输入表格只有一行等。这些都
33、是容易发生错误的情况,或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。可选择这些情况下的例子作为测试用例。4242l 调试调试(也称为纠错)作为成功测试的后果出现,也就是说,(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。调试是在测试发现错误之后排除错误的过程。l 调试过程调试过程如下图所示:如下图所示:7.8 7.8 调试调试7.8 7.8 7.8 调试调试调试4343 无论采用什么方法,调试的目标都是寻找软件错误无论采用什么方法,调试的目标都是寻找软件错误的原因并改正错误。通常需要把系统地分析、直觉和的原因并改正
34、错误。通常需要把系统地分析、直觉和运气组合起来,才能实现上述目标。一般说来,有下运气组合起来,才能实现上述目标。一般说来,有下列列3 3种调试途径可以采用:种调试途径可以采用:uu蛮干法蛮干法uu回溯法回溯法uu原因排除法原因排除法7.8 7.8 调试途径调试途径4444l 软件可靠性的定义:软件可靠性的定义:对于软件可靠性有许多不同的定义,对于软件可靠性有许多不同的定义,其中多数人承认的一个定义是:其中多数人承认的一个定义是:软件可靠性是程序在给定软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率的时间间隔内,按照规格说明书的规定成功地运行的概率l 软件可用性的一个定义
35、:软件可用性的一个定义:软件可用性是程序在软件可用性是程序在给定的时给定的时间点间点,按照规格说明书的规定,成功地运行的概率。,按照规格说明书的规定,成功地运行的概率。7.9 7.9 调试调试7.9 7.9 7.9 软件的可靠性软件的可靠性软件的可靠性4545第第8 8章章 维护维护 1 1、软件维护的定义、软件维护的定义P179P1792 2、了解软件维护的特点、了解软件维护的特点3 3、软软件件维维护护过过程程中中维维护护组组织织包包括括哪些人员?哪些人员?P182P1828.4 8.4 决决定定软软件件的的可可维维护护性性的的因因素素有哪些?有哪些?P185P186P185P1868.5
36、 8.5 软件再工程过程软件再工程过程46468.18.1软件维护的定义软件维护的定义8.1 8.1 8.1 软件维护的定义软件维护的定义软件维护的定义l 软件维护软件维护是指软件系统交付使用以后,为了改正错误或满足是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成可分成4类。类。u完善性维护完善性维护(Perfective Maintenance):扩充原有系统的):扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。功能,提高原有系统的性能,满足用户的实际需要。u纠错性维护纠
37、错性维护(Corrective Maintenance):对在测试阶段未):对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。诊断、定位、纠错以及验证、修改的回归测试过程。u适应性维护适应性维护(Adaptive Maintenance):):要使运行的软件要使运行的软件能适应运行环境的变动而修改软件的过程。能适应运行环境的变动而修改软件的过程。u预防性维护预防性维护(Preventive Maintenance):为了进一步改善):为了进一步改善软件的可靠性和易维护性,或者为
38、将来的维护奠定更好的基软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。(础而对软件进行修改。(8.5节)节)47478.38.3软件维护过程软件维护过程图图8.1 维护组织维护组织48488.48.4软件的可维护性软件的可维护性l软件的可维护性定性地定义为:维护人员理解、改正、改动或改进这个软件的难易程度。l重用:同一事物不做修改或稍加改动就在不同环境中多次重复使用。l提高可维护性是支配软件工程方法学所有步骤的关键目标。4949第第第第9 9 9 9章章章章 面向对象相关内容面向对象相关内容面向对象相关内容面向对象相关内容 1 1、面向对象方法学概述、面向对象方法学概述
39、P193P200P193P2002 2、面向对象建模(涵盖第、面向对象建模(涵盖第9 9章和第章和第1010章)章)3 3、面向对象分析的基本过程、面向对象分析的基本过程4 4、面向对象的设计准则、面向对象的设计准则50509.1.1 9.1.1 9.1.1 要点要点要点9.1 概述l 面向对象方法学的面向对象方法学的出发点和基本原则出发点和基本原则,是,是尽可能模拟人类习尽可能模拟人类习惯的思维方式,惯的思维方式,使开发软件的方法与过程使开发软件的方法与过程尽可能接近人类认识尽可能接近人类认识世界解决问题的方法与过程世界解决问题的方法与过程,也就是使描述问题的问题空间,也就是使描述问题的问题
40、空间(也也称为问题域称为问题域)与实现解法的解空间与实现解法的解空间(也称为求解域也称为求解域)在结构上尽可在结构上尽可能一致。能一致。u认为客观世界是由各种对象组成的,任何事物都是对象,认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。复杂的对象可以由比较简单的对象以某种方式组合而成。u把所有对象都划分成各种对象类把所有对象都划分成各种对象类(简称为类,简称为类,class),每个,每个对象类都定义了一组数据和一组方法。对象类都定义了一组数据和一组方法。u按照子类按照子类(或称为派生类或称为派生类)与父类与父类(或称为基类或称为基类)的关系,
41、把的关系,把若干个对象类组成一个层次结构的系统若干个对象类组成一个层次结构的系统(也称为类等级也称为类等级)。u对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。5151 面向对象的方法学可以用下列方程来概括:面向对象的方法学可以用下列方程来概括:OO=objects+classes+inheritance+communication with OO=objects+classes+inheritance+communication with messagesmessages也就是说,面向对象就是既使用对象又使用类和继承等机制,也就是说,面向对象就是既使用对象又使用类
42、和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。而且对象之间仅能通过传递消息实现彼此通信。如果仅使用对象和消息,则这种方法可以称为基于对象的如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)(object-based)方法,而不能称为面向对象的方法;方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的为基于类的(class-based)(class-based)方法,但仍然不是面向对象的方法。方法,但仍然不是面向对象的方法。只有同时使用对象、类、继承和消息的方法,才是真
43、正面只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法向对象的方法。5252类类类类(ClassClassClassClass)类类又又称称对对象象类类(Object Object ClassClass),是是是是一一组组具具有有相相同同属属性性和和相相同同操操作作的的对对象象的的集集合合。在在一一个个类类中中,每每个个对对象象都都是是类类的的实实例例(instance),它们都可以使用类中提供的函数。,它们都可以使用类中提供的函数。类类具具有有属属性性,用用数数据据结结构构来来描描述述类类的的属属性性,类类具具有有操操作作,它它是是对对象象的的行行为为的的抽抽象象,操操作作实实现
44、现的的过过程程称称为为方方法法(method),方法有方法名,方法体和参数。,方法有方法名,方法体和参数。由于对象是类的由于对象是类的实例实例,在进行分析和设计时,通常把注,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上意力集中在类上,而不是具体的对象上。9.1.4 9.1.4 9.1.4 其它概念其它概念其它概念5353 实例:实例:实际上类是建立对象时使用的实际上类是建立对象时使用的“样板样板”,按照,按照这个样板所建立的一个个具体的对象,就是类的实际例子,这个样板所建立的一个个具体的对象,就是类的实际例子,通常称为通常称为实例实例。当使用。当使用“对象对象”这个术语时,既
45、可以指一这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用个具体的对象,也可以泛指一般的对象,但是,当使用“实例实例”这个术语时,必然是指一个具体的对象。这个术语时,必然是指一个具体的对象。5454几何对象几何对象颜色颜色位置位置移动(移动(delta:矢量):矢量)选择(选择(P:指针型)指针型):布尔型布尔型旋转旋转(角度角度)l l图图图图9.5 9.5 9.5 9.5 对象类的描述对象类的描述对象类的描述对象类的描述人人姓姓 名名:字符串字符串年年 龄龄:整整 型型改换工作改换工作改换地址改换地址文件文件文件名文件名文件大小文件大小最近更新日期最近更新日期打印打印(
46、人人)里斯里斯28绘图员绘图员人民路人民路8号号(人人)张山张山24程序员程序员无无l l图图图图9.6 9.6 9.6 9.6 对象的描述对象的描述对象的描述对象的描述对象和类的描述对象和类的描述对象和类的描述对象和类的描述对象和类一般采用对象和类一般采用对象和类一般采用对象和类一般采用“对象图对象图对象图对象图”和和和和 “类图类图类图类图”来描述。来描述。来描述。来描述。类名类名属性属性运算运算 对象图对象图 类图类图5555消息消息消息消息(Message)Message)消消消消息息息息就就就就是是是是向向向向对对对对象象象象发发发发出出出出的的的的服服服服务务务务请请请请求求求求(
47、互互相相联联系系、协协同同工工作作等等)。对对象象之之间间的的联联系系可可表表示示为为对对象象间间的的消消息息传传递递,即即对象间的通讯机制。对象间的通讯机制。一一个个消消息息应应该该包包含含以以下下信信息息:消消息息名名、接接收收消消息息对对象象的标识、服务标识的标识、服务标识 、消息和方法、输入信息、回答信息。、消息和方法、输入信息、回答信息。注注注注意意意意:在在在在并并并并发发发发系系系系统统统统中中中中,多多多多个个个个控控控控制制制制线线线线程程程程(Thread Thread Thread Thread of of of of Control)Control)Control)Co
48、ntrol)并并并并发发发发执执执执行行行行,情情情情况况况况就就就就复复复复杂杂杂杂得得得得多多多多,消消消消息息息息可可可可以以以以是是是是发发发发出出出出服服服服务务务务请请请请求求求求、提提提提交交交交数数数数据据据据、发发发发布布布布事事事事件件件件信信信信息息息息、或或或或是是是是传传传传递递递递同同同同步步步步控控控控制制制制信信信信息。息。息。息。在在对对象象的的操操作作中中当当一一个个消消息息发发送送给给某某个个对对象象时时,消消息息包含接收对象去执行某种操作的消息。包含接收对象去执行某种操作的消息。5656l l消息消息(Message)Message)属性:姓名属性:姓名
49、 年龄年龄 单位单位 职称职称 工资工资状态:李立状态:李立 25 计算机系计算机系 讲师讲师 900属性:调工资属性:调工资 评职称评职称 受受 聘聘方法:调工资方法:调工资 (计算公式)(计算公式)评职称评职称 (步骤、条件)(步骤、条件)属性:调工资属性:调工资 评职称评职称 受受 聘聘李立,调工资(李立,调工资()数数据据结结构构数数据据值值人事处向对象发消息人事处向对象发消息执行执行的的操作操作方方法法体体类:教师类:教师对象:李立对象:李立抽象抽象实例实例抽象抽象实例实例抽象抽象方法名(参数)方法名(参数)图9.7 对象、类和消息传递5757l 方法:方法:就是对象所能执行的操作,
50、也就是类中所定义的就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。服务。方法描述了对象执行操作的算法,响应消息的方法。在在C+语言中把方法称为成员函数。语言中把方法称为成员函数。l 属性:属性:就是类中所定义的数据,它是对客观世界实体所就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。具有的性质的抽象。类的每个实例都有自己特有的属性值。在在C+语言中把属性称为数据成员。语言中把属性称为数据成员。5858 继承继承继承继承 (InheritanceInheritanceInheritanceInherita