最近在复习软件构造,知识点感觉比较多,有些记不住的就在这里写一下以便回顾,如果有幸能帮到别人那就更好了。
测试、异常、健壮性
测试
测试的等级
按被测试部分的规模分为单元测试、集成测试、系统测试、验收测试
回归测试:一旦程序被修改,重新执行之前的所有测试
黑盒测试/白盒测试
白盒测试:对程序内部代码结构的测试——要考虑内部实现细节
黑盒测试:对程序外部表现出来的行为的测试——完全从函数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)
这篇文章详细地介绍了分支合并中的各种情况
标签:版本,复习,迭代,异常,构造,测试,软件,过程 From: https://www.cnblogs.com/Y-Y-R/p/17407258.html