2024软件设计师笔记之考点版(一考就过):11-25

软件设计师之一考就过:成绩版

在这里插入图片描述

考点11:防火墙、入侵检测


真题1:(专家系统、模型检测、简单匹配)属于入侵检测;而漏洞扫描不属于。

真题2:防火墙特性包括(控制进出网络的数据包和数据流向、提供流量信息的日志和审计、隐藏内部IP以及网络结构细节),但不包括提供漏洞扫描功能。

真题3:入侵防御系统功能描述不正确的是:C

A、监测并分析用户和系统的网络活动

B、匹配特征库识别已知的网络攻击行为

C、联动入侵检测系统使其阻断网络攻击行为

D、检测僵尸网络,木马控制等僵尸主机行为

真题3:某单位网站首页被恶意篡改,应部署(Web应用防火墙)设备阻止恶意攻击。

真题4:通过在出口防火墙上配置(ACL)功能可以阻止外部未授权用户访问内部网络。

真题5:包过滤防火墙对(网络层)的数据报文进行检查。

真题6:防火墙通常分为内网、外网和DMZ三个区域,按照受保护程度,从低到高正确的排列次序为(外网、DMZ、内网)。

真题7:Web应用防火墙无法有效防护(D)

A、登录口令暴力破解 B、恶意注册 C、抢票机器人 D、流氓软件


防火墙是在内部网络和外部因特网之间增加的一道安全防护措施,分为网络级防火墙和应用级防火墙。

对于计算机的防火墙来说,整个计算机就相当于一个内网;而外网就是外部的因特网。

防火墙可以鉴别什么样的数据包可以进出组织内部网络。

入侵检测系统IDS
**防火墙技术主要是分隔来自外网的威胁,却对来自内网的直接攻击无能为力
此时就要用到入侵检测IDS技术,位于防火墙之后的第二道屏障,**作为防火墙技术的补充。
◆原理:**监控当前系统/用户行为,**使用入侵检测分析引擎进行分析,这里包含
一个知识库系统,囊括了历史行为、特定行为模式等操作,将当前行为和知识库进行匹配,就能检测出当前行为是否是入侵行为,如果是入侵,则记录证据并上报给系统和防火墙,交由它们处理。
◆不同于防火墙,**IDS入侵检测系统是一个监听设备,没有跨接在任何链路上,无须网络流量流经它便可以工作。**因此,对IDS的部署,唯一的要求是:IDS应当挂接在所有所关注流量都必须流经的链路上。因此,IDS在交换式网络中的位置一般选择在:(1)尽可能靠近攻击源(2)尽可能靠近受保护资源

以下三个没有考过,了解即可:

入侵防御系统IPS
IDS和防火墙技术都是在入侵行为已经发生后所做的检测和分析,而IPS是能够提前发现入侵行为,在其还没有进入安全网络之前就防御。
安全网络之前的链路上挂载入侵防御系统IPS,可以实时检测入侵行为,并直接进行阻断,这是与IDS的区别,要注意。
杀毒软件
用于检测和解决计算机病毒,与防火墙和IDS要区分,计算机病毒要靠杀毒软件,防火墙是处理网络上的非法攻击。
蜜罐系统
**伪造一个蜜罐网络引诱黑客攻击,**蜜罐网络被攻击不影响安全网络,并且可以借此了解黑客攻击的手段和原理,,从而对安全系统进行升级和优化。

防火墙相当于一个大门,

入侵检测系统IDS相当于家里的(门内的)摄像头。这个摄像头应该放在可以监控到的重要的地方比如保险柜(靠近受保护的资源)

入侵防御系统 IPS 相当于 可以触发的机关:比如检测到危险能主动发射毒箭等。

考点12:结构化开发方法


真题1:在采用结构化开发方法进行软件开发时,设计阶段接口设计主要依据需求分析阶段的(数据流图)。接口设计的任务主要是(描述软件与外部环境之间的交互关系,软件内模块之间的调用关系)。

真题2:某医院预约系统的部分需求为:患者可以查看医院发布的专家特长介绍及其就诊时间;系统记录患者信息,患者预约特定时间就诊。用 DFD对其进行功能建模时,患者是 (外部实体);用 ERD 对其进行数据建模时,患者是(实体)。

解析:

数据流图:外部实体、数据流、加工、数据存储

实体联系图:实体、属性、联系

有输入但是没有输出,称之为“黑洞“加工

有输出但没有输入。称之为“奇迹“加工

输入不足以产生输出,我们称之为“灰洞“

真题3:关于管道过滤器体系结构的优点的叙述中,不正确的是(提高性能、适合交互处理应用)

管道过滤器体系结构是一种传统的体系结构风格,该体系结构由一组称为过滤器的构件以及连接构件的管道组成,管道将数据从一个过滤器传送到另一个过滤器。
该风格具有以下优点:
① 软件构件具有良好的隐蔽性和高内聚、低耦合的特点;
②允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;
③ 支持软件复用;
④系统维护和增强系统性能简单;
⑤ 允许对一些如吞吐量、死锁等属性的分析;
⑥ 支持并行执行。

真题4:(B)不是采用 MVC(模型-视图-控制器)体系结构进行软件系统开发的优点。

A、有利于代码重用 B、提高系统的运行效率 C、提高系统的开发效率 D、提高系统的可维护性

真题5:结构化分析方法中,数据流图中的元素在(数据字典)中进行定义。


1、系统分析与设计概述

系统开发的目的是把现有系统的物理模型转化为目标系统的物理模型,即图中所描述的路径,而系统分析阶段的结果是得到目标系统的逻辑模型。逻辑模型反映了系统的功能和性质,而物理模型反映的是系统的某一种具体实现方案。

逻辑模型就相当于设计图纸;物理模型就相当于售楼处的沙盘;

系统设计基本原理:抽象、模块化(划分模块)、信息隐蔽(暴露接口,但隐蔽接口中的具体实现)、模块独立

系统总体结构设计就是系统概要设计。

◆系统总体结构设计是要根据系统分析的要求和组织的实际情况对新系统的总体结构形式和可利用的资源进行大致设计,这是一种宏观、总体上的设计和规划。

扇出:就是调用别人;扇入:就是别人调你;多扇入少扇出。

◆系统模块结构设计

模块式组成系统的基本单位,它的特点是可以组合、分解和更换。系统中任何一个处理功能都可以看成是一个模块。根据功能具体化程序的不同,模块可以分为逻辑模块和物理模块。

模块结构图主要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,并不关心模块的内部,即不关系子系统、模块采用何种数据结构和核心算法(即具体实现)。

2、结构化开发方法

◆结构化分析与设计方法是一种面向数据流的传统软件开发方法。结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。

在这里插入图片描述

1)数据流: 在DFD中,数据流的流向必须经过加工。
2)加工:描述了输入数据流到输出数据流之间的变换。

3)数据存储:用来存储数据。

4)外部实体(外部主体):是指存在于软件系统之外的人员或组织

◆数据字典DD
数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。

数据字典有以下4 类条目:数据流、数据项、数据存储和基本加工。

在这里插入图片描述


真题1:某零件厂商的信息系统中,一个基本加工根据客户类型、订单金额、客户信用等信息的不同采取不同的行为,此时最宜采用(C)来表述该加工规格。

A、自然语言 B、流程图 C、判定表 D、某程序设计语言


加工逻辑也称为“小说明”。常用的加工逻辑描述方法有结构化语言、判定表、判定树3种。

数据流图:功能建模

数据建模:E-R 图

行为建模:状态转换

3、结构化设计方法

◆结构化设计(Structured Design,SD)方法是一种面向数据流的设计方法,可以与SA 方法衔接。结构化设计方法的基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。

◆结构化设计方法中用结构图(structure chart)来描述软件系统的体系结构,指出一个软件系统由哪些模块组成,以及模块之间的调用关系。模块结构图是结构化设计的工具,由模块、调用、数据、控制和转接五种基本符号组成。
结构化设计主要包括

体系结构设计:定义软件的主要结构元素及其关系,

数据设计(依赖E-R图): 基于实体联系图确定软件涉及的文件系统的结构及数据库的表结构。

接口设计(依赖数据流图):描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。

④**过程设计: **确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。

**体系结构 就是架构 **

设计阶段接口设计主要依据需求分析阶段的 数据流图。接口设计的主要任务是描述软件与外部环境之间的交互关系,软件内模块之间的调用关系。

考点13:关键路径法(每年必考)


真题:

在这里插入图片描述

在这里插入图片描述


关键路径:是项目的最短工期,但却是从开始到结束时间最长的路径。

关键路径就是最长的那个路径。

在这里插入图片描述

历时总时长就是关键路径,关键路径就是最长的那一条。

上图最长的就是 a->d->f->j->k 共计 3 + 4 + 3 + 5 + 1 = 16 是最长的,所以答案是 C。

第二题,此时 d-i 为 8,a-c为6,f-h为2,则此时最长的为:a->d->i->k,还是16.

在这里插入图片描述

根据上表,可以画出如下图:

在这里插入图片描述

所以关键路径(耗时最长)的为:17天,即:A->D->F->G:2+6+6+3 = 17

如果要有活动 c,则 涉及c 的路径(这里只有一个,也就是 A->C->E->G)的总时长不大于17,即:2 + x + 4 + 3 <=17 => 所以 x = 8,x 本来工期为 5,所以浮动时间为 8 - 5 = 3 天。

所以答案分别为:D、D

考点14:风险管理、无主程序员


真题1:在进行软件开发时,采用无主程序员的开发小组,成员之间相互平等;而主程序员负责制的开发小组,由一个主程序员和若干成员组成,成员之间没有沟通。在一个由8名开发人员构成的小组中,无主程序员组和主程序员组的沟通路径分别是(28和7)


完全避开或消除风险,或者只享受权益而不承担风险是不可能的。

在信息系统项目中,从宏观上来看,风险分为项目风险、技术风险和商业风险。

**项目风险包括:潜在的预算、进度、个人、资源、用户、需求方面的问题以及它们对项目的影响,会威胁到项目计划。**即可能拖延项目进度、增加项目成本。

**技术风险包括:潜在的设计、实现、接口、测试和维护方面的问题,技术上的不确定性等,威胁到待开发系统的质量和预定的交付时间。**即系统能不能做出来以及做出来质量如何。

商业风险威胁到待开发系统的生存能力。即系统能不能卖出去。

考点15:正规式


在这里插入图片描述


◆语言中具有独立含义的最小语法单位是符号(单词),如标识符、无符号常
数与界限符等。词法分析的任务是把构成源程序的字符串转换成单词符号序列。
词法规则可用3型文法(正规文法)或正规表达式描述,它产生的集合是语言
规定的基本字符集∑(字母表)上的字符串的一个子集,称为正规集。

在这里插入图片描述

在这里插入图片描述

E 能推导出 T + T 或 E +T,只考虑符号,相同的符号只保留一个,所以 E 可以推导出 T 或 E +T.

最后的 E+T*-F 和 E+T * N 的文法可以和答案中的 A、B、C、D匹配。

E 为一个数字,+ 为符号,T 为一个数字,* 为乘号,- 为减法,F为一个数字。

所以答案为 B。E+T*-F = E+ -F * T = 2 + -3 * 4

假设: S -> ABC

​ A -> 人/天

​ B -> 吃/下

​ C-> 雨/雪/饭/肉

则上面的文法可以生成句子{人吃饭,天下雨,人吃肉,天下雪,人下雪,天下饭,天吃肉…}

在这里插入图片描述

已知:S -> aAS; S->a,A->SbA; A->SS; A->ba

所以:S->aAS->a(SbA)S->a(abA)S->a(abA)a

在这里插入图片描述

考点16:编译、词法、语法、语义分析、后缀式、中间代码、编译


真题1:在以阶段划分的编译过程中,判断程序语句的形式是否正确是属于(语法分析)阶段的工作。

真题2:关于中间代码的叙述正确的是(后缀式和三地址码是常用的中间代码)

真题3:语法分析主要是分析(程序语句的结构是否合法)。

真题4:以编译方式翻译C/C++源程序的过程中,类型检查在(语义分析)阶段处理。

真题5:编译器与解释器是程序语言翻译的两种基本形态,关于编译器工作方式及特点的叙述中正确的是(先翻译后执行,用户程序运行效率高且可移植性差)。

真题6:递归子程序分析属于(自上而下)的分析法。


词法分析:是编译过程的第一个阶段。这个阶段的任务从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。(检查 int 这个单词是不是正确的。)

语法分析:是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.(检查 int a = 5; 这个句子对不对)

语义分析:是编译过程的一个逻辑阶段.语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。类型匹配、除法除数不为0等又分为静态语义错误(在编译阶段能够查找出来)和动态语义错误(只能在运行时发现)。 (上下文语句的含义对不对,比如不同类型的数据加减等)

中间代码和目标代码:中间代码是根据语义分析产生的,需要经过优化链接,最终生成可执行的目标代码。

引入中间代码的目的是进行与机器无关的代码优化处理。常用的中间代码有后缀式(逆波兰式)、三元式(三地址码)、四元式和树等形式

前缀表达式:+ab
中缀表达式:a+b
后缀表达式:ab+

主要掌握上述三种表达式即可,其实就是树的三种遍历,一般正常的表达式是中序遍历,即中缀表达式,根据其构造出树,再按题目要求求出前缀或后缀式
◆简单求法:后缀表达式是从左到右开始,先把表达式加上括号,再依次把运算符加到本层次的括号后面。

词法输入的是字符流;语法输入的是记号流;

语法分析阶段主要任务是对各条语句的结构进行合法性分析;若程序中的括号不配对,则会在语法分析阶段检查出错误。

考点17:死锁


真题1:某系统中有3个并发进程竞争资源R,每个进程都需要5个R,则至少有(13)个R,才能保证系统不会发生死锁。


当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁。

死锁资源计算(考点):系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为n * (R - 1)。其不发生死锁的最小资源数为 n * (R - 1) + 1。

在这里插入图片描述

在这里插入图片描述

R1 剩余:10 - (1 + 2 + 3 + 1 + 1) = 2

R2 剩余:5 - (1 + 1 + 1 + 1 + 1) = 0

R3剩余:3 - (1 + 0 + 0 + 1 + 0) = 1

27的答案为 D

为了安全,资源已经分配,需要满足进程对于资源的最大需求,R1 还剩余 2 个,还能满足 P2或P4或 P5 对于 R1资源的需求。R3还剩余1个,在 P2、P4、P5中还能满足P2或P4或P5.同时 R2已经没有剩余,P2、P4、P5中只有P5满足。

所以28的答案 A、C 排除。

所以先执行P5.

P5执行完成后,因为P5使用了2个 R1,1个R2,1个R3,所以此时还剩余资源位:

在这里插入图片描述

P5执行完后剩余:

R1 剩余:10 - (1 + 2 + 3 + 1 + 0) = 4

R2 剩余:5 - (1 + 1 + 1 + 1 + 0) = 1

R3剩余:3 - (1 + 0 + 0 + 1 + 0) = 1

此时剩余可以满足只能为 P2,所以此时答案就可以锁定为 B 了。

1、进程

进程基础的状态是下左图终端中的三态图。需要熟练掌握左下图中的进程三态之间的转换。

在这里插入图片描述

运行态:表示当前进程正在运行,正在运行的进程需要CPU

就绪态:就是除了CPU之外,什么都有了,就等待被CPU调度、执行了。

阻塞态:没有CPU,也没有其他条件、数据(比如一般为没有外设,缺少外设会阻塞,等待外设传输数据)

运行过程中,此时需要读取外设(比如硬盘中的)的数据,则CPU不会等待,CPU会抛弃进程,进程自己去读取数据,此时进程没了CPU,也在等待读取数据,所以就变为了阻塞状态。

而外设的数据的进程完成之后,数据有了,还缺少CPU,就变为了就绪状态。

就绪状态有了 CPU,就又变为了运行状态,运行状态的时间片到了之后,CPU会执行其他进程,当前进程没了CPU但还没执行完(数据还在)则又会转为就绪状态。

在这里插入图片描述

2、进程资源图

用来表示进程和资源之间的分配和请求关系,如下图所示:

在这里插入图片描述

**P代表进程,R代表资源,**R方框中有几个圆球就表示了有几个这种资源,在上图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行。

阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如上图中的P2。

非阻塞节点:某进程**所请求的资源还有剩余,**可以分配给该进程继续运行。

当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态。

在这里插入图片描述

R1 、R2 资源分配完毕了,但凡请求 R1、R2资源的进程都会阻塞;

R3资源只分配了1个,还剩1个,因此但凡请求 R3 资源的进程都不会阻塞了;

R2 分配完了之后,P1还需要请求1个R2的资源,所以P1是阻塞的;P2 同理。

所以 P1、P2是阻塞节点、P3是非阻塞节点

P1、P2是阻塞的所以没法执行,如果要优化,应该 P3先执行,执行完了,即可以释放出资源了,释放出的资源,可以满足 P1、P2的执行。

所以是可以化简的,简化顺序为P3-》P1-》P2,同理P3-》P2-》P1也可以。

在这里插入图片描述

考点18:分页存储、页号

在这里插入图片描述

这样的题首先要确定页号和页内地址是多少位。

4K = 212,所以页内地址 为 12 位,超过 12位的就是页号了。

而 1D16H 为16进制,16进制的数字,每个数字可以用4个二进制来表示,所以 D16 就是 12 位二进制,正好是页内地址的位数。

如果逻辑地址是十进制的话,则同样需要转换为二进制,根据页内地址的位数,除去12位,则保留的前面的部分就是页号。

所以除去 D16,1 就是页号了。

而页号1指向的就是物理块号3,所以物理地址十六进制就是 3D16H.

在这里插入图片描述

页号为1的页帧号为空,表明1不在内存。

上面题目根据页面置换算法中的(最近最少使用算法可以解决)。即先看状态位,是否不在内存,然后再看访问位,是否未访问过,然后再看修改位,是否未修改后。不在内存、未访问过、未修改过 优先置换(淘汰)。

所以答案为 0、2、3中的 3.答案为 D。

考点19:进程同步与互斥、PV操作


真题1:假设系统有n(n>=5)个进程共享资源R且资源R的可用数为5。若采用PV操作,则相应的信号量S的取值范围为(-(n-5)~5)

真题2:在支持多线程的操作系统中,假设进程P创建了线程T1、T2和T3,那么以下叙述中错误的是:(B)

A、线程T1、T2和T3可以共享进程P的代码

B、线程T1、T2可以共享P进程中T3的栈指针

C、线程T1、T2和T3可以共享进程P打开的文件

D、线程T1、T2和T3可以共享进程P的全局变量


P操作:申请资源

V操作:释放资源

在这里插入图片描述

前驱图中的每一个箭头都是一个信号量。

P1执行完了之后,P2、P3才能执行,所以P1执行完了之后,一定释放了 P2、P3相关的信号量。即 V(S1)、V(S2),而 P2 执行的正是 P(S1),所以 P1 -> P2 的箭头的信号量就是 S1,则 P1-> P3 的箭头的信号量就是 S2.

在这里插入图片描述

所以此时 26 的填空即选 C。所以 b 就是 V(S3)。

所以 P2->P4的箭头的信号量就是 S3。P2执行完就需要释放一个信号量,就是 V(S3).

在这里插入图片描述

P3执行需要请求资源,由上箭头可知,是 P(S2),所以c是P(S2).

P3执行完成后,需要释放一个信号量,假设是 S4,则 P4->P5的箭头就是 S5 信号量。

在这里插入图片描述

如果 P3->P5就是S4,P4->P5就是S5,那么 P3执行完了之后就会释放S4,即d为 V(S4),P4执行完了就是释放S5,即e为V(S5),所以P5执行就要请求S4、S5,所以f为P(S4)P(S5)。

经验证,答案正确。

所以:

26答案为 C

27答案为 B

28答案为 B

在这里插入图片描述

根据上题中的 Process P2、Process P3、Process P4、Process P5 中的 P、V 操作,可以将前驱图的箭头代表的信号量推知如下:

在这里插入图片描述

所以 P1 执行完,就是 V(S1)V(S2),即①为 V(S1)V(S2)

P2执行就需要 P(S1),即②为P(S1)

所以①和②答案为 C

P3 的执行就需要 P(S2)P(S3),即③为P(S3)

P3执行完后就需要释放,所以是 V(S5)V(S6),即④为V(S5)V(S6)

所以③和④答案为 B

P4执行完后就需要释放,所以是V(S7),所以⑤为V(S7)

P6 执行就需要请求 S7、S8,所以⑥为P(S7)P(S8)

所以⑤和⑥的答案为 D

考点20:软件过程模型:瀑布、螺旋、V模型、原型、增量、喷泉、构件


真题1:以下关于螺旋模型的叙述中,不正确的是:(D)

A、它是风险驱动的,要求开发人员必须具有丰富的风险评估知识和经验

B、它可以降低过多测试互殴测试不足带来的风险

C、它包含维护周期,因此维护和开发之间没有本质区别

D、它不适于大型软件开发

真题2:关于快速原型模型优点的叙述中,不正确的是(B)

A、有助于满足用户的真实需求

B、适用于大型软件系统的开发

C、开发人员快速开发出原型系统,因此可以加速软件开发过程,节约开发成本

D、原型系统已经通过与用户的交互得到验证,因此对应的规格说明文档能正确描述用户需求

真题3:关于增量模型的优点,不正确的是(D)

A、能够在较短时间提交一个可用的产品系统

B、可以尽早让用户熟悉系统

C、优先级高的功能首先交付,这些功能将接受更多的测试

D、系统的设计更加容易

真题4:喷泉模型是一种适合于面向(对象)开发方法的软件过程模型。该过程模型的特点不包括(D)

A、以用户需求为动力 B、支持软件重用 C、具有迭代性 D、开发活动之间存在明显的界限

真题5:关于螺旋模型,下列陈述中不正确的是:D、C

A、将风险分析加入到瀑布模型中

B、将开发过程划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符

C、适合于大规模、复杂且具有高风险的项目

D、可以快速的提供一个初始版本让用户测试

A、支持用户需求的动态变化

B、要求开发人员具有风险分析能力

C、基于该模型进行软件开发,开发成本低

D、过多的迭代次数可能会增加开发成本,进而延迟提交时间


1、瀑布模型:适用于 需求要明确

在这里插入图片描述

2、V 模型:适用于 重视每个阶段的测试,需求明确、需求变更不频繁

◆V模型从整体上看起来,就是一个V字型的结构,由左右两边组成。左边的下画线分别代表了需求分析、概要设计、详细设计、编码。右边的上画线代表了单元测试、集成测试、系统测试与验收测试。V模型的特点如下:
(1)单元测试的主要目的是针对编码过程中可能存在的各种错误;
(2)集成测试的主要目的是针对详细设计中可能存在的问题,
(3)系统测试主要针对概要设计,检查系统作为一个整体是否有效地得到运行;
(4)验收测试通常由业务专家或者用户进行,以确认产品能真正符合用户业务上的需要。
(5)V模型用于需求明确和需求变更不频繁的情形

在这里插入图片描述

需求分析对应验收测试:验需

概要设计对应系统测试:系概

详细设计对应集成测试:集详

编码和实现对应单元测试:单编

3、螺旋模型:适用于 大型、强调风险,需求不明确,快速原型,不断迭代

◆螺旋模型是一个演化软件过程模型,将原型实现的迭代特征与线性顺序(瀑布)模型中控制的和系统化的方面结合起来。在螺旋模型中,软件开发是一系列的增量发布。
◆开发过程具有**周期性重复的螺旋线状。**四个象限分别标志每个周期所划分的四阶段:制订计划、风险分析、实施工程和客户评估。螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的系统。

在这里插入图片描述

螺旋:有不对的可以返回去修改。

4、原型化(快速原型)模型:适用于需求不明确,不适合大型软件系统

◆原型化模型**第一步就是创建一个快速原型(比如用 PS、PPT、蓝湖、Figma 画一个界面来确认是否满足),**能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。

5、增量模型:优先核心,分期增量(一期、二期等)

◆增量模型:首先开发核心模块功能,而后与用户确认,之后再开发次核心模
块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发,优先级最高的服务最先交付。
◆特点:但由于并不是从系统整体角度规划各个模块,因此不利于模块划分。
难点在于如何将客户需求划分为多个增量。 与原型不同的是增量型的每一次增量版本都可作为独立可操作的作品,而原型的构造一般是为了演示。

在这里插入图片描述

6、喷泉模型:面向对象

◆喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。使开发过程具有迭代性和无间隙性。

7、基于构件的开发模型CBSD:构件复用、快速(比如可拖拽的低代码平台等、可拖拽的图形等)

◆基于构件的开发模型CBSD:利用预先包装的构件来构造应用系统。构件可以
是组织内部开发的构件,也可以是商品化成品软件构件。
特点是
增强了复用性
,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本。

8、形式化方法模型:数学

◆形式化方法模型:建立在严格数学基础上的一种软件开发方法,主要活动是
生成计算机软件形式化的数学规格说明。

考点21、内聚、耦合


在这里插入图片描述

答案为:A、D

真题2:将结构体传递给模块,模块之间的耦合类型为(标记耦合)

真题3:多个功能必须以特定的次序执行,则该模块的内聚类型为(过程)内聚。

真题4:如模块A和模块B通过外部变量来交换输入、输出信息,则这两个模块的耦合类型是(公共)耦合

真题5:模块A通过非正常入口转入模块B内部,则这两个模块之间是(内容)耦合。

真题6:若某模块内所有处理元素都在同一个数据结构上操作,则该模块的内聚类型为(通信)


耦合:模块与模块之间,模块与模块之间的关联程度越低,越好。

内聚:模块内部的功能点要关联程度越紧密越好,因为这些功能点是共同支撑这个模块的。

内聚分类定义记忆关键字
偶然内聚一个模块内的各处理元素之间没有任何联系无直接关系
逻辑内聚模块内执行若干个逻辑上相似的功能,通过参数确定该模型完成哪一个功能逻辑相似、参数决定
时间内聚把需要同时执行的动作组合在一起形成的模块同时执行
过程内聚一个模块完成多个任务,这些任务必须按指定过程执行指定的过程顺序
通信内聚模块内的所有处理元素都在同一个数据结构上操作相同数据结构、相同输入输出
顺序内聚密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入顺序执行、输入为输出
功能内聚最强的内聚,模块内所有元素共同作用完成一个功能共同作用,缺一不可
聚合分类定义记忆关键字
无直接耦合两个模块没有直接关系无直接关系
数据耦合传递的是简单的数据值,值传递传递数据值调用
标记耦合传递数据结构传递数据结构
控制耦合传递控制变量,根据变量值有选择的执行某一功能控制变量、选择执行某一功能
外部耦合通过软件之外的环境联合(如I/O将模块耦合到特定的设备、通信协议)软件外部环境
公共耦合通过外部的公共数据相互作用公共数据结构
内容耦合一个模块使用另一个模块的内部数据或通过非正常入口转入另一模块内部模块内部关联

考点22、敏捷开发:结对编程、自适应、水晶、特征驱动、SCRUM、极限编程


真题1:以下关于极限编程XP中结对编程的叙述中,不正确的是(编码速度更快)。

真题2:极限编程的十二个最佳实践不包括(精心设计)。

十二个包括:计划游戏、小的发布、系统隐喻、简单设计、测试驱动、重构、结对编程、集体所有权、持续集成、每周工作40小时、现场客户和编码标准。

真题3:敏捷开发方法 Scrum 步骤不包括(B)

A、Product Backlog B、 Refactoring C、Sprint Backlog D、Sprint


1、结对编程

◆结对编程:一个程序员开发,另一个程序在一旁观察审查代码,能够有效的提高代码质量,在开发同时对代码进行初步审查,共同对代码负责。

2、自适应开发:适应性、提供根本基础

◆自适应开发:强调开发方法的适应性(Adaptive)。不像其他方法那样有很多
具体的实践做法,它更侧重为软件的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。

3、水晶方法:不同项目不同策略

◆水晶方法:每一个不同的项目都需要一套不同的策略、约定和方法论。

4、特征驱动开发:模型驱动,中小型软件、需求经常变动

◆特性驱动开发:是一套针对中小型软件开发项目的开发模式。是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。

5、SCRUM:迭代增量、30天一次冲刺,小型发布

◆并列争球法SCRUM:是一种迭代的增量化过程,把每段时间(30天)一次的
迭代称为一个“冲刺”
,并按需求的优先级别来实现产品,多个自组织和自治
的小组并行地递增实现产品。

6、极限编程:测试先行,沟通、简明、反馈、勇气

◆极限编程XP:核心是**沟通、简明、反馈和勇气。因为知道计划永远赶不上变
化,XP
无需开发人员在软件开始初期做出很多的文档。XP提倡测试先行,**为了将以后出现bug的几率降到最低。

考点23:软件开发周期:需求、设计、系统实施、运行和维护

1、软件需求


真题1:在软件开发过程中,系统测试阶段的测试目标来自于(需求分析)阶段。

真题2:信息系统的文档是开发人员与用户交流的工具。在系统规划和系统分析阶段,用户与系统分析人员交流所使用的文档不包括(D)

A、可行性研究包括 B、总体规划报告 C、项目开发计划 D、用户使用手册


软件需求:是指用户对系统在功能、行为、性能、设计约束等方面的期望。
是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。

分为需求开发需求管理两大过程,如下所示:

在这里插入图片描述

1、需求获取

常见的需求获取法:

用户访谈:良好的灵活性及较宽广的范围,但获取需求时信息量大、记录困难等。

问卷调查:

采样:基于数理统计原理。

情节串联板:通过一系列图片讲故事。

联合需求计划:通过联合各个关键用户代表、系统分析师、开发团队代表一起,通过有组织的会议来讨论需求。

需求记录技术:任务卡片、场景说明、用户故事等。

2、需求分析:建立了系统的逻辑模型

◆需求分析:一个好的需求应该具有无二义性、完整性、一致性、可测试性
确定性、可跟踪性、正确性、必要性等特性,因此,需要分析人员把杂乱无章的用户要求和期望转化为用户需求。

需求分析的任务

(1)绘制系统上下文范围关系图:即数据流图
(2)创建用户界面原型
(3)分析需求的可行性
(4)确定需求的优先级
(5)为需求建立模型
(6)创建数据字典
(7)使用QFD(质量功能部署)

1、结构化的需求分析

结构化特点:自顶向下,逐步分解,面向数据。

三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(E-R图)以及数据字典。

在这里插入图片描述

2、数据流图

◆数据流图描述数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模

3、需求定义:定义软件需求规格说明书

需求定义(软件需求规格说明书SRS):是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之
成为**整个开发工作的基础。**SRS是软件开发过程中最重要的文档之一,对于任何规模和性质的软件项目都不应该缺少。

4、需求验证

◆需求验证:也称为需求确认,目的是与用户一起确认需求无误,对需求规格
说明书SAS进行评审和测试,包括两个步骤:
需求评审:正式评审和非正式评审。
需求测试:设计概念测试用例。

◆需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线,不可以再随意更新,如果需要更改必须走需求变更流程。

5、需求管理

◆定义需求基线:通过了评审的需求说明书就是需求基线,下次如果需要变更
需求,就需要按照流程来一步步进行。需求的流程及状态如下图所示:

在这里插入图片描述

需求变更和风险:
主要关心需求变更过程中的需求风险管理,带有风险的做法有:无足够用户参与、忽略了用户分类、用户需求的不断增加、模棱两可的需求、不必要的特性、过于精简的SRS、不准确的估算。

变更产生的原因:外部环境的变化、需求和设计做的不够完整、新技术的出现、公司机构重组造成业务流程的变化。

变更控制委员会CCB:也称为配置控制委员会,其任务是对建议的配置项变更做出评价、审批,以及监督已经批准变更的实施。

在这里插入图片描述

需求跟踪:

双向跟踪,两个层次,如下图所示:

在这里插入图片描述

◆正向跟踪表示用户原始需求是否都实现了,反向跟踪表示软件实现的是否都是用户要求的,不多不少,可以用原始需求和用例表格(需求跟踪矩阵)来表示:

若原始需求和用例有对应,则在对应栏打对号,若某行都没有对号,表明原始需求未实现,正向跟踪发现问题;若某列都没有对号,表明有多余功能用例,软件实现了多余功能,反向跟踪发现问题。

在这里插入图片描述

A: 包含6个关键过程域

B:属于需求属性

C: 顺序不对,应该是先问题分析和变更描述,然后变更分析和成本计算,然后是变更实现。(可以少步骤,但步骤顺序不能改变,否则就是错误的)

D:正确

答案为:D。

2、系统设计:实现物理模型,该怎么做。

1、流程表示工具(考点)

程序流程图(Program Flow Diagram,PFD)用一些图框表示各种操作,它独立于任何一种程序设计语言,比较直观、清晰,易于学习掌握。任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套而成。

IPO图也是流程描述工具,用来描述构成软件系统的每个模块的输入、输出和数据加工。

N-S图,又叫盒图容易表示嵌套和层次关系,并具有强烈的结构化特征。但是当问题很复杂时,N-S图可能很大,因此不适合于复杂程序的设计。

问题分析图(PAD)是一种支持结构化程序设计的图形工具。PAD具有清晰的逻
辑结构、标准化的图形等优点,更重要的是,它引导设计人员使用结构化程序
设计方法,从而提高程序的质量。

◆业务流程重组BPR
BPR是对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以
用诸如成本、质量、服务和速度等方面的业绩来衡量的显著性的成就。BPR设计
原则、系统规划和步骤如下图所示:

在这里插入图片描述

◆业务流程管理BPM
BPM是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织
业务绩效为目的的系统化方法。

BPM与BPR管理思想最根本的不同就在于流程管理并不要求对所有的流程进行再造。构造卓越的业务流程并不是流程再造,而是根据现有流程的具体情况,对流程进行规范化的设计

流程管理包含三个层面:规范流程、优化流程和再造流程

在这里插入图片描述

IPO:流程

N-S:盒图、嵌套和层次,不适合复杂

PAD:结构化程序设计

所以 答案为 B:任何复杂的程序流程图都应该由顺序、选择、循环结构构成

BPR 是对业务流程的根本性改造;BPR 过程以流程为中心。

所以答案为:A、A

BPR 以流程为中心,以人为本,以客户为导向。

2、系统设计


真题1:软件详细设计阶段的主要任务不包括(C)

A、数据结构设计 B、算法设计 C、模块之间的接口设计 D、数据库的物理设计


◆系统设计主要目的:为系统制定蓝图,在各种技术和实施方法中权衡利弊精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方法。
◆系统设计方法: 结构化设计方法,面向对象设计方法。
◆系统设计的主要内容: 概要设计、详细设计
◆概要设计基本任务:又称为**系统总体结构设计,**是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
◆详细设计的基本任务:模块内详细算法设计、模块内数据结构设计、数据库的物理设计、其他设计(代码、输入/输出格式、用户界面)、编写详细设计说明书、评审。

概要设计:整个系统划分的模块及模块间的关系、模块之间的接口设计。

详细设计:模块内的详细算法、数据结构、数据库的物理设计、详细设计说明书等。

系统设计基本原理:
抽象化;
自顶而下,逐步求精;
信息隐蔽;
模块独立(高内聚,低耦合)。

系统设计原则:
保持模块的大小适中;
尽可能减少调用的深度;
多扇入,少扇出;
单入口,单出口;
模块的作用域应该在模块之内;
功能应该是可预测的。

在这里插入图片描述

原则是:多扇入,少扇出。

扇出就是调用别人的数量;扇入就是别人调用你,扇入高,表示别人调用你调用的越多,表示你的价值越大,表示你的复用诚笃越高。

所以答案是 D。

扇出过大,就不应该再分解了,而是应该合并。过小是合理的,是我们追求的。

3、人机界面设计

人机界面设计的三大黄金原则:

1、置于用户控制之下:

  • 以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式
  • 提供灵活的交互
  • 允许用户交互可以被中断和撇消
  • 当技能级别增加时可以使交互流水化并允许定制交互
  • 使用户隔离内部技术细节
  • 设计应允许用户和出现在屏幕上的对象直接交互

2、减少用户的记忆负担:

  • 保持界面的一致性
  • 减少对短期记忆的要求
  • 建立有意义的缺省
  • 定义直觉性的捷径
  • 界面的视觉布局应该基于真实世界的隐喻
  • 以不断进展的方式揭示信息

3、保持界面的一致性:

  • 允许用户将当前任务放入有意义的语境
  • 在应用系列内保持一致性
  • 如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,否则不要改变它

4、系统实施

1、测试

◆系统测试是为了发现错误而执行程序的过程,成功的测试是发现了至今尚未
发现的错误的测试。

◆软件测试方法可分为静态测试和动态测试。
静态测试:指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测,包括对文档的静态测试和对代码的静态测试对文档的静态测试主要以检查单的形式进行,而对代码的静态测试,包括桌前检查、代码审查、代码走查的方式。使用这种方法能够有效地发现30%-70%的逻辑设计和编码错误。

代码审查和代码走查的本质都是对代码逻辑的检查。

代码审查:由技术人员、技术专家一起拉个会进行对你的代码的审查。

代码走查:让程序员基于测试用例 模拟计算机执行你的代码,比如 a = 0;经过 a = a + 10;则 if a = 10 就会走 是的分支,否则就走不是的分支等。程序员根据这个实例进行走查,看看实际上会走到哪里去。

◆动态测试:指在计算机上实际运行程序进行软件测试,一般采用白盒测试和
黑盒测试方法。
黑盒测试法:功能性测试,不了解软件代码结构,根据功能设计用例,测试软
件功能。
白盒测试法:结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例
覆盖。

2、测试阶段

某财务系统的一个组件中,某个变量没有正确初始化,(A)最可能发现该错误。

A、单元测试 B、集成测试 C、接受测试 D、安装测试


(1)单元测试:也称为模块测试,测试的对象是可独立编译或汇编的程序模块、
软件构件或OO软件中的类(统称为模块),测试依据是软件详细设计说明书。

(2)集成测试:目的是检查模块之间,以及模块和已集成的软件之间的接口关
,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档。

(3)确认测试:主要用于**验证软件的功能、性能和其他特性是否与用户需求一致。**根据用户的参与程度,通常包括以下类型:

内部确认测试:主要由软件开发组织内部按照SRS进行测试。

Alpha测试:用户在开发环境下进行测试。

Beta测试 :用户在实际使用环境下进行测试,通过该测试后,产品才能交付用户。

验收测试:针对软件需求规格说明书SRS,在交付前以用户为主进行的测试。

单元测试就是针对单个的模块进行测试,依据是软件详细设计说明书。

集成测试就是针对模块间进行测试,依据是软件概要设计文档。

确认测试就是针对整个系统的功能、性能等,依据是需求文档。

(4)系统测试:测试对象是完整的、集成的计算机系统;测试依据是用户需求或开发合同
(5)配置项测试:测试对象是软件配置项,测试目的是检验软件配置项与SRS的一致性。测试的依据是软件需求规格说明书SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。
(6)回归测试:测试目的是
测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。

测试的顺序为:单元测试->集成测试->系统测试->确认测试。

3、测试策略:自底向上驱动程序、自顶向下桩程序

◆自底向上:从最底层模块开始测试,需要编写驱动程序,而后开始逐一合并模块,最终完成整个系统的测试。优点是较早的验证了底层模块。
◆自顶向下:先测试整个系统,需要编写桩程序,而后逐步向下直至最后测试最底层模块。优点是较早的验证了系统的主要控制和判断点。(比如对接了第三方系统,不同的子系统需要进行联调,先对接第三方系统的接口,先调通,然后再测试自己系统内部的功能模块。)
◆三明治:既有自底向上也有自顶向下的测试方法,二者都包括。兼有二者的优点,缺点是测试工作量大。

4、调试

◆测试是发现错误,调试是找出错误的代码和原因。
◆调试需要确定错误的准确位置;确定问题的原因并设法改正;改正后要进行回归测试。
◆调试的方法有: 蛮力法、回溯法(从出错的地方开始,向回找)、原因排除法(找出所有可能的原因,逐一进行排除,具体包括演绎法、归纳法、二分法)

5、运行和维护

1、系统转换

遗留系统是指任何基本上不能进行修改和演化以满足新的变化了的业务需求的信息系统,它通常具有以下特点:

在这里插入图片描述

◆系统转换是指新系统开发完毕,投入运行,取代现有系统的过程,需要考虑多方面的问题,以实现与老系统的交接,有以下三种转换计划:

2、系统维护

真题1:

软件可维护性计算公式:

1/(1+MTTR),MTTR 表示平均故障修复时间

软件可靠性计算公式:

MTTF/(1+MTTF),MTTF 表示平均无故障时间

真题2:某搜索引擎交付后,开发人员修改了其中的索引方法,使得用户可以更快搜索到结果。这种修改属于(完善性)维护。

真题3:在ISO/IEC软件质量模型中,可移植性是指与软件可从某环境移到另一环境的能力有关的一组属性,其子特性不包括(B)

A、适应性 B、易测试性 C、易安装性 D、易替换性

真题4:软件交付给用户后进入维护阶段,根据维护具体内容的不同将维护分为不同的类型,其中“采用专用的程序模块对文件或数据中的记录进行增加、修改和删除等操作”的维护属于(数据维护)

真题5:系统可维护性是指维护人员理解、改正、改动和改进软件系统的难易成都,其评价指标不包括(D)

A、可理解性 B、可测试性 C、可修改性 D、一致性

真题6:在设计中实现可移植性设计的规则不包括(B)

A、将设备相关程序和设备无关程序分开设计

B、可使用特定环境的专用功能

C、采用平台无关的程序设计语言

D、不使用依赖于某一平台的类库


◆系统的可维护性可以定义为**维护人员理解、改正、改动和改进这个软件的难易程度,**其评价指标如下:
(1)**易分析性。**软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。

(2)**易改变性。**软件产品使指定的修改可以被实现的能力,实现包括编码、设计和文档的更改。

(3)**稳定性。**软件产品避免由于软件修改而造成意外结果的能力。

(4)**易测试性。**软件产品使已修改软件能被确认的能力。

(5)**维护性的依从性。**软件产品遵循与维护性相关的标准或约定的能力。

◆系统维护包括硬件维护、软件维护和数据维护,其中软件维护类型如下:

**正确性维护:**发现了bug而进行的修改。

**适应性维护:**由于外部环境发生了改变,被动进行的对软件的修改和升级。

**完善性维护:**基于用户主动对软件提出更多的需求,修改软件,增加更多的功能,使其比之前的软件功能、性能更高,更加完善。

**预防性维护:**对未来可能发生的bug进行预防性的修改。

3、系统评价

系统评价分类:立项评价、中期评价、结项评价。

考点24:黑盒测试、白盒测试、测试用例、覆盖测试

黑盒测试用例:将程序看做一个黑盒子,只知道输入输出,不知道内部代码由此设计出测试用例,分为下面几类:

​ ◆等价类划分:把所有的数据按照某种特性进行归类,而后在每类的数据里选取一个即可。等价类测试用例的设计原则:设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,,重复这一步,直到所有的有效等价类都被覆盖为止;设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
​ ◆边界值划分: 将每类的边界值作为测试用例,边界值一般为范围的两端值以及在此范围之外的与此范围间隔最小的两个值,如年龄范围为0-150,边界值头0,150,-1,151四个。
​ ◆错误推测:没有固定的方法,凭经验而言,来推测有可能产生问题的地方作为测试用例进行测试。
​ ◆因果图:由一个结果来反推原因的方法,具体结果具体分析,没有固定方法

等价类:比如 >90 的为 优;80-90的为良;60-80的为及格;<60 为 不及格。这就是四个等价类。测试时,只需要设计一个类中的一个数值是否通过测试、可以得到正确结果就可以了。比如 >90的,找个95去验证测试。而不是把>90的数字都去验证、测试下。

有效等价类:正确的等价类(输入)。比如上面的分数中,0-100的数值都可以看做是有效等价类。所以有效等价类要尽可能多的覆盖:比如设计一个输入为95的、82的、63的、40的输入,从而可以覆盖到四个等价类(>90、80-90、60-80、<60的)

无效等价类:错误的等价类(输入)。比如上面的分数中,输入-1、101等。仅覆盖一个尚未被覆盖的:比如一个研究生的录取条件为:本科来自211且考研分数大于300,假如这里输入了一个测试:(二本,267),首先二本不满足来自211,267不满足大于300,所以这个测试的输入既不满足学校的要求、也不满足分数的要求,一个都不满足,这就是一个错误的测试用例、错误的输入。因为它覆盖了两个无效等价类,这个时候就不知道他到底是本科学校的问题还是因为分数的问题。而正确的无效等价类应该只覆盖一个:比如 (二本,350),这样就能知道他是因为学校的原因没有通过的,可以找到不通过的唯一原因。

盒测试用例:知道程序的代码逻辑,按照程序的代码语句,来设计覆盖代码分#支的测试用例,覆盖级别从低至高分为下面几种:

(1)语句覆盖SC:逻辑代码中的所有语句都要被执行一遍,覆盖层级最低,因为执行了所有的语句,不代表执行了所有的条件判断。

只要每个语句都执行过一次即可。

(2)判定覆盖DC(也叫分支覆盖):逻辑代码中的所有判断语句的条件的真假分支都要覆盖一次。

通过若干个测试,使得最终只要每个判断语句的真、假都执行过一次即可

在这里插入图片描述

(3)条件覆盖CC:针对每一个判断条件内的每一个独立条件都要执行一遍真和假。

通过若干个测试,使得最终要每个判断语句中的每个判断条件的真和假都覆盖了。

比如 a 的 (y > 1) && (z == 0) 这个判断语句包含了两个判断条件:(y > 1) 和 (z == 0)。

第一个用例:X = 1,Y = 2,Z = 0,

满足了 y > 1 (真)、z == 0(真)

第二个用例:X = 2,Y = 1,Z = 1,

满足了 y > 1 (假),z == 0 (假)

同理 也满足了 b 的每个判断条件。

使得上面判断语句中的每个判断条件都执行过 真 和 假。

(4)条件判断组合覆盖CDC:同时满足判定覆盖和条件覆盖。

在这里插入图片描述

(5)路径覆盖:逻辑代码中的所有可行路径都覆盖了,覆盖层级最高。

所有可行路径。路径覆盖法往往能比语句覆盖法发现更多的错误。

在这里插入图片描述

在这里插入图片描述

语句:只要所有语句都走一遍即可

判定:只要判断语句的真、假都走一遍即可

条件:只要判断语句中的每个判断条件的真、假都走一遍即可

路径:所有路径

解题:

首先①(x=0,y=3),满足了 x = 0 && y > 2,使得x = 0、y > 2 都为真;

​ 第一个判断语句就直接走真,不走向右侧第二个条件语句了。

其次②(x=1,y=2),满足了 x = 0 && y > 2,使得 x = 0 为 假,y > 2 为假

​ 同时 x < 1 || y = 1 中,使得 x < 1 为 假,y = 1 也为假

所以这里就不满足条件覆盖以及判定覆盖了。

① 走的路径为:第一个判断语句、语句A

②走的路径为:第一个判断语句、第二个判断语句、语句B

所以这里的所有语句都走了一遍,但并不是所有路径都走了。

所以35的答案为 A

③(x=-1,y=2) 走的路径为:第一个判断语句、第二个判断语句、结束

因此 ①②③走完了所有路径,因此满足路径覆盖。

所以36答案为 D。

考点25:软件度量:McCabe


真题1:

在这里插入图片描述

答案:B和D


McCabe度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n+2。 边数 - 顶点数 + 2
注意m和n代表的含义不能混淆,可以用一个最简单的环路来做特殊值记忆此公式,另外,针对一个程序流程图,每一个分支边(连线)就是一条有向边,每一条语句(语句框)就是一个顶点。

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碳学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值