一、选择题(1题3分,共30分)
1、在键盘上与字母A处于同一行的键是(C)
A、M
B、U
C、‘
D、R
2、软件工程的出现主要是由于(C)
A、程序设计方法学的出现
B、其他工程科学的影响
C、软件危机的出现
D、计算机的发展
3、适合与面向对象方法的软件生命周期模型是(B)
A、瀑布模型
B、喷泉模型
C、螺旋模型
D、增量模型
4、结构化瀑布模型的生命周期中,哪一个环节出错,对软件影响最大(C)
A、详细设计阶段
B、概要设计阶段
C、需求分析阶段
D、编码阶段
5、模块化内聚性最高的是(D)
A、逻辑内聚
B、偶然内聚
C、数据内聚
D、功能内聚
6、软件测试的目的是(B)
A、评价软件质量
B、发现软件错误
C、找出软件所有错误
D、证明软件是正确的
7、对象实现的数据与操作的(B),外部不可见。
A、结合
B、封装
C、隐藏
D、抽象
8、软件结构图中,各模块之间若有直线连接,表示有(B)联系。
A、继承
B、调用
C、组成
D、链接
9、为了有效的提高软件的可维护性,应该(A)
A、养成好的程序设计风格
B、注意模块的独立性
C、注意使用文档
D、保存测试文件与用例
二、填空题(1空1分,共18分)
1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、 可行性研究 、软件需求分析、系统总设计、详细设计、编码、 测试与运行 、 维护 。这八个阶段又可以归纳为 计划阶段 、 开发阶段 、 运行阶段 。
2、软件危机是指: 开发软件需要的高成本 与 产品的低质量 之间的矛盾。
3、_数据流图_和 数据字典 共同构成系统的逻辑模型。
4、语言有:机器语言、 汇编语言 、高级语言;高级语言又分为:基础语言、 结构语言 、 专用语言 。
5、单元测试一般以 白盒测试 为主、 黑盒测试 为辅。
6、统一过程是: 用例风险驱动 、 以架构为中心 、 增量且迭代 。
三、简答题(1题6~8分,共40分)
1、为什么说模块独立很重要?(6分)
答:模块独立性是指每个模块只完成系统要求的独立的子功能(即:功能单一),并且与其他模块的联系最少且接口简单(比如:只有一个接口)。
模块独立后可以对不同的模块设计不同功能后进行局部开发而不会影响其他,提高系统的可开发性、可靠性、可维护性。模块的独立程度可以由两个定性标准度量;内聚和耦合。耦合衡量不同模块之间互相依赖的紧密程度,内聚衡量一个模块内部各个元素彼此结合的紧密程度。独立性强的模块应具有高内聚低耦合。
2、两个模块间的耦合有几种?请简要解释并从强到弱列举出来。(6分)
答:内容耦合:一个模块直接访问另一个模块的内容。> 公共耦合:一组模块访问同一全局数据结构。> 外部耦合:一组模块访问同一全局简单变量。> 控制耦合:模块间传递的是控制信息,也就是一个模块控制另一个模块的行为。> 标记耦合:是模块间传递文件名、数据结构地址等标记。> 数据耦合:模块间传递数据,类似数值传递。> 非直接耦合:模块之间无直接关系。耦合性最弱。
3、软件测试有几个步骤?又分别与什么文档有关?(6分)
答:测试由4部分组成:单元模块测试、集成(子系统/系统)测试、确认验收测试、平行运行。
单元模块测试,集中对源代码实现的每一个程序单元进行测试,使用文档有:单元测试计划、详细设计说明书。
集成测试,将已测试模块组装,对设计的相关软件体系结构的构造进行测试,使用文档有:集成测试计划、软件需求说明书。
确认验收测试;检查已实现软件是否满足需求,软件配置是否安全、正确,使用文档有:确认测试计划、软件需求说明书。
平行运行;将已确认软件纳入实际运行环境,与其他系统组合一起运行测试,使用文档有:用户指南、使用手册等。
4、什么是白盒测试?有什么要求?(6分)
答:白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。
白盒测试的前提是全面了解程序内部逻辑结构,要求对所有逻辑路径进行覆盖测试。测试者必须检查程序的内部结构,从检查程序的逻辑着手,在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
5、如何提高软件的可维护性?(8分)
答:在软件工程的每个阶段都要采取措施,以便在各阶段结束前进行审查。
在需求分析阶段,要对将来要扩充和修改的部分加以注明。在讨论软件的可移植性时,要考虑可能影响软件维护的系统界面。在软件设计阶段,应从便于修改、模块功能独立的目标,评价软件的结构与过程,还应对将来可能修改的部分作准备。在代码编写时,应强调编码风格和内部说明。在软件交付前的每一次测试,都应给出需要进行的预防性维护部分的提示。在完成每项维护工作,都应对维护本身进行仔细复审。
6、根据下列要求,画出对应用例图(8分)
要求:新闻发布管理系统。管理员登录后可以发布新闻。任何人可以浏览新闻,但只有注册为用户后才可以评论。管理员登录后还可以对新闻与评论进行管理,如修改新闻,删除评论。
用例图:
四、综合题(1题12分,共12分)
将下列伪代码转换成盒图(N-S)与PAD图。
伪代码:
void root (float root1,float root2)
i=1;j=0;
while(i<=10)
输入一元二次方程的系数a、b、c;
p=b*b-4*a*c;
If (p<0)
输出“方程i无实数根”;
else if (p>0)
求出方程i的根,并输出;
else
求出方程i的重根,并输出;
j=j=1;
i=i+1
输出有重根方程的个数j;
N-S图:
PAD图: