软件生命周期模型

瀑布模型

image-20220525192721490

优点:采用规范的方法;严格规定每个阶段提交的文档;要求每个阶段交出的产品必须经过验证。

快速原型模型

image-20220525193219954

(1)瀑布模型不可回溯,快速原型模型可以回溯,反复改进。

(2)瀑布模型需求不发生或发生很少变化,快速原型模型可以不断变化。

(3)瀑布模型最后才和用户交互,快速原型模型与客户的交互时刻进行着。

增量模型

image-20220525193149799

喷泉模型—面向对象的软件过程模型

螺旋模型—增加了风险分析的快速原型模型

概念

极限/敏捷编程

image-20220525192854143

生命周期

image-20220525193345244image-20220525193402329

软件体系结构

image-20220525204832395image-20220525204839442image-20220525204859812image-20220525204938437image-20220525204912841

扇入扇出

image-20220525205028732

耦合

image-20220525205057662

image-20220525205221324image-20220525205232059image-20220525205243095image-20220525205249661

内聚

image-20220525205320874

image-20220525205335892image-20220525205341815image-20220525205356044image-20220525205408868image-20220525205417201image-20220525205441057

需求规格说明书

image-20220525204121412

概要设计说明书

image-20220525210119012

编码和测试

image-20220525211605314

测试方法

image-20220525211649115image-20220525211652076

测试步骤

image-20220525211716971image-20220525211728192

单元测试

image-20220525211743934image-20220525212148565image-20220525211914414

集成测试

image-20220525211944054image-20220525212023863

自顶向下

image-20220525212207522

又分为深度优先,宽度优先策略

自底向上

image-20220525212350832

​ 自底向上集成方法的基本过程如下:

​ 1)把底层模块组合成实现一个特定软件子功能的族,如图族1、2、3。

​ 2)为每个模块设计一个驱动程序,作为测试的控制程序,以协调测试用例的输入和输出。图中D1、D2、D3分别是族1、2、3的驱动程序;

​ 3)对模块进行测试;

​ 4)用实际模块代替驱动程序组装成新的模块族,在新加入的实际模块上面加上新的驱动程序进行测试;

​ 5)重复第二到第四步,逐渐向上加入实际模块,直至构造出整个软件结构。

回归测试

image-20220525212524756

确认测试

image-20220525212546742

Alpha和Beta测试

image-20220525212624172

白盒测试

  1. 语句覆盖 语句覆盖是指:设计的测试用例能使程序中每条语句至少执行一次。

  2. 判定覆盖 判定覆盖是指:选取足够的测试用例,使得程序中每个判断的可能结果都至少执行一次,也就是说使程序的每个判断分支至少通过一次

  3. 条件覆盖 条件覆盖是指:选择足够的测试用例,使得程序中每个判定表达式每个条件都取到各种可能的结果。

    1. ​ 条件覆盖通常比判定覆盖强,但是条件覆盖不一定包含判定覆盖。
  4. 判定/条件覆盖 判定/条件覆盖是指:选取足够的测试用例使得同时满足判定覆盖和条件覆盖的要求。

  5. 条件组合覆盖 条件组合覆盖指:选取足够的测试用例,使得每个判定表达式中条件的各种可能的组合都至少出现一次。

  6. 点覆盖 点覆盖是指:选取足够多的测试用例,使得程序执行路径至少经过程序图中每个节点一次

  7. 边覆盖 边覆盖是指:选取足够多的测试用例,使得程序执行路径至少经过程序图中每条边一次

  8. 路径覆盖 路径覆盖是指:选取足够多的测试用例,使得程序的每条可能路径都至少执行一次。

黑盒测试

等价类划分是一种黑盒测试技术。 穷尽的黑盒测试需要使用所有可能的输入数据(有效的和无效的)进行测试,通常是不现实的。因此产生了等价类划分。

确定测试用例 A.给每个等价类规定一个唯一的编号;

​ B.设计一个新的测试用例,使其尽可能多地覆盖未被覆盖过的有效等价类。重复此步,直至所有有效等价类被覆盖;

​ C.设计一个新的测试用例,使其覆盖而且只覆盖一个尚未被覆盖的无效等价类。重复此步,直到所有无效等价类被覆盖。

边界值分析

    程序通常在处理边缘情况时容易出现错误,如等价类与等价类之间的边界值。    

​ 所以在设计测试用例时,使用正好等于、正好大于、正好小于边界值的数据进行测试,发现程序错误的概率较大。

实用测试

image-20220525213413009

软件的可靠性

软件可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。

软件的可用性 对故障可修复系统,应同时使用可靠性和可用性来衡量。

​ 软件可用性是:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。

可靠性和可用性的区别是:可靠性是在0到t时间间隔内,系统没有失效的概率。而可用性是在t时刻,系统是正常运行的概率。

测试相关总结

image-20220525213716785image-20220525213722912

数据流图–可行性研究

image-20220525194820920image-20220525194920739image-20220525195020678

系统流程图

image-20220525195538579image-20220525195549180image-20220525195606240image-20220525195613061

E-R图

image-20220525201006990image-20220525201024137image-20220525201044808image-20220525201058822

IPO图

image-20220525202828528image-20220525203214908image-20220525203303957

用例图

image-20220525203346158image-20220525203631880image-20220525203658526image-20220525203714878image-20220525203807323

系统功能层次方框图

image-20220525203854969

功能层次图

image-20220525205826783

类图

image-20220525210005938image-20220525210025017image-20220525210038724

程序流程图

image-20220525210815959image-20220525210830531

N-S图

image-20220525210857955

PDL(伪码)

image-20220525210937473

动态模型

image-20220525211057941image-20220525211112903image-20220525211241812image-20220525211326955image-20220525211333849image-20220525211425699

作业

1、什么是软件危机?软件危机产生的原因是什么?

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护的过程中出现一系列严重问题的现象。

原因:1)软件本身特点造成——脑力劳动生产;

2)软件开发与维护的方法不正确。

2、请简述软件工程的三要素。

方法、工具、过程。

3、什么是软件过程?它与软件工程方法学有何关系?

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

软件过程是软件工程方法学的3个重要组成部分之一。

4、请简要说明什么是系统功能模块之间的耦合性?并按照耦合性由低到高的顺序写出耦合性的各个类型。

软件系统结构中各模块间相互联系紧密程度的一种度量。

低>>>>高

数据耦合,复合耦合,控制耦合,公共耦合,内容耦合

5、请简要说明什么是系统功能模块的内部的内聚性?并按照内聚性的强弱顺序写出内聚性的各个类型。

模块的内聚是指模块内部各个元素之间彼此结合的紧密程度

内聚性从强到弱依次为:功能型,顺序型,通信型,瞬时型,逻辑型,偶然型