软件工程--期末复习指南(三)
软件工程期末复习指南(三)
chapter 5:详细设计与实现
详细设计是编码的先导。
0.涉及到的一些工具会考察大题。
1.程序流程图
又称为程序框图。
2.盒图
3.PAD图
问题分析图(Problem Analysis Diagram)采用二维树形结构图表示程序的控制流。
4.判定表
一张判定表由四部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作。
5.判定树
6.JSP方法
Jackson方法是面向数据结构的设计方法,简称JSP方法。
Jackson图表示三种基本的逻辑数据结构:
7.程序复杂度的计算
三种计算方法:
- 流图中的区域数等于环形复杂度。
- 流图G的环形复杂度V(G)=E-N+2,其中,E为流图中的边数,N是流图中的结点数。
- 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
chapter 6:编码与测试
0.含有大量概念,容易考察选择题,也会出大题。
1.软件测试的目的
测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。
能够发现错误的测试是成功的测试,否则是失败的测试。
总之,测试的目的是:
- 想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。
- 测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。
- 实施测试收集到的测试结果数据为软件可靠性分析提供了依据。
- 测试不能表明软件中不存在错误,它只能说明软件中存在错误。
2.软件测试的原则
- 所有的测试都应追溯到用户需求
- 一旦完成需求模型就可以着手制定测试计划,详细的测试用例定义可在设计模型确定后开始,所有测试工作可在编码之前进行计划和设计
- 测试规模应该从“小”到“大”
- 穷举测试是不可能的
软件测试≠程序测试
软件测试应贯穿于软件定义与开发的整个过程。
软件开发过程是一个自顶向下,逐步细化的过程。
测试过程是依相反顺序安排的自底向上,逐步集成的过程。
3.软件测试的策略
测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试。
单元(模块)测试,集中对源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例。
集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。包括:一次性集成方式和增殖式集成方式。
前者分别测试每个模块再全部组装起来一起测试,后者先一个个模块测试再逐步组装起来。
确认(验收)测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
运用黑盒测试的方法。
系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
4.α测试与β测试
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。α测试是在受控的环境中进行的。
β测试是由软件的多个用户在实际使用环境下进行的测试。
只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。
5.系统测试
系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。
6.测试的方法和技术
黑盒测试:
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
黑盒测试又叫做功能测试,数据驱动测试,基于规格说明书的测试。
白盒测试:
此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称开盒测试、玻璃盒测试,或是结构测试,逻辑驱动测试,基于覆盖的测试。
软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:
- 对程序模块的所有独立的执行路径至少测试一次;
- 对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;
- 在循环的边界和运行界限内执行循环体;
- 测试内部数据结构的有效性等。
7.控制结构测试技术
路径测试和基本路径测试:
注意:将程序流图转化为流图之后,2,3和4,5结点合并了。
8.黑盒测试技术
黑盒测试方法是在程序接口上进行测试。
黑盒测试方法包括:等价类划分;边界值分析;错误推测法。
9.等价类划分
使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
10.边界值分析
边界值分析是对等价类划分方法的补充。
11.黑盒测试与白盒测试比较
12.测试与调试比较
13.软件可靠性
可靠性(Reliability):程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。
可用性(Usability):程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。
区别:可靠性意味着在0~t时间间隔内系统没有失效;而可用性是指在时刻t,系统是正常运行的。
正确性(Correctness):程序的功能正确。
chapter 7:维护
0.只会考察概念题。
1.软件维护的定义
软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程。
2.软件维护的类型
软件维护可以分成4种类型:
1)纠错性(改正性)维护
2)适应性维护
3)完善性维护
4)预防性维护
3.软件维护的特点
4.软件维护的工作流程
维护工作最后一步是复审。
5.软件可维护性
软件可维护性即软件被理解、改正、调整和改进的难易程度。
决定软件可维护性的因素:可理解性;可测试性;可修改性;可移植性;可重用性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用