目录

第十章 面向对象设计

10.1 面向对象设计与结构化设计

10.2 面向对象设计与面向对象分析的关系

10.3面向对象设计的过程与规则

10.3.1 面向对象设计的过程

10.3.2面向对象设计的原则

10.4面向对象设计的启发规则

10.5系统设计

10.5.1系统分解

10.5.2问题域子系统的设计

10.5.3人机交互子系统的设计

10.5.4任务管理子系统的识别

10.5.5 数据管理子系统的设计

10.6对象设计

10.6.1设计类中的服务

10.6.2 设计类的关联

10.6.3对象设计优化

第11章 软件编程

11.1 编程语言

11.1.2选择编程语言需考虑的因素

11.2编程风格

11.3面向对象实现

第12章 软件测试概述

12.1软件测试的基本概念

12.1.1软件测试的原则

12.1.2软件测试模型

12.2软件测试的分类

12.3测试用例编写

12.3.1测试用例编写

12.3.2测试用例设计

12.3.3测试用例场景

第13章 软件测试方法与过程

13.2黑盒测试

13.2.1 等价类划分方法

13.2.2 边界值分析法

13.2.3错误推测法

13.2.4因果图法

13.3白盒测试

13.3.4逻辑覆盖法

13.3.5基本路径法

13.4软件测试的一般步骤

13.5单元测试

13.5.1单元测试概述

13.5.2单元测试内容

13.6集成测试

13.6.1集成测试概述

13.6.2集成测试分析

13.6.3集成测试策略

13.7系统测试

13.7.1系统测试概述

13.7.2系统测试类型

13.8验收测试

13.8.1验收测试概述

13.8.2验收测试内容

13.8.3 α测试和β测试

13.9回归测试

13.10面向对象的软件测试

13.11软件调试

第14章 软件维护与软件工程管理

14.1软件维护

14.1.1软件维护的分类

14.1.2软件维护的过程

14.1.3维护的可维护性

14.1.4 软件测试的副作用


第十章 面向对象设计

10.1 面向对象设计与结构化设计

结构化设计:逻辑性很强

面向对象设计:更符合复杂的、随机性较强和考虑并发性

结构化设计:内聚性不高,在不断变化的情况下,影响较大。

面向对象设计:基于类、对象、封装、继承等概念,相比之下,需求的变化对系统的局部影响并不容易扩展到全局

10.2 面向对象设计与面向对象分析的关系

他们之间没有明显的界限,不存在鸿沟,他们之间是一个反复迭代地过程。面向对象设计就是对面向对象分析所得到的类图进一步的扩充和细化。

10.3面向对象设计的过程与规则

10.3.1 面向对象设计的过程

    步骤:

1、建立环境图

2、软件体系结构设计

3、对各个子系统进行设计

4、对象设计及优化。

(1)建立软件体系结构环境图

(2)软件体系结构设计

自底向上、自顶向下、自中向上下

(3)对各个子系统进行设计

                逻辑上由4大部分组成,分别是    

·问题域子系统

·人-机交互子系统

·任务管理子系统

·数据管理子系统

(4)对象设计及优化

对象设计是细化原有的分析对象,确定一些新的对象、对每一个子系统接口和类进行准确详细的说明。

10.3.2面向对象设计的原则

(1)模块化

(2)抽象化

(3)信息隐藏

(4)低耦合

(5)高内聚

(6)复用性

10.4面向对象设计的启发规则

1、设计结果应该清晰易懂

2、类等级深度应该适当

3、要尽量设计简单的类

4、使用简单的协议

5、使用简单的操作

6、把设计的变动减至最小。

10.5系统设计

10.5.1系统分解

把系统分解成若干个比较小的部分,然后再分别设计每个部分,有利于降低设计的难度。各个子系统之间应该具有尽可能简单、明确的接口。

10.5.2问题域子系统的设计

设计基础:分析阶段精确问题域模型

设计任务:从实现角度补充、修改问题域模型

一、调整需求

二、复用已有类

三、把问题域类组合在一起

四、增加一般化类以建立协议

五、调整继承关系

10.5.3人机交互子系统的设计

软件设计者至少要考虑以下3种窗口:

(1)安全/登录窗口。这种窗口是用户访问系统的必经之路

(2)设置窗口,具有以下功能:

-创建或初始化系统运行必需的对象。

-系统管理功能

-启动或关闭设备

(3)业务功能窗口

10.5.4任务管理子系统的识别

一、分析并发性

二、确定任务类型

(1)确定事件驱动型任务

(2)确定时钟驱动型任务

(3)确定优先任务

(4)确定关键任务

(5)确定协调任务

三、设计步骤

(1)识别事件驱动和事件驱动的任务,从用户需求出发识别,参照分析模型中的主动对象。

(2)识别关键性任务,任务优先级以及任务管理类。

(3)定义任务

10.5.5 数据管理子系统的设计

1、设计数据格式

2、设计相应的服务

10.6对象设计

对象设计以问题域的对象设计为核心,其结果是一个详细的对象模型。

10.6.1设计类中的服务

1. 确定类中应该有哪些服务

2.设计实现服务的方法

(1)设计实现服务的算法,算法复杂度、易于理解和实现、易修改

(2)选择数据结构

(3)定义内部类和内部操作

10.6.2 设计类的关联

1、关联的遍历,单向遍历和双向遍历

2、单向关联的设计

3、双向关联的设计

4、关联对象的设计

10.6.3对象设计优化

1、确定优先级

 2、提高效率的几项技术

(1)增加冗余关联以提高访问效率

(2)调整查询次序

(3)保留派生属性

3、调整继承关系(清晰性)的三个方面

在面向对象设计过程中,建立良好的继承关系是优化设计的一项重要内容:

(1)抽象与具体

(2)提高继承程度

(3)利用委托实现行为共享

第11章 软件编程

11.1 编程语言

11.1.2选择编程语言需考虑的因素

11.2编程风格

要做到按照良好的编程风格进行编程,可以从以下几点入手:

1、版权和版本声明

(1)版权信息

(2)文件名称,标识符,摘要

(3)当前版本号,作者/修改者,完成日期

(4)版本历史信息

  2、程序版式

3、注释

(1)序言性注释:模块开始,描述模块功能、主要算法、接口特点等

(2)功能性注释:插在程序中间,解释这段代码的必要性及功能。

 4、命名规则

        5、数据说明

        6、语句构造

(1)避免把多个语句写在同一行

(2)避免复杂条件测试

(3)减少“非”条件测试

(4)避免大量使用循环嵌套和条件嵌套

(5)少使用goto语句

  7、输入输出

        8、效率

11.3面向对象实现

如何选择合适的面向对象程序设计语言

1、将来能够占主导地位

2、可重用性

3、类库和开发环境

4、其他因素

程序语言的风格:

1、提高可重用性

2、提高可扩充性

3、提高健壮性

第12章 软件测试概述

12.1软件测试的基本概念

软件测试是发现软件中错误的缺陷的主要手段。

12.1.1软件测试的原则

(1) 完全测试是不可能的。

(2) 测试中存在风险。

(3)软件测试只能表明缺陷的存在,而不能证明软件产品已经没有缺陷。

(4)软件产品中潜在的错误数与已发现的错误数成正比。

(5)让不同的测试人员参与到测试工作中。

12.1.2软件测试模型

软件测试模型是指软件测试全部过程、活动或任务的结构框架。

V模型:

W模型:

H模型:

强调测试的独立性和灵活性。当软件测 试人员认为测试准备完成,即某个测试点准备就绪时,就可以从测试准备阶段进入到测试执行阶段。

12.2软件测试的分类

按照执行测试时是否需要运行程序,软件测试可以划分为静态测试和动态测试。

        静态测试以人工测试为主,通过测试人员认真阅读文档和代码,仔细分析其正确性、一致性及逻辑结构的正确性,从而找出软件产品中的错误或缺陷。

        动态测试需要通过实际运行被测程序来发现问题。测试人员可以输入一系列的测试用例, 通过观察测试用例的输出结果是否与预期相符来检验系统内潜在的问题或缺陷。

12.3测试用例编写

12.3.1测试用例编写

12.3.2测试用例设计

12.3.3测试用例场景

第13章 软件测试方法与过程

动态测试中有两种非常流行的测试技术,即黑盒测试和白盒测试。

13.2黑盒测试

在黑盒测试里,测试人员把被测试的软件系统看成是一个黑盒子,并不需要关心盒子的内部结构和内部特性,而只关注软件产品的输入数据和输出结果,从而检查软件产品是否符合它的功能说明。

与黑盒测试不同,白盒测试关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。

一般在软件测试的过程中,既要用到黑盒测试,又要用到白盒测试。大的功能模块采用黑盒测试,小的构件采用白盒测试。

        黑盒测试包括等价类划分法、边界值分析法、错误推测法、因果图法等。

        白盒测试包括逻辑覆盖测试方法和基本路径测试等方法。下面将重点对黑盒测试和白盒测试进行详细的介绍。

        黑盒测试重测:软件功能

黑盒发现错误类型:

        (1)功能不正确或遗漏

        (2)输入能否正确的接受

        (3)能否输出正确的结果

        (4)性能错误数据

        (5)结构或外部数据库访问错误

        (6)初始化或终止错误

常见的黑盒测试技术:

(1)等价类分类

(2)边界值分析

(3)错误推测

(4)因果图等

13.2.1 等价类划分方法

等价类划分是把程序的输入域划分为若干子集,然后从每个子集中选取少数具有代表性的数据用作测试用例,所选取的输入数据对于揭露程序中的错误都是等效的。

等价类分为有效等价类和无效等价类

Ø 有效等价类是指对程序的规格说明是有意义的、合理的输入数据所构成的集合。

Ø 无效等价类是指对程序的规格说明是无意义的、不合理的输入数据构成的集合。

        划分等价类时,有一些可供遵循的原则:

(1)按双边区间划分:如果输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类。

(2)按单边区间划分:如果输入条件规定了输入值的集合,则可确定一个有效等价类和一个无效等价类。

(3)按取值划分:如果输入条件是一组值,且程序对不同的值有不同的处理方式,则每个允许的输入值对应一个有效等价类,所以不允许的输入值的集合为一个无效等价类。

(4)按限制条件/ 规则划分: 如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从不同的角度违反规则)。

(5)按处理方式细分等价类:已划分等价类中各元素在程序中处理方式不同,将等价类进一步划分更小等价类。

        设计测试用例的步骤:

(1)第一步:对每个输入和外部条件进行等价类划分,画出等价类表,并为每个等价类进行唯一的编号。

(2)第二步:设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步,直到所有的有效等价类被覆盖。

(3)第三步:为每一个无效等价类设计一个测试用例。直到所有无效等价类都被覆盖为止。

13.2.2 边界值分析法

        步骤:

– 等价类划分补充

– 确定边界情况;

– 选正好等于边界值做测试数据;

– 刚刚大于或刚刚小于边界的值作为测试数据。

13.2.3错误推测法

13.2.4因果图法

定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,该方法充分考虑了输入情况的各种组合及输入条件之间的相互制约关系。

在因果图中,用C表示原因,E表示结果,各节点表示状态,取值0表示某状态不出现,取值1表示某状态出现。

为了表示原因与原因之间、结果与结果之间可能存在的约束关系,在因果图中可以附加一些表示约束条件的符号。

13.3白盒测试

白盒测试,有时也称为玻璃盒测试,它关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。

白盒测试也有多种技术,比如:代码检查法、逻辑覆盖测试、基本路径测试等。

13.3.4逻辑覆盖法

        逻辑覆盖法以程序内在的逻辑结构为基础,根据程序的流程图设计测试用例。

1、语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。是最弱的逻辑覆盖

2、分支覆盖:设计若干个测试用例,程序中每个判断的取真分支和取假分支至少经历一次。分支覆盖又称为判定覆盖。

3、条件覆盖:设计若干个测试用例,使得程序中每个判断的每个条件的可能取值至少执行一次

4、分支条件覆盖:使判定表达式每个条件都取各种可能值,且每个判定表达式也都能取到各种结果,实现不同的分支。

5、条件组合覆盖:设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

        路径覆盖思想:覆盖被测程序中的所有可能路径

13.3.5基本路径法

在基本路径测试中,设计出的测试用例要保证在测试过程中程序的每条可执行语句至少执行一次。

在基本路径法中,需要使用程序的控制流图进行可视化表达。

步骤:

(1)根据过程设计结果画出相应流图

(2)计算流图的环形复杂度:V(G)=e(边)-n(节点)+2

(3)确定线性独立路径的基本集合

独立路径:至少包含一条在定义该路径之前不曾用过的边

(4)设计测试用例覆盖基本集合的路径

13.4软件测试的一般步骤

13.5单元测试

13.5.1单元测试概述

单元测试,是针对软件设计的最小单位——程序模块—— 进行的正确性检验的测试工作。

13.5.2单元测试内容

1、模块接口:数据是否正确进出模块

2、局部数据结构:局部数据的说明、初始化、默认值是否有问题

3、独立路径:重要独立执行路径是否有错误计算、不正确比较或不适当控制流。

4、出错处理通路

5、边界条件

6、计算机测试

13.6集成测试

13.6.1集成测试概述

在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。

13.6.2集成测试分析

1、体系结构分析

2、模块分析

3、接口分析

4、集成测试策略分析

13.6.3集成测试策略

1、非增量式集成测试

2、增量式集成测试

(1)自顶向下增量式集成测试:

深度优先:

(2)自底向上增量式集成测试:

(3)三明治集成测试:

• 将自顶向下测试与自底向上测试两种模式有机结合起来,采用并行的自顶向下、自底向上集成方式形成

• 采取持续集成的策略

13.7系统测试

13.7.1系统测试概述

系统测试的对象包括源程序、需求分析阶段到详细设计阶段中的各技术文档、管理文档、提交给用户的文档、软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口。

13.7.2系统测试类型

功能测试、性能测试、安装测试、可用性测试、压力测试、容量测试、安全性测试、健壮性测试(容错能力、恢复能力)、图形用户界面测试、文档测试、

13.8验收测试

13.8.1验收测试概述

验收测试是在系统测试之后进行的测试,目的是为了验证新建系统产品是否能够满足用户的需要,产品通过验收测试工作才能最终结束。验收测试需要客户共同参与,目的是确认软件符合需求规格。

13.8.2验收测试内容

验收测试主要包括配置复审、合法性检查、文档检查、软件一致性检查、软件功能和性能测试与测试结果评审等内容。

13.8.3 α测试和β测试

α测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试

β测试由软件的最终用户在一个或多个客户场所进行

13.9回归测试

13.10面向对象的软件测试

13.11软件调试

调试是在测试发现错误之后排除错误的过程

第14章 软件维护与软件工程管理

14.1软件维护

软件维护是软件产品生命周期的最后一个阶段。

概括地说,软件维护就是指在软件产品交付给用户之后,为了改正软件测试阶段未发现的缺陷,改进软件产品的性能,补充软件产品的新功能等,所进行的修改软件的过程。

14.1.1软件维护的分类

1、完善性维护

2、适应性维护

3、纠错性维护

4、预防性维护

14.1.2软件维护的过程

1、建立维护机构

2、用户提交维护申请并提交维护申请报告

3、维护人员确认维护类型并实施相应的维护工作

4、整理维护记录并对维护工作进行评审

5、对维护工作进行评价

14.1.3维护的可维护性

软件的可维护性是用来衡量对软件产品进行维护的难易程度的标准,它是软件质量的主要特征之一。

影响软件可维护性的因素有很多,如可理解性、可测试性、可修改性等。

提高可维护性的措施:

(1)建立完整的文档

(2)采用先进的维护工具和技术

(3)注重可维护性的评审环节

14.1.4 软件测试的副作用

软件维护是存在风险的。对原有软件产品的一个微小的改动都有可能引入新的错误,造成意想不到的后果。软件维护的副作用主要有3类,包括修改代码的副作用、修改数据的副作用和修改文档的副作用。

(1)人类通过编程语言与计算机进行交流,每种编程语言都有严格的语义和语法结构。

(2)修改数据的副作用是指数据结构被改动时有新的错误产生的现象。

(3)修改文档的副作用是指在软件产品的内容更改之后没有对文档进行相应的更新而为以后的工作带来不便的情况。

软件工程复习知识点汇总(3)相关推荐

  1. 软件工程复习知识点汇总(2)

    第六章 结构化设计 6.1结构化软件设计概述 6.2结构化设计与结构化分析的关系 结构化设计与结构化分析的关系图 6.3体系结构设计 6.3.1表示软件结构的图形工具 一.层次图和HIPO图 通常使用 ...

  2. 软件工程复习知识点汇总(1)

    目录 第一章 软件工程概述 1.1软件 1.2软件危机 1.2.1软件危机的表现与原因 1.2.2软件危机的启示 1.3软件工程 1.3.1软件工程的概念 1.3.2软件工程研究的内容 1.3.3软件 ...

  3. 【2022】计算机视觉算法岗面试题目和复习知识点汇总

    计算机视觉算法岗面试题目和复习知识点汇总 1.讲一下BN.LN.IN.GN这几种归一化方法 2.为什么Transformer 需要进行 Multi-head Attention 3.讲一下self a ...

  4. 2021 合工大软件工程期末复习知识点汇总

    --知识点范围整理自wkw闭卷复习要点群文件.txt 闭卷考概念的滚出中国 题型 判断题 10分 选择题 10分 填空题 10分 名词解释 4×5分 简答题 5×4分 综合题 30(课堂作业) 押个题 ...

  5. 软件工程导论知识点汇总

    文章目录 一.填空题 二.简答题 专为大学生期末创造奇迹整理的知识点 一.填空题 1.软件是一种逻辑产品 2.软件开发方法是指导软件开发的一系列规则和约定 3.软件生存周期中花费最多的阶段是软件维护阶 ...

  6. 软件工程基础知识点汇总

    第四章 软件工程基础 4.1 软件工程基本概念 4.1.1 软件定义与软件特点 4.1.2 软件危机与软件工程 4.1.3 软件过程与生命周期 1.软件过程 2. 软件开发生命周期(softeware ...

  7. 合工大python期末复习知识点汇总

    文章目录 Python序列 map函数 eval函数 divmod sort sorted os与os.path模块 列表 切片 列表推导式 编写算法实现嵌套列表的平铺 列出当前文件夹下所有Pytho ...

  8. C语言复习知识点汇总2--计算机二级(C语言)

    感谢众多小伙伴关注,特此提供此文档word版完整版下载链接:https://download.csdn.net/download/qq_41451521/10231099 第一章C语言的基础知识 第一 ...

  9. 离散数学简单复习知识点汇总

    命题是非真必假的陈述句. 联结词:与原子命题一起构成复合命题. 原子命题公式:命题常元.命题变元同城为原子命题公式,简称原子公式. 合式公式是由下列规则形成的字符串: (1) 真值 T 和 F 是合式 ...

最新文章

  1. 基于熵权法优劣解距离法_基于优劣解距离法的火电机组单辅机运行状态评估
  2. jQuery 中 attr() 和 prop() 方法的区别
  3. web前端【第九篇】JS的DOM对象三
  4. asp.net三层结构
  5. oracle 存储过程的基本语法 及注意事项
  6. python中对列表和循环使用的小练习
  7. ZOJ 3735 Josephina and RPG
  8. python 异常处理相关说明
  9. 选择虚拟主机服务器,选择虚拟主机服务器
  10. oracle 查询判断语句
  11. ping 丢包 网络摄像头_Ping丢包故障案例
  12. 【电子书制作软件哪个好】云展网教程 | 搜索功能:搜索杂志内文字可高亮
  13. 无线通信——GSM系统组成
  14. 计算机主机报警 声,电脑开机报警声音大全
  15. js小游戏之锅打灰太狼
  16. 微信小程序:人生重开模拟器
  17. 如何把一个eclipse安装包放到eclipse中
  18. 【手写简易版 vue3】究极长文详细讲解如何实现一个简易版 vue3
  19. 顶刊TIP 2022!阿里提出:从分布视角出发理解和提升对抗样本的迁移性
  20. MySQL审计插件使用和对比

热门文章

  1. 最火的计算机病毒 熊猫烧香,熊猫烧香-世界知名计算机病毒排行榜-天天排行网...
  2. Apple pencil值得购买吗?ipad手写电容笔推荐
  3. 什么样子的人适合创业
  4. js面试高级找出素组中三位数相加得16的多种组合
  5. 个推大数据2019春节瘦身城市排行报告:苏州成“瘦身”最快城市
  6. 推荐给单反新人--数码单反相机摄影技巧
  7. SiR-COOH cas号1426090-03-0
  8. 图像定量分析--信噪比
  9. 田野调查手记·浮山摩崖石刻(十六)
  10. 微信小程序班级考勤打卡系统丨可以android studio运行