一、软件维护
1.软件维护是指对于已交付使用的软件,由于改正错误或增加新的功能来修改软件的过程。
2.软件维护包括:改正性维护(改正错误),适应性维护(适应环境),完善性维护(完善需要,占比最大),预防性维护(预防变化)。
3.软件再过程包括:库存目录分析(目录保存了各个系统的信息,确定哪些系统需要预防性维护,需要使用多年的系统,正在成功运行的系统,未来有重大变化的系统)
文档重构:对于正确不需要变动的部分,不修改;需要修改但资源有限,一步一步修改;完全需要修改的,最少修改
逆向工程
代码重构,用得最多,在模块内,在模块外就是正向工程
数据重构,起始于逆向工程
正向工程,针对系统。
二、软件测试
1.单元测试
测试重点:模块接口测试,局部数据结构,重要执行通路,错误处理,边界条件
测试方法:代码审查:一次审查会议上可以发现很多错误,减少系统验证工作量。
计算机测试:驱动程序:模拟主程序,接受测试数据,并转发给下层模块。
存根程序:模拟被测试模块所调用的模块,做最少的数据操作,输出操作结果,将控制归还给调用它的模块。
2.集成测试
一次性集成:需要编写大量的驱动程序和存根程序;一次将所有模块结合,无法发现所有的错误的原因;无法区分是接口错误还是其他类型错误。
自顶向下集成:从主控制程序出发,按照软件的控制层次结合下层模块,分为DFS和BFS。
优点:不需要编写驱动程序;可以在较早时期对主要控制和关键选择进行测试;若采用深度优先,则可以在较早时期得到具有软件完整功能的实现。
缺点:需要编写存根程序,在较高层次的测试,需要对较低层次进行处理。
自底向上集成:从软件系统的最底层模块出发,逐步结合测试。
优点:不需要存根程序;测试驱动程序需要不多;模块可以并行测试;底层模块往往是计算、输入、输出,可以更好的在测试早期发现这些错误。
缺点:对主要控制和关键选择的测试时间晚,对顶层组件测试晚,推迟了主要错误的发现;只要当最后一个模块加入之后,才有系统的整体形象。
三明治集成:选择一层作为基准层。
优点:较早测试主要控制和关键选择;可以并行测试;存根和驱动程序编写少
缺点:不能较早测试底层模块
回归测试:重新执行已执行的某测试的子集,为了防止因调试或其他原因而引起的软件非预期错误。
测试部分:测试软件全部功能;测试修改部分;测试可能被修改部分影响的部分。
3.确认测试
主要测试软件的有效性。什么是有效性,符合客户标准,客户满意就是有效的。
根据需求规格说明书测试,需求规格说明书反映了客户的需求。
确认测试的一个重要内容就是软件配置复查。检查软件配置各项成分是否齐全,质量是否符合要求,文档与程序是否一致,具有软件维护所需要的细节,写入了库存目录当中。
除开人工审查,还有考虑用户手册的完整性和正确性。
α测试(开发者在)与β测试(开发者不在)