瀑布模型:使用最早最广的模型。自上而下执行不可逆行。
特点:阶段性和顺序性。推迟实现,编码靠后(需求分析要充分)。质量保证(每个阶段都要完整)。
快速原型模型:获得主要需求,快速开发。用户评价后反复修改。
增量模型:分成若干个构件,并行工作,哪个完成提交哪个。
螺旋模型:指定计划、风险分析、实施工程、客户评估。(每次完成一个执行下一个循环执行使工程越来越大)适用于有良好的风险评估能力,速度慢。
喷泉模型:面向对象生命周期模型,迭代和无缝性。各个阶段无明显分界有交集。提高效率,文档管理难,审核难。
rational统一过程:初始、精化、构建、移交。不断迭代发布新的版本,降低风险。
微软过程模型:规划阶段、设计阶段、开发阶段、稳定阶段、发布阶段。给每个阶段设定里程碑。可以及时解决问题。经验模型,理论模型不足。
对软件需求的理解是软件开发的前提和重点。
C(x) 复杂度函数,E(x)时间函数
C\E(P1+P2) >C\E(P1) + C\E(P2)
耦合:取决于接口的复杂程度与通过接口的数据。设计模式倾向于数据耦合,控制耦合是紧密耦合。
软件结构参数:深度、宽度、扇入(被多少直接调用)、扇出(一模块直接调用的模块数)作用域要在控制域之内。
过程设计:
经典定义:顺序选择循环,单入口单出口。
扩展定义:可限制使用goto。
修正定义:可以在本循环中使用goto。
面向数据结构方法:
Jackson:顺序、选择、重复。
Warnier
白盒测试:知道内部工作过程,分为逻辑覆盖与控制结构覆盖。
不能做穷举测试(测不完)。选有代表的测。
逻辑覆盖
语句覆盖:保证程序中每个语句至少执行一次。
判定覆盖:语句覆盖+判定真假
条件覆盖:判定条件+&(防止&短路)
条件组合覆盖:条件各种组合全部执行一次。最强的逻辑覆盖。
控制结构覆盖
基本路径测试:找代表性的路径测试
循环测试:测试循环范围边界值
黑盒测试:测试软件功能
等价类划分 自低向上开销小
估计错误方法:提前植入错误再发现看比例
用例粒度宁粗勿细。设计强内聚的类内聚。
文件管理系统:成本低,简单,操作级别低,不同os差距大。要求第一范式。
关系数据库管理系统。第三范式。
面向对象数据库管理系统。第三范式
范式:NF,对表的规范。
软件规模估量:代码行技术,功能点技术(信息域特征,软件复杂性)。