《{管理信息化信息化知识}软件工程导论第五版复习重点》由会员分享,可在线阅读,更多相关《{管理信息化信息化知识}软件工程导论第五版复习重点(74页珍藏版)》请在金锄头文库上搜索。
1、1,1 软件工程学概述 2 可行性研究 3 需求分析 形式化说明技术 总体设计 6 详细设计,7 实现 8 维护 9 面向对象相关内容 10 软件项目管理,软件工程导论复习,2,第1章 软件工程学概述,1、什么是软件危机?P1 2、软件危机产生的原因有哪些?P3 3、什么是软件工程?P5 4、软件工程方法学包含哪些要素?P9 5、在软件过程中有哪些模型?他们各自的特点是哪些?P15P22,3,第2章 可行性研究,1、可行性研究的目的是什么?P25 2、应从哪些方面研究可行性?P25 3、如何画系统流程图?P27P30 4、如何画数据流图?P30P37 5、了解数据字典及成本效益分析。,4,数据
2、流图(Data Flow Diagram,DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。,2.4数据流图,2.4 数据流图(DFD),5,2.4数据流图,举例:,6,细化后的计算机储蓄系统软件结构,7,第3章 需求分析,1、需求分析的基本任务是什么?P46-P48 2、分析建模 2.1什么是模型? 模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 2.2数据模型(E-R)、 功能模型(2.4节数据流图)、 行为模型(状态转换图是行为模型的基
3、础) 3、要从哪些方面验证软件需求?P60,8,第4章 形式化说明技术,1、有穷状态机P67P72 2、Petri网技术P72P75,9,第5章 总体设计,1、在设计过程中,总体设计一般有哪两个主要阶段组成?P81 2、什么模块化?模块独立性包含哪些内容?度量准则是什么?P85P89 3、启发规则有哪些?P90P92 4、描绘软件结构的图形工具P92-P94 5、面向数据流的设计方法P95P102,10,5.2设计原理,5.2.1 模块化,模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。 模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化
4、的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。,11,模块化降低软件复杂度的简单证明,5.2.5模块独立,5.2.5 模块独立,“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性: 功能 即指该模块实现什么功能,做什么事情。必须注意:模块功能,应是该模块本身的功能加上它所调用的所有子模块的功能。 逻辑 即描述模块内部怎么做。 状态 即该模块使用时的环境和条件。 所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能
5、专一,模块之间无过多的相互作用的模块。 这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。,12,5.2.5 模块独立性,模块独立性的度量标准是两个定性准则: 耦合性 用于描述模块之间联系的紧密程度。 内聚性 用于描述模块内部联系的紧密程度。 模块独立性比较强的模块应该是具有高内聚性和的低耦合度。,13,图5.8 变换型数据流图的基本模型,5.5.1 概念 变换流,14,图 事务型数据流图的基本模型,5.5.1 概念 事务流,15,变换分析设计:把具有变换流特点的数据流图按预先确定的模式映射成软件结构。不具有显著的事务特点。
6、 虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以采用事务分析方法为宜。 两者的主要差别仅在于由数据流图到软件结构的映射方法不同。,16,第6章 详细设计,1、结构程序设计中有哪几种基本控制结构?P108 2、了解人机界面的设计。 3、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)P114P119 4、面向数据结构的设计方法(Jackson图) 5、程序复杂度的定量度量(McCabe),17,6.1结构程序设计,6.1 结构程序设计,图6.1 3种基本的控制结构,18,6.1结构程序设计,其他常
7、用的控制结构,图6.2 其他常用的控制结构,19,6.3.1 程序流程图,程序流程图是最早出现且使用较为广泛的算法表达工具之一,能够有效地描述问题求解过程中的程序逻辑结构。程序流程图中经常使用的基本符号如图6.3所示。,图6.3 程序流程图中使用的符号,20,NS图又称为盒图,它是为了保证结构化程序设计而由Nassi和Shneiderman共同提出的一种图形工具。 在NS图中,所有的程序结构均使用矩形框表示,它可以清晰地表达结构中的嵌套及模块的层次关系。 NS图中,基本控制结构的表示符号如图6.4所示。,6.3.2 N-S图,21,6.3.2 N-S图,图6.4 盒图的基本符号,22,图6.5
8、 PAD中基本符号 顺序结构;(b) 分支结构;(c) 多分支CASE结构; (d) 当型循环;(e);直到型循环;(f) 语句标号;(g)定义,6.3.3 PAD图,23,6.3.3 PAD图,图6.6 使用PAD图提供的定义功能来逐步求精的例子,24,6.4 面向数据结构的设计方法,6.4 面向数据结构的设计方法,Jackson方法和Warnier方法是最著名的两个面向数据结构的设计方法,25,Jackson方法是由英国的M.A.Jackson在1975年首先提出的,他同时还提出了与这种方法配套使用的、用于描述系统数据结构和程序结构的图形工具,被称为Jackson图。 Jackson方法从
9、目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可得到完整的程序结构图。 这一方法对输入、输出数据结构明确的中、小型系统特别有效,如商业应用中的文件、表格处理。该方法也可与其他方法结合,用于模块的详细设计。,6.4 面向数据结构的设计方法,6.4 .1 Jackson图,26,图6.8 三种基本结构在Jackson图中的表示符号 (a) 顺序结构;(b) 选择结构;(c);循环结构,6.4.1 Jackson图,27,6.4 面向数据结构的设计方法,6.4 .2 改进的 Jackson图,图6.9 改进的Jackson图,28,6.5 程序复杂程度的定量度量,定量度量程序
10、复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。,29,6.5 程序复杂程度的定量度量,6.5.1 McCabe方法,McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。 为了突出表示程序的控制流,人们通常使用流图(也称为程序图)。所谓流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。,30,6.5 程序复杂程度的定
11、量度量,图6.16 把程序流程图影射成流图,31,环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。 (1) 流图中的区域数等于环形复杂度。 (2) 流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 (3) 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。,6.5.1 计算环形复杂度的方法,32,第7章 实现,1、编码 2、测试技术P139P169 3、调试的途径有哪些?P168 4、软件可靠性和可用性的基本概念P169,33,编码:把软件设计结果翻译成用某种程序语言书写的程序。
12、测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。,实现,编码和测试,34,7.2软件测试基础,7.2 软件测试基础,软件测试:为发现程序中的错误而执行程序的过程。 软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求) 测试方法(黑盒测试和白盒测试) 测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行),35,测试内容,模块,模块接口测试,局部数据结构测试,重要路径测试,错误处理测试,边界条件测试,I/O 参数值的个数、类型、次序、格式是否
13、正确,I/O文件属性、操作是否正确等。,数据说明是否正确、一致,变量及其初值定义是否正确等。,检查“错误处理程序”本身的错误。,边界条件常包括循环边界,最大最小值、控制流中等于、大于、小于的比较值等。,重要路径通常是指完成模块功能的主要路径,一般是控制结构。,也称模块测试(module testing ),7.3.1 单元测试重点,7.3 单元测试,36,白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。,语 句 覆 盖,判 定 覆 盖,条 件 覆 盖,判 定 条 件 覆 盖,条 件 组 合 覆 盖,弱,强,7.6 白盒测试技术,7.6 白盒测试技术,37, 语句覆盖: 选择足
14、够的测试用例,使得程序中每个语句至少都能被执行一次。 判定覆盖: 执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值。 条件覆盖:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。 判定/条件覆盖: 执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。 条件组合覆盖: 执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。,白盒法常用的覆盖标准,38,等 价 分 类 法,边 值 分 析 法,错 误 推 测 法,黑盒法 不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。,7.7 黑盒测试技术,7.7
15、 黑盒测试技术,39,1、等价分类法,基本思想:根据程序的I/O特性,将程序的定义域划分为有限个等价区段 “等价类”,从等价类中选择出的用例,具有“代表性”。,等价类分为: 有效等价类 对于程序的规格说明是合理的、有意义的输入数据构成的集合。 无效等价类 对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。,40,2、边值分析法,基本思想: 选择等价类的边缘值作为测试用例,让每个等价类的边界都得到测试,选择测试用例既考虑输入亦考虑输出。 分析步骤: A、先划分等价类。 B、选择测试用例,测试等价类边界。 边界选择原则: A、按照输入值范围的边界。 B、按照输入/输出值个数的边界。
16、C、输出值域的边界。 D、输入/输出有序集的边界。,41,3、错误推测法,错误推测法的概念:凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例。 错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如: 在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误等,这些就是经验的总结。 还有,输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。,42,调试(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。 调试过程如下图所示:,7.8 调试,7.8 调试,43,无论采用什么方法,调试的目标都是寻找软件错误的原因并改正错误。通常需要把系统地分析、直觉