【软件设计师-从小白到大牛】上午题基础篇:第六章 软件工程基础(重点中的重点)(2)

简介: 【软件设计师-从小白到大牛】上午题基础篇:第六章 软件工程基础(重点中的重点)

三、需求的分类

image.png


基本需求:用户明确提出了要完成的一些需求开发团队必须完成的。

期望需求:用户没明确提出,但是默认开发需要完成的。

兴奋需求:用户没提出来但是开发也做了(额外的事情涉及到成本问题风险大,要严格控制)。

功能需求:考虑系统要做些什么,在何时做,在何时以及如何修改或升级。

性能需求:考虑软件开发的技术性指标。例如,存储容量限制、执行速度、响应时间及吞吐量。

数据需求:考虑输入、输出数据的格式,接收、发送数据的频率,数据的准确性和精度,数据流量,数据需保持的时间。

真题链接

“软件产品必须能够在3秒内对用户请求作出响应”属于软件需求中的 非功能需求。

(注:下图来自前言中up主视频)

995b3240cb5d70f33a72bf102848e402_6b0e575c956a49c7952c9ae4f742fb09.png

系统设计(补)

概要设计

设计软件系统总体结构(模块化,确定模块调用关系等)

数据结构及数据库设计

数据结构的设计

数据库的设计

概念设计

逻辑设计

物理设计

编写概要设计文档

评审

真题链接

确定软件的模块划分及模块间的调用关系是 概要设计 阶段的任务。

在 概要设计 阶段选择适当的解决方案,将系统分解为若干个子系统,建立整个系统的体系结构。

(注:下图来自前言中up主视频)

软件工程的基本要素包括方法、工具和 过程。

(注:下图来自前言中up主视频)

95bdc424fec2cfaa91c339ea64e5b5de_7eeae1587fbc487f9f063a78fd622579.png

(注:下图来自前言中up主视频)

c886dcdc5cd7a99920633ba401fd3a2e_d5444db2c7664c56ad16fef0c99da355.png

(注:下图来自前言中up主视频)

63ae34742a6f281a8f6faa202a37ca44_2498235df0eb4d29879d228d4f734767.png

详细设计

在概要设计基础上对各模块内部进行设计等,例如模块内算法设计、数据结构设计等,了解即可。


四、结构化设计

见【软件设计师-从小白到大牛】上午题基础篇:第五章 结构化开发方法


五、软件测试

1、测试原则与类型

image.png


系统测试阶段的测试目标来自于需求分析阶段。

真题链接

一个成功的测试能发现至今未发现的错误。

在设计测试用例时,应遵循 不仅要设计有效合理输入,也要包含不合理、失效的输入 原则。

在软件开发过程中,系统测试阶段的测试目标来自于 需求分析 阶段。

一个项目为了修正一个错误而进行了变更。但这个错误被修正后,却引起以前可以正确运行的代码出错。回归测试 最可能发现这一问题。

在改正当前故障的同时可能会引入新的故障,这时需要进行 回归测试。

软件调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正。其常用的方法中,归纳法 是指从测试所暴露的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假想的错误原因,用这些数据来证明或反驳,从而查出错误所在

2、测试用例设计

image.png


不好的测试用例:用例中每个数据都不符合测试条件,即输入的数据均是不合法的。(在设计测试用例时,应当包括合理的输入条件和不合理的输入条件)。

黑盒测试 技术:等价类划分、边界值分析、错误推测 和 因果图 等。

白盒测试(由弱到强):

语句覆盖:每条语句至少执行一次。

判定覆盖(分支覆盖):每个判定表达式至少获得一次“真”值和“假”值。

条件覆盖:每一判定语句中每个逻辑条件的各种可能的值至少满足一次(即判定表达式中的每个条件(以&&、||连接的所有条件))。

判定条件覆盖:判定中每个条件的所有可能取值(真/假)至少出现一次,并使每个判定本身的判定结果(真/假)也至少出现一次。

条件组合覆盖:每个判定中条件的各种可能值的组合都至少出现一次(每个条件的真假组合至少出现一次)。

路径覆盖:覆盖被测试程序中所有可能的路径。

伪代码转流程图:

(注:下图来自《Java语言程序设计》(陈俊杰、相洁主编,高等教育出版社))

35da764b617ba5f62249bb77d932aea7_2ea8cc37ebb9425f8ddc9b74c174b056.jpeg

(注:下图来自《Java语言程序设计》(陈俊杰、相洁主编,高等教育出版社))

20b9b36a0bd4e5060eab1328adde1ef5_5e922887357d4a9786cb5e639262c3e9.jpeg

(注:下图来自《Java语言程序设计》(陈俊杰、相洁主编,高等教育出版社))

60b70a4c37a29578f4930f9d588c763e_5e1dd96115444abfab04e8c6072260fc.jpeg

黑盒测试:只知道输入什么,输出是什么。

白盒测试:透明的,可看到设计内部的。

边界值分析选取的数据应为4个:恰好等于边界值的两个区间端点的2个数据和稍小于边界 值、稍大于边界值的2个数据。

错误推测法:更多的是基于经验和直觉来推测可能存在的错误。

真题链接

白盒测试技术中,路径覆盖法往往能比语句覆盖发现更多的错误。

某系统重用了第三方组件(但无法获得其源代码),则应采用 黑盒测试 对组件进行测试。

使用白盒测试方法时,应根据 程序的内部逻辑 和指定的覆盖标准确定测试数据。

3 、测试阶段

image.png


自顶向下集成测试:不需要编写驱动模块,需要编写桩模块。

自底向上集成测试:不需要编写桩模块,需要编写驱动模块。

(注:下图来自前言中up主视频)

ecbbd04d781304df25b6cc908816b30b_a3b4e90cccc647dc94c9ae174da04c7e.png

一次性组装:时间快 。

增量式组装:稳妥,但是花时间长。

Alpha测试(α测试):针对产品,实验环境,开发环境进行测试。

Beta测试(β测试):针对产品,由用户在本地计算机去使用它。

4、McCabe复杂度

image.png

三种计算方法:


线性无关的区域数等于环形时间复杂度

V(G)=E-N+2(E是流图中边的条数,N是结点数)

V(G)=P+1(P是流图中判定结点的数目)

公式可记为:V(G)=弧-节点+2(或n等于node,节点的意思,来帮助记忆或区分)。

(注:下图来自前言中up主视频)

7679b4be2fb89f05a83d9e4e6d6de108_f29a2a05f27349439c87166a15f39160.png

V=弧数-结点数+2(V也等于闭合区域数+1)(使用第一个公式时注意,两个结点之间的边才算入总弧数)


目录
相关文章
|
SQL 关系型数据库 MySQL
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
485 0
|
JavaScript API
vue插槽slot、slot-scope、v-slot的区别以及嵌套插槽的使用
可以将 slot 理解成一个占位的东西,我们提前在模板中放置一个占位的标记,当其他地方要使用模板时就可以通过标记再传进来具体的内容,这样就可以实现更强的复用能力。
|
存储 开发框架 JSON
区块链开发必备的9个Rust包
Rust是新一代的潜力巨大的开发语言。本文编辑整理了9个主流的用于以太坊、比特币、tendermint、eosio、polkadot等区块链开发的Rust包,可用于区块链应用的快速开发。
2340 0
|
人工智能 安全 专有云
阿里云飞天企业版获信通院可信云技术最佳实践奖
在中国信息通信研究院举办的“2024可信云大会”上,阿里云飞天企业版凭借“一云多算”能力拿下“可信云技术最佳实践”奖。此外飞天企业版还通过了《“云+应用”一体化运维能力要求》、《行业云平台一体化运营平台评估L4卓越级》等多项评估。
376 1
|
8月前
|
存储 监控 关系型数据库
深入解析 Hologres Table Group 与 Shard Count
Hologres 是一款强大的实时数仓,支持海量数据的高效存储与快速查询。Table Group 和 Shard Count 是其核心概念,前者管理数据分片,后者指定分片数量。合理配置二者可显著提升性能。Table Group 实现资源共享与协同管理,Shard Count 根据数据量和读写模式优化分片,确保高效处理。结合业务需求进行动态调整,可充分发挥 Hologres 的潜力,助力企业数字化转型。
286 60
|
10月前
|
持续交付 开发者 Docker
探索容器化技术Docker及其在现代软件开发中的应用
探索容器化技术Docker及其在现代软件开发中的应用
|
JavaScript 开发者 索引
TypeScript接口与类型别名:深入解析与应用实践
【7月更文挑战第10天】TypeScript的接口和类型别名是定义类型的关键工具。接口描述对象结构,用于类、对象和函数参数的形状约束,支持可选、只读属性及继承。类型别名则为复杂类型提供新名称,便于重用和简化。接口适合面向对象场景,类型别名在类型重用和复杂类型简化时更有优势。选择时要考虑场景和灵活性。
|
JSON 数据格式
DTHttpJson UE4插件使用说明
DTHttpJson UE4插件使用说明
720 0
|
缓存 编解码 前端开发
2024年阿里云服务器经济型e、通用算力型u1及计算型、通用型实例适用场景参考
目前阿里云的活动中提供了多种云服务器实例规格,包括经济型e、通用算力型u1、计算型c7/a系列和通用型g7/a系列等,适用于不同场景。实例规格定义了CPU、内存等配置,影响计算和存储能力。本文主要为大家介绍了阿里云服务器的实例规格是什么,并汇总了阿里云轻量应用服务器和阿里云服务器e/u1/c7/c7a/c8a/c8y/g7/g7a/g8a/g8ae实例规格适用场景,以供参考。
2024年阿里云服务器经济型e、通用算力型u1及计算型、通用型实例适用场景参考
|
机器学习/深度学习 开发者
论文介绍:基于扩散神经网络生成的时空少样本学习
【2月更文挑战第28天】论文介绍:基于扩散神经网络生成的时空少样本学习
169 1
论文介绍:基于扩散神经网络生成的时空少样本学习