收藏 分销(赏)

软件工程学上半年作业1.doc

上传人:天**** 文档编号:3755770 上传时间:2024-07-16 格式:DOC 页数:20 大小:799KB 下载积分:10 金币
下载 相关 举报
软件工程学上半年作业1.doc_第1页
第1页 / 共20页
软件工程学上半年作业1.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
《软件工程学》2013年上半年作业 一、简答题。 1、需求分析的任务 答:需求分析的任务主要包括以下几项: 确定目标系统的综合要求,其中包括 (目标系统的功能、性能、运行的环境及扩展性要求); 分析目标系统的数据要求,其中包括(系统平台需要哪些数据?数据间有什么关系?数 据数据及数据结构?对数据的处理逻辑关系等) 导出目标系统的逻辑模型 修正系统流程图 修正系统开发计划 开发原型系统 2、模块设计准则 答:1、改进软件结构提高模块独立性(低耦合高内聚) 2、模块规模要适中 3、深度、宽度、扇入及扇出要适当 4、设计单入口单出口的模块 5、模块功能应该可以预测 6、降低接口的复杂性 7、模块的作用域应该在控制域之内 3、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,具体表现在哪些方面? 答:1、无法开发复杂程度高的软件 2、成本和进度估计不准 3、无统一科学的规范,软件不可维护 4、无质量保证,可靠性差 5、软件常不能满足用户的需求 6、无适当的文档资料 7、软件生产率太低 4 、总体设计的任务 答:1、设计系统的物理实现方案 2、设计软件的整体结构,划分程序功能模块,决定模块间的接口关系和传递信息; 3、设计系统全局的存贮数据结构 4、设计系统I/O的方式和格式; 5、设计系统安全性、出错处理及代码等 6、设计组装测试计划。 二、选择题。 1、从下列关于结构化程序设计的叙述中选出5条正确的叙述。 ① 程序设计比较方便,但比较难以维护。 ② 便于由多个人分工编制大型程序。 ③ 软件的功能便于扩充。 ④ 程序易于理解,也便于排错。 ⑤ 在主存储器能够容纳得下的前提下,应使模块尽可能大,以便减少模块的个数。 ⑥ 模块之间的接口叫做数据文件。 ⑦ 只要模块之间的接口关系不变,各模块内部实现细节的修改将不会影响别的模块。 ⑧ 模块间的单向调用关系叫做模块的层次结构。 ⑨ 模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以下。 答:正确的叙述有②、③、④、⑦、⑧。 如果程序结构的模块化满足评价的标准(高内聚、低耦合),这样的结构是容易维护的,程序的功能也容易测试,容易理解、容易修改、容易维护的,程序的功能也容易扩充。特别适合于大型程序编制时,多人分工全中作,协同完成任务的情形。因为是采用自顶向下、逐层分解来划分解模块结构的,所以模块之间的调用关系是分层次的模块结构,就叫做模块的层次结构。模块之间的信息传递叫做模块的接口,模块之间传递信息可以通过参数表、全局变量或全局数据结构、数据文件、专门模块太大,控制路径数目多、涉及的范围广、变量的数目多、总体复杂性高,可理解性、可修改性、可靠性就会变差。模块太小,模块个数增多,调用的系统开销就会增大。所以要有一个权衡 2、原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(A)系统。它从用户界面的开发入手,首先形成(B),用户(C),并就(D)提出意见,它是一种(E)型的设计过程。 供选择的答案: A: ①需求不确定性高的 ②需求确定的 ③管理信息 ④决策支持 B: ①用户界面使用手册 ②用户界面需求分析说明书 ③系统界面原则 ④完善的用户界面 C: ①改进用户界面的设计 ②阅读文档资料 ③模拟用户界面的运行 ④运行用户界面原型 D: ①同意什么和不同意什么 ②使用和不使用哪一种编程语言 ③程序的结构 ④执行速度是否满足要求 E :①自外向内 ②自顶向下 ③自内向外 ④自底向上 答:A.① ; B. ③; C. ④; D. ①; E. ① 3、供选择的答案中选出正确的答案填入下列叙述中的( )内。 模块内聚性用于衡量模块内部各成分之间彼此结合的紧密程度。 (1)一组语句在程序中多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚性是(A)的。 (2)将几个逻辑上相似的成分放在同一个模块中,通过模块入口处的一个判断决定执行哪一个功能,该模块的内聚性是(B)的。 (3)模块中所有成分引用共同的数据,该模块的内聚性是(C)。 (4)模块内的某成分的输出是另一些成分的输入,该模块的内聚性是(D)的。 (5)模块中所有成分结合起来完成一项任务,该模块的内聚性是(E)的。它具有简明的外部界面,由它构成的软件易于理解、测试和维护。 供选择的答案: A~E: ① 功能内聚 ② 信息内聚 ③ 通信内聚 ④ 过程内聚 ⑤ 偶然内聚 ⑥ 时间内聚 ⑦ 逻辑内聚 答:A.⑤偶然内聚; B.⑦逻辑内聚;C.③通信内聚; D.④过程内聚;E.①功能内聚; 4、从下面关于程序编制的叙述中,选出3条正确的叙述。 ① 在编制程序之前,首先必须仔细阅读给定的程序说明书。然后,必须如实地依照说明书编写程序。说明书中常会有含糊不清或难以理解的地方。程序员在作业时应该对这些地方做出适当的解释。 ② 在着手编制程序时,重要的是采用既能使程序正确地按设计说明书进行处理,又易于找出错误的编写方法。 ③ 在编制程序时,重要的是采用既能使程序正确地按设计说明书进行处理,又易于出错的编写方法。 ④ 考虑到以后的程序变化,为程序编写完整的说明书是一项很重要的工作。只要有了完整的程序说明书,既使程序的编写形式难以让人看懂也没有什么关系。 ⑤ 编制程序时不可缺少的条件是,程序的输入和输出数据的格式都应确定。其他各项规定都是附带的。无足轻重。 ⑥ 作为一个好的程序,不仅处理速度要快,而且易读易修改等也都是重要的条件。为了能得到这样的程序,不仅要熟悉程序设计语言的语法,还要注意采用适当的规格和单纯的表现方法,注意使整个程序的结构简洁。 答:①、④、⑥。 编制程序的过程实际上是根据设计的结果,用某种机器能够识别的程序设计语言,将设计翻译成机器代码的过程。因此,必须如实地按照设计说明书编写程序,至于设计说明书中含糊不清的地方,应在编程时分析人员或设人员协商,对这些地方做出适当的解释。另外,考虑到将来的程序的修改,必须为程序编写完整的说明书,同时程序必须编写得容易让别人看懂,这样程序才容易修改,修改时不容易出错,而且容易验证修改后的结果。还有,编写程序的人不需重新考虑程序要完成什么功能,这些已经在软件分析与设计过程中充分考虑过了。 5、从下列叙述中选出5条符合程序设计风格指导原则的叙述。 ① 嵌套的重数应加以限制。 ② 尽量多使用临时变量。 ③ 不滥用语言特色。 ④ 不用可以省略的括号。 ⑤ 使用有意义的变量名。 ⑥ 应尽可能把程序编得短些。 ⑦ 把常见的局部优化工作留给编译程序去做。 ⑧ 注解越少越好。 ⑨ 程序的格式应有助于读者理解程序。 ⑩ 应尽可能多用GOTO语句。 答:①、③、⑤、⑦、⑨是正确的。 ① 条件语句和循环语句嵌套得过多会增加程序的复杂性,从而增加程序的出错率。 ③虽然国际上以至国内已经发表了编程语言的标准,但各个计算机厂商在推出自己的计算机系统的同时,也推出了针对自己机器特色的程序设计语言的非标准版本,如果利用这些语 言的非标准特性编写程序,就会给将来程序的移植带来困难。为了提高程序的可移植性,应当只使用语言的标准版本,不要滥用语言的非标准特色。 ⑤给在程序中使用的变量赋予与实际含义相符的名字,可以提高程序的可读性,从而提高程序的可维护性。 ⑦程序优化的工作最好交给编译程序来做,程序员应把主要注意力放在提高程序的可读性、清晰性、简洁性、正确性、一致性等方面,从而保证软件的可靠性和可维护性。 ⑨程序的可读性是至关重要的,所以程序的格式应有助于读者理解程序 6、 测试过程需要3类输入:(A)、(B)和(C)。请选择正确的答案填入图5.21中以完成测试信息处理的全过程。 供选择答案: A~C: ① 接口选择 ② 软件配置 ③ 硬件配置 ④ 测试配置 ⑤ 测试环境 ⑥ 测试工具 D~F:① 排错 ② 可靠性分析 ③ 结果分析 ④ 数据分类 答: A.②, B.④, C.⑥, D.③, E.① F.②。 分析:测试信息流如图5.21所示。测试过程需要3类输入: (1)软件配置:包括软件需求规格说明、软件设计规格说明、源代码等。 (2)测试配置:包括表明测试工作如何进行的测试计划、给出测试数据的测试用例、控制 测试进行的测试程序等。实际上,测试配置是软件配置的一个子集。 (3)测试工具:为提高软件测试效率,测试工作需要有测试工具的支持,它们的工作就是 为测试的实施提供某种服务。例如,测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库等。测试之后,要对所有测试结果进行分析,即将实测的结果与预期的结果进行比较。如果发现出错的数据,就意味着软件有错误,然后就需要开始排错(调试)。即对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。修正后的文档一般都要经过再次测试,直到通过测试为止。通过收集和分析测试结果数据,开始对软件建立可靠 性模型。 最后,如果测试发现不了错误,那么几乎可以肯定,测试配置考虑得不够细致充分,错误仍然潜伏在软件中。这些错误最终不得不由用户的使用中发现,并在维护时由开发者去改正。但那时改正错误的费用将比在开发阶段正错误的费用要高出40倍到60倍 7、由Rumbaugh等人提出的一种面向对象方法叫做对象模型化技术(OMT),即三视点技术,它要求把分析时收集的信息建立在下述3个模型中: 第一个模型是(A)---- 它的作用是描述系统的静态结构,包括构成系统的对象和类、它们的属性和操作,以及它们这间的联系。 第二个模型是(B)---- 它描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。(B)包括两种图,即(C)和(D)。(C)描述每一类对象的行为,(D)描述发生于系统执行过程中的某一特定场景。 第三个模型是(E)---- 它着重于描述系统内部的数据的传送与处理,它由多个数据流组成。 供你选择的答案如下: A,B,E:① 数据模型 ② 功能模型 ③ 行为模型 ④ 信息模型 ⑤ 原型 ⑥ 动态模型 ⑦ 对象模型 ⑧ 逻辑模型 ⑨ 控制模型 ⑩ 仿真模型 C,D:① 对象图 ② 概念模型图 ③ 状态迁移图 ④ 数据流程图 ⑤ 时序图 ⑥ 事件追踪图 ⑦ 控制流程图 ⑧ 逻辑模拟图 ⑨ 仿真图 ⑩ 行为图 答: A.⑦,B.⑥,C.③,D.⑥,E.②。 在OMT中,把分析时收集的信息建立在3个模型中。第一个模型是对象模型,它的作用是描述系统的静态结构,包括构成系统的对象和类、它们的属性和操作,以及它们之间的联系。第二个模型是动态模型,它描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。动态模型包括两种图,即状态迁移图和事件追踪图。状态迁移图描述每一类对象的行为,事件追踪图描述发生于系统执行过程中的某一特定场景。第三个模型是功能模型,它着重于描述系统内部数据的传送与处理,它由多个数据流图组成。 8、软件维护是软件生存期的最后一个阶段。软件工程学针对维护工作的主要目标是提高(A),降低(B)。软件的(C)、(D)、(E)是决定软件可维护性的基本因素。软件生存期(F)的工作与软件可维护性有密切的关系。 供选择的答案: A、B: ① 软件的生产率 ② 文档 ③ 软件的可靠性 ④ 软件的可维护性 ⑤ 维护的代价 ⑥ 维护的效率 C、D、E: ① 可测试性 ② 互操作性 ③ 可理解性 ④ 可修改性 ⑤ 可复用性 ⑥ 可管理性 F: ① 编码阶段 ② 设计阶段 ③ 测试阶段 ④ 每个阶段 答:A.④, B.⑤, C.①, D.③, E.④, F.④。其中,C、D、E的答案顺序可互换。 原因说明: 软件维护是软件生存期的最后一个阶段,也是持续时间最长、代价最大的一个阶段。软件工程学针对维护工作的主要目标就是提高软件的可维护性,降低维护的代价。软件维护通常包括 4类维护活动:改正性维护、适应性维护、完善性维护和预访性维护。软件的可理解性、 可修改性和可测试性是决定软件可维护性的基本因素。软件生存期各个阶段的工作都与软件可维护性有密切的关系。 9、从下列叙述中选出5条与提高软件的可移植性有关的叙述。 ① 把程序中与计算机硬件特性有关的部分集成在一起。 ② 选择时间效率和空间效率高的算法。 ③ 使用结构化的程序设计方法。 ④ 尽量用高级语言编写程序中对效率要求不高的部分。 ⑤ 尽可能减少注释。 ⑥ 采用表格控制方式。 ⑦ 文档资料详尽、正确。 ⑧ 在有虚拟存储器的计算机系统上开发软件。 ⑨ 减少程序中对文件的读写次数。 ⑩ 充分利用宿主计算机的硬件特性。 答:正确的叙述有①、③、④、⑥、⑦。 为了提高软件的可移植性,应当尽可能用高级语言编写源程序代码。对于与硬件或操作系统有关的部分,或对效率要求很高的部分, 应当为它们建立专门的模块,将用汇编语言写的程序封装在这些模块中,与程序中其他部分以事先约定的标准方式接口。这样,一旦硬件环境或操作系统环境发生变化,只需修改这个别模块即可。 采用表格控制方式,将所有的外部设备接口或与其他系统的接口,包括信息传补递、驱动程序入口等都用表格控制,即使将来硬件、相关软件发生的变化,只需修改表格中的登记项,原来的程序一律可以不改。 为了将来修改方便,不致于引入新的错误,相关文档一定要齐全、正确,程序必须有必要的注释,并使用如结构化程序设计方法这样的良好程序设计方法来编写程序。至于算法选择,与效率有关,与可移植性无关。其他叙述,如⑧、⑨、⑩,都不利于可移植性。 10、下面有关软件维护的叙述有些是不正确的,请将它们列举出来。 供选择的答案: ① 要维护一个软件,必须先理解这个软件。 ② 阅读别人写的程序并不困难。 ③ 如果文档不齐全也可以维护一个软件。 ④ 谁编写软件就应由谁来维护这个软件。 ⑤ 设计软件时就就考虑到将来的可修改性。 ⑥ 维护软件是一件很吸引人的创造性工作。 ⑦ 维护软件就是改正软件中的错误。 ⑧ 维护好一个软件是一件很难的事件。 答:软件维护人员通常不是该软件的开发人员,这给软件维护带来很大的困难。特别是有些软件在开发时没有遵循软件开发的准则,没有开发方法的支持,维护这样的软件就更困难。 下面列举一些与软件维护有关的问题。 (1)要维护一个软件,首先必须要理解它。而理解一个别人编写的软件通常是困难的,尤 其是对软件配置(指各种相关的文档)不齐全的软件,理解起来就更加困难。 (2)需要维护的软件往往缺少合格的文档,或者文档资料不齐全,甚至根本没有文档。在软件维护中,合格的文档十分重要,它有助于理解被维护的软件。合格的文档不仅要完整正确地反映开发过程各个阶段的工作成果,而且应当容易理解并应与程序源代码一致。而错误的文档对软件的理解引入歧途。 (3)在软件维护时,不要指望得到原来开发该软件的人员的帮助。开发人员开发完一个软件后,往往会从事另一软件的开发,甚至已离开原开发单位。即使原来的开发人员还在,也可能时间太久而忘却了实现的细节。 (4)多数软件在设计时没有考虑到将来的修改,这给软件的修改造成了困难。而且在修改软件时很可能引入新的差错。 (5)软件维护通常不是一件吸引人的工作。从事维护工作常使维护人员缺乏成就感,这也严重影响维护工作,从而影响了维护质量的提高。 三、论述题。 1. 论述瀑布模型软件开发方法的基本过程。 答: 瀑布模型软件开发方法将软件开发分成四个时期八个阶段: 分析时期: 1)问题定义---问题性质、工程目标及规模 2)可行性研究---技术上、经济上、社会上是否有可行解? 3)需求分析--- 确定目标系统必须具备的功能? 设计时期: 4)总体设计--- 1).几种求解方案;2).设计软件的结构 5)祥细设计--- 设计出程序的祥细规格说明编码与测试时期: 6)编码与单元测试--- 程序编码实现与模块测试 7)综合测试--- 集成测试和验收测试运行与维护时期: 8)维护 ---改正性维护、适应性维护、完善性维护、预防性维护 特点: 下导式开发 追溯式确认 适合能事先确切定义需求的软件开发 2. 面向对象软件开发方法与传统的面向数据流的结构化软件开发方法有什么不同?使用面向对象开发方法的优点是什么? 答:1)、结构化方法是面向过程的开发方法,以产生过程的抽象作为系统开发的起点,这些抽象把软件看作是处理流,定义构成一系列步骤的算法,每一步骤都是带有输入和输出的一个过程,将这些步骤结合在一起便可产生合理的、稳定的、贯穿于整个程序的控制流。最终可导出一个简单的具有静态结构的软件体系结构。结构化开发方法中,数据结构是为算法步骤的要求而开发的,数据结构贯穿于过程,提供过程需要传送给它的操作的信息。 2)、面向对象开发方法以标识和模型化问题论域中的实体作为系统开发的起点,系统中标识出的对象是数据抽象与过程抽象的一个混合体。控制流被分成块,并被包括在各个数据抽象上的操作里面。控制流从一个数据抽象被传送到另一个数据抽象。在块中分离的控制流允许把复杂的动作视为局部的相互影响,因此,软件系统的体系结构更为复杂但也更为灵活。 3)、使用面向对象开发方法的优点可概括为: A)、与人类习惯的思维方法一致 归纳思维 ------对象分类(特殊到一般) 演绎思维 ------类等级的属性继承(一般到特殊) B)、稳定性好 软件系统的结构不依赖于系统功能需求的变化 C)、可重用性好 创建对象类的实例,获得重用该对象类; 从某对象类派生一个新类,继承性机制使子类可重用父类的数据结构和程序代码,并可进行扩充和修改而不影响父类的使用 D)、可维护性好 稳定性好 容易修改 容易理解 容易测试和调试 3. 为什么软件需要维护?维护有哪几种类型?简述它们的维护过程。 答:在软件开发成这交付用户使用后,为了保证软件在一个相当长的是时期有够正常运行,不需要对软件进行维护。 软件维护的为类型有4种:改正性维护、适应性维护、完善性维护和预防性维护。其中,改正性维护是要改正正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷;适应性维护是要在软件使用过程中数据环境发生变化或处理环境发生变化时修改软件以适应这种变化;完善性维护是用户和数据处理人员使用软件过程中提出改进现有功能、增加新的功能,以及改善总体性能的要求后,修改软件以把这些要求纳入到软件之中。 由这些原因引起折维护活动可以归为以下几类:预防性维护是为了提高软件的可维护性、可靠性等,事先采用先进的软件工程方法对面要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,为以后进一步改进软件打下良好的基础。 软件维护的过程如图7.19所示。第一步是先确认维护要求。这需要维护人员与用户反复协商,弄清错误概况及对业务的影响大小,以及用户希望做什么样的修改,并把这些情况存入故障数据库。然后,由维护组织管理员确认维护类型。 对于改正维护申请,从评价错误的严重性开始工作。如果存在严重的错误,则必须安排人员,在系统监督员的指导下,进行问题 分析,寻找错误发生的原因,进行“救火”性的紧急维护;对于不严重的错误,可根据任务、 机时情况,视轻重缓急,进行排队,统一安排时间。对于适应性维护和完善性维护申请,需要先确定每项申请的优先次序。若某项早请的优先级非常高,就可立即开始维工作,否则,维护申请和其他的开发工作一样,进行排队,统一安排时间。并不能所有的完善性维护申请都必须承担,因为进行完善性维护等于是做二次开发,工作量大,所以需要根据商业需要、可利用资源的情况、目前和将来软件的发展 向以及其他考虑,决定是否承担。 尽管维护申请的类型不同,但都要进行同样的技术工作。这此工作有修改软件的需求说明,修改软件设计、设计评审、对源程做必要的修改、单元测试、集成测试(回归测试)、确认测试、软件配置评审等。在每次软件维护任务完成后,最好进行一次情况评审,对以下问题做一总结: (1)在目前情况下,设计、编码、测试中的哪一方面可以改进? (2)哪些维护资源应该有但没有? (3)工作中主要的或次要的障碍是什么? (4)从维护申请的类型来看是否应当有预防性维护? 情况评审对将来的维护工作如何进行会产生重要的影响,并可为软件机构的效管理提供重要的反馈信息。 4. 改错性维护与“排错”是否是一回事?为什么? 答:改错性维护与“排错(调试)”不是一个概念。调试是作为测试的后继工作而出现的,是当测试发现软件中的错误后,进一步诊断和改正程序中潜在的错误的活动。而改正性维护是指在软件交付使用后,由于开发时测试得不彻底。不完全,必然会有一部分隐藏的错误被带到运行阶段来,这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误改正软件性能上的缺陷、排除实施中的错误使用所进行的诊断和改正错误的过程。调试在程序编码阶段、测试阶段、运行和维护阶段之后,用户实际充当了测试员的角色,一旦发现软件运行中的错误或缺陷,就会将问题报告通报软件销售商,申请软件维护。其后软件维护人员可以利用调试手段来诊断和改正软件中存在错误。这时呆能涉及的范围不只包括程序,还有文档和数据,不仅可能修改设计,甚至需求。所以改正性维护是在更大范围中做工作。 5. 软件复杂性有哪几类?软件复杂性度量模型应遵循哪些则? 答:K.Magel从6个方面描述软件的复杂性: (1)理解程序的难度。 (2)改错及维护程序的难度。 (3)向他人解释程序的难度。 (4)按指定方法修改程序的难度。 (5)根据设计文档编写程序的工作量。 (6)执行程序时需要资源的程度。 软件复杂性度量模型应遵循的基本原则: (1)软件复杂性与程序大小的关系不是线性的。 (2)控制结构复杂的程序较复杂。 (3)数据结构复杂的程序较复杂。 (4)转向语句使用不当的程序较复杂。 (5)循环结构比选择结构复杂,选择结构又比顺序结构复杂。 (6)语句、数据、子程序和模块在程序中的次序对软件复杂性都有影响。 (7)全程变量、非局部变量较多时程序较复杂。 (8)参数按地址传递比按值传递更复杂。 (9)函数副作用比显式参数传递更难以琢磨。 (10)具有不同作用的变量共用一个名字时较难理解。 (11)模块间或过程联系密切的程序较复杂。 (12)嵌套深度越深程序越复杂。 最典型的两种程序复杂性度量的方法中,McCabe环路复杂性度量就是针对基本原则(2)制定的度量模型。Halstead软件科学则是针对程序中操作符和操作数的出现频度而制定的度量模型。 6. 简述结构化方法中软件工程的分析模型和设计模型,描述从分析模型到设计模型的信息流。 答: : 7. 简述面向对象OMT方法的分析模型,描述面向对象分析的大体过程。 8. 软件配置管理的任务是什么?描述作为基线的软件配置项(SCI)的修改过程模型。 答: 软件配置管理的任务:标识、版本控制、变化控制、配置审计及报告。 作为基线的软件配置项(SCI)的修改过程模型: 9. 简述软件工程的三个要素:方法、工具和过程。 答: ①方法要素 为软件开发提供了“如何做”的技术它包括多方面的任务,如项目计划与估算、软件系统需求分析、数据结构设计、系统总体结构设计、算法过程设计、编码、测试以及维护等。 ②工具要素 为软件工程方法提供自动的或半自动的软件支撑环境,建立起称为计算机辅助软件工程的软件开发支撑系统。将各种软件工具、集成起来,形成软件工程环境。 ③过程要素 是软件开发的工作任务及工作步骤的框架。将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的过程,定义了方法使用的顺序、要求交付的文档资料、保证质量和协调变化所需的管理,以及软件开开发各个阶段完成的里程碑。 四、设被测试的程序段为: begin S1; if (x=0) and ( y>2 ) then S2; else If ( x < 1 ) or ( y=1 ) then S3; S4; end 可供选择的测试数据组为: X y Ⅰ 0 3 Ⅱ 1 2 Ⅲ -1 2 Ⅳ 3 1 找出实现 (1)条件覆盖 (2)路径覆盖要至少采用的数据组。 答:1、条件覆盖:每个语句至少执行一次,并且使判定表达式中的每个条件都取到各种可能的结果。 第一个判定表达式可能的结果:x=0, x<>0,y>2,y<=2 ; 第二个判定表达式可能的结果:x<1,x>=1,y=1,y<>1; 测试数据组:I x=0, y>2 II x<>0,y<=2,x>=1,y<>1 III x<>0,y<=2,x<1,y<>1 IV x<>0,y<=2,x>=1,y=1 2、路径覆盖:程序中的每条可能路径都至少执行一次。 测试数据组:I ,II,III 五、考务处理系统有如下功能: ① 对考生送来的报名表进行检查。 ② 对合格的报名表编好准考证号码后将准考证送给考生,并将汇总后的考生名单送给阅卷站。 ③ 对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者。 ④ 填写考生通知单(内容包含考试成绩和合格/不合格标志),送给考生。 ⑤ 按地区、年龄、文化程度、职业、考试级别等进行成绩分类统计和试题难度分析,产生统计分析表。 问题:按上述功能需求设计系统的数据流程图。 答: 六、图4.9是两个程序流程图,试分别用N—S图和PAD表示,并计算它们的McCabe复杂性度量。 答: 对应的N—S图如下所示 对应PAD图如下所示: McCabe复杂性度量都为3 七、给出下面结构化程序流程图,请画出对应的N-S图。 答: 八、 如图5.8(a)所示的程序有4条不同的路径。 分别表示为L1(a→c→e)、L2(a→b→d)、L3(a→b→e)和L4(a→c→d),或简写成ace、abd、abe、及acd。由于覆盖测试的目标不同,逻辑覆盖方法可以分为语句覆盖、判定覆盖、条件覆盖、判定—条件覆盖、条件组合覆盖和路径覆盖。从备选的答案中选择适当的测试用例与之匹配: (A) 属于语句覆盖;(B)、(C)属于判定覆盖;(D)、(E)属于条件覆盖;(F)、(G)属于判定—条件覆盖;(H)属于条件组合覆盖;(I)属于路径覆盖。 供选择的答案: A~I:① 【(2,0,4),(2,0,3)】覆盖ace; 【(1,1,1),(1,1,1)】覆盖abd; ② 【(1,0,3),(1,0,4)】覆盖abe; 【(2,1,1),(2,1,2)】覆盖abe; ③ 【(2,0,4),(2,0,3)】覆盖ace; ④ 【(2,1,1),(2,1,2)】覆盖abe; 【(3,0,3),(3,1,1)】覆盖acd; ⑤ 【(2,0,4),(2,0,3)】覆盖ace; 【(1,0,1),(1,0,1)】覆盖abd; 【(2,1,1),(2,1,2)】覆盖abe; ⑥ 【(2,0,4),(2,0,3)】覆盖ace; 【(1,1,1),(1,1,1)】覆盖abd; 【(3,0,3),(3,0,1)】覆盖acd; ⑦ 【(2,0,4),(2,0,3)】覆盖ace 【(1,1,1),(1,1,1)】覆盖abd; 【(1,0,3),(1,0,4)】覆盖abe; 【(2,1,1),(2,1,2)】覆盖abe; 答:A.③, B.①, C.④, D.②, E.⑤, F.①, G.⑤, H.⑦, I.⑥。 B、C的答案可互换。D、E的答案可互换。F、G的答案可互换。 九、下面是选择排序的程序,其中datalist是数据表。它有两个数据成员。一是元素类型成Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey( ),一是交换两数组元素内容的操作Swap( ): void SelectSort (datalist & list){ //对表list.V[0]到list[n-1]进行排序,n是表当前长度 for (int i=0;i<list.n-1;i++){ int K=i //在list.V[i].key到list.V[n-1].key中找具有最小键码的对象 for(int j=i+1;j<list.n;j++) if(list.V[j].getKey( )<list.V[K].getKey( )K=j; //当前具最小关键码的对象 if(k=!=i) Swap(list.V[i],list.V[K]);//交换 } } (1)试计算此程序段的McCabe环路复杂性。 (2)用基本路径覆盖法给出测试路径。 (3)为各测试路径设计测试用例。 答: (1)McCabe环境复杂性=5 (2)立路径有5条,如图5.23所示: 图5.23 程序流程图 (3)为各测试路径设计测试用例: 路径①③:取n=1 路径①②⑤⑧……:取n=2, 预期结果:路径⑤⑧③不可达 路径①②⑤⑨……:取n=2, 预期结果:路径⑤⑨③不可达 路径①②④⑥⑤⑧③ 取n=2,V[0]=2,V[1]=1,预期结果:K=1,V[0]=1,V[1]=2 路径①②④⑥⑤⑨③: 取n=2, V[0]=2,V[1]=1,预期结果:K=1,路径⑨③不可达 路径①②④⑦⑤⑧③: 取n=2, V[0]=1,V[1]=2,预期结果:K=0,路径⑧③不可达 路径①②④⑦⑤⑨③: 取n=2, V[0]=1,V[1]=2,预期结果:K=0,V[0]=1,V[1]=2 十、写出本学期你完成的实习题目,并用面向对象方法,建立该系统的对象模型(可简略定义服务)和功能模型。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服