【软件工程期末复习】知识点+大题详解(E-R图、数据流图

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

首先要对仓库管理员发出的事务进行处理,即处理事务功能。

其次对采购员接收的订货报表进行功能分配,即产生报表功能。

最后,处理事务功能分为两块,从库存中取货和填写订货信息,从而产生两个数据流,库存清单订货信息;产生报表的前提是有订货信息,故有订货信息输入流。

在这里插入图片描述

Ⅲ.1层数据流图

对功能再细化,我们对上图进行分析,以上出现两个功能模块,分别是处理事务和产生报表。

产生报表的唯一前提是有订货信息,而订货信息来自处理采购员订单的结果,故新增处理订货功能;

订货功能的前提是库存增减的结果体现,故新增更新库存清单功能;

更新库存功能的前提是接收到执行事务的命令,故新增接收事务功能。

通过对单一影响变量逆推的过程,进一步完善数据流图。

在这里插入图片描述

3.程序流程图

(1)基础概念
①基本构图符号

在这里插入图片描述

②基本结构
Ⅰ.顺序结构

在这里插入图片描述

Ⅱ.选择结构

在这里插入图片描述

Ⅲ.while 循环结构

在这里插入图片描述

Ⅳ.do while 循环结构

在这里插入图片描述

Ⅴ.case 循环结构

在这里插入图片描述

(2)实战演练

例题:根据下面程序画出程序流程图和N-S盒图

START
IF p THEN
       WHILE  q  DO
	    f
            END DO
          ELSE
	BLOCK
	     G
	     N
	  END BLOCK
END IF
STOP 

程序流程图:

在这里插入图片描述

N-S盒图:

在这里插入图片描述

4.N-S盒图

(1)基本结构
①顺序结构

先执行A后执行B

在这里插入图片描述

②条件结构

如果条件P成立,执行A,否则执行B

成立(T)(Y)
不成立(F)(N)

在这里插入图片描述

③while 循环结构

先判断后执行,当P1条件成立的情况下,反复执行A语句,直到P1条件不成立为止
在这里插入图片描述

④do while结构

先执行后判断,当P1条件不成立的情况下,反复执行A语句,直到P1条件成立为止
在这里插入图片描述

(2)实战演练

例题:输入三角形三边长,判断三遍构成的是等边,等腰,还是一般三角形,画出N-S盒图

在这里插入图片描述

4.状态图

状态图有三种状态,分别是初态,中间态和终态

(1)基本符号

在这里插入图片描述

在这里插入图片描述

(2)实战演练

例题:公交车状态图

在这里插入图片描述

5.活动图

(1)基本符号

和状态图类似,初态用实心表示,终态用环形表示,圆角矩形代表活动,菱形代表分支,横线黑线代表并发。

在这里插入图片描述
可以参考这张图,更为直观
在这里插入图片描述

(2)实战演练

例题:下面的文字描述了某大学新生报到的过程:
新生首先要填一张新生注册表单。如果填写不正确,则在别人的帮助下重新填写,直至填写正确,然后进行注册。注册成功之后,要进行开学典礼,同时在新生选课系统中注册,然后交齐第一个学期的学费。 画出活动图。

在这里插入图片描述

6.用例图

用例图由三个基本元素和四个关系构成。

三个元素:参与者、用例、容器

四个关系:关联、泛化、包含、扩展

(1)基本符号
①三个元素

在这里插入图片描述

②四个关系
Ⅰ 关联

适用于参与者和用例之间,通常由参与者指向用例。

单向实箭头表示
在这里插入图片描述

Ⅱ 泛化

适用于于用例与用例之间或参与者与参与者之间。它和面向对象中的继承关系类似,子用例继承父用例的所有功能。

空心三角箭头表示
在这里插入图片描述

Ⅲ 包含

适用于用例和用例直接,由复杂用例分解出简单用例

虚线箭头表示

在这里插入图片描述

Ⅳ 扩展

适用于用例与用例直接,对基础用例的功能扩展

虚线箭头表示

在这里插入图片描述

(2)实战演练1

例题:在火车票预订系统中,客户可以进行购买车票、退订车票、查询余票和查询列车时刻四个操作。不管是购买车票还是退订车票,用户都必须先进行登录系统操作。其中查询列车时刻主要包括按站站查询和按车次查询两种方式。如果在登录系统的过程中忘记密码,则还可使用找回密码功能。画出用例图。

在这里插入图片描述

(3)实战演练2

例题:系统拥有注册功能,顾客注册后进行登录,才能在系统中购买商品;顾客可以通过系统浏览商品,查看商品的详细信息,购买自己喜欢的商品;顾客付费方式要多样化,既可以通过银行的在线支付功能付款,也可通过汇款方式付款;系统拥有商品的促销功能,对于某些系统指定的商品或用户购买的商品金额超过一定数量时,在顾客结账时给予优惠;
用例图顾客登录后,可以使用留言功能对商品或服务留言评价;
系统的管理员可以使用留言功能对顾客提出的疑问做出解答,还可以管理注册的用户;录入员能够更新商品信息,包括增加新商品和对现有商品信息的更新;系统允许多人同时在线,进行商品的浏览和购买操作。

在这里插入图片描述

7.类图

(1)构成要素

类图由类的名称、字段和属性、方法,三部分构成。

其中“+” 表示public;“-“ 表示private;”#"表示protected

比如

第一层“动物”是类的名称;
第二层“+有生命”是动物的属性;
第三层“+新陈代谢+繁殖”是动物具有的方法。

在这里插入图片描述

(2)基本关系
①继承

鸟属于动物,可以继承动物属性

表示方法:实线+空心箭头
在这里插入图片描述

②实现

飞翔实现了“飞行”方法

表示方法:虚线+空心箭头

在这里插入图片描述

③关联

企鹅的生活和气候息息相关

表示方法:实线箭头

在这里插入图片描述

④依赖

动物需要水和氧气才能生存

表示方法:虚线箭头

在这里插入图片描述

⑤聚合(包含)

一个雁群中有很多大雁,即包含关系

表示方法:空心菱形 + 实线箭头

在这里插入图片描述

⑥组合(拥有)

鸟和它的翅膀体现了部分和整体的关系,即组合关系

表示方法:实心菱形 + 实线箭头

在这里插入图片描述

(3)实战演练

根据以下描述,画出相应的UML类图

  1. 神舟六号飞船是神州飞船系列的一种,它由轨道舱、返回舱、推进舱和逃逸救生塔等组成。
  2. 航天员可以在返回舱内驾驶飞船,轨道舱是航天员工作和休息的场所。在紧急的情况下,可以利用逃逸救生塔逃生。
  3. 在飞船两侧有多个太阳能电池翼,可以为飞船提供电能

在这里插入图片描述

8.程序图(顺序图/程序控制流图)

(1)基本概念

程序图可以将程序流程图,N-S图,PAD图映射到图形中。

注意:

  1. 一个或多个顺序语句可以映射为程序图的一个节点,用带标识的圆表示。
  2. 一个处理框或判定框可以映射为一个节点
  3. 程序控制流向用方向箭头表示,且一条边必须终止于一个节点(该节点可以不代表任何含义)

比如下图,可以将2,3分为两个圆表示,也可以合在一起
在这里插入图片描述

(2)计算环形复杂度

环形复杂度V(G)=E-N+2,其中,E是程序图中边数,N是结点数

上图中V(G)=11-9+2=4

有人可能要问,如果将图中2、3两个节点和4、5两个节点分开结果依然正确吗?

可以自己试试,不影响复杂度,V(G)=13-11+2=4

9.常见软件过程模型的特点

模型名称技术特点适用范围
瀑布模型简单,分阶段,阶段间存在因果关系,各个阶段完成后都有评审,允许反馈,不支持,用户参与,要求预先确定需求需求明确且不易改变的软件系统,专业
快速原型模型不要求需求预先完备定义,支持用户参与,支持需求的渐进式完善和确认,能够适应用户需求的变化需求复杂、难以确定、动态变化的软件系统,小白
增量模型软件产品是被增量式地一块块开发的,允许开发活动并行和重叠软件开放,逐渐增加功能的软件系统
迭代模型不要求一次性地开发出完整的软件系统,将软件开发视为一个逐步获取用广需求、完善软件产品的过程需求难以确定、不断变更的软件系统
螺旋模型结合瀑布模型、快速原型模型和迭代模型的思想,并引进了风险分析活动需求难以获取和确定、软件开发风险较大的软件系统
RUP可改造、扩展和剪裁:可以对它进行设计、开发、维护和发布;强调迭代开发复杂和需求难以获取和确定的软件系统;软件开发项目组拥有丰富的软件开发和管理经验
(1)实战演练

例1:要开发某个突破性的产品,规模很大,所需的开发技术先进,风险较大,且市面上尚未有类似产品,用户尚未对其形成完整的预期,团队人员充足。
答案:螺旋模型

例2:要开发的系统类似于某个团队之前已经做过的某个项目,只是规模更大复杂性高一点,需求已经有用户写成文档。
答案:瀑布模型

例3:辅导员张老师 为了方便管理学生,他委托学生小明帮助他开发一个学生管理系统,用来管理他所带的班级的学生信息,该系统仅供张老师一个人使用,系统功能不是很复杂。张老师对自己需要的系统功能有了明确的认识,并且他本身也对软件开发有一定程度的了解,与小明的沟通过程非常的顺利。在这种情况下,如果你是小明,你会选用哪种过程模型?
答案:瀑布模型

例4:张扬是某大学软件技术专业的学生,在寒假中,他为他的邻居开发了一个小型的超市管理系统。他的邻居从来不懂软件开发,也不知道超市管理系统应该是什么样的。那么你建议张扬采用哪种过程模型呢 ?
答案:快速原型模型

例5:假设要求你开发一个软件,该软件的功能是读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。
答案:瀑布模型
对这个软件的需求很明确,实现开平方功能的算法也很熟悉,因此,无须通过原型来分析需求也无需用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或带风险分析的螺旋模型来开发该软件。

二、知识点汇总

1.软件危机

(1)概念

软件危机是指在计算机软件开发和维护时所遇到的一系列问题。

(2)主要表现
  1. 如何开发软件以满足对软件日益增长的需求;
  2. 如何维护数量不断增长的已有软件。
  3. 软件成本在计算机系统成本中所占的比例逐年上升
  4. 用户对已完成的软件系统不满意的现象经常发生;
(3)软件危机产生的原因:
  1. 软件规模庞大,给软件的维护带来困难。
  2. 软件一般使用3~5年,在这段时间内很可能因为环境的改变、硬件的改变、技术方式的改变、需求的改变,需要及时的维护。
  3. 软件开发技术的落后。
  4. 软件开发人员忽视需求分析、维护阶段的重要性也是造成软件危机的原本。

2.结构化设计方法的步骤

  1. 首先研究、分析数据流图
  2. 然后根据数据流图决定问题的类型
  3. 由数据流图推导出系统的初始结构图
  4. 利用启发性原则来改进系统的初始结构图,直到符合要求的结构图为止
  5. 修改和补充数据字典
  6. 制定测试计划

3.软件设计的过程

  • 软件设计是把许多事物和问题抽象起来,并且抽象它们不同层次和角度,是将需求转变为软件陈述的过程,是迭代的过程。
  • 软件设计,要根据需求规格说明书,对整个设计过程进行计划,然后实施具体的设计过程,即“先整体,再局部”,也是不断迭代和精化的过程。
  • 然后需要对生成的设计规格说明书进行评审,启动 质量评价的标准,若未通过评审,需重新修改设计,直至评审通过,确定最后定型的过程本身。进入后续阶段,完成软件设计过程。

4.黑盒测试法

  • 黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程
  • 它只检查程序功能是否能按照规格说明书的规定正常使用
  • 程序是否能适当地接收输入数据
  • 产生正确地输出信息

5.软件设计的原则

  • 模块化
  • 抽象化与逐步求精
  • 信息隐藏与局部化
  • 模块独立

6.软件测试的目的

  1. 软件测试是为了发现错误而执行程序的过程;
  2. 测试是程序的执行过程,目的在于发现错误;
  3. 软件测试中需要数据,即为测试而精心设计的测试用例,利用测试用例去运行程序,帮助发现程序错误;
  4. 一个好的测试用例在于能发现至今未发现的错误;
  5. 一个成功的测试是发现了至今未发现的错误的测试。

三、题目练习

1.设计测试用例

(1)例题1

下图显示了某程序的逻辑结构。试为它设计足够的测试用例,分别实现对程序的:判定覆盖、条件覆盖、条件组合覆盖

在这里插入图片描述
答案:

在这里插入图片描述

(2)例题2

某三角形程序的功能为:读入代表三角形边长的3个整数,判断它们能否组成三角形。如果能够,则输出三角形是等边、等腰或任意三角形的识别信息。试为此程序设计一组测试用例。(本例将先用黑盒法设计测试用例,然后用白盒法进行检验与补充)

在这里插入图片描述

答案:

第一步:根据题干,在黑盒法中首先可用等价分类法划分输入的等价类,然后用边界值分析法和猜错法作补充。

在这里插入图片描述

边界值法:2数之和等于第3数
猜错法:输入3个零、输入3个负数

第二步:提出一组初步的测试用例,
在这里插入图片描述

第三步:用白盒法验证第三步产生的测试用例的充分性。结果表明,上表中的前8个测试用例,已能满足对被测程序图的完全覆盖,不需要再补充其他的测试用例。

(3)例题3

设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2003年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。

答案:

第一步:划分等价类并编号,下表等价类划分的结果

输入等价类有效等价类无效等价类
日期的类型及长度①6位数字字符②有非数字字符③少于6位数字字符④多于6位数字字符
年份范围⑤在1990~2049之间⑥小于1990⑦大于2049
月份范围⑧在01~12之间⑨等于00⑩大于12

第二步:设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据期望结果覆盖的有效等价类
202211输入有效①、⑤、⑧
202301输入有效①、⑤、⑧
203512输入有效①、⑤、⑧

第三步:为每一个无效等价类设计一个测试用例,设计结果如下:

测试数据期望结果覆盖的无效等价类
95June无效输入
20036无效输入
2001006无效输入

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

| — |
| 日期的类型及长度 | ①6位数字字符 | ②有非数字字符③少于6位数字字符④多于6位数字字符 |
| 年份范围 | ⑤在1990~2049之间 | ⑥小于1990⑦大于2049 |
| 月份范围 | ⑧在01~12之间 | ⑨等于00⑩大于12 |

第二步:设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据期望结果覆盖的有效等价类
202211输入有效①、⑤、⑧
202301输入有效①、⑤、⑧
203512输入有效①、⑤、⑧

第三步:为每一个无效等价类设计一个测试用例,设计结果如下:

测试数据期望结果覆盖的无效等价类
95June无效输入
20036无效输入
2001006无效输入

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-TnE9kxAT-1713363928965)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值