软件工程基础速通教程(北京理工大学)

文章目录

  • 前言
  • 软工上课情况
  • 考后感
  • 题型分析
  • 概念部分
  • 大题部分
    • 数据流图和数据字典
      • 数据流图
      • 数据字典
    • 结构化设计工具
      • 程序流程图
      • 盒图(N-S图)
      • PAD图
      • 判定表和判定树
      • PDL(伪码)
    • 软件测试
      • 白盒测试法
        • 语句覆盖
        • 判定覆盖,条件覆盖,判定/条件覆盖
        • 组合覆盖
        • 路径覆盖
      • 黑盒测试法
    • UML建模与设计
      • 用例图
      • 类图
      • 顺序图
      • 状态图

前言

这篇文章就是针对北理工计科同学写的,帮你轻松通过软工课程。

本文既有上课的基本情况,也有针对考试的要点指导,这是精心筛选,针对老师最后一节课的重点以及题型写的笔记,保你一天速通软件工程

软工上课情况

我们老师使用雨课堂进行点名,没有定位,期末采取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章没看呢(乐)

题型分析

闭卷

  1. 单选题,15题,30分
  2. 判断题,10题,10分
  3. 填空题,20个空,20分
  4. 综合题,4题,40分

下面详细分解一下:

  1. 60分客观题
    • 直接看老师给的复习pdf
    • 填空题都可以在书上找到原话,考概念,目标,方法,原则,不需要你去算,放心就行。
    • 概念得精准一些,发挥你们的记忆力,就那几个概念,理顺逻辑,背会很容易的
    • 其他东西大概意思差不多就行,关键是理解,记住一些术语。
  2. 40分大题
    • 这个得好好学一下
    • 重点分布在详细设计步骤的建模+测试
      • 题型一(数据流图):数据流图,一般三层,必考(顺便学学数据字典)
      • 题型二(结构化设计工具):程序流程图,盒图(NS图),PAD图,会看PDL描述。
      • 题型三(软件测试方法):白盒测试,黑盒测试。会分析,会写测试用例,会和程序流程图结合考,先画一个,然后分析
      • 题型四(面向对象分析与设计):OOA建模,使用UML语言画作业里考出来的那几类经典UML图。面向对象设计,将OOA的分析建模转化为OOD设计建模。

概念部分

这一部分来自于老师给的复习文档,13页,我在里面标出了重点的东西,同时加入一些我个人的注解,还有一些加粗黑体,那个也是重点。

下面我截图把我标记出来的东西放出来,这个东西也不绝对,只是我自己觉得把这些标出来比较好记。

软件工程基础速通教程(北京理工大学)_第1张图片
软件工程基础速通教程(北京理工大学)_第2张图片
软件工程基础速通教程(北京理工大学)_第3张图片
软件工程基础速通教程(北京理工大学)_第4张图片
软件工程基础速通教程(北京理工大学)_第5张图片
软件工程基础速通教程(北京理工大学)_第6张图片
软件工程基础速通教程(北京理工大学)_第7张图片
软件工程基础速通教程(北京理工大学)_第8张图片
在这里插入图片描述
软件工程基础速通教程(北京理工大学)_第9张图片
软件工程基础速通教程(北京理工大学)_第10张图片
软件工程基础速通教程(北京理工大学)_第11张图片
软件工程基础速通教程(北京理工大学)_第12张图片
软件工程基础速通教程(北京理工大学)_第13张图片
软件工程基础速通教程(北京理工大学)_第14张图片
软件工程基础速通教程(北京理工大学)_第15张图片
软件工程基础速通教程(北京理工大学)_第16张图片
软件工程基础速通教程(北京理工大学)_第17张图片
软件工程基础速通教程(北京理工大学)_第18张图片
软件工程基础速通教程(北京理工大学)_第19张图片

软件工程基础速通教程(北京理工大学)_第20张图片
软件工程基础速通教程(北京理工大学)_第21张图片

大题部分

数据流图和数据字典

参考视频

数据流图

数据流图,画出了数据流随着处理而变换的过程,没有物理部件,是纯粹的逻辑描述。

首先明确符号,网上讲的和我们ppt会略有差异,以ppt为准。关于数据库和处理的写法,我觉得写成那种带标号的比较好,数据处理的标号=数字,层数增加后=数字+.+数字,数据库的标号=F+数字(哈哈,这也算数据字典表示了)

软件工程基础速通教程(北京理工大学)_第22张图片

DFD的整体结构大致如下,输入输出,往里有中间数据,然后中间数据会和数据储存进行一个交换。

软件工程基础速通教程(北京理工大学)_第23张图片

视频里给的是一个两层DFD,流程如下:

  1. 先确定输入输出,然后中间直接画一个大圈儿,标出各自的名字
  2. 逐层细化,先划分子系统,然后子系统再继续划分
    • 注意,一个模块对外的输入输出接口是不可以变的,要保证各层DFD的一致性

软件工程基础速通教程(北京理工大学)_第24张图片

我们的ppt里给出了3层的DFD,当然他那个自己加了很多东西,其实题目给的信息没那么多。

软件工程基础速通教程(北京理工大学)_第25张图片

首先,顶层确定了输入输出,数据流,还有这个系统的名字。

软件工程基础速通教程(北京理工大学)_第26张图片

第一层精化,基本是按照题目来的,三个处理+三个储存。但是他取名字,比如什么三元组库,策略库,历史文件,语法语义信息,这些东西你没点背景知识真的不懂的,你自己做只能笼统一些,比如日志信息就行。

软件工程基础速通教程(北京理工大学)_第27张图片

之后我们继续分解精化,基本还是按照题目给的,可以看到数据处理的序号变化了,层级更深。黑板模型的部分,这个例子又自由发挥了,加了很多题目没给的,但是大致也是按照题目框架来的。

软件工程基础速通教程(北京理工大学)_第28张图片
软件工程基础速通教程(北京理工大学)_第29张图片
软件工程基础速通教程(北京理工大学)_第30张图片

数据字典

数据字典可以定义DFD中的所有元素,包括但不限于数据流,分量,储存,处理(虽然我不知道具体是什么,但是你记住DD和DFD是一致的就行)。有一点儿正则式的感觉,总之就是对数字规则的描述。

软件工程基础速通教程(北京理工大学)_第31张图片

这个和编译原理的文法很像。描述的时候可以自顶向下,逐层分解。

软件工程基础速通教程(北京理工大学)_第32张图片
软件工程基础速通教程(北京理工大学)_第33张图片

结构化设计工具

程序流程图

软件工程基础速通教程(北京理工大学)_第34张图片

好用,但是混乱:

  1. 经典流程图有三种单入口单出口的基本结构。顺序和选择老生常谈,经典的循环结构是while结构,先判断,再循环。
  2. 扩展的流程图。扩展了选择:do-case,扩展了循环:do-until
  3. 修正的程序结构设计。增加了break

软件工程基础速通教程(北京理工大学)_第35张图片

盒图(N-S图)

是更加紧凑,结构化的流程图,从上到下看就可以,不需要去绕来绕去

软件工程基础速通教程(北京理工大学)_第36张图片

PAD图

不咋常考,主要应用是翻译成代码,给人看不是很方便。

软件工程基础速通教程(北京理工大学)_第37张图片

判定表和判定树

用于描述复杂的选择结构,判定树和判定表是等价的,互相转化。

PDL(伪码)

这个也是老生常谈了

软件测试

白盒测试法

参考视频

测试程序结构,是否按照我们的逻辑执行。

测试方案有如下几种,覆盖程度从弱到强,每种可以使用一组测试用例,来实现我们的测试目标:

  1. 语句覆盖:能够让所有语句都执行一次
  2. 判定覆盖:让每个判定表达式都获得一次真 假。注意,是和,都要测试一次。
  3. 条件覆盖:条件覆盖要比判定覆盖更强。比如A>B&&A>C,判定覆盖只需要这个是真/假就行,两个结果,但是条件覆盖需要把ABC进行若干种组合
  4. 判定/条件覆盖:
  5. 条件组合覆盖:这个最强,ABC直接穷举, 2 3 2^3 23种测试方案
  6. 路径覆盖:覆盖所有可能出现的路径

给出我们要用的测试用例,接下来讲解。

软件工程基础速通教程(北京理工大学)_第38张图片

语句覆盖

这个是最浅的覆盖。

为什么浅呢,我们不需要去吧判断情况都测试一次,我们只需要让action1和action2都执行一次就行,很简单。说白了,语句覆盖是在测试你这个语句本身有没有bug,而不是测试控制逻辑。

软件工程基础速通教程(北京理工大学)_第39张图片

判定覆盖,条件覆盖,判定/条件覆盖

这三个很像,都是要去测试控制结构的,所以应当加以区分。

  1. 判定:A and B,C or D,这是两个判定,是整体
  2. 条件:A,B,C,D都是条件,是判定的基本元素

需要注意,a>b这种,是条件,而a>b and c>d,是判定,所谓判定,就是用逻辑符号(and,or) 连接起来的表达式,一定是要用逻辑符号连。

所以判定覆盖,只需要:

  1. 把整体的TF值进行一次排列组合, 2 2 2^2 22
  2. 将判定对应的条件写出来
  3. 此时你会发现,一个条件组合,竟然能覆盖两个判定组合,所以最后只需要两个用例。结合后面的条件覆盖来说,如果只是TF的话,你会发现两条足够做到判定覆盖了。

软件工程基础速通教程(北京理工大学)_第40张图片

而条件覆盖,如果没看过例子,或许会以为需要对ABCD进行组合,是 2 4 2^4 24种,其实不然,这就变成了穷举覆盖了,不可能的。我们只需要各取一次就行,并不需要把所有的组合取一次,你说你弄个TTTF和TTTT,ABC就重复取两次了,所以这反而是浪费的。

所以我感觉,条件覆盖反而更加少,两条就足够测试完毕了。前面的判定覆盖其实也是一样的,先根据判定写出来条件,然后取两列作为覆盖用例。

软件工程基础速通教程(北京理工大学)_第41张图片

判定/条件覆盖,理论上需要覆盖我们前面的123456,似乎需要6个例子,但是你会发现,当test1满足5的同时,也覆盖了1和3,所以判定/条件覆盖又巧合般的只需要两个用例。我觉得,做这个的时候:

  1. 以条件覆盖为基准,看看这个组合能覆盖多少个判定
  2. 如果最后有遗漏,那就补上就可以

软件工程基础速通教程(北京理工大学)_第42张图片

组合覆盖

组合:一个判定的各种条件穷举组合

哈哈,看到这里我又下意识地想要去穷举,其实不然,我们只需要穷举判定内部的条件,而不需要穷举判定之间

分别列出AB和CD的穷举,然后4行写下来就完事,很简单,再多来一些穷举仍然是如此的。甚至你不一定非要4行,交叉也行,但是需要用4个用例把下面这个表覆盖一次。

软件工程基础速通教程(北京理工大学)_第43张图片

路径覆盖

倒着说。先说路径覆盖,其实就是找一下有多少个分支,然后分支排列组合就可以。下图中有两个分支,分别是(a|b)c(d|e)f,那么我们直接2×2,就可以排出4种路径,然后根据路径编写测试用例。

软件工程基础速通教程(北京理工大学)_第44张图片

黑盒测试法

测试程序功能,是否正确实现了我们的功能。

  1. 等价类划分法。就是你觉得这个集合里,任何两个测试用例的效果本质上是一样的,那么就任选一个就可以。
  2. 边界值分析法。结合等价类同时使用,选取<=>边界值的三种用例来测试功能对于特殊异常值的处理是否正确

黑盒测试划分等价类我觉得可以层次划分:

  1. 首先是最顶层的,输入格式
  2. 其次是每个部分的输入范围

每个条件都编个号,方便后面覆盖的时候写题。

在这里插入图片描述
软件工程基础速通教程(北京理工大学)_第45张图片

UML建模与设计

参考视频

软件工程基础速通教程(北京理工大学)_第46张图片

用例图

元素:

  1. 活动者
  2. 用例
  3. 用例箭头,上面写者关系

软件工程基础速通教程(北京理工大学)_第47张图片

类图

学过JAVA的会心一笑。
软件工程基础速通教程(北京理工大学)_第48张图片

顺序图

  1. 方块代表类
  2. 矩形条代表激活
  3. 虚线代表类存在
  4. 箭头代表交互

软件工程基础速通教程(北京理工大学)_第49张图片

软件工程基础速通教程(北京理工大学)_第50张图片

状态图

学过数字逻辑的会心一笑

软件工程基础速通教程(北京理工大学)_第51张图片

你可能感兴趣的:(计算机体系结构,个人随笔/学习笔记,软件工程)