软件构造复习(一)

最近在复习软件构造,知识点感觉比较多,有些记不住的就在这里写一下以便回顾,如果有幸能帮到别人那就更好了。

测试、异常、健壮性

测试

测试的等级

按被测试部分的规模分为单元测试、集成测试、系统测试、验收测试

回归测试:一旦程序被修改,重新执行之前的所有测试

 黑盒测试/白盒测试

白盒测试:对程序内部代码结构的测试——要考虑内部实现细节

黑盒测试:对程序外部表现出来的行为的测试——完全从函数Spec中导出测试用例,不考虑函数内部实现

测试优先编程

步骤:写Spec、根据Spec写测试用例、写代码并测试

单元测试

针对软件的最小单元模型开展测试,隔离各个模块,容易定位错误和调试

错误和异常

错误(Error):指程序中严重的错误,如栈溢出、内存溢出、虚拟机运行错误等。程序员无法处理。

异常(Exception):指程序可以处理的异常,可捕获且可能恢复。

异常又分为运行时异常(RuntimeException)和编译异常。运行异常是指运行时出现的异常,如数组越界(ArrayIndexOutOfBoundsException)、空指针异常(NullPointerException)等。这类异常不能在编译时被发现。编译异常是编译时能被发现的异常,如找不到方法(NoSuchMethodException)。有编译异常的程序不会被通过。

异常按是否能在编译时被发现分为UncheckedExcptions和CheckedException,其中CheckedExcecption必须被捕获或者声明(因为运行异常有jvm处理,编译异常则不行,所以必须自定义处理逻辑)。

 

报错信息的第一行是“第一现场”,对报错信息的每一行,其下一行是调用当前行的方法的位置

异常处理

1.try......catch......finally

用法:

try{

  //可能出现异常的代码

}catch(异常类型1  e){

  //发生类型1异常时进行的处理

}catch(异常类型2  e){

  //发生类型2异常时进行的处理

}......

finally{

  //无论异常是否发生都要执行的代码

}

捕获的异常一般是CheckedException,因为一般来说,如果捕获UncheckedException,则相当于对编程的错误置之不理。

2.throw

用于抛出异常

3.throws

如果一个方法抛出了CheckedException且没有捕获处理,则必须在方法声明上进行声明。

修饰符 返回值类型 方法名(参数) throws 异常类型1 异常类型2 ......{...}

还有下面这张表 比较重要

构造过程与配置管理

软件的过程模型

分为两种:线性过程和迭代过程。下面的前三种属于线性过程。

瀑布过程

线性推进,管理简单但无法适应需求的增加及变化

增量过程

将软件看作一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量

是多个瀑布的串行

V字过程

是对瀑布过程的扩展,在其基础上增加了测试阶段

原型过程

在原型基础上持续不断的迭代,发现用户变化的需求

开发出来之后由用户试用/评审,发现问题反馈给开发者,开发者修改原有的实现,继续交给用户评审。循环往复这个过程,直到用户满意为止。

该过程时间代价高,但开发质量也高

螺旋过程

非常复杂的过程

多轮迭代基本遵循瀑布模式。每轮迭代有明确的目标,遵循原型过程,进行严格的风险分析,方可进入下一轮迭代

敏捷开发

通过快速迭代和小规模的持续改进,快速适应变化。

软件配置管理(SCM)与版本控制系统(VCS)

SCM

软件配置管理:追踪和控制软件的变化

软件配置项:软件中发生变化的基本单元(如文件)

 基线:软件持续变化过程中的“稳定时刻”(如对外发布的版本)

 配置管理数据库(CMDB):存储软件的各配置项随时间发生变化的信息+基线

版本控制

分为三种

本地版本控制系统:仓库存储在开发者本地及其,无法共享和合作。

集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间协作。

分布式版本控制系统:仓库存储于独立的服务器 + 每个开发者的本地机器。(git)

git

四个工作区域

 workspace 工作区

staging 暂存区,虚拟区域,临时存放改动

local repository 本地仓库

remote repository 远程仓库

Object Graph

版本之间的演化关系图,一条边A->B表征了“在版本B的基础上作出变化,形成了版本A”

多个commit指向同一个父亲:分支

一个commit指向两个父亲:合并

与传统版本控制工具的区别

传统VCS存储版本之间的变化(行),git存储发生变化的文件而非代码行,不变化的文件不重复存储。

 分支/合并

示意图

关于合并,我在复习查找资料的过程中找到了一篇写得很好的文章

这才是真正的 Git——分支合并 - 知乎 (zhihu.com)

这篇文章详细地介绍了分支合并中的各种情况

posted @ 2023-05-20 15:12  YY_R  阅读(29)  评论(0)    收藏  举报