大佬勿看首次软考暂告一段落,记录一波备考经历,下次(不)再来!!(附PV操作和数据流图解析)

Posted 安之ccy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大佬勿看首次软考暂告一段落,记录一波备考经历,下次(不)再来!!(附PV操作和数据流图解析)相关的知识,希望对你有一定的参考价值。

前言

      5月29日,三舞订婚了,我的首次软考经历也结束了,这个日期,在心里越久就越觉得特别,总觉得需要点仪式感去纪念,于是有了这篇文章~ 此处回顾一下备考,希望能督促自己坚持学习 ( •̀ ω •́ )✧

开篇

参考书

官方指定参考书有三本:

  • 全面总结知识点,特别厚一本;
  • 《32小时通关》,里面是考点提炼+简单练习+近几年考卷;
  • 《冲刺》,里面是考点的强化练习和解答

考试基本信息

      我报名的考试一共有两科,上午下午各考一科:
       ——上午基础知识题,均为选择题,一空一分,共75分;
       ——下午应用题,均为大题,每题15分,4道必做题,还有两道二选一,一共75分;

个人计划

时间方面

      由于我开始准备考试的时候,离考试大概20天,一条条看知识点再做题,时间不够,而且我也想看看自己的底子(万一没复习完/遇到不会做的,看看自己蒙题能力哈哈),决定先不复习,盲作《冲刺》,做完一章,对答案,看解析,不懂的再翻资料,弄懂后接着下一章

——此处不建议这种方法,还是稳扎稳打好;
——官方有推出题库小程序,方便刷题;还有配套教学视频,但是我没有听,一方面我觉得时间紧迫、看书最快,另一方面是因为收费 ε(┬┬﹏┬┬)3

刷题顺序方面

      本着“先易后难,再见不难”的原则,我看了一下考点目录,感觉比较简单的就是上篇文章写的“软件知识产权基础知识”了,于是我就从此处开始刷基础选择题。
      另外,《冲刺》一书在每个章节前面都列出了该章节所占考试分数,以基础题为例,有的考点比较重要,大概占12分,如面向对象方法;有的考点考的不多,分值大概3分。我根据分值,结合做题速度、备考时间,大概做了统计,决定每天至少拿下6分的量,上不封顶,一章12分的,单独拿出一天完成
      为了督促自己学习,每解决一章,就在目录上记下当天日期

刷题

刷基础题

PV操作

      操作系统这一章节有一道PV操作题,“用PV操作控制进程的并发执行”,经典高频考点。
      例举一题:

      《冲刺》第三章试题16:进程P1、P2、P3和P4的前驱图如图3-2所示:


      若用PV操作控制进程P1~P4并发执行的过程,则需要设置4个信号量S1、S2、S3和S4,且信号量S1-S4的初值都等于零。图3-3中,a、b、c、d处应分别填写___(16)___

(16)A.V(S1) V(S2)、V(S4)、P(S2)和P(S3)、P(S4)
           B.V(S1) V(S2)、V(S4)、P(S3)和P(S2)、P(S4)
           C.V(S1) V(S4)、V(S2)、P(S2)和P(S3)、P(S4)
           D.V(S1) V(S4)、V(S2)、P(S3)和P(S2)、P(S4)

给的选项分别是a、b、c和d处应该填写的操作,其中a处和d处均有两个操作

分析题目:
从前驱图得知,一共有4条路径,分别是:

  • P1->P2
  • P2->P3
  • P3->P4
  • P1->P4
    其中P1没有前驱进程,因此P1首先执行;而P4进程的执行,需要等P1、P3进程都完成后才能进行

解题思路:
《冲刺》书给了我们很好的一个解题规则:

  • 一条路径对应一个信号量;
  • 在路径的源端进程中,应该对与该路径对应的信号量做V操作;
  • 在路径的终端进程中,应该对与该路径对应的信号量做P操作

我们截取题目的某一部分图来说明:

在前驱图中,

  • P1-P4是所要执行的进程,用圆圈表示;
  • S1-S4为信号量,标注在路径上

在流程图中,

  • P1-P4是所要执行的进程,其执行的过程标注在箭头路径上;
  • 对信号量S1-S4的PV操作用矩形表示


      结合起来看,可以知道,上方的矩形指代的是对信号量S的P操作,下方的矩形指代的是对信号量S的V操作。如果把信号量当作开门的钥匙,则每个进程都被关在一个独立的房间里,按顺序开门并执行;有钥匙才能开门,有的门需要同时拥有两把钥匙;开门之后需要归还钥匙,然后执行进程,当前进程执行完成后就要去获取下一个门需要的钥匙。其中,获取钥匙就是对信号量的V操作,归还钥匙就是对信号量的P操作

      代入题中:

  • 先看前驱图,P1没有前驱进程,首先执行,且不涉及信号量操作,P1执行后获取P2、P4进程的钥匙,即需要两个V操作;
  • 然后看流程图,P1执行之后,是P2执行,P2执行之前,对S1信号量进行了P操作,因此P1->P2路径上的信号量为S1
  • 在流程图中,P3执行之后对信号量S3进行V操作,因此,P3->P4路径对应的信号量为S3
  • 由于P4进程的执行需要获取两把钥匙,一个是P1->P4路径上的信号量,一个是S3,所以在P4执行前,需要两个P操作,其中一个为P(S3)。结合选项中d空的可能范围,可以知道P1->P4路径上的信号量是S4,则P2->P3路径上的信号量为S2

  • P1执行完成之后需要获得后驱进程P1、P4的钥匙,两把,即V(S1)V(S4),a空解出
  • P2执行完成之后需要获得下一把钥匙,即V(S2),b空解出
  • P3执行之前归还钥匙S2,即P(S2),c空解出
  • P4执行之前归还两把钥匙,即P(S1) P(S4),d空解出
    答案选C

刷大题

      案例分析题是大题,拿分大头,比较难,可能是程序填空、画图等等。大题做不出来,只有基础题的分,也不能算考试通过。刷了几天基础题,有了点感觉,案例分析题也开始刷起来。

数据流图题

      先看数据流图的题,一开始做了三道题,一大篇文段以及复杂的联系差点把我气晕了,这是我能看懂的东西???冷静了几天后,拿起题开始慢慢看
      此处列举一道经典例题以及个人解析,有不妥之处请多指教

      题目:《冲刺》第十二章试题3

某营销企业拟开发一个销售管理系统,其主要动能描述如下
(1) 接受客户订单,检查库存货物是否满足订单要求。如果满足,进行供货处理,即修改库存记录文件,给库房开具备货单并且保留客户订单至订单记录文件;否则进行缺货处理,即将缺货记录单存入缺货记录文件
(2) 根据缺货记录文件进行缺货统计,将缺货通知单发给采购部门
(3) 根据采购部门提供的进货通知单进行进货处理,即修改库存记录文件,并从缺货记录文件中取出缺货订单进行供货处理
(4) 根据保留的客户订单进行销售统计,打印统计报表经理
现采用结构化方法对销售管理系统进行分析与设计,获得如图12-6所示的顶层数据流图和如图12-7所示的0层数据流图



      问题如下:

1.使用说明中的词语,给出图12-6中的外部实体E1-E4的名称
2.使用说明中的词语,给出图12-7中的数据存储D1-D3的名称
3.图12-7:0层数据流中缺少了4条数据流,根据说明及顶层数据流图12-6所提供的信息,分别指出这4条数据流图的起点和终点

      乍一看,乌泱泱的一篇长文,而且还不在同一页上,翻来翻去,看不懂记不住,很是费劲,这么多标记符号对于我来说也只是几个箭头和框框而已。直到我做了大概5-10题后发现,其实这些标记是有规律的

      一般考题里涉及到的标记有:

矩形框,代表外部实体,通常是数据源的起点和终点,是存在于软件系统之外的人员或组织,一般为名词
圆角矩形,代表加工,是输入数据流到输出数据流之间的变换,一般是题目想要求解的系统
箭头,代表数据流,表示数据的流向,数据流的流向可以分为以下几种:

  • 从一个加工流向另一个加工
  • 从加工流向数据存储(写)
  • 从数据存储流向加工(读)
  • 从外部实体流向加工(输入)
  • 从加工流向外部实体(输出)
    (后面我均会结合题目解释)

不封闭的矩形,代表数据存储

      图示如下:

      数据流图考题一般考的就是识别外部实体(题1)、识别数据存储(题2),和补充/改正数据流(题3),还有可能考一些概念题,如“层次数据流图中父子图的平衡”,这些可以去看书本,或者关注一下历年来爱考哪些概念,从这些高频考点入手去一点点扩展,理解并记住

      拿到题目,说明文字是最重要的,一定要好好阅读,我习惯一边阅读一边跟着文字画草稿,自己看得懂就行,主要是为了帮助理解,简单梳理关系、标注数据存储和外部实体等关键信息。当然,也可以自行画成数据流图,说明你已经很好地掌握了这个知识点。但是升级打怪,总有低级状态嘛,我画的基本都是天马行空,一道题反复看好几次,才逐渐往题目给的数据流图靠拢

来看题目,我把前面的题目截图过来
加工
      题目说,要设计一个销售系统,因此,本题的中心就是这个销售系统,也是整个图的核心,所有的数据流和数据存储均围绕着它,本题最大boss——主加工

外部实体
      前面提到,外部实体是与软件无关的个人或组织,是数据的来源或终点。外部实体一般是一个名词,并且这个名词的内容以人为主体,与加工(销售系统)产生交互,共同完成某项流程。在上方的题目中,可以找到,分别是:客户、库房、采购部门、经理
      再根据上下文和排除法,就可以填出题目1。如:“打印统计报表给经理”,说明统计报表是给经理的,E4就是经理


      题目1答案为:

编号外部实体名称
E1客户
E2库房
E3采购部门
E4经理

注:真正答案中,E2是采购部门,E3是库房,我不认同,因为缺货通知单是给采购部门的,不是给库房的呀

接下来看数据存储

      数据存储,在考题中接触到的,一般指的是某某文件、某某表等,题目中会描述对该文件的读写操作,一般也是名词。另外,数据存储一般不会在顶层数据流图出现。对比题目,本题的数据存储分别为:库存记录文件、缺货记录文件、订单记录文件
然后根据上下文联系去判断数据流图应该填在哪个位置
① 首先先找最明确的文件——订单记录文件,因为最后一句话告诉我们,系统需要通过该文件绘制报表,然后交给经理,因此可以得出,D3为订单记录文件:

② 在题目中,库存记录文件和缺货记录文件出现的位置比较靠近,在还没有很明确两者和加工流程的关系时,容易混淆

      从大方向上看,收到订单之后,有两种情况:
            一个是有货,修改库存记录文件;
            另一个是缺货,填写缺货记录文件,
      “有货”应该是图的右半部分,“缺货”应该是图的左半部分;因为“缺货”与“缺货通知单”是有关联的,“有货”是与“进货通知单”、“报表”、“备货单”有关联。仔细耐心些读题,可以找到答案



至此,题目2已得出解答:

编号数据存储名称
D1缺货记录文件
D2库存记录文件
D3订单记录文件

      看了前两题,其实对数据流已经有了一定的了解,数据流有起点、终点、数据流名称。将前面提到的概念,此处截图过来,方便查看:


      认识数据流的走向规则,知道可以从哪里起、可以到哪里去,这在“补充数据流”的题目中很重要,此处一条条看:

第一条,从一个加工流向另一个加工
      当主加工被分解成很多个子加工时,会出现这种情况,子加工B依赖子加工A的完成,或者说,子加工A完成后,再执行子加工B;画图表示即从一圆角矩形起,到另一圆角矩形
      本题题目给的图中,没有体现这一点
      在这里,补充一点子加工的信息。题目可能以它想要求解的系统名称来指代所有子加工;正如本题,子加工一直以“销售管理系统”命名。我们有必要来认识一下,这些子加工具体指什么,帮助我们更清晰地理解题意,看清数据流图


      一般子加工可以优先寻找动词。根据题目中的这些信息,我们可以大概得出这些子加工的具体含义(红色文字)

注:由于题目给的图12-7中,D1指向子加工,再传递出“缺货通知单”,因此,此处的子加工名称我选择“缺货统计”,而不是“缺货处理”

第二条,从加工流向数据存储(写)
      一般指,某个加工(子加工)在执行中需要修改某数据
      举个例子,在本题中,“修改库存记录文件”就是一个写的过程,箭头从“销售系统”指向“库存记录文件”



第三条,从数据存储流向加工(读)
      一般指,某个加工(子加工)需要获得某数据才能执行某操作
      举个例子,在本题中,“根据缺货记录文件进行缺货统计”就是一个读的过程,箭头从“缺货记录文件”指向“销售系统(缺货统计)”



第四条、第五条,从外部实体流向加工(输入),从加工流向外部实体(输出)
      前面提到,外部实体是软件系统以外的个人或组织,是数据源或数据终点。其中,若从外部实体流入系统,则该实体为数据源,其操作为输入;若数据从系统流向外部实体的,则该实体为数据终点,该操作为输出。数据源或数据终点可能不止一个。
      如本题,系统的开始是从“客户订单”开始的,客户为数据源,系统需要客户向系统“输入”订单;加工的过程还向库房、经理、采购部门等数据终点”输出“文件
      加工必须有入有出,只有入没有出,称为“黑洞”;只有出没有入,称为“奇迹”;当前输入不足以支持某输出(比如需要文件ABC才能进行某操作,目前只传入文件AB,却有输出),称为“灰洞”
      这些都是完成“补充、修改数据流”的依据

      然后我们来完成第三题,这类题有些难,排除法不大顶用,比较容易看出来的就是“读”和“写”数据流,像前文提到的“修改库存记录文件”,题目出现两次,但只有一条数据流指向该文件,我们可以从此处入手
      先来看题:
      “修改库存记录文件”,第一处是在说明的第1点:“若库存货物满足订单要求,则进行供货处理,即修改库存记录文件”,在12-7图中已有所示:

      第二处是在说明第3点中,“根据进货通知单进行进货处理,修改库存记录文件”,我们添加上这条数据流,起点为“进货处理”,终点为“库存记录文件,此为补充的第一条数据流:


再阅读说明3,进货处理,包含3个操作:

  • 第一,是”修改库存记录文件“,此为“写”操作,上面已经给出补充数据流;
  • 第二,是”从缺货记录文件中取出缺货订单“,此为“读”操作;
  • 第三,是”进行供货处理”,此为“从一个加工流向另一个加工”

针对第二个操作,补充数据流。起点:缺货记录文件,终点:进货处理


针对第三个操作,补充数据流。起点:进货处理,终点:供货处理

      还剩一条数据流没有补充,再看一遍题目,看看还有什么隐藏的彩蛋。
      我们看说明1的第一句话:“接受客户订单,检查库存货物是否满足订单要求”。拍一拍脑袋,原来彩蛋就在这里!接到客户订单后,“检查库存货物”不就是需要读取库存记录文件吗?因此补充一条数据流,即起点为库存记录文件,终点为处理订单,如图所示:



补充过后的0层数据流图就是这样的啦:

这次的记录先到这里啦
希望我能飘过线

over——

以上是关于大佬勿看首次软考暂告一段落,记录一波备考经历,下次(不)再来!!(附PV操作和数据流图解析)的主要内容,如果未能解决你的问题,请参考以下文章

每个程序员都应该经历一次软考

软考详细备考攻略,肝了

软考的心得

分享一段成功的备考经验,帮助正在迷茫的你

2021年软考网络工程师备考

软考网络工程师复习备考策略