瀑布模型:计划
螺旋模型:风险低
原型模型: 用户反馈
喷泉模型:代码复用
高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小
高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能或者一组紧密相关的功能。这样做的好处是可以让模块更容易理解和维护。例如,一个专门处理用户输入验证的模块就应该只包含与输入验证相关的代码,而不应该混入数据库访问等其他功能的代码。
低耦合:指的是模块之间的依赖程度要尽可能小。模块之间如果存在高度依赖(即高耦合),那么修改一个模块可能会导致其他多个模块也需要做出相应修改,这会大大增加维护成本和出错的可能性。低耦合的设计鼓励使用接口或者抽象层来减少直接依赖,使得系统更加灵活和易于修改。例如,通过定义接口来规范不同模块之间的交互,可以降低模块间的直接依赖关系。
类图:
1.关联关系(association)
关联关系是用一条直线表示的;它描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;
比如,乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;
关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;
注:在最终代码中,关联对象通常是以成员变量的形式实现的;
2.依赖关系:是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系;
与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;
显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;
软件测试的目的
- 测试是一个为了发现错误而执行程序的过程。
- 一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试用例。
- 一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。
白盒测试
语句覆盖:
判定覆盖:选择足够的测试用例,使得运行这些测试用例时,被测程序的所有可能结果都至少出现一次(即判定的每个分支都至少经过一次)
条件覆盖:选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次
黑盒测试
等价分类法:
边界值分析法:
测试策略
单元测试:是针对程序中的模块或构件,主要揭露编码阶段产生的错误。
集成测试:针对集成的软件系统,主要揭露设计阶段产生的错误
确认测试:是根据软件需求规约对集成的软件进行确认,主要揭露不符合需求规约的错误。
系统测试:对于基于计算机系统中的软件,还需将它集成到基于计算机系统中,并进行系统测试,以揭露不符合系统工程中对软件要求的错误。
软件维护与再工程
1.什么是软件维护?
是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程。
2.软件维护分类
纠错性维护:为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护
适应性维护:为了使软件适应内部或外部环境变化,而去修改软件的过程。
改善性维护:满足使用过程中用户提出增加新功能或修改已有功能的建议维护。
预防性维护:为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的活动。