这篇文章就是针对北理工计科
同学写的,帮你轻松通过软工课程。
本文既有上课的基本情况,也有针对考试的要点指导,这是精心筛选,针对老师最后一节课的重点以及题型写的笔记,保你一天速通软件工程
我们老师使用雨课堂进行点名,没有定位,期末采取70%(16取10次)的签到,只要满足10次(大约),平时分就给到位。
然后是项目,建议早点去选,选网上有现成代码的单人项目,不然会很麻烦,像我们就是一个文献阅读助手,这玩意需要用知识图谱之类的,门槛挺高,不如电梯调度和计算器之类的东西,一大把代码。
考完了,我写了1小时,提前交卷出来,速速学习计组去。
大题是数据流图+黑盒测试+两道UML,所以说UML是重中之重,我自己这块没时间学了,就只能草草过了,所以那两个大题我假设拿一半的分吧。大题估计有个10(数据流图)+12(黑盒测试)+10(剩下的题)=32
值得一提的是填空,专有名词确实多,我背的还是不到位,还好填空意思差不多对了就行,姑且按照一半拿分吧,有条件多背点,这20分就都到手了。我自己按10算。
选择和判断比较轻松,40分我估计30是有的。
所以最后卷面分大概有72。要达到72卷面,需要的是把复习文档过一遍(3h)+大题学习(2h)+复习文档加固记忆(1h)。如果想高一些,就要加强记忆,加强UML的学习,即便如此,一天也足够了。
你说ppt用不用看呢?其实没啥必要,ppt没有详略结合,全是平铺直叙,需要详细的不够详细,不用详细的又很啰嗦,建议以复习文档为核心,不懂得去看看ppt,然后需要加强的去看b站视频。
不说了,复习(学习)计组去了,还有4章没看呢(乐)
闭卷
下面详细分解一下:
这一部分来自于老师给的复习文档,13页,我在里面标出了重点的东西,同时加入一些我个人的注解,还有一些加粗黑体,那个也是重点。
下面我截图把我标记出来的东西放出来,这个东西也不绝对,只是我自己觉得把这些标出来比较好记。
参考视频
数据流图,画出了数据流随着处理而变换的过程,没有物理部件,是纯粹的逻辑描述。
首先明确符号,网上讲的和我们ppt会略有差异,以ppt为准。关于数据库和处理的写法,我觉得写成那种带标号的比较好,数据处理的标号=数字,层数增加后=数字+.+数字,数据库的标号=F+数字(哈哈,这也算数据字典表示了)
DFD的整体结构大致如下,输入输出,往里有中间数据,然后中间数据会和数据储存进行一个交换。
视频里给的是一个两层DFD,流程如下:
我们的ppt里给出了3层的DFD,当然他那个自己加了很多东西,其实题目给的信息没那么多。
首先,顶层确定了输入输出,数据流,还有这个系统的名字。
第一层精化,基本是按照题目来的,三个处理+三个储存。但是他取名字,比如什么三元组库,策略库,历史文件,语法语义信息,这些东西你没点背景知识真的不懂的,你自己做只能笼统一些,比如日志信息就行。
之后我们继续分解精化,基本还是按照题目给的,可以看到数据处理的序号变化了,层级更深。黑板模型的部分,这个例子又自由发挥了,加了很多题目没给的,但是大致也是按照题目框架来的。
数据字典可以定义DFD中的所有元素
,包括但不限于数据流,分量,储存,处理(虽然我不知道具体是什么,但是你记住DD和DFD是一致的就行)。有一点儿正则式的感觉,总之就是对数字规则的描述。
这个和编译原理的文法很像。描述的时候可以自顶向下,逐层分解。
好用,但是混乱:
单入口单出口
的基本结构。顺序和选择老生常谈,经典的循环结构是while结构,先判断,再循环。是更加紧凑,结构化的流程图,从上到下看就可以,不需要去绕来绕去
不咋常考,主要应用是翻译成代码,给人看不是很方便。
用于描述复杂的选择结构,判定树和判定表是等价的,互相转化。
这个也是老生常谈了
参考视频
测试程序结构,是否按照我们的逻辑执行。
测试方案有如下几种,覆盖程度从弱到强,每种可以使用一组测试用例,来实现我们的测试目标:
给出我们要用的测试用例,接下来讲解。
这个是最浅的覆盖。
为什么浅呢,我们不需要去吧判断情况都测试一次,我们只需要让action1和action2都执行一次就行,很简单。说白了,语句覆盖是在测试你这个语句本身有没有bug,而不是测试控制逻辑。
这三个很像,都是要去测试控制结构的,所以应当加以区分。
需要注意,a>b这种,是条件,而a>b and c>d,是判定,所谓判定,就是用逻辑符号(and,or) 连接起来的表达式,一定是要用逻辑符号连。
所以判定覆盖,只需要:
而条件覆盖,如果没看过例子,或许会以为需要对ABCD进行组合,是 2 4 2^4 24种,其实不然,这就变成了穷举覆盖了,不可能的。我们只需要各取一次就行,并不需要把所有的组合取一次,你说你弄个TTTF和TTTT,ABC就重复取两次了,所以这反而是浪费的。
所以我感觉,条件覆盖反而更加少,两条就足够测试完毕了。前面的判定覆盖其实也是一样的,先根据判定写出来条件,然后取两列作为覆盖用例。
判定/条件覆盖,理论上需要覆盖我们前面的123456,似乎需要6个例子,但是你会发现,当test1满足5的同时,也覆盖了1和3,所以判定/条件覆盖又巧合般的只需要两个用例。我觉得,做这个的时候:
组合:一个判定的各种条件穷举组合
哈哈,看到这里我又下意识地想要去穷举,其实不然,我们只需要穷举判定内部的条件,而不需要穷举判定之间
分别列出AB和CD的穷举,然后4行写下来就完事,很简单,再多来一些穷举仍然是如此的。甚至你不一定非要4行,交叉也行,但是需要用4个用例把下面这个表覆盖一次。
倒着说。先说路径覆盖,其实就是找一下有多少个分支,然后分支排列组合就可以。下图中有两个分支,分别是(a|b)c(d|e)f,那么我们直接2×2,就可以排出4种路径,然后根据路径编写测试用例。
测试程序功能,是否正确实现了我们的功能。
黑盒测试划分等价类我觉得可以层次划分:
每个条件都编个号,方便后面覆盖的时候写题。
参考视频
元素:
学过数字逻辑的会心一笑