软件工程-原理、方法与应用重点

更新时间:2023-12-21 05:28:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 绪论

1. 软件:是能够完成预定功能和性能的可执行的计算机诚信度。包括使程序正常执行所需的数据,以及有关描述程

序操作和使用的文档。即:软件 = 程序 + 文档

2. 软件的特征:软件的开发不同于硬件设计、不同于硬件制造、不同于硬件维修。

3. 软件工程方法学:把在软件生命周期全过程中使用的一整套技术方法的集合。三要素:方法、工具、过程 4. 软件工程学的范畴:

软件开发技术(软件开发方法学、软件工具、软件工程环境)、软件工程管理(软件管理学、软件经济学、度量学)。 5. 软件工程:是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,

目的是为了实现按照预期的进度和经费完成软件生产计划,同时提高软件的生产率和可靠性。 6. 软件的发展:大体经历了 程序、软件、软件产品 3个阶段。 7. 工具和方法是软件开发技术的2大支柱。

8. 3种编程泛型:过程式编程泛型、面向对象编程泛型、基于构件技术的编程泛型

9. 面向对象程序设计中,数据和操作被封装在一个对象中,对象之间则是通过消息相互联系。 10. 构件:标准化/规格化的对象类。

11. 3种编程泛型的差异: 粒度由小到大依次是:过程式编程范式、面向对象编程范式、基于构件的编程泛型。 12. 软件工程的分化:1、传统软件工程2、面向对象软件工程3、基于构件的软件工程

13. 消除软件危机的途径:①正确认识计算机软件;②充分认识到软件开发是一种组织良好、管理严密、各类人员协

同工作的工程项目;推广使用在实践中总结出来的开发软件的成功的技术和方法;③开发和使用更好的软件工具。 第二章 软件生存周期与软件过程

1. 软件生存周期:计划、开发、运行3个时期。

需求分析-》软件分析-》软件设计-》编码测试-》软件测试-》运行维护 2. 需求分析(用户视角):功能需求、性能需求、环境约束、外部接口描述。 3. 软件分析(开发人员视角):建立与需求模型一致的,与实现无关的软件分析模型。 4. 软件设计:总体设计/概要设计、详细设计(确定软件的数据结构和操作)。 5. 软件测试:单元测试、集成测试、系统测试。 6. 软件开发方法可区分:形式化方法、非形式化方法。 开发模型 瀑布模型(历史悠久、广为人知,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终开发的软件产品可能并不是客户真正需要的) 特点 线性模型,每个阶段必须完成固定文档 用户介入早,通过迭代完善用户需求,应用快速开发工具 场合 需求明确的中小型软件开发 需求模糊的小型软件开发 快速原型模型(正是为了克服瀑布模型的缺点提出来的,他通过快速构建起一个可以在计算机上运行的原型系统,让用户 使用原型并收集用户反馈意见的方法,获取用户的真实需求) 增量模型(具有可在软件开发的早期阶使投资获得明显回报和交易维护的优点,但是,要求软件具有开放的结构是使用这种模型固有的困难。) 螺旋模型(适用于内开发的大型软件项目,但是只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会成功。) 每次迭代完成一个增量,可用于OO开发 典型迭代模型,重视风险分析,可用于OO开发 软件开发与构件开发平行进行,主要用于OO开发 形式化的需求规格说明书,自动的程序变换系统 形式化的增量开发模型,在洁容易分块的大型软件开发 具有不确定性的大型软件开发 领域工程,行业的中型软件开发,主要用于oo开发 理想化的模型,尚无成熟工具支持 开发团队熟悉形式化方法,中小型软件开发 构件集成模型(面向对象基于构件库,融合螺旋模型的特征,支持软件开发,迭代方法,软件复用思想) 转换模型(是将形式化软件开发和程序自动生成技术相结合的一种软件开发模型。) 净室模型(是一种形式化的增量开发模型,其基本思想是力求在分析和设计7. 形式化开发模型:转换模型、净室模型

1 / 15

阶段就消除错误,确保正确,然后在无缺陷或洁净的状态下实现软件的制作。) 净状态下实现软件的制作 8. 软件可行性研究:经济可行性、技术可行性、运行可行性、法律可行性。

9. 可行性研究的步骤:对当前系统进行调查研究、导出新系统的解决方案、提出推荐方案、编写可行性论证报告。 10. 可行性论证报告的内容:系统概述、可行性分析、结论意见。

11. 软件风险分析包括:风险识别(项目风险、技术风险、商业风险)、风险预测、风险的驾驭和监控。

12. 软件计划的7种类型:项目实施计划、质量保证计划、软件测试计划、文档编制计划、用户培训计划、综合支持

计划、软件分发计划。 第三章 结构化分析与设计

1. 瀑布模型的生命周期:需求定义与分析-》总体设计-》详细设计-》编码-》测试-》维护 2. 系统的开发流程(SA和SD流程):

结构化分析(工具:DFD,PSPEC)------》分析模型(分层DFD图)+SRS 结构化设计(工具:SC图 (映射)------》初始设计模型(初始SC图) 初始设计模型(初始SC图)(优化)------》最终设计模型(最终SC图) 3. SA需求分析的两项基本任务:建立系统分析模型、编写SRS。 4. 分析模型组成:功能模型、数据模型、行为模型 3种。

5. 抽象 和 分解 是结构化分析的主要指导思想,细化的实质是分解。分解 和 细化 是软件设计的策略。 6. SD阶段把分析模型中的DFD图转换为 最终SC图。 7. 传统软件的开发技术:结构化设计、模块设计。

8. 软件设计:总体设计/概要设计(初始SC图、最终SC图)、详细设计(用逐步细化的方法,完成模块的说明)。 9. 需求分析的步骤:需求获取、需求提炼、需求描述、需求验证。 10. DFD图不能表示程序的控制结构(如选择、循环结构)。

11. 加工规格说明通常用结构化语言、判定表、判定树作为描述工具。

12. 软件中的数据分为3类:数据项(数据元素)、数据流(多个相关数据项)、数据文件和数据库。

13. 数据字典的组成:数据项、数据流、数据存储(文件或数据库)、加工(处理逻辑)、外部项(人、物或其它软件系统)。 14. SD模型是由SA模型映射而来的。

SA模型的数据字典可转换为待开发系统的数据设计 数据流图可转换为体系结构设计(SC图)与接口设计 加工规格说明可转换为模块内部的详细过程设计

15. SD模型的组成:从上到下依次是:过程设计、接口设计、体系结构设计、数据设计。 16. 结构化分析的基本步骤:

自顶向下对系统进行功能分解,画出DFD图;由后向前定义系统的数据和加工;编制DD和PEPES;写出SRS。 17. 把不需要分解的加工成为基本加工。把逐步分解成为“自顶向下,逐步细化”。 18. DFD的优点:便于实现,便于使用。

19. 传统的软件设计可细分为:面向数据流设计(SD方法)、面向数据结构设计(Jackson方法)。

20. 用数据流图表示逻辑模型,在设计阶段,按照数据流图的不同类型(变换型、事务型)转换为相应的软件结构。 21. 结构化设计通常从DFD图到SC图的映射开始。

22. 面向数据流的设计方法:从DFD图到SC图的映射的4个步

1、复审DFD图,必要时可再次进行修改或细化; 2、鉴别DFD图的结构特征:事务?变换?; 3、按照规则,把DFD图为初始的SC图 ; 4、改进初始的SC图 。

23. 变换型结构:由输入、变换中心和输出三部分组成。

事务型结构:具有在多种事务中选择执行某类事物的能力。

24. 变换映射的步骤:划分DFD图的边界、建立初始SC图的框架、分解SC图的各个分支。

事务映射的步骤:在DFD图上确定边界、画出SC图框架、分解和细化接受分支和发送分支。

2 / 15

骤 :

25. 优化结构设计的指导规则:对模块分割、合并和变动调用关系的指导规则、保持高扇入/低扇出的原则、作用域/

控制域规则。

26. 模块设计(详细设计)的主要任务是编写软件的模块设计说明书。目的是确定模块采用的算法和块内数据结构。 27. 模块设计的原则:清晰第一的设计风格、结构化的控制结构、逐步细化的实现方法。 28. 结构化程序设计原理和逐步细化的实现方法是完成模块设计的基础。 第四章 面向对象和UML

1. 面向对象的基本特征:抽象、封装、集成、多态。

2. 面向对象开发的优点:提高软件系统的可复用性、可扩展性、可维护性、面向对象符合人类习惯的思维方式。 3. 元素之间的联系有:关联、泛化、依赖、实现、聚集、组合。 4. UML的4个抽象层次:用户模型、模型、元模型、元元模型。 5. UML的2类图:

静态图(用例图、类图、对象图、构件图、部署图); 动态图(状态图、时序图、协作图、活动图)

UML的5种视图:用例视图、逻辑视图、进程视图、构件视图、部署视图。 6. UML的特点:统一标准、面向对象、表达能力强,可视化。 7. UML模型作为测试阶段的依据:

单元测试使用类图和类规格说明;集成测试使用构件图和协作图;系统测试使用用例图来验证系统行为。 8. UML中用例图由系统边界、用例、参与者、关联组成。用例之间存在的关系:扩展关系、包含关系。

包与包之间的关系有:依赖、泛化。

9. 根据类/对象之间的具体情况,可分为普通关联,递归关联、多重关联、有序关联、限制关联、或关联、关联类 10. 消息(类里面的方法加参数):简单消息、同步消息、异步消息。状态图有:初态、终态、中间态。 11. 时序图中的消息可以是信号或操作调用。

12. 时序图着重体现交互的时间顺序;协作图着重体现交互对象间的静态链接。

13. 时序图和协作图适合描述单个用例中几个对象的行为;活动图适合表现跨越多用例或多线程的复杂行为。 14. 构件图可以用来表现、编译、链接、执行时构件间的依赖关系。

15. UML用图表示语法,用元模型表示语义,采用模型来描述系统的结构(静态特征)以及行为(动态特征)。 第五章 需求工程和需求分析

1. 软件需求的3个层次:业务需求、用户需求、功能需求。软件项目中40%~60%的问题源自软件需求阶段。 2. 软件需求的6个特性:功能性、可用性、可靠性、性能、可支持性、设计约束。 3. 需求分析的步骤:需求获取、需求建模、需求描述(编写SRS)、需求验证。 4. 需求分析的主要任务:建立需求模型。需求分析是迭代过程。

常见模型有:用例图、数据流图、实体联系图、控制流图、状态转换图。 5. 需求获取的方法:1、建立联合分析小组 2、用户访谈。

6. 获得用例的方法通过问问题:1、系统用户是谁?系统维护时谁?从哪获得信息?给谁? 7. 需求建模方法:结构化分析建模方法、面向对象分析建模。

8. 结构化需求模型由3部分组成:功能模型(数据流图、加工规格说明书)、数据模型(数据字典、ER图)、行为模

型(状态转换图、控制流图、控制规格说明书)。

9. 面向对象需求模型:用例模型(用例图、用例规约)、补充规约、术语表。

10. 面向对象需求建模的步骤:画用例图、写用例规约、描述补充规约、编写术语表、调整优化。 11. 用例规约文档的内容:简要说明、事件流、特殊需求、前置条件和后置条件。

12. 用例规约的检查:功能需求的完备性、模型是否易于理解、是否存在不一致性、避免二义性。

13. 软件需求规格说明书SRS的内容:引言、信息描述、功能描述、行为描述、质量保证、接口描述、其他描述。 14. 需求管理的流程:需求确认、需求跟踪、需求变更。需求跟踪有两种方式,正向跟踪与逆向跟踪。

需求变更的流程:变更申请、审批、更改、更新确认。

3 / 15

第六章 面向对象分析

1. 建立面向对象分析模型步骤:1、建立类/对象层(抽象出类和对象)、2、建立属性层(设计静态属性和关系)、3、

建立服务层(定义动态属性和消息通信)、4、建立结构层(定义层次结构关系)、5、建立主题层 2. OOA方法的共同特征:类和类层次的表示、建立对象-关系模型、建立对象-行为模型。 3. 面向对象开发的全过程:OOA(分析)、OOD(设计)、OOP(编码)、OOT(测试)。 4. 用例模型是面向对象分析最常用的一种模型。 5. 分析类的类型:边界类、控制类、实体类。

6. 每个参与者与用例之间确定一个边界类,每个用例设置一个控制类,而实体类为现实生活中的对象,类(属性与

方法)或用于保存和更新信息的有关对象。

7. 边界类包括:用户界面类、系统接口类、设备接口类。如事务管理器、资源协调器、错误处理器都可为控制类。 8. 控制类分离边界类和实体类,可用来建立系统的动态行为模型。实体类用于保存和更新一些对象的有关信息。 9. 为分析类分配职责是OOD的重点。实体类具有持久性。

10. 对象-关系模型的内容:分析类的属性、分析类的关联、分析类图、分析类的合并。(用类图来表示) 11. 对象行为模型用状态转换图、时序图、协作图、活动图来表示。

12. 面向对象分析时:1、确定分析类,2、静态模型建立画类图,3、动态模型建立画时序图和协作图。 13. 时序图中的元素有:对象、对象生命线、消息。协作图中的元素有:对象、链接、消息流。 14. 面向对象分析的任务是:将需求阶段产生的需求模型 转换为 软件分析模型。

面向对象设计的任务是:将分析阶段建立的分析模型 转换为 软件设计模型。 第七章 面向对象设计

1. 软件设计的基本概念:模块(拥有明确定义的输入、输出和特性的程序实体)与构件、抽象与细化、信息隐藏、

软件复用。

2. 软件设计的基础:分析阶段对目标系统的数据、功能、行为建模。 3. 软件设计的任务:把分析阶段产生的分析模型转换为软件设计模型。 4. 软件设计包括:数据设计、体系结构设计、接口设计、过程设计。 5. 面向对象设计准则:模块化;抽象;信息隐藏;弱耦合;强内聚;可重用 6. 分解和模块独立性是实现模块设计的重要指导思想。

7. 模块的独立性从2个方面度量:模块本身的内聚、模块之间的耦合。

8. 内聚分类:低内聚(偶然性内聚、逻辑性内聚、时间性内聚)、中内聚(过程性内聚、通讯性内聚)、高内聚(顺

序性内聚、功能性内聚)。

9. 耦合分类:弱耦合(非直接耦合、数据耦合、特征耦合)、中耦合(控制耦合)、较强耦合(外部耦合、公共耦合)、

强耦合(内容耦合)。

10. 一个模块,一个功能 是模块化设计的一条准则。

11. OO设计模型由系统架构层、类和对象层、消息层、责任层4个层次组成。

12. 面向对象设计中,数据和过程被封装为类/对象的属性和操作;接口被封装为对象间的消息,而体系结构的设计则

体现为系统的技术基础设施和具有控制流程的对象间的协作。 13. 传统的软件设计任务包括:概要设计和详细设计

14. 概要设计(总体设计):包括软件的结构和接口设计,并编写概要设计文档。详细设计,确定模块内部的算法和数据

结构,产生描述各模块程序过程的详细文档。每个阶段完成的文档都必须经过复审。 15. OOD的软件设计任务可划分为2个层次:系统架构设计、系统元素设计。

16. 系统架构设计的内容:系统高层结构设计、确定设计元素、确定任务管理策略、实现分布式机制、设计数据存储

方案、人机界面设计。系统元素设计的内容:子系统设计、分包设计、类/对象设计。 17. 常用的架构模式有:层次架构、模型-视图-控制(MVC)架构、管道-过滤器架构、黑板架构。 18. 面向并行需求,任务管理策略主要3种解决方案:多处理机方案、操作系统方案、应用程序方案。

19. 分包的原则:将边界类打包、将功能相关的类打包。高内聚-低耦合的原则,包之间的耦合表现为依赖关系。

4 / 15

20. a向b发送消息的必要条件是a能够引用b,a可以通过4种方式引用b,对应于从a到b的4种连接可见度:

1、全局:b是可以在全局范围内直接引用的对象。 2、参数:b作为a的某一项操作的参数或返回值。 3、局部:b在a的某一操作中充当临时变量。 4、域:b作为a的数据成员。

21. 操作的可见性:公有:除了累本身以外,操作对其他模型元素也是可见的;也可以用“+”表示;

保护:操作只对类本身、它的子类也是可见的;也可以用“#”表示。 私有:操作只对类本身是可见的,也可以用“—”表示。 第八章 编码和测试

1. 编码的风格:1、追求“聪明”和“技巧”---〉提倡“简明”和“直接” 2、使用标准的控制结构3、清晰的前提下求取效率 2. 编码的目的:设计模型(不可执行的)---->( 编码)源程序--?可执行代码

3. 选择编码语言的标准:1、应用领域2、算法与计算复杂性3、数据结构的复杂性4、效率的考虑 4. 测试和纠错:

测试(testing)的目的与任务:目的:发现程序的错误;任务:通过执行程序,暴露潜在的错误。 纠错(debugging)的目的与任务:目的:定位和纠正错误;任务:消除软件故障,保证程序的可靠运行。 5. 测试的特性:挑剔型、复杂性、不彻底性、经济型。

6. 测试分类:静态分析(静态分析器分析、代码评审(代码会审、走查、办公桌检查));

动态测试(黑盒测试(功能测试)、白盒测试(结构测试))。

7. 黑盒测试分类(根据被测试程序功能来进行测试):等价类法、边界值法、错误猜测法。

8. 白盒测试分类(以程序结构为依据的测试方法):路经测试(点覆盖、边覆盖、路径覆盖)、逻辑覆盖测试(语句

覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)。

第九章 软件维护

1. 决定软件可维护性的因素

5 / 15

2. 软件副作用的类型:修改编码的副作用、修改数据的副作用、修改文档的副作用。 3. 什么是再工程:将新技术和新工具应用于老的软件的一种较“彻底”的预防性维护。 4. 软件配置项包括:程序(源代码和可执行程序),文档,数据

5. 基线(Baseline) 是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础。 6. 维护的代价

i.有形代价: ii.无形代价:

占用资源以致延误开发;修改不及时引起用户不满;维护引入新错误,降低了软件质量;等等。 维护工作量的经验模型:M = P + Ke^(c-d)

其中:M = 维护用的总工作量;P = 生产性活动 (如. 分析,评价,修改设计, 编码, 测试等); K = 经验系数;

c = 复杂度 (非结构化设计和缺少文档会增加复杂度) d = 维护人员对软件的熟悉程度.

第十章 软件复用

1. 软件复用的定义: (SR)定义为利用工程知识或方法,由一已存在的系统,来建造一新系统。目的:这种技术,可改

进软件产品质量和生产率。还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。 2. 软件复用的目的是能更快、更好、成本更低地生产软件制品。

3. 按照可复用的粒度,软件制品从小到大分为以下几类:源代码复用(高级语言编写的源代码)、软件体系结构复用

(已有软件的体系结构)、应用程序生成器(对整个软件体系结构、相应的子系统、特定的数据结构和算法)、领域特定的软件体系结构的复用(特定领域中存在的公共体系结构及其构件)。 4. 领域:指的是一组具有相似或相近软件需求的应用系统所覆盖的功能区域。

领域工程:通过领域分析(domain analysis)找出最优复用,对它们进行设计和构造,形成为可复用构件,进而建立大规模的软件构件仓库的过程。

5. 横向复用:是指复用不同应用领域中的软件元素。

纵向复用:是指在一类具有较多公共性的应用领域之间进行软件构件进行复用。

6. 领域分析:领域分析是在特定应用领域寻找最优复用,以公共对象、类、子集合和框架等形式进行标识、分析和

规约。目标:是获得领域分析模型。

7. 构件应具有的特征:通用性、可变性、易组装性;基于面向对象技术的复用通用构件。

8. 领域构件的设计框架:标准数据:标识标准的全局数据结构;标准接口协议:三个层次(构件内、外、人机接口);

程序模板:成形的结构模型作为新程序的体系结构设计的模板

9. 几种流行的构件技术:组件对象模型技术(COM )、公共对象请求代理体系结构(CORBA)、开放式文档接口。 10. 建立可复用构件库目前最常用的有三种分类模式: 枚举分类、呈面分类(呈面<=8)、属性-值分类。

11. 应用系统工程(ASE):定义:在基于构件的软件开发中,通过复用构件系统开发某个特定应用系统的构件工程。 12. ASE过程的基本步骤:获取需求(建立用例模型)、分析(用用例模型输入来组装和特化分析构件)、设计应用系统

(用分析模型输入来组装和特化设计构件)、实现应用系统(用设计模型输入来组装和特化实现构件)、测试应用系统(组装和特化测试构件,测试应用系统)、应用系统打包。

13. OO方法对软件复用的支持:OOA模型、OOA与OOD的分工、对象的表示、一般---特殊结构、整体---部分结构、

6 / 15

实例连接、类描述模板、用例。

14. 复用技术对OO方法的支持:类库、构件库、构架库、工具、OOA过程。 题目1:多模块程序的测试有哪些层次?各层测试主要解决什么问题? 解答: 多模块测试的层次 单元测试/模块测试 所处时段 编码阶段 1. 对模块代码进行编译,发现并纠正其语法错误; 2. 进行静态分析,验证模块结构及其内部调用序列是否正确; 3. 确定模块的测试策略,并据此设计一组测试用例和必要的测试软件; 4. 用选定的测试用例对模块进行测试,直至满足测试终止标准为止; 5. 注重执行路径、出错处理路径、局部数据结构、模块的对外接口的测试 6. 编制单元测试报告。 解决的问题 涉及测试方法 黑盒测试——程序外部测试、功能性测试 白盒测试——程序内部测试、覆盖测试 成果 测试报告 集成测试 集成测试阶段 1. 制订集成测试实施策略 2. 确定集成测试的实施步骤,设计测试用例 3. 逐一地添加模块,进行测试 1. 进一步验证软件的有效性,即验证软件的功能和性能是否与用户的要求一致 1. 测试是否与硬件协调运行 2. 测试是否和原来就有的其它软件协调运行 3. 测试是否完成SRS对它的要求 模块(子系统或小系统)集成测试;训练驱动与桩的设计、组合及集成测试。 系统的性能检验和软件系统实时运行状况的测试 已组装软件 已确认软件 可运行的系统 高 级 测 试 确认测试 系统测试 集成测试阶段 验收阶段 软件测试

表7.1 “电话号码”的等价分类

输入数据 地区码 1、 空 2、 3位数字 电话号码前三位 6、非‘000’且非‘111’的3位数字 有效等价类 无效等价类 3、 非空,但有非数字字符 4、 非空,位数小于3位数字 5、 非空,位数多于3位数字 7、空 8、非空,但有非数字字符 9、非空,位数小于3位数字 10、非空,位数多于3位数字 电话号码后四位 11、任意4位数字 12、空 13、非空,但有非数字字符 14、非空,位数小于4位数字 15、非空,位数多于4位数字 表7.2 有效等价类的测试用例

测试数据 地区码 NULL 010

表7.3 无效等价类的测试用例

7 / 15

期望结果 号码后四位 4567 5678 输入有效 输入有效 测试范围 1、6、11 2、6、11 号码前三位 123 234 测试数据 地区码 #1* 01 0123 NULL 010 020 NULL NULL 010 020 NULL 阅读下列程序:

PROCEDURE SAMPAL (A,B:REAL; VAR X:REAL); BEGIN

IF (A>3) AND (B=2) THEN X:=X/A IF (A=6) OR (X>4) THEN X:=X+1 END;

为上述程序设计测试用例(参考教材相关例题)。 实验要求:形成相应的实验报告。包括:

1、 画出程序流程图,程序图 2、 实现语句覆盖用例设计 3、 实现判定覆盖用例设计 4、 实现条件覆盖用例设计 5、 实现判定/条件覆盖用例设计 6、 实现条件组合覆盖用例设计

7、 实现路径覆盖用例设计(完全覆盖)。

第一部分:程序流程图、程序图

开始期望结果 号码后四位 4567 5678 8888 8888 6666 6688 8866 NULL *02# 23 45678 地区码输入无效 地区码输入无效 地区码输入无效 号码前三位输入无效 号码前三位输入无效 号码前三位输入无效 号码前三位输入无效 号码后四位输入无效 号码后四位输入无效 号码后四位输入无效 号码后四位输入无效 测试范围 3、6、11 4、6、11 5、6、11 1、7、11 1、8、11 1、9、11 1、10、11 2、6、12 2、6、13 2、6、14 2、6、15 号码前三位 123 234 258 NULL #1* 45 789 666 888 688 866 StartaF(A>3) AND (B=2)TCba(A>3) AND (B=2)cX=X/AbX=X/AF(A=6) OR (X>4)T(A=6) OR (X>4)deX=X+1edX=X+1 设本例中的两个判断IF (A>3) AND (B=2) 记为P1,IF (A=6) OR (X>4) 记为P2。 第二部分:语句覆盖用例设计——使程序中每个语句至少执行一次。

8 / 15

结束End 测试用例 A 6 B 2 测试用例 A 8 6 B 2 0 X 32 32 X 36 P1 T P1 T F P2 T P2 F T 执行路径 a-c-e 执行路径 a-c-d a-b-e 第三部分:判定覆盖用例设计——使每个判定的真假分支都至少执行一次。

第四部分:条件覆盖用例设计——使每个判定的每个条件的可能取值至少执行一次。

第一判定表达式:

设条件 A>3 取真 记为 T1 假 -T1 条件 B=2 取真 记为 T2 假 -T2

第二判定表达式:

设条件 A=6 取真 记为 T3 假 -T3 条件 X>4 取真 记为 T4 假 -T4

9 / 15

A 3 6 测试用例 B 2 0 X 36 24 第一判定表达式 A>3 B=2 -T1 T1 T2 -T2 第二判定表达式 A=6 X>4 -T3 T3 T4 -T4 执行路径 a-b-e a-b-e 未覆盖c、d分支,不满足判定覆盖的要求。

条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖。

第五部分:判定/条件覆盖用例设计——选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。 A 6 3 6 6 测试用例 B 2 2 0 0 X 36 36 24 24 第一判定表达式 A>3 B=2 T1 -T1 T1 -T1 T2 T2 -T2 -T2 第二判定表达式 A=6 X>4 T3 -T3 T3 -T3 T4 T4 -T4 -T4 执行路径 a-c-e a-b-e a-b-e a-b-d 能同时满足判定、条件两种覆盖标准。

第六部分:条件组合覆盖用例设计——所有可能的条件取值组合至少执行一次。 A>3, B=2 ;A>3, B≠2 ;A≯3, B=2 ;A≯3, B≠2 A=6, X>4 ;A=6, X≯4 ;A≠6, X>4 ;A≠6, X≯4 测试用例 A 6 3 6 6 B 2 2 0 0 测试用例 A 6 4 3 6 B 2 2 0 0 X 36 16 24 24 X 36 36 24 24 第一判定表达式 A>3 T1 -T1 T1 -T1 B=2 T2 T2 -T2 -T2 第二判定表达式 A=6 T3 -T3 T3 -T3 X>4 T4 T4 -T4 -T4 a-c-e a-b-e a-b-e a-b-d 执行路径 a-c-e a-c-d a-b-e a-b-d 执行路径 第七部分:实现路径覆盖用例设计——覆盖每一个可能的路径。

第一判定表达式 A>3 T1 T1 -T1 -T1 B=2 T2 T2 -T2 -T2 第二判定表达式 A=6 T3 -T3 -T3 -T3 X>4 T4 -T4 T4 -T4 第一章 1、什么是软件危机?为什么会产生软件危机?

答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题,如软件费用、软件可靠性、软件维护、软件生产、软件重用等。(1).软件维护费用急剧上升,直接威胁计算机应用的扩大。(2).软件生产技术进步缓慢 2、何谓面向对象软件工程?简述它与传统软件工程的差别和联系?

传统方法学:采用结构化技术;软件生命周期的全过程依次划分为若干阶段;自顶向下顺序完成; 优点:便于分工协作,每个阶段采用科学的管理技术和良好的技术方法,提高软件开发的成功率; 缺点:只能面向行为或者数据。

面向对象方法学:是一种以数据为主线,把数据和对数据的操作结合起来的方法。把对象作为融合数据及数据上的操作 的统一的软件构件;划分类;按照继承关系;通过发送消息互相联系;

优点:①降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作;②提高了软件的可重用性。 缺点:只能面向对象和行为。

第二章

1.什么是软件生存周期?把生存周期划分为阶段的目的是什么?

答:软件生存周期是指一个软件从提出需求开始直到该软件报废为止的整个时期。需求分析、软件分析、软件设计、编码、软件测试、运行维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软

10 / 15

本文来源:https://www.bwwdw.com/article/4ma5.html

Top