(完整word版)软件工程导论(第6版)知识点总结、复习课_第1页
(完整word版)软件工程导论(第6版)知识点总结、复习课_第2页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、复习课- 酷爱YC第一章1、什么是软件危机,什么是软件工程软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它 包括两方面:(1 1)如何开发软件,以满足对软件日益增长的需求;(2 2)如何维护数量不断膨 胀的已有软件。软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而 证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质 量的软件,并有效地维护它。2、完整的软件配置由哪些内容组成软件配置主要包括程序,文档和数据等成分。3、软件生命周期分为哪3个时期和8个阶段, 每个阶段的任务(工作)分别是 什么,重要性如何问题定义问题

2、定义软件定义软件定义可行性研究可行性研究需求分析需求分析爲体设计爲体设计详细设计详细设计软件生命周期软件生命周期软件开发软件开发 编码与单元测试编码与单元测试综合测试综合测试运行维护运行维护持续满足用户需求持续满足用户需求概括地说,软件生命周期由 软件定义、软件开发和运行维护 3 3 个时期组成1 1 、软件定义 (系统分析 ) 软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导 出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源 和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负 责完成。软件定义时期通常进一步划分

3、成 3 3 个阶段,即问题定义、可行性研究和需求分 析。(1 1)问题定义 ,确定系统要解决的问题是什么。成果:关于问题性质、工程目标和工程规 模的报告。(2 2)可行性研究 ,确定问题是否有可用的、能行得通的解 (包括:技术、经济、操作、社 会等方面的可行性 )。这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这 个问题是否值得去解,是否有可行的解决办法。成果:可行性研究报告。(3 3)需求分析 ,确定软件系统的必须实现的功能、必须达到的性能、必须满足的运行环境 要求。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用 户确认的系统逻辑模型。通常用数据流图、数据字

4、典和简要的算法表示系统的逻辑模型。 在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确 完整地体现用户的要求。成果:软件需求规格说明书(SRSSRS),内容包括:系统的逻辑模型; 系统(子系统 )的名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验 收原则等。2 2、软件开发。开发时期具体设计和实现在前一个时期定义的软件,它通常由下述 4 4 个阶段组成:总体 设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两 个阶段又称为系统实现(1)(1) 总体设计 ( (概要设计 ) ),回答“怎样实现目标系统”o建立系统的总体结构,划分

5、子系统;确定系统由哪些模块组成,各子系统间、各模块间的关系 ( (包括定义各子系统接口界面和各功能模块的接口,设计全局数据库或数据结构, 规定设计约束,制定组装测试计划 ) )。成果:概要设计说明书、数据库或数据结构说明书、 系统的组装 ( (集成 ) )测试计划等文档。(2)(2) 详细设计 任务就是把解法具体化, 也就是回答:“应该怎样具体地实现这个系统呢 ? ?”, 设计每个程序模块的内部细节,包括数据结构、算法以及各程序模块间的接口信息,并 设计模块的单元测试计划。成果:详细设计规格说明和单元测试计划等详细设计文档。以上 (1)(1)、 (2)(2)又合称为软件设计。(3)(3) 编码

6、和单元测试 这个阶段的关键任务是写出正确的容易理解、 容易维护的程序模块。 根据详细设计规格说明,选用某种程序设计语言把详细设计的结果转化为机器可运行的 源程序模块;运行和调试每一个程序模块;每编写出一个程序模块的源程序,调试通过 后,即对该模块进行单元测试。成果:按一定规则存在盘上的通过了单元测试的各功能 模块的集合;详细的单元测试报告等文档。(4)(4) 综合测试 通过各种类型的测试 ( (及相应的调试 ) )使软件达到预定的要求。最基本的测试是集成测试和验收测试。成果:满足概要设计要求、可运行软件系统和源程序清单;组装测试报告等文档。验收测试报告、项目开发总结报告,向用户提交的源程序清单

7、、最终用户手册、操作手册等文档资料;由专家、用户负责人、软件开发和管理人员组成软件评审小组对软件验收测试报告、测试结果和软件进行评审,最终验收软件产品。以上 (3)(3)、 (4)(4)又合称为软件实现。三种不同的软件测试:单元测试、集成测试、验收测试。3 3 、软件运行与维护软件技术人员通过各种维护活动使软件系统持久满足用户需要。通常有 4 4 类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误; 适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩 充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。成果:更新后的软件产品;准确记录维

8、护活动的文档。4、几种传统软件工程生命周期模型:瀑布模型:基本思想、主要优点基本思想:瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。它规定了各阶段的任务和应提交的成果及 文档,每一阶段的任务完成后,都必须对其阶段性产品 (主要是文档)进行评审,通过后才 能开始下一阶段的工作。因此,它是一种以文档作为驱动的模型。优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求 每个阶段交传统的瀑布模型出的所有产品都必须经过质量保证小组的仔细验证。快速原型模型:基本思想基本思想:软件开发人员根据用户提出的软件基本需求快速开发一

9、个原型,以便向用户展示软件系统应有的一部分或全部功能和性能,同时使用户熟悉系统。在征求用户对原 型的初步意见后,进一步使需求全面化、精确化,并据此改进、完善原型。如此迭代, 直到软件开发人员和用户都通过原型确认软件系统的需求并达成一致的理解为止。软件 需求确定后,便可进行设计,编码、测试等以后的各个开发步骤。增量模型:基本思想、主要优点需求分析验证规格说明验证针对毎亍构件完成洋细 设计、编码和集成,经测 试肩交付给用户十山mt狂f匕门勺;A r亠圧1艸磁-iik1 AL + i灯卯JFl占TT1基本思想:把一个软件产品划分为一系列的增量构件来设计、编码、集成和测试,并逐个添加到软件产品中去,逐

10、步向用户提交产品。每个构件能够完成特定的功能优点:(1 1 )软件的实现和维护阶段没有明显的分界线;(2 2)用户在很短时间内就可以使用产品的部分功能(3 3 )用户适应新产品的时间较充裕(4 4 )构件的分解要易于测试、规模适中(5 5)软件的体系结构是开放的,易于扩充和维护螺旋模型:引入的原因,与瀑布模型、快速原型模型的联系基本思想:软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越 复杂,承担该项目所冒的风险也越大。软件风险可能在不同程度上损害软件开发过程和 软件产品质量。构建原型是一种能使某些类型的风险降至最低的方法。螺旋模型的基本 思想是,使用原型及其他方法来尽量降低

11、风险。联系:简化的螺旋模型是在快速原型模型的基础上扩展而成的,把它看作在每个阶段之 前都增加了风险分析过程的快速原型模型。完整的螺旋模型,将瀑布模型与原型模型结合起来,并且加入前两种模型均忽略了的风 险分析瀑布模型的优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法 和工具的研究,从而提高了大型软件项目开发的质量和效率。瀑布模型的缺点:(1 1 )开发过程一般不能逆转,否则代价太大;(2 2)实际的项目开发很 难严格按该模型进行;(3 3 )客户往往很难清楚地给出所有的需求,而该模型却要求如此。(4 4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。瀑

12、布模型的使用范围:(1 1)用户的需求非常清楚全面,且在开发过程中没有或很少变化;(2 2 )开发人员对软件的应用领域很熟悉;(3 3)用户的使用环境非常稳定;(4 4 )开发工作 对用户参与的要求很低。快速原型模型的优点:(1 1 )可以得到比较良好的需求定义,容易适应需求的变化;(2 2)有利于开发与培训的同步;(3 3)开发费用低、开发周期短且对用户更友好。快速原型模型的缺点:(1 1)客户与开发者对原型理解不同;(2 2)准确的原型设计比较困 难;(3 3)不利于开发人员的创新。快速原型模型的使用范围:(1 1)对所开发的领域比较熟悉而且有快速的原型开发工具;(2 2) 项目招投标时,

13、可以以原型模型作为软件的开发模型;(3 3)进行产品移植或升级时,或 对已有产品原型进行客户化工作时,原型模型是非常适合的增量模型的优点:(1 1 )采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;(2 2 )如果核心产品很受欢迎,则可增加人力实现下一个增量;(3 3)可先发布部分功能给客户,对客户起到镇静剂的作用。增量模型的缺点: (1 1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式 的体系结构;(2 2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和 快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。增量模型的使用范围:(

14、1 1)进行已有产品升级或新版本开发,增量模型是非常适合的;(2 2) 对完成期限严格要求的产品,可以使用增量模型;(3 3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。螺旋模型的优点:(1 1 )设计上的灵活性,可以在项目的各个阶段进行变更;(2 2)以小的分 段来构建大型系统,使成本计算变得简单容易;(3 3)客户始终参与每个阶段的开发,保证了 项目不偏离正确方向以及项目的可控性;(4 4)随着项目推进,客户始终掌握项目的最新信 息,从而他或她能够和管理层有效地交互。螺旋模型的缺点:(1 1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在 风险较大的项目开发中

15、,如果未能够及时标识风险,势必造成重大损失;(2 2 )过多的迭代次数会增加开发成本,延迟提交时间。螺旋模型的使用范围:螺旋模型只适合于大规模的软件项目第二章什么是:经济可行性、技术可行性、运行与操作可行性、法律可行性(1)(1) 经济可行性 :这个系统的经济效益能超过它的开发成本吗 ? ? 估算项目的开发成本和系统投入使用后可能带来的利润,进行成本 / / 效益分析,从经 济角度判断系统开发是否“合算” 。(2)(2) 技术可行性 :使用现有的技术能实现这个系统吗 ? ? 根据客户提出的系统功能、性能要求,从开发者的技术实力、以往工作基础、问题的 复杂性等出发,判断系统开发在时间、 费用及其

16、他各项约束条件限制下成功的可能性。(3)(3) 运行、操作可行性 :系统的操作方式在这个用户组织内行得通吗 ? ? 主要研究系统的运行方式在用户单位是否可以被有效地实施, 是否与原有其他系统相 矛盾;系统的操作规程在用户单位内是否可行,它包括人事、科技政策、管理方法等 等。(4)(4) 法律可行性 :系统的开发使用,在当国当地当时合法吗?利用软件工程的方法设计开发软件系统的过程第三章需求分析的基本任务1.1. 确定需求-确定对系统的综合要求功能需求 性能需求 可靠性和可用性需求 出错处理需求接口需求 约束 逆向需求(8 8)将来可能提出的要求2.2. 建立数据模型-利用图形工具描述系统数据结构

17、并将数据结构规范化,建立数据模型3.3. 导出系统的逻辑模型-通常用数据流图、实体-联系图、状态转换图、数据字典和主 要的处理算法描述整个逻辑模型4.4. 编写需求规格说明书5.5. 修正系统开发计划本阶段结束形成的基本文档软件需求规格说明书结构化分析应建立哪三大模型,分别用什么工具描述数据模型一数据流图功能模型一实体- -联系图(E-RE-R 图)行为模型一状态图数据流图、E-R图、状态转换图的构成数据流图-系统逻辑功能的描述工具4 4 种成分:源点和终点,处理,数据存储,数据流E-RE-R 图:实体( (即数据对象)-)-矩形框,关系-菱形框,属性-椭圆形或圆角矩形 状态转换图:状态,事件

18、,状态转换数据字典:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素进 行定义的集合。它的作用正是在软件分析和设计的过程中给人提供关于数据的描述信息。 数据流图和数据字典共同构成系统可行性研究阶段的逻辑模型。数据字典的实现(1)(1) 用 CaseCase 工具中的数据字典处理程序对数据字典进行生成和编辑;(2)(2) 通过手工制作卡片来制作数据字典。每张卡片上保存描述一个数据的信息,主要应该 包含下述这样一些信息:名字、别名、描述、定义、位置。第五章1、总体设计过程包含哪两个工作阶段,各完成什么任务第一阶段:系统设计阶段,确定系统的物理实现方案(1)(1)设想( (完善) )

19、供选择的方案(2)(2)选取合理的方案(3)(3)推荐最佳方案第二阶段:结构设计阶段,确定软件的结构(1)(1) 功能分解,从实现的角度细化逻辑模型(2)(2) 设计软件结构(3)(3) 设计数据库(4)(4) 制定测试计划(5)(5) 书写文档 (6)(6)审查和复审2、软件工程的中心课题是控制软件的复杂度;在总体设计阶段,软件复杂 度主要体现为模块独立性(和全局数据结构复杂度);描述模块独立性的两个 指标分别是耦合和内聚3、耦合的含义,1-8级耦合的具体含义,耦合级别的排列从耦合(CouplingCoupling):是对软件结构内不同模块之间相互关联程度的强弱的度量。它取 决于各个模块之间

20、接口的复杂程度、进入或访问一个模块的点以及哪些信息通过接口传 递。耦合度可以分为若干级别:flX(无直接耦合强(低耦合)数据耦合合1特征耦合性(屮槌合)控制据合1外部勰令(较强耦合仏艾赭合*FC强耦舎)内容耦合弱(1 1)非直接耦合-两个模块没有直接关系(如模块 1 1 和模块 2 2),每一个都能独立地工作而 不需要另一个模块的存在。非直接耦合两个模块间的独立性最强。非直接耦合(2)(2) 数据耦合-两个模块彼此间通过参数交换信息, 而且交换的信息仅仅是简单的数据信 息。这属于松散耦合。(3)(3) 标记耦合-两个模块通过传递数据结构参数加以联系( (不是简单数据,而是记录、数 组等) ),

21、则称这两个模块间存在标记偶合。开发票计算水电费特征耦合( (标记耦合) )(4)(4) 特征耦合-属于标记耦合,把整个数据结构作为参数传递,而被调用的模块只需要使 用其中一部分数据元素。P39P39控制耦合(5)(5) 控制耦合-一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模 块的某部分功能控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增单价数量金额计算电费住户情况/ / /住户情况水费电费计算水费数据耦合*f1RL口1_zr VHIIM- 9公共环境耦合公共號据区加了相互依赖去除模块间控制耦合的方法:a.a. 将被调用模块内的判定上移到调用模块中进行

22、b.b. 被调用模块分解成若干单一功能模块(6)(6) 外部耦合-一组模块都访问同一全局简单变量, 而且不是通过参数传递该全局变量的 信息。(7)(7) 公共环境耦合-两个或多个模块通过一个公共数据环境相互作用。公共环境可以是全 程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。公共环境耦合的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度 显著增加。公共环境偶合必不可少,但耦合模块的数目应尽量少(8)(8)内容耦合一 P41P41内容耦合A4Bi AEntrylEntry2iB一填块直接访问另一糕块的内部信息(程席代入o棋块4、内聚的含义,1-7级内聚

23、的具体含义,内聚级别的排列*内聚(CohesionCohesion ):标志同一个模块内各个元素彼此 结合的紧密程度,它是信息隐藏 和局部化概念的自然扩展。高内聚:模块内部完成单一的处理;低内聚:模块内部各部分关联不紧密,完成分散的多个处理任务;设计时应该力争做到高内聚。1 1 内聚度也可以分为若干级别:(1)(1)偶然内聚-当模块内各部分之间没有联系,或者即使有联系,这种联也很松散,则称这种模块为偶然内聚模块,它的内聚程度最低(2)(2)逻辑内聚-把几种相关功能或逻辑上相似的功能组合在一个模块内,每次调用由传给模块的参数确定执行哪种功能逻辑类聚(3)(3) 时间内聚-一个模块包含若干必须在同

24、一段时间内执行的任务X-“Z-W.低内聚性IWJ弱(功能分散)强(功能单一)3分 f5分了偶然内聚 逻辑内聚时间内聚 过程内聚通信内聚 顺序内聚功能内聚丄0分偶然类聚S例如系统初始化模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块。(6)(6)顺序内聚-一个模块内的处理元素既包含数据联系也包含控制联系,而且这些处理必须顺序执行( (通常一个处理元素的输出数据作为下一个处理元素的输入数据) )。(7)(7)功能内聚-一个模块中各个部分都是完成某单一功能必不可少的组成部分,或者说该模块中所有部分都是为了完成同一项具体功能而协同工作,紧密联系,不可分割的,则 称该模块为功能内聚模块。功能内聚

25、是最高程度的内聚新文件(4)(4)过程内聚-一个模块内的处理元素是相关的且仅有控制联系,各处理元素必须以特定加工记录信息内聚-这种模块完成多个简单功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构,因此,它是一个信息内聚的模块。信息内聚信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。5、如何将数据流图转换为初始的软件结构图/层次图通过变换分析的方法第 1 1 步复查基本系统模型。第 2 2 步复查并精化

26、数据流图。第 3 3 步 确定数据流图具有变换特性还是事务特性。第 4 4 步 确定输入流和输出流的边界,从而孤立出变换中心。第 5 5 步完成“第一级分解”。第 6 6 步完成“第二级分解”。第 7 7 步使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化* 1功能内聚6、关于模块设计的启发规则启发式规则(模块化设计的经验)卜-宽度1.1. 改进软件结构提高模块独立性2.2. 模块规模应该适中3.3. 深度、宽度、扇出和扇入都应适当4.4. 模块的作用域应该在控制域之内5.5. 力争降低模块接口的复杂程度6.6. 设计单入口单出口的模块7.7. 模块功能应该可以预测第六章1、详细设

27、计的目的(主要任务)目的:为软件系统的 H H 图/SC/SC 图中的每一个模块确定采用的算法(处理流程)和模块内数 据结构,选定某种表达工具给出精确的描述任务:用一定的工具精确描述目标系统,从而方便在编码阶段可以把这种描述直接翻译 成用某种程序设计语言书写的程序。(1)(1) 确定每一模块的算法( (处理流程) )(2)(2) 确定每一模块使用的局部数据结构(3)(3) 确定本模块的接口和用户界面(4)(4) 为每一模块设计一组测试用例( (单元测试计划) )2、结构化程序设计1 1、什么是结构化程序设计(1)(1) 如果一个程序的代码块仅仅是通过顺序、选择和循环这3 3 种基本控制结构进行

28、连接,并且每个代码块是单入口、单出口的,则称这个程序是结构化的。(2)(2) 结构化程序设计是尽可能少用 GOGO TOTO 语句的程序设计方法。最好仅在检测出错误时 才使用 GOGO T TO O语句,而且应该总是使用前向 GOGO TOTO 语句。如果允许使用 LEAVELEAVE( (或 BREAK)BREAK)结构,则不仅方便而且会使效率提高很多。LEAVELEAVE或 BREAKBREAK 结构实质上是受限制的 GOGO TOTO 语句,用于转移到循环结构外面的语句。如果只允许使用顺序、IF-THEN-ELSEIF-THEN-ELSE 型分支和 DO-WHILEDO-WHILE 型循

29、环这 3 3 种基本控制结构,则称为经典的结构程序设计;如果除了上述3 3 种基本控制结构之外,还允许使用DO-CASEDO-CASE 型多分支结构和 DO-UNTILDO-UNTIL 型循环结构,则称为扩展的结构程序设计;如果 再加上允许使用LEAVELEAVE( (或 BREAKBREAK) )结构,则称为修正的结构化程序设计2 2、结构化程序设计中基本的控制流程3、详细设计的描述一程序流程图、盒图、PAD图:什么是,基本符号和含义,画法1 1、程序流程图-又称为程序框图,广泛描述过程设计的方法。基本符号( (国家标准) )1rB顺顺*序型序型多情况选择型多情况选择型(CASES!)先判定

30、型循环先判定型循环(U0-WJ11LE)流线流线虚线虚线省略线省略线并行方式并行方式注解或注释注解或注释选择型选择型后判定塑循环后判定塑循环(D0-UNT1L)A1* AilT可表示的控制结构见前图( (结构化程序设计中基本的控制流程) )27数据输入输出数据输入输出处理处理淮备或预处理淮备或预处理预定义处理预定义处理或既定处理或既定处理二-O O-循循环上界环上界循环下界循环下界文件或文档文件或文档外接内接外接内接起止端点起止端点O条件条件判断判断2 2、盒图(N-SN-S 图) 出于要有一种不允许违背结构程序设计精神的图形工具的考虑,提出了盒图,又称为 N-SN-S 图。佃)顺序;佃)顺序

31、;(h)选择;选择;CASE多分支多分支; ;(1)循环;何调用子程序循环;何调用子程序A3 3、PADPAD 图PADPAD 是问题分析图(problem(problem analysisanalysis diagram),diagram),的控制流,将这种图翻译成程序代码比较容易NassiNassi 和 ShneidermanShneidermanCASE 条件/1值2值CASE 1CASE 2部分CASEH部分T卜、X1讦|LDO-J|LhTlL X5_、DO-MULE=2=3X3cde用二维树形结构的图来表示程序循环条件DO-WHILE部分(1O使用PAD图提供的定义功能来逐步求精的例

32、子WHILE CP(d)UNTIL CP(f)def(g)(a)(a)顺序(先执行 P1P1 后执行 P2P2); (b)(b)选择(IFIF C C THENTHEN P1P1 ELSEELSE P2P2 )(c)CASE(c)CASE 型多分支;(d)WHILE(d)WHILE 型循环(WHILEWHILE C C DODO P P ) ;(e)UNTIL;(e)UNTIL 型循环(REPEAREPEA P PUNTILUNTIL C C ) ;(f);(f)语句标号;(g g) g g 定义CT?卩8UNTIL C3P9PIO(b)(b)(e)(c)UNTIL C24、在详细设计阶段,软

33、件复杂度主要体现为程序的复杂程度,可用程序模块的环形复杂度(McCabe方法)来度量,或用Halstead方法来度量5、环形复杂度(McCabe方法)来度量计算工具 :流图-退化了的程序流程图McCabeMcCabe 方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果 称为 程序的环形复杂度 。为了突出表示程序的控制流,人们通常使用流图 ( (也称为程序图 ) )。所谓流图实质上是“退 化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及 分支或循环的具体条件。计算方法:3种方法(1)(1) 流图中的区域数等于环形复杂度 区域:由边和结点围成的面积称为

34、区域。当计算区域数时应该包括图外部未被围起 来的那个区域。即流图的封闭区域数加 1 1。(2)(2)流图的环形复杂度 V(G)=E-N+2V(G)=E-N+2,其中,E E 是流图中边的条数,N N 是结点数。 流图的环形复杂度 V(G)=P+1V(G)=P+1,其中,P P 是流图中判定结点的数目。6、Halstead方法来度量-计算方法HalsteadHalstead 方法是另一个著名的方法,它根据程序中运算符和操作数的总数来度量程序的复杂程度。计算复杂度的方法:在图形界面( (或 WebWeb 界面) )环境下,尤其是在交互系统的中,一个模 块的页面数以及每个页面上的项目数,也是模块复杂

35、程度度量的依据第七章1、编码风格涉及的一系列内容源程序实际上也是一种供人阅读的文档,有一个文档的风格问题。应该使程序具有良好 的风格。源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准。1源程序文档化 (程序内部的文档 )2数据说明3语句构造4输入输出设计5程序的效率2、单元测试、集成测试、确认/验收测试,测试计划(包括用例)在什么时候 书写形成单元测试: - 模块测试 模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单 元测试。在这个测试步骤中所发现的往往是详细设计和编码的错误。集成测试:子系统测试 - 局部(模块 子系统)子系统测试是按软件结构把经过单元测试

36、的若干模块放在一起形成一个子系统来测试。 模块相互间的协调和通信是这个测试过程中的主要问题,因此,这个步骤着重测试模块 间的接口。系统测试 - 全局(子系统 完整系统) 系统测试是,按软件结构,把经过测试的若干子系统装配成一个完整的系统来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中 指定的功能,而且系统的动态特性也符合预定要求。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常合称为集成测试。验收测试-用户参与验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基

37、本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据( (系统将来要处理的信息) )进行测试。验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。验收测试也称为确认测试。3、软件测试与调试的目的软件测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误测试横跨两个阶段:(1)(1) 编写出每个模块之后就对它做必要的测试( (称为单元测试) )。(2)(2)在上一阶段结束之后,对软件系统还应该进行各种综合测试通常由专门的测试人 员承担这项工作。 软件测试的直接目的是要衡量软件产品是否符合预期; 软件测试的根本目的是确保软件满

38、足用户需求;调试就是通过测试发现软件的错误之后改正错误并进行再诊断。调试是测试阶段最困难的工作。调试是在测试发现错误之后排除错误的过程。调试的任务是进一步诊断和改正 程序中潜在的错误4、软件错误主要包括什么软件错误指软件产品中存在的导致期望的运行结果和实际运行结果间出现差异的一系列 问题,这些问题包括故障、失效、缺陷。1.1. 软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态。2.2. 软件失效是指软件运行时产生的一种不可接受的外部行为结果。3.3. 软件缺陷是存在于软件之中的那些不希望或不可接受的偏差。5、测试用例由什么组成IEEEIEEE 对于测试用例给出的定义是:测试用例是

39、一组测试输入、执行条件和预期结果, 目的是要满足一个特定的目标,例如执行一条特定的程序路径或检验是否符合一个特定 的需求。测试用例可表示成:测试用例= =输入+ +输出+ +测试环境其中,输入是指测试数据和操作步骤;输出是指系统的预期执行结果;测试环境是 指进行软件测试所必须的工作平台和前提条件。6、软件测试的方法C人工测试方法人工测试方法/ /静态测试方法静态测试方法 软件测试的策略和方法白盒测试方法白盒测试方法动态测试方法动态测试方法黒盒测试方法黒盒测试方法(1)静态测试一什么是静态测试-对软件( (文档) )进行分析、检查和审阅,不实际运行被测试的软件。静态测试约可找出 303070%7

40、0%的逻辑设计错误,主要工作是对需求规格说明书、软件设计说明书、源程序做检查和审阅( (主要是阅读文档) ),包括:(1)(1) 通过结构分析、流图分析、代码审查,指出软件缺陷。(2)(2) 是否符合标准和规范;动态测试一什么是白盒测试-什么是黑盒测试-什么是动态测试-通过运行软件来检验软件的运行结果和动态行为的正确性。动态测试的两个基本要素:被测试程序、测试用例。动态测试有两种典型的方法:黑盒测试和白盒测试(1)黑盒测试输入条件I被测对象输入条件川定义:已经知道了产品应该具有的功能,可以针对产品的每个( (或主要) )功能点设计 一组用例( (包括输入数据和预期输出数据),通过测试来检验是否每个功能都能正常 使用;输出结果黑盒测试主要在以下方面进行:(1 1)a/ /B测试:(2)(2)菜单/ /帮助测试:(3)(3)发行测试:(4)(4)回归测试黑盒测试的优势:a.a.黑盒测试方法对测试人员

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论