TYUT太原理工大学2022软工导论大题汇总

设计题和分析题都差不多,考点也类似,无非就是“1复杂度、2测试、6图”:

计算环形复杂度

黑盒测试、白盒测试

数据流图、软件结构图、PAD图、盒图、用例图、类图


“1复杂度”

一、计算流图的环形复杂度

*流图的定义*

流图(也称程序图,程序控制流图),是“退化了的”程序流程图(程序流程图就是高中学的那个)

*解题步骤*

考试时,如果他给的是PDL(即伪码),我们要先把伪码转换为程序流程图(这个相信大家都会),然后我们需要将程序流程图映射为流图

*映射流图的方法*

程序流程图映射为流图的方法如下:

(1)将菱形、矩形换成圈(圈即节点)

(2)单入单出的节点要合并成一个节点

(3)将无菱形、矩形,但是有分支的线转换成一个节点

(4)按程序流程图将各节点连线,注意区分输入输出

*计算流图的环形复杂度*

   3种方法:
(1)流图中的区域数等于环形复杂度。 
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。 
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

         没学会,点这里:https://jingyan.baidu.com/article/9faa7231621806073c28cbdd.html


2测试

一、黑盒测试

*黑盒测试分类*

黑盒测试包含等价类划分、边界值分析、错误推测

考边界值分析时,你只需要写出:输入、预期的输出即可(输入的数据要分刚好与边界值>、<、=三类);错误推测顶多考小题

*黑盒测试之等价划分*

方法

(1)写等价类划分表

表中要包含“输入条件”、“有效等价类”、“无效等价类”

输入条件题目会告诉你,有效等价类要根据题目要求划分,无效等价类直接写有效等价类的相反词即可

(2)设计测试用例表

表中包含“测试数据”、“期望结果”、“覆盖范围”

对于有效等价类,一个测试用例可以覆盖多个有效等价类

对于无效等价类,一个测试用例只可以覆盖一个无效等价类,且测试用例不可重复

*例题*

 以下是去年的一道真题,老师上课讲过


二、白盒测试

白盒测试咱们只讲一下逻辑覆盖,至于控制结构测试盲猜不考

我们针对书上的例子来看

*语句覆盖(往年考过)*

要求:每个语句至少执行一次,意思就是测试路径要走遍所有菱形和矩形

例:A=2,B=0,X=4 执行路径为sacbed

*判定覆盖*

要求:不仅测试路径要走遍所有菱形和矩形,而且要走遍所有菱形的所有分支

例:(1)A=3,B=0,X=3 执行路径为sacbd

       (2)A=2,B=1,X=1 执行路径为sabed

*条件覆盖*

要求:不仅测试路径要走遍所有菱形和矩形,而且菱形中的中的每个条件要取到各种可能的结果

即:a菱形中的条件要出现A>1,A<=1,B=0,B!=0

       b菱形中的条件要出现A=2,A!=2,X>1,X<=1

例:(1)A=2,B=0,X=4 执行路径为 sacbed

       (2)A=1,B=1,X=1 执行路径为 sabd

*判定/条件覆盖*

要求:同时满足判定覆盖、条件覆盖

例:(1)A=2,B=0,X=4 执行路径为 sacbed

       (2)A=1,B=1,X=1 执行路径为 sabd

*条件组合覆盖(往年考过)*

 要求:每个菱形中的条件的各种可能组合都出现至少一次

   上题共覆盖8种组合条件:

     ​   

例:(1) 输入:A=2,B=0,X=4   预计输出:略(考试要写)

       (2) 输入:A=2,B=1,X=1   预计输出:略(考试要写)

       (3) 输入:A=1,B=0,X=2   预计输出:略(考试要写)

       (4) 输入:A=1,B=1,X=1   预计输出:略(考试要写)

往年标准答案:


“6图”

一、盒图(N-S)

*盒图必背*

*解题步骤*

(1)根据算法画出程序流程图(题目没要求也可以不画)

(2)根据自己的习惯选择是否添加“附加的标志变量flag”

(3)根据盒图的基本符号和程序流程图画盒图

*例题*

 根据以下算法绘制盒图(N-S图)

max = a[1];

for ( i = 2 ; i <= n ; i++ )

    if ( max < a[i] )

        max = a[i]

 解:

在for循环里 for(a;b;c)
{循环体}
执行顺序:b为真,执行循环体,再执行c。

所以,

*更多例题*
N-S图、PAD图(例题)_Jia_plus的博客-CSDN博客_pad图https://blog.csdn.net/tango_wolf/article/details/116191348?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165491834716781435446377%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165491834716781435446377&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-116191348-null-null.142%5Ev13%5Epc_search_result_control_group,157%5Ev14%5Enew_3&utm_term=%E7%9B%92%E5%9B%BE%E4%BE%8B%E9%A2%98&spm=1018.2226.3001.4187


二、PAD图

*运行原则*

(1)PAD图,也很好理解,大家把下面的图背下来,做几道题熟悉一下就可以了

(2)要记住PAD运行的原则:自上而下,自左向右,遍历所有节点

注:图中最左面的竖线是程序的主线,即第一层结构,每增加一个层次,图形向右扩展一条竖线 

*必背符号* 

*例题*
N-S图、PAD图(例题)_Jia_plus的博客-CSDN博客_pad图https://blog.csdn.net/tango_wolf/article/details/116191348?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165491834716781435446377%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165491834716781435446377&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-116191348-null-null.142%5Ev13%5Epc_search_result_control_group,157%5Ev14%5Enew_3&utm_term=%E7%9B%92%E5%9B%BE%E4%BE%8B%E9%A2%98&spm=1018.2226.3001.4187


三、数据流图(DFD)

*简介*

(1)先简单了解一下他的概念:数据流图是描绘信息流数据输入移动到输出的过程中所经受的变换
(2)在数据流图中有四要素:源点终点数据流数据存储处理

*分类*

数据流图,根据层级分为顶层数据流图、中层数据流图和底层数据流图。除顶层数据流图外,其他数据流图从零开始编号。

*必背符号*

*画图步骤*

(1)从题目中提取信息,找出源点终点,数据流,数据存储,处理,并归类

(2)画顶层数据流图

顶层数据流图只含有一个加工表示整个系统;输出数据流和输入数据流为系统的输入数据和输出数据,表明系统的范围

(3)画第0层数据流图

 (4)画第1层数据流图

 

画数据流图,博主没有好的办法,只能说多做多练,熟能生巧


四、软件结构图

*画图原则*

(1)软件结构图考的就是把数据流图(DFD)转换成软件结构图

(2)DFD可分为事务流和变换流,一般来说,所有的DFD都可以做为变换流,但当有明显的处理中心时,可以做为事务流来做

(3)结构图中,一个方框代表一个模块,框内注明模块的名字或主要功能;方框间的箭头和直线表示模块的调用关系;空心圆尾部箭头表示传递的是数据,实心圆尾部箭头表示传递的是控制信息。

(4)我们在划分DFD图时要用两条虚线将DFD图划分为输入流、变换中心、输出流,其中输入流、输出流的边界划分与设计人员对他们的解释有关,所以不同设计人员设定的输入输出流可能不同

*画图步骤*

(1)划分DFD图为输入流、变换中心、输出流

(2)完成“第一级分解”(不会没事,下面有例题,一看就会)

(3)完成“第二级分解”

*初阶例题*

*进阶例题* 


五、用例图

*用例图元素*

 用例图的中心思想就是:系统应该为每个用户做什么

画用例图需要包含:

1、系统(方框)

2、行为者(人形符号)

3、用例(椭圆)

如:

*用例关系*

(1)包含——包含关系指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。在UML中,包含关系是通过带箭头的虚线段加<>字样来表示,箭头由基础用例(Base)指向被包含用例(Inclusion)。

(2)扩展——在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例(Extension),原有的用例叫做基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。一个基础用例可以拥有一个或者多个扩展用例

(3)泛化——在用例的泛化关系中,子用例继承了父用例所有的结构、行为和关系,子用例是父用例的一种特殊形式,用例的泛化关系通过一个三角箭头从子用例指向父用例来表示。

3种关系的箭头指向都是:内容、功能多的——>内容、功能少的 

*例题*
UML 新(第三章 用例和用例图练习题及参考答案) - 360文库https://wenku.so.com/d/44b0092c219da66e386676c286fd7721

 他给出的例题都没加方框,咱们考试加上


六、类图

*定义类*

 我们直接用一个图来解释类图中类的定义

*类之间的关系*

书上只讲了5种关系:关联、聚集、继承(泛化)、依赖、细化。(考试只考关联和泛化)

(1)关联:只要两个类能扯上关系,我们就说他有关联关系(用直线表示)

        如:作家使用计算机

                

(2)聚集:只要类与类之间是整体与部分关系,即包含关系,我们就说他有聚集关系

                 (用菱形箭头表示)

        1>共享聚集:如果*在“大的一边”,即箭头顶头,则为共享聚集(用空心菱形箭头表示)

          

        2>组合聚集:如果*在“小的一边”,即箭头末尾,则为组合聚集(用实心菱形箭头表示)

          

(3)继承(泛化):咱们都学过java,因该懂继承,这就不说了(用三角箭头表示)

         1>普通泛化:(用空心三角箭头表示)

                

         2>受限泛化:略

*考试题型*

 考试的时候咱们大致要画这么一个图:

猜你喜欢

转载自blog.csdn.net/m0_55298718/article/details/125208673
今日推荐