软件设计师【软件工程基础知识及相关试题】
or
一.系统开发方法论
1.结构化分析与设计
结构化分析方法学也称为生命周期方法学,它采用结构化分析、设计、编程来完成软件开发的各项任务。具有阶段性、推迟实现、文档管理三大特点。
基本思想:自顶向下,逐层分解。
概要设计:设计软件的结构,确定系统是由哪些模块组成,以及每个模块之间的关系。
详细设计:确定应该如何具体地实现所要求的系统,得出对目标系统的精确描述。
2.面向数据结构的设计
没有明显的使用软件结构的概念,对于模块独立性原则也重视不足,因此并不适合于复杂的软件系统。
3.面向对象分析与设计
引入对象的概念,将数据和方法封装在一起,提高了模块的聚合度,降低了耦合度,更大程度上支持软件复用。
二.CMM&CMMI
1.CMM
2.CMMI
三.软件测试
1.测试特点
大量统计资料表明,目前软件测试所花费用已超过软件开发费用的30%。
目的:在软件投入生产运行之前,尽可能地发现软件(主要是程序)中的错误和缺陷。一次成功的测试是发现至今为止尚未发现的错误。高效的测试是指用少量的测试用例,发现尽可能多的错误。
2.测试分类
阶段划分:单元测试,集成测试,确认测试,系统测试。
方法划分:白盒测试,黑盒测试。
产品划分:α测试和β测试。
注意:在实际应用中,一旦纠正了程序中的错误,还应该部分或全部进行重新测试,这种测试称为回归测试。
3.V模型
V模型是一个以测试为驱动的开发模型,该模型强调开发过程中测试贯穿始终。
4.单元测试
模块的内聚程度高可以简化单元测试过程。测试的方案也将明显减少,模块内的错误也更容易预测和发现。
5.集成测试
非渐增式:讲究一步到位,诊断定位和改正错误困难,只适合一些非常小的软件。
渐增式:
自顶向下:先测试上层模块,再测试下层模块,不必编写驱动模块。
自底向上:先测试下层模块,再测试上层模块,不必编写桩(测试)模块。
6.白盒测试-覆盖标准
1.语句覆盖:每个语句至少执行一次
2.判定覆盖:不仅每个语句至少执行一次,而且每个判定的每种可能都至少执行一次
3.条件覆盖:不仅每个语句至少执行一次,而且判定表达式中的每个条件都取得各种可能的结果
4.判定/条件覆盖:同时满足判定覆盖和条件覆盖
5.条件组合覆盖:使每个判定表达式中的条件结果的所有组合至少出现一次
6.路径覆盖:使程序中所有可能的路径都至少经过一次(如果程序中有环路,,则要求每条环路至少经过一次)
注意:满足条件组合覆盖的测试用例,也一定满足判定/条件覆盖。然而,条件覆盖还不能保证程序中所有可能的路径都至少经过一次
注意:条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖。
注意:路径覆盖并未考虑判定中的条件结果的组合,并不能代替条件覆盖和条件组合覆盖
7.McCabe复杂度(环路复杂度)
V(G) = m – n + 2
V(G):环路个数
m:有向弧数
n:节点数
四.试题
1.
2.
3.
4.
五.备注