A. 具有独立性的模块软件比较容易开发出来。 B. 独立的模块比较容易测试和维护 C. 模块的独立程度可以通过内聚和耦合标定
D. 独立的模块可以完成一个相对独立的特定子功能。 四、简答题 (每小题5分,共20分。)
1、 怎样建立目标系统的逻辑模型?
首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图进行调整;最后由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。 2.说明并比较概要设计说明书与需求分析说明书的内容。
需求分析说明书是需求分析的阶段成果,将成为软件开发、验收和管理的依据;概要设计说明书是概要设计的阶段成果,将作为详细设计的输入和集成测试的依据。
需求分析说明书主要内容是描述系统的需求,包括数据描述、功能要求、性能要求、运行需求以及其他要求; 概要设计说明书主要内容是描述系统的结构,包括总体设计、接口设计、数据结构设计、运行设计、出错处理设计、安全保密设计以及维护设计等。
3.什么是“对象”?什么是“类”?
对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和对这些属性进行操作的一组服务的封装体。 类是具有相同属性和服务的一组对象的集合,为属于该类的全部对象提供统一的抽象描述,其内部包括属性和服务两个主要部分。具体来说,类由方法和数据组成,它是关于对象性质的描述,包括外部特性和内部实现两个方面。
4.版本控制
配置管理的版本控制主要解决下列问题: (1) 根据不同用户的需要配置不同的系统; (2) 保存系统老版本,为以后调查问题使用; (3) 建立一个系统新版本,使它包括某些决策; (4) 支持两为位以上工程师同时在一个项目工作; (5) 高效存储项目的多个版本。 五、应用分析题:(共15分)
1.根据以下列描述,画出学生申请IC借书卡的第一层数据流图:
学生入学后到图书馆申请IC借书卡,图书馆管理人员根据IC借书卡库存情况分析是否需要购买新的IC借书卡,如需购买,则向IC借书卡提供商购买。各种资金往来通过学校的会计科办理。(5分)
第 6 页 共 11 页
第一部分 选择题
1.对象实现了数据和操作的结合,使数据和操作( )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 8.瀑布模型的存在问题是( b )
A.用户容易参与开发 B.缺乏灵活性 C.用户与开发者易沟通 D.适用可变需求
9.软件测试方法中的静态测试方法之一为( a ) A.计算机辅助静态分析 B.黑盒法 C.路径覆盖 D.边界值分析
10.软件生命周期中所花费用最多的阶段是( d ) A.详细设计 B.软件编码 C.软件测试 D.软件维护
11.第一个体现结构化编程思想的程序设计语言是( b ) A.FORTRAN语言 B.Pascal语言 C.C语言 D.PL/1语言
12.程序的三种基本控制结构是( b )
A.过程、子程序和分程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和转移 13.在详细设计阶段,经常采用的工具有( a ) A.PAD B.SA C.SC D.DFD 14.详细设计的结果基本决定了最终程序的( c ) A.代码的规模 B.运行速度 C.质量 D.可维护性
15.需求分析中开发人员要从用户那里了解( a ) A.软件做什么 B.用户使用界面 C.输入的信息 D.软件的规模
16.结构化程序设计主要强调的是( d ) A. 程序的规模B. 程序的效率
C. 程序设计语言的先进性D. 程序易读性 18.经济可行性研究的范围包括( c ) A.资源有效性 B.管理制度 C.效益分析 D.开发风险
19.可行性分析是在系统开发的早期所做的一项重要的
论证工作它是决定该系统是否开发的决策依据,因必须给出( b )的回答。 A.确定 B.行或不行 C.正确 D.无二义
20.需求分析阶段的任务是确定( d ) A. 软件开发方法B. 软件开发工具
C. 软件开发费D. 软件系统的功能 。 三、名词解释题 每小题3分,共15分。 31.软件生存周期模型 32.数据字典(DD) 33.内聚性 35.多态性
三、名词解释题 每小题3分,共15分。
31.是描述软件开发过程中各种活动如何执行的模型。
32.数据字典是用来定义数据流图中的各个成分的具体含义的。 它以一种准确的、无二义性的说明方式为系统的分析、 设计及维护提供了有关元素的一致的定义和详细的描述。
33.内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量, 即一个模块内部各个元素彼此结合的紧密程度的度量。
35.指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。 四、简答题 每小题5分,共20分。
36.简述容错技术的四种主要手段,并解释。
37.以G.J.Myers的观点,简述对软件测试的目的。
38.就程序设计语言的工程特性而言,对程序编码有哪些要求? 39.模块的内聚性包括哪些类型? 四、简答题 每小题5分,共20分。
36.结构冗余:包括静态冗余、动态冗余和混合冗余。
信息冗余:为检测或纠正信息在运算或传输中的错误,须外加一部分信息。 时间冗余:指重复执行指令或程序来消除瞬时错误带来的影响。 冗余附加技术:指为实现上述冗余技术所需的资源和技术。 37.软件测试是
第 7 页 共 11 页
(1)为了发现错误而执行程序的过程;
(2)一个好的用例能够发现至今尚未发现的错误的测试。 (3)一个成功的测试是发现至今尚未发现的错误的测试。
38.就程序设计语言的工程特性而言,对程序编码有如下要求: (1)可移植性
(2)开发工具的可利用性 (3)软件的可重用性 (4)可维护性
39.模块的内聚性包括:
(1)偶然内聚(2)逻辑内聚(3)时间内聚 (4)通信内聚(5)顺序内聚(6)功能内聚
一、选择题:(每题1分,共20分)(将答案写在题号前的()中) ( C )1. 软件是( )。
A. 处理对象和处理规则的描述 B. 程序 C. 程序及其文档 D. 计算机系统
( B )2. 软件需求规格说明的内容不应包括( )。
A. 主要功能 B. 算法的详细描述 C. 用户界面及运行环境 D. 软件的性能
( B )3. 程序的三种基本控制结构是( )。
A. 过程、子程序和分程序 B. 顺序、选择和重复 C. 递归、迭代和回溯 D. 调用、返回和转移
( D ) 4. 面向对象的分析方法主要是建立三类模型,即( )。 A) 系统模型、ER模型、应用模型 B) 对象模型、动态模型、应用模型 C) E-R模型、对象模型、功能模型 D) 对象模型、动态模型、功能模型
( C ) 5. 在E-R模型中,包含以下基本成分( )。 A) 数据、对象、实体 B) 控制、联系、对象 C) 实体、联系、属性 D) 实体、属性、操作
( A ) 6. 各种软件维护的类型中最重要的是( )。 A) 完善性维护 B) 纠错性维护
C) 适应性维护 D) 预防性维护
( B ) 7.软件测试的目标是( )。
A. 证明软件是正确的 B. 发现错误、降低错误带来的风险 C. 排除软件中所有的错误 D. 与软件调试相同
( D )8.软件生命周期中所花费用最多的阶段是( )
A.详细设计 B.软件编码 C.软件测试 D.软件维护
( C )9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是( )
A.条件覆盖法 B.等价分类法 C.边界值分析法 D.错误推测法
( D )10、详细设计的基本任务是确定每个模块的( )设计
A.功能 B.调用关系 C.输入输出数据 D.算法
( A )11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( )
A.模块化的根据 B.逐步求精的根据 C.抽象的根据 D.信息隐藏和局部化的根据
( D )12.下面几种白箱测试技术,哪种是最强的覆盖准则 ( )
A.语句覆盖 B.条件覆盖 C.判定覆盖 D.条件组合覆盖
( A )13.面向数据流的设计方法把( )映射成软件结构。
A.数据流 B.系统结构 C.控制结构 D.信息流
( A )14.内聚程度最低的是( )内聚
A.偶然 B.过程 C.顺序 D.时间
( A )15.确定测试计划是在( )阶段制定的.
A.总体设计 B.详细设计 C.编码 D.测试
( D )16.需求分析的产品是( )
第 8 页 共 11 页
A.数据流程图案 B.数据字典 C.判定表 D.需求规格说明书
( C )17.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( )
A.数据库设计 B.数据通信 C.数据定义 D.数据维护
( D )18.( )引入了“风险驱动”的思想,适用于大规模的内部开发项目。 A.增量模型 B.喷泉模型 C.原型模型 D.螺旋模型 ( D )19.模块的内聚性最高的是( )
A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚
( D )20.提高测试的有效性非常重要,成功的测试是指( )
A.证明了被测试程序正确无误 B. 说明了被测试程序符合相应的要求 C.未发现被测程序的错误 D.发现了至今为止尚未发现的错误
二.判断题(每题1分,共10分)将答案写在题号前的( )中,正确用√, 错误用χ。 ( × )1、开发软件就是编写程序。
( × )2、系统测试的主要方法是白盒法,主要进行功能测试、性能测试、安全性测试及可靠性等 测试。 ( × )3、编程序时应尽可能利用硬件特点以提高程序效率. ( × )4、软件需求分析的任务是建立软件模块结构图。 ( √ )5、尽可能使用高级语言编写程序
( × )6、以结构化分析方法建立的系统模型就是数据流图。 ( × )7、进行总体设计时加强模块间的联系。 ( × )8、编码时尽量多用全局变量.
( √ )9、用CASE环境或程序自动生成工具来自动生成一部分程序. ( × )10、软件测试是要发现软件中的所有错误。 三、简答题:(每题5分,共25分) 1. 软件生命期各阶段的任务是什么? 答:软件生命期分为7个阶段: 1、问题定义:要解决的问题是什么
2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性 3、需求分析:系统必须做什么
4、总体设计:系统如何实现,包括系统设计和结构设计 5、详细设计:具体实现设计的系统 6、实现:编码和测试
7、运行维护:保证软件正常运行。 2.软件重用的效益是什么?
答:1、软件重用可以显著地改善软件的质量和可靠性。
2、软件重用可以极大地提高软件开发的效率。
3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。
3. 自顶而下渐增测试与自底而上渐增测试各有何优、缺点? 答:
① 自顶而下渐增测试
优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能够尽早发现上层模块的接口错误。
缺点:需要存根程序,底层错误发现较晚。 ② 自底而上渐增测试
优点与缺点和自顶而下渐增测试相反。 4. 提高可维护性的方法有哪些?
答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。
在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。
在软件设计的复审中,因从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。
在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。
在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。 在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。 为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术。
简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。 【解答】
测试过程按 4 个步骤进行,即单元测试(模块测试)、集成测试(子系统测试和系统测试)、确认测试(验收测试)和平行运行。
单元测试集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。
第 9 页 共 11 页
集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。与其相关的文档是集成测试计划和软件需求说明书。
确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。与其相关的文档是确认测试计划和软件需求说明书。
平行运行把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。与其相关的文档:用户指南、使用手册等。
四、应用题(每题8分,共40分)
1、 假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。
对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。要求:画出系统的数据流图。
答:
2、 将下面给出的伪码转换为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 ) 求出根并输出; if ( p == 0 ) {
求出重根并输出; j = j + 1; }
i = i +1;
}
输出重根的方程的个数j;
4、某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定树表示与上述每种条件组合相对应的计算行李费的算法.
答案:
第 10 页 共 11 页
第 11 页 共 11 页