一、多选题 1.在下面关于程序设计风格和软件测试的叙述中,选出4条正确的叙述。 A.功能性注释嵌在源程序体中,用以解释下面的程序语句怎么做。 B.对于批处理的输入和输出,不应按逻辑顺序,应按物理顺序要求组织输入数据。 C.对辅助存储的输入/输出,应当成块传送。 D.在使用等价类划分生成测试用例时,应选用输出等价类中的边界值作为代表值作为测试数据。 E.程序测试应对程序模块的所有独立的执行路径至少测试一次。 F.在程序调试时,找出错误的位置和性质比改正该错误更难。 G.对于嵌套型分支结构,若有n个判定语句,则有n+1条路径。 H.对于包含有多个数组元素的表达式,可引入临时变量以提高运算效率。 I.对于递归的问题应使用递归的过程,这样做可提高编程效率。 J.当验收测试通过,软件开发就完成了。 2.在下面关于标准和文档的叙述中,选出5条正确的叙述。 A.国家标准是由政府或国家级机构制定或批准,适用于全国的标准。这些标准都是强制性的,相关产品必须严格执行标准。 B.ISO9001是设计/开发、生产、安装和服务中的质量保证模式,ISO9000-3是使ISO9001适合于软件的质量保证指南。 C.软件工程标准化可提高软件的生产率。 D.软件质量保证体系是贯穿于整个软件生存期集成化过程体系,而不仅仅体现在最后产品的检验上。 E.ISO9000-3与具体的开发模式有关。它将软件全过程工序从管理角度、合同角度和工程角度划分为三大类。 F.软件测试计划始于需求分析阶段,完成于软件设计阶段。 G.任何一个文档都应是完整的、独立的,它应自成体系。 H.在新文档取代旧文档后,管理人员不应注销旧文档。 I.软件开发机构应保存一份完整的主文档,并允许开发人员可以保存主文档中的部分主文档,有自己的活动空间。 J.软件需求分析报告是给开发人员使用的,不是给其它人员,如维护人员,用户等使用的。
二、填空题
1.应用Coad和yourdon方法构造和评审OOA概念模型时,应按如下的五个层次进行: �第一个层次是识别 。它们是对应用中的概念的抽象,可以从用户要求书或其它规格说明中找到。 �第二个层次是识别 。它们是 所保存的信息,同时要给出各个 之间的实例连接。这些实例连接包括有1对1、1对多、多对多、多对1等联系。 �第三个层次是识别 。它们是 可提供的操作,同时要根据需要的功能给出各个操作之间的消息连接。 �第四个层次是建立 。有两种 :整体与部分;泛化与特化。前者表明一种聚合关系,后者表明一种继承关系。 �第五个层次是识别 。它相当于高层的模块或子系统。
2.已经有许多软件质量度量的方法,使用得最广泛的是事后度量或验收度量。它包括正确性、可维护性、完整性和可使用性。Gilb给出了它们的定义和度量。 � 要求软件正确地执行所要求的功能,最一般的度量是每千代码行的差错数; � 用于衡量软件在使用期间改错,移植或更新的容易程度。目前还没有直接度量它的方法,一般采用间接度量。 � 用于度量软件抗击对它的安全性攻击的能力。为了度量 ,需要定义两个子属性危险性和安全性。 是一个特定类型的攻击在一给定时间内发生的概率, 是排除特定类型攻击的概率。 � 是对“用户友好性”进行的量化的度量。 3.当前系统的 模型描述现行系统的实际业务处理过程,反映了现行系统具体 的现实。当前系统的 模型描述现行系统的功能结构、数据组织以及动态行为,反映了现行系统 的本质。 �目标系统是指待开发的新系统。根据计算机系统的特点,分析、比较目标系统和当前系统逻辑上的差别,确定目标系统的软件工作范围,采用自顶向下逐步分解的分析策略,确定目标系统的功能结构、数据组织以及动态行为,从而建立起目标系统的 模型。
三、简答题 1.下面给出一个求实函数方程Func(x)在自变量区间[a, b]中的全部实根的算法。首先阅读此由类C语言编写的程序,然后 �(1) 画出消去全部goto语句的在判定中没有复合逻辑条件的结构化程序的N-S图。 �(2) 计算该程序的McCabe复杂性度量。 �在算法中,a与b是区间[a, b]的两端点值;eps1与eps2是用户要求的求解精度。如果区间中点的函数值的绝对值小于eps1或新的小区间的长度小于eps2,就认为这个中点为根。
float BinRoot ( float a, float b, float eps1, float eps2 ) { float low = a, high = b; float flow = Func(low), fhigh = Func(high); float mid, fmid; label L1, L2, L3; //标号说明,给定某些程序地址
if ( flow * fhigh > 0.0 ) { BinRoot = 0; goto L3; } //无实根 L1: mid = (low + high) / 2; fmid = Func(mid); if ( abs ( fmid ) <= eps1 ) { L2: BinRoot = mid; goto L3; } else if ( high - mid <= eps2 ) goto L2; else if ( flow * fmid > 0.0 ) { low = mid; flow := fmid; goto L1; } else { high := mid; goto L1 }; L3: }
2.“有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“橙汁”、“啤酒”或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。” �(1) 试利用因果图法,建立该软件的因果图; �(2) 设计测试该软件的全部测试用例。
3.请回答下列有关软件维护方面的问题。 �(1) 什么是程序修改的副作用? �(2) 程序修改的副作用有哪几种?试举例说明?