软件工程期末复习试卷

合集下载

软件工程期末考试题目

软件工程期末考试题目

软件工程期末考试题目### 软件工程期末考试题目#### 一、选择题(每题3分,共30分)1. 软件工程的核心思想是()。

A. 模块化B. 重用性C. 抽象化D. 封装性2. 软件需求分析阶段的主要任务是()。

A. 确定软件的功能需求B. 设计软件的界面C. 编写软件的代码D. 测试软件的功能3. 在软件开发过程中,以下哪个阶段不是瀑布模型的组成部分?()。

A. 需求分析B. 系统设计C. 编码实现D. 维护与升级4. 软件测试的主要目的是()。

A. 修复软件中的所有错误B. 验证软件是否满足需求规格说明C. 确保软件的高性能D. 优化软件的用户体验5. 在面向对象的分析和设计中,以下哪个概念不是基本构件?()。

A. 类B. 对象C. 函数D. 消息6. UML(统一建模语言)中,用于表示对象之间交互的图是()。

A. 用例图B. 类图C. 序列图D. 活动图7. 敏捷开发方法的核心价值不包括以下哪一项?()。

A. 个体和互动高于流程和工具B. 可工作的软件高于详尽的文档C. 客户合作高于合同谈判D. 遵循计划高于适应变化8. 在软件项目管理中,以下哪个工具用于评估项目风险?()。

A. 甘特图B. 风险矩阵C. 燃尽图D. 资源分配图9. 软件配置管理的主要目标是()。

A. 确保软件质量B. 跟踪软件变更C. 优化软件性能D. 降低软件成本10. 在软件维护中,以下哪种类型的维护最常见?()。

A. 校正性维护B. 适应性维护C. 完善性维护D. 预防性维护#### 二、简答题(每题10分,共40分)1. 简述软件工程中的“软件危机”是什么,并说明其主要原因。

2. 描述软件需求分析的重要性,并举例说明如何进行有效的需求分析。

3. 解释什么是软件架构,并讨论它在软件开发过程中的作用。

4. 描述敏捷开发方法与传统瀑布模型的主要区别,并讨论它们各自的优缺点。

#### 三、案例分析题(共30分)某软件开发团队正在开发一个在线购物平台。

软件工程(期末试题及答案)

软件工程(期末试题及答案)

软件工程(期末试题及答案)软件工程(期末试题及答案)一、选择题(共20题,每题2分,共40分)1. 在软件工程中,以下哪一项不是七大工程()。

A. 软件需求B. 软件设计C. 软件开发D. 软件维护答案: D2. 软件需求分析的目的是()。

A. 理解用户需求B. 设计软件架构C. 编写用户手册D. 测试软件功能答案: A3. 软件开发过程中的迭代模型,不存在的是()。

A. 瀑布模型B. 敏捷开发模型C. 螺旋模型D. 喷泉模型答案: D4. 以下哪个不是软件测试的目的()。

A. 发现错误和缺陷B. 验证软件是否满足需求C. 评估软件的可靠性和质量D. 优化软件的性能答案: D5. 软件项目管理中,以下哪种方法适用于大型复杂项目()。

A. 瀑布模型B. 敏捷开发C. 增量模型D. 螺旋模型答案: D6. 软件开发生命周期中,以下哪个过程不属于()。

A. 需求分析过程B. 设计过程C. 编码过程D. 运维过程答案: D7. 在软件工程中,什么是软件测试()。

A. 软件开发的最后阶段B. 发现软件缺陷的过程C. 确保软件质量的控制过程D. 软件最终验收的流程答案: C8. 以下哪种测试方法旨在评估软件在不同负载下的性能和稳定性()。

A. 单元测试B. 集成测试C. 系统测试D. 性能测试答案: D9. 软件开发中,以下哪个活动不属于软件配置管理()。

A. 版本控制B. 配置变更控制C. 缺陷管理D. 代码评审答案: D10. 以下哪个是敏捷开发的基本原则()。

A. 面对面交流胜过文档B. 完全按照计划进行C. 精确的需求分析是关键D. 严格的变更控制是必要的答案: A11. 下列哪个不属于软件配置管理的内容()。

A. 变更控制B. 版本控制C. 缺陷管理D. 运维管理12. 软件的可靠性是指()。

A. 软件是否能正常运行B. 软件是否符合用户需求C. 软件运行期间不出现故障的能力D. 软件功能的完善程度答案: C13. 下列哪个不属于软件开发的7大原则()。

软件工程期末考试试卷

软件工程期末考试试卷

软件工程期末考试试卷一、单项选择题(每题2分,共20分)1. 软件工程的主要目标是______。

A. 提高软件的生产率B. 提高软件的运行效率C. 降低软件的开发成本D. 减少软件的维护工作量2. 软件需求分析阶段的主要任务是______。

A. 确定软件的功能需求B. 设计软件的数据库结构C. 编写软件的详细设计文档D. 开发软件的原型系统3. 在软件开发过程中,______是最重要的文档。

A. 用户手册B. 需求规格说明书C. 测试计划D. 维护手册4. 软件设计阶段的主要任务是______。

A. 确定软件的总体结构B. 编写软件的详细设计文档C. 设计软件的用户界面D. 编写软件的测试用例5. 软件测试的主要目的是______。

A. 验证软件的功能是否正确B. 验证软件的性能是否满足要求C. 发现并修复软件中的错误D. 确保软件的可靠性和可用性6. 在软件维护中,最常见的维护类型是______。

A. 纠错性维护B. 适应性维护C. 完善性维护D. 预防性维护7. 软件工程中的“软件危机”主要是指______。

A. 软件的开发成本过高B. 软件的开发周期过长C. 软件的质量难以保证D. 软件的维护工作量过大8. 在面向对象的软件开发方法中,______是最基本的概念。

A. 类B. 对象C. 消息D. 封装9. 在软件开发过程中,______是最重要的质量保证活动。

A. 代码审查B. 软件测试C. 需求评审D. 配置管理10. 在软件项目管理中,______是最重要的管理活动。

A. 项目计划B. 项目监控C. 风险管理D. 资源分配二、多项选择题(每题3分,共15分)11. 软件工程的主要原则包括______。

A. 抽象B. 模块化C. 逐步求精D. 客户驱动12. 在软件开发过程中,需求分析阶段的主要任务包括______。

A. 确定软件的功能需求B. 确定软件的非功能需求C. 编写需求规格说明书D. 进行需求评审13. 在软件设计阶段,主要的设计方法包括______。

《软件工程》期末试卷及答案

《软件工程》期末试卷及答案

《软件工程》期末试卷及答案一、选择题(每题2分,共20分)1. 下列哪项不是软件工程的基本目标?A. 提高软件的生产率B. 提高软件的质量C. 减少软件的开发成本D. 提高软件的可维护性答案:D2. 软件工程的三要素不包括以下哪项?A. 方法B. 工具C. 管理模式D. 知识库答案:D3. 下列哪种软件过程模型适用于需求不明确的项目?A. 水平模型B. 增量模型C. 迭代模型D. 瀑布模型答案:C4. 在软件项目管理中,项目经理负责以下哪项工作?A. 软件需求分析B. 软件设计C. 软件编码D. 项目计划与组织答案:D5. 以下哪种编程语言不属于面向对象编程语言?A. JavaB. C++C. PythonD. C答案:D6. 下列哪种软件测试方法属于静态测试?A. 单元测试B. 集成测试C. 系统测试D. 代码审查答案:D7. 以下哪种软件维护类型占总维护工作量的比例最大?A. 适应性维护B. 完善性维护C. 纠错性维护D. 预防性维护答案:C8. 下列哪种软件文档是软件开发过程中必须编写的?A. 项目计划书B. 需求规格说明书C. 设计文档D. 测试报告答案:B9. 下列哪种软件工程方法学强调开发过程的结构化和规范化?A. 结构化分析方法B. 面向对象分析方法C. 原型法D. 敏捷开发方法答案:A10. 以下哪个软件工具不属于CASE(计算机辅助软件工程)工具?A. 代码生成器B. 代码审查工具C. 项目管理工具D. 数据库管理系统答案:D二、填空题(每题2分,共20分)11. 软件工程的基本原则包括抽象、封装、模块化、层次化和信息隐藏等,其中______是一种将信息、数据和操作封装在一起的方法。

答案:封装12. 软件开发过程分为需求分析、设计、编码、测试和维护五个阶段,其中______阶段是软件开发过程中的核心阶段。

答案:设计13. 代码行(LOC)和功能点(FP)是衡量软件规模的两个指标,其中______是一种基于软件功能需求的规模度量方法。

《软件工程》期末考试题及答案

《软件工程》期末考试题及答案

《软件工程》期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个不属于软件工程的三个基本活动?A. 软件规格B. 软件设计C. 软件编码D. 软件测试答案:D2. 以下哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程答案:A3. 以下哪个不属于软件工程的基本原则?A. 分而治之B. 信息隐藏C. 模块化D. 编码规范答案:D4. 以下哪个不是软件工程的四大支柱?A. 软件需求B. 软件设计C. 软件验证D. 软件项目管理答案:C5. 以下哪种软件过程模型是迭代和增量的?A. 瀑布模型B. 快速应用开发C. 敏捷开发D. 原型模型答案:C6. 以下哪个不是软件测试的级别?A. 单元测试B. 集成测试C. 系统测试D. 需求测试答案:D7. 以下哪种软件维护类型是最常见的?A. 更正性维护B. 适应性维护C. 完善性维护D. 预防性维护答案:A8. 以下哪个不属于软件项目的风险管理策略?A. 风险避免B. 风险转移C. 风险减轻D. 风险接受答案:B9. 以下哪个不属于软件需求分类?A. 功能需求B. 性能需求C. 可用性需求D. 测试需求答案:D10. 以下哪个不属于软件设计的准则?A. 模块化B. 信息隐藏C. 功能耦合D. 数据抽象答案:C二、填空题(每题2分,共20分)11. 软件工程的主要目标是提高软件的__________和降低软件的__________。

答案:可维护性、成本12. 软件开发的三个基本阶段是:__________、__________、__________。

答案:需求分析、设计、实现13. 软件过程模型分为__________模型和__________模型。

答案:预测性、适应性14. 软件测试的四个基本级别是:__________、__________、__________、__________。

答案:单元测试、集成测试、系统测试、验收测试15. 软件维护的四种类型是:__________、__________、__________、__________。

2023软件工程导论期末考试题库及参考答案

2023软件工程导论期末考试题库及参考答案

2023软件工程导论期末考试题库及参考答案一、选择题(每题2分,共20分)1. 以下哪个不是软件工程的三个基本目标?A. 可维护性B. 可用性C. 可靠性D. 高效性参考答案:D2. 软件生命周期中,以下哪个阶段是软件开发过程的核心阶段?A. 需求分析B. 设计C. 编码D. 测试参考答案:C3. 以下哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程参考答案:A4. 在软件工程中,以下哪个方法用于估算软件项目的成本和进度?A. COCOMOB. WBSC. SDLCD. CASE参考答案:A5. 以下哪个是软件工程中的一个重要原则?A. 分而治之B. 一次性编写C. 重用D. 模块化参考答案:D6. 以下哪个不是软件工程的基本活动?A. 软件规格B. 软件开发C. 软件验证D. 软件测试参考答案:C7. 以下哪个是软件工程中用于提高软件质量的技术?A. 设计模式B. 重构C. 代码审查D. 单元测试参考答案:C8. 以下哪个不是软件工程的五大基本过程?A. 软件规格B. 软件开发C. 软件维护D. 软件项目管理参考答案:D9. 以下哪个是软件工程中的一个重要概念,用于描述软件系统中的各个组件之间的关系?A. 耦合B. 内聚C. 模块化D. 重用参考答案:A10. 以下哪个是软件工程中的一个重要原则,用于指导软件开发过程?A. 迭代B. 增量C.螺旋D. 模型驱动参考答案:A二、填空题(每题2分,共20分)11. 软件工程的三要素是:方法、工具和______。

参考答案:过程12. 软件生命周期包括:需求分析、设计、编码、______和软件维护。

参考答案:测试13. 软件工程中的面向对象方法包括:封装、继承和______。

参考答案:多态14. 软件工程中的 CASE 工具主要用于支持______。

参考答案:软件设计和开发15. 软件工程中的敏捷开发方法强调______、可维护性和可扩展性。

软件工程期末试题(含答案)

软件工程期末试题(含答案)预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制一、填空题(每空1分,共25分)1.软件生存周期一般可以划分为,问题定义、可行性研究、需求分析、设计、编码、测试和运行和维护。

2.基于软件的功能划分,软件可以划分成___系统软件_、支撑软件、应用软件__三种。

3.可行性研究,应从经济可行性、技术可行性、运行可行性、法律可行性和开放方案可行性等方面研究。

4.系统流程图是描绘物理系统的传统工具。

它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、加工、数据流和数据存储文件。

6.结构化分析方法是面向_数据流_进行需求分析的方法。

结构化分析方法使用_数据流图DFD_与_数据字典_来描述。

7.继承性是自动地共享类、子类和对象中的方法和数据的机制。

8.软件详细设计工具可分为3类,即_图示工具_、_设计语言_和_表格工具_。

9.为了在软件开发过程中保证软件的质量,主要采取下述措施:_审查__、复查和管理复审、___测试_。

10.大型软件测试包括单元测试、集成测试、确认测试和系统测试四个步骤。

二、单项选择题(每小题2分,共20分)1.软件设计中划分模块的一个准则是( C )。

A、低内聚低耦合 B.低内聚高耦合 C.高内聚低耦合 D.高内聚高耦合2.Jackson设计方法是由英国的M. Jackson提出的,它是一种面向( C )的软件设计方法。

A、对象 B.数据流 C.数据结构 D.控制结构3.试判断下列叙述中,哪个(些)是正确的( C )。

a、软件系统中所有的信息流都可以认为是事务流b、软件系统中所有的信息流都可以认为是变换流c、事务分析和变换分析的设计步骤是基本相似的A、aB、bC、cD、b和c4.( A )是用户和设计交换最频繁的方法。

A、原型化方法B、瀑布模型方法 C. 螺旋模型方法D、构件组装模型5.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( C )。

软件工程期末考试参考题及答案

一、填空题(每空1分, 共20分)1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__测试________、运行与维护阶段。

2.按软件旳功能进行划分, 软件可以划分为系统软件、支撑软件和应用软件。

3.可行性研究重要集中在如下四个方面经济可行性、技术可行性、法律可行性和抉择。

4.顾客界面旳可使用性是顾客界面设计最重要旳也是最基本旳目旳。

5.常见旳软件概要设计措施有3大类: 以数据流图为基础构造模块构造旳___构造化设计措施_________, 以数据构造为基础构造模块旳__jackson措施__________, 以对象、类、继承和通信为基础旳__面向对象设计措施__________。

6.__数据流图________和__数据字典___共同构成系统旳逻辑模型。

7.软件测试旳措施有__分析措施________和___非分析措施_______(即黑盒法)。

8.单元测试一般以___白盒_____________测试为主, ___黑盒______测试为辅。

9.成本估计措施重要有__自底向上估计________、_自顶向下估计_________和算法模型估计三种类型。

二、单项选择题(每题2分, 共10分)1.下列哪个阶段不属于软件生存周期旳三大阶段( C )。

A.计划阶段B.开发阶段2. C.编码阶段 D.维护阶段3.需求分析是(A )。

A. 软件开发工作旳基础B. 软件生存周期旳开始C. 由系统分析员单独完毕旳D. 由顾客自己单独完毕旳原型化措施是软件开发中一类常用旳措施, 它与构造化措施相比较, 更需要( B )。

A. 明确旳需求定义B.完整旳生命周期C、较长旳开发时间D、纯熟旳开发人员软件维护时, 对测试阶段未发现旳错误进行测试、诊断、定位、纠错, 直至修改旳回归测试过程称为( A )。

A、改正性维护B、适应性维护C、完善性维护D、防止性维护一般说来, 投入运行旳软件系统中有错误(A )。

《软件工程》期末复习题及答案

《软件工程》期末复习题及答案一、单项选择题(本大题共60小题,在每小题的四个备选答案中,选出一个正确答案,并将正确答案填涂在答题卡上)1. 软件危机产生的主要原因是 A 。

A.软件日益庞大B.不能与用户良好地沟通C.开发人员编写程序能力差D.没有适应的开发模型2.软件工程的发展不包括以下那个阶段 B 。

A.传统软件工程阶段B.自主化开发阶段C.过程软件工程阶段D.构件软件工程阶段3. 现代软件工程研究的内容不包括 D 。

A.软件开发模型B.软件开发方法C.软件支持过程D.软件开发质量4.以下哪个软件生存周期模型是一种风险驱动的模型 C 。

A.瀑布模型B.增量模型C.螺旋模型D.喷泉模型5.软件的开发方法不包括 C 。

A.结构化开发方法B.面向对象开发方法C.面向管理的开发方法D. 面向数据结构的开发方法6.软件生存周期中,准确地确定软件系统必须做什么的阶段是 B 。

A.可行性分析和项目开发计划 B.需求分析 C.概要设计D.详细设计7. 需求分析中开发人员要从用户那里了解 A 。

A.软件做什么B.用户使用界面C.输入的信息D.软件的规模8. 结构化分析建立功能模型的工具是 A 。

A.DFDB.判定树/判定表C.SCD.结构化语言9. 数据词典是对数据定义信息的集合,它所定义的对象都包含于 B 。

A.数据流图B.程序框图C.软件结构D.方框图10.用于描述结构化分析中数据流加工逻辑的是 A 。

A.判定 B.ER图 C.状态 D.用例图11.下列几种耦合类型,耦合性最高的是 A 。

A.公共耦 B.控制耦合 C.标记耦 D.数据耦合12. 通信内聚是指 B 。

A. 把需要同时执行的动作组合在一起形成的模块 B各处理使用相同的输入数据或者产生相同的输出数据C一个模块中各个处理元素都密切相关于同一功能且必须顺序执行 D模块内所有元素共同完成一个功能,缺一不可13.模块 B 定义为受该模块内一个判定影响的所有模块集合。

软件工程期末试题及答案

软件工程期末试题及答案一、选择题(每题2分,共20分)1. 以下哪项不是软件工程的基本目标?A. 提高软件的生产效率B. 提高软件的质量C. 减少软件的开发成本D. 增加软件的复杂性答案:D2. 下面哪个不属于软件工程的三个主要过程?A. 软件规格B. 软件开发C. 软件测试D. 软件维护答案:A3. 下列哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程答案:A4. 以下哪个不属于软件项目的管理活动?A. 项目计划B. 风险管理C. 质量保证D. 软件开发答案:D5. 以下哪个不是软件需求分析的工具?A. 数据流图(DFD)B. 实体关系图(ERD)C. 状态转换图(STD)D. 类图答案:B6. 以下哪个不属于软件设计的原则?A. 模块化B. 抽象C. 封装D. 继承7. 以下哪种测试方法主要用于检测软件的功能是否满足需求?A. 单元测试B. 集成测试C. 系统测试D. 验收测试答案:C8. 以下哪个不属于软件维护的类型?A. 适应性维护B. 完善性维护C. 纠错性维护D. 预防性维护答案:D9. 以下哪个不属于软件项目管理工具?A. Microsoft ProjectB. JiraC. TrelloD. Visual Studio10. 以下哪个不属于敏捷软件开发的特点?A. 短周期迭代B. 客户参与C. 重构D. 线性开发流程答案:D二、填空题(每题2分,共20分)1. 软件工程的基本目标包括提高软件的生产效率、提高软件的质量和______。

答案:减少软件的开发成本2. 软件工程的三个主要过程分别是软件规格、软件开发和______。

答案:软件维护3. 软件需求分析的主要工具包括数据流图(DFD)、实体关系图(ERD)和______。

答案:状态转换图(STD)4. 软件设计的原则包括模块化、抽象、封装和______。

答案:继承5. 软件测试的四个层次分别是单元测试、集成测试、系统测试和______。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《软件工程》试题一、从供选择的答案中选出应填入下列叙述中()内的正确答案。

软件设计中划分程序模块通常遵循的原则是使各模块间的耦合尽可能( A 3 )。

三种可能的模块耦合是:( B 5 ),例如,一个模块直接引用另一个模块中的数据。

( C 6 ),例如,一个模块把开关量作为参数传送给另一个模块。

( D 1 ),例如,一个模块通过公共数据结构把数据传送给另一个模块。

其中, ( E 5 )的耦合性最强。

【供选择的答案】A:①强②适中③弱B~E:①公共耦合②数据耦合③逻辑耦合④外部耦合⑤内容耦合⑥控制耦合二、为高质量地开发软件项目,在软件结构设计时必须遵循(A3 )的原则,(B2 )建立软件系统的模块结构。

并且应根据( C 3 )评价系统模块划分的质量。

此外在模块设计时,应从5种基本的(D5 )出发,利用它们组合成一个模块的程序块结构。

要求每个(E1 )的结构应是单入口和单出口。

【供选择的答案】A:①质量控制②程序优化③信息隐蔽④数据共享⑤模块通信B:①自底向上②自顶向下③衍变的自顶向下④随机⑤回归C:①数据独立性②程序独立性③模块独立性④可修改性⑤可理解性D:①数据结构②处理结构③功能结构④成份⑤控制结构E:①程序块②公共块③数据块④记录块⑤通信块三、从下列叙述中选出5条关于好的程序设计风格的正确叙述。

(在对的前面打√)(1) 使用括号以改善表达式的清晰性。

x(2) 对递归定义的数据结构不要使用递归过程。

x(3) 尽可能对程序代码进行优化。

v(4) 不要修补不好的程序, 要重新写。

v(5) 不要进行浮点数的相等比较。

v(6) 应尽可能多地输出中间结果。

x(7) 利用数据类型对数据值进行防范。

v(8) 用计数方法而不是用文件结束符或输入序列结束符来判别输入的结束。

x(9) 程序中的注释是可有可无的。

x(10) 使用有意义的标识符。

v四、从下列叙述中选出5条关于软件测试的正确叙述。

(在对的前面打√)(1) 为了使得软件容易测试, 应该使用高级的程序设计语言编制程序。

v(2) 程序测试是一个程序的执行过程, 目的是为了发现软件中隐藏的错误。

v(3) 如果程序中连锁式连接了8个判定(IF)结构, 则程序中总的路径数达28 。

v(4) 白盒测试仅与程序的内部结构有关, 完全可以不考虑程序的功能要求。

x(5) 为了快速完成集成测试, 采用一次性集成方式是适宜的。

v(6) 对一批模块进行测试,发现错误多的模块中残留的错误将比其它的模块少。

v(7) 好的测试用例应能证明软件是正确的。

v(8) 边界值分析方法是取输入/输出等价类的边界值做为测试用例。

v(9) 等价类划分方法考虑了各等价类之间取值的组合情况下可能的结果。

v(10) 判定覆盖法可能查不出在判定中逻辑运算符使用有误时产生的错误。

v五、从下列叙述中选出5条有利于软件可维护性的正确叙述。

(在对的前面打√)(1) 在进行需求分析时需同时考虑如何实现可维护性问题。

v(2) 完成测试作业后,为了缩短源程序的长度应删去程序中的注解。

x(3) 尽可能在软件生产过程中保证各阶段文档的正确性。

v(4) 编程时应尽可能使用全局变量。

x(5) 选择时间效率和空间效率尽可能高的算法。

v(6) 尽可能利用硬件的特点。

x(7) 重视程序结构的设计,使程序具有较好的层次结构。

v(8) 使用维护工具或支撑环境。

x(9) 在进行概要设计时应加强模块间的联系。

x(10) 提高程序的可读性,尽可能使用高级语言编写程序。

v(11) 为了加快软件维护作业的进度,应尽可能增加维护人员的数目。

x六、下面是一段用赛德尔迭代法求解线性方程组的程序。

其中A[n,n] 是方程组的系数矩阵, B[n]是方程组的右端项,X[n] 是方程组的解向量。

eps是控制迭代精度的较小实数。

imax是控制迭代的最大次数。

flag 是标志,=0,表示迭代不收敛;=1,表示迭代收敛。

for k := 1 to n do X[k] := 0.0;X[n] := 1.0;for i := 1 to imax dobegin flag := 1;for j := 1 to n tobegin s := B[j];for k := 1 to n dobeginif j =k then s := s + X[k];s := s-A[j, k] * X[k]end;if abs(X[j]-s) > (abs(s) + 1.0) * eps then flag := 0;X[j] := s;end;if flag =1 then goto L1;end;L1:(1) 试画出它的结构化的程序流程图。

(2) 将它改为N-S图。

(3) 计算它的McCabe环路复杂性。

七、下面是一趟插入排序的程序, 把R[i+1]插入到R[1..i]的适当位置R[0] = R[i + 1];j = i;while ( R[j] > R[0] ){ R[j + 1] = R[j];j = j -1; }R[j + 1] = R[0];用路径覆盖方法为它设计足够的测试用例(while循环次数为0次、1次、2次)。

八、阅读下列关于软件可靠性方面的叙述,回答问题1和问题2。

软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。

某软件中心的评测部为了评估已开发实现的应用软件ASP的可靠性,决定采用软件可靠性的错误播种模型来进行测试和评估。

评测部在评估时,作了下列三个假设:(1) 在测试前,单位长度的故障个数E T/ I T为一常数,此常数基本上落在一个固定的范围内。

其中I T为被测程序的长度(即机器指令条数),E T为被测程序中故障总数。

(2) 失效率正比于软件中剩余的(潜伏的)故障数,平均无故障时间MTTF与单位长度的剩余故障个数成反比,即MTTF = 1/(K*εr )。

其中εr 为单位长度剩余故障个数,K的典型值现取为200。

(3) 测试中发现的错误都得到了及时改正,在测试过程中没有引入新的错误。

评测部对ASP软件人为地植入了10个错误,即N S= 10,在开始测试的一小段时间内,发现了160个固有故障,即n = 160,又发现了植入的故障2个,即n S = 2,被测程序ASP的长度(机器指令条数)为105。

问题1:用故障播种(植入)的数学模型,估算出被测程序ASP的固有故障的个数N的值。

如果通过测试一段时间后,发现的固有错误个数为E D= 795时,请估算此程序的平均无故障时间MTTF值。

问题2:若要求把此MTTF再提高4倍,应至少再排除多少个固有错误? 请简要地列出有关计算式。

参考答案一、答案:A. ③ B.⑤ C. ⑥ D. ① E. ⑤二、答案:A. ③ B. ② C. ③ D. ⑤ E. ①三、答案:正确的叙述有:(1)、(4)、(5)、(7)、(10)说明:(1) 利用括号可以明确地规定表达式中各运算符的优先顺序,这样可以提供表达式运算的清晰性,因此是对的。

(4) 对于不好的程序,一是程序逻辑混乱以致理解困难,二是隐藏错误多,三是错误定位和修改容易出问题,所以修修补补,越补越糟,不如重新写。

(5) 浮点数的运算有其近似性,两个浮点数可能会非常接近但永远不会相等,所以做浮点数的相等比较可能不会有结果。

(7) 利用数据类型来检查数据值,这是静态分析的一种手段,叫做类型分析,因此是对的。

(10) 使用有意义的标识符,可以提高程序的可读性,因此是对的。

其它的叙述都不对。

(2) 对递归定义的数据结构,应当使用递归过程来解决基于这种数据结构的应用问题。

(3) 程序代码的优化工作应交给编译器来做,程序设计时应首先考虑程序代码的清晰性、简明性、可读性、正确性、以至于可维护性。

(6) 输出中间结果只是在调试程序时才有用,其它时候输出大量中间结果,不但浪费资源,而且给使用者造成麻烦。

(8) 从文件输入数据时,应当使用文件结束符来判断输入的结束,使用计数方法判断输入结束不一定是最佳方式。

(9) 程序中的注释是必须的,不是可有可无的。

四、答案:正确的叙述有:(1)、(2)、(3)、(4)、(8)。

说明:(1) 使用高级语言编写的程序模块化、结构化程度都比较好,可读性强,容易测试。

(2) 程序测试本身应当是一个程序的执行过程,而不是静态的逻辑分析,其目的是发现程序中潜藏的错误。

(3) 连锁式分支结构有n个判定,其路径数有2n条,因此当n = 8时程序中总的路径数有28条。

(4) 白盒测试基于程序的内部结构设计测试用例,可以不考虑程序的功能要求。

(8) 由于在等价类的边界上最容易出错,所以边界值分析方法选取输入∕输出等价类的边界值作为测试用例,可以有效地查错。

不正确的叙述,如(5) 采用一次性集成方式进行模块组装,往往成功的可能性低,而且出现错误时,不容易确定在什么地方出了问题,因此应采用增殖式集成方式,可以把出错的范围局限到少数模块中间。

(6) 测试的实践表明,对一批模块进行测试,发现错误多的模块中残留的错误也多,因此必需注意这一现象,弄清哪些模块问题发现得多,对这些模块重点测试。

(7) 好的测试用例是能够发现新错误的测试用例,发现不了问题的测试用例就不是好的测试用例,用它们做测试是浪费时间和金钱。

(9) 等价类划分法是选择输入等价类的代表值作为测试用例,而因果图法才是考虑了各等价类之间取值的组合情况及可能的结果来设计测试用例的。

(10) 语句覆盖法可能查不出在判定中逻辑运算符使用有误时产生的错误。

而判定覆盖法则可能查不出在判定中某些条件中关系运算符使用有误时产生的错误。

五、答案:正确的叙述有:(3)、(5)、(7)、(8)、(10)说明:(3) 尽可能在软件生产过程中保证各阶段文档的正确性,对于保证软件的可靠性、功能性等有相当大的作用,这样可减少用户提出维护请求的可能,即使要更新,工作的难度和工作量也会降低。

(5) 选择时间效率和空间效率尽可能高的算法,可以让编程者把注意力集中在提供程序的正确性、可理解性、可修改性、可测试性、可使用性等方面,从而提高可维护性,不必为追求效率而把程序编写得让人看不懂。

(7) 如果程序结构设计得较好,层次结构合理,在维护时理解程序和修改程序容易,不易出错。

(8) 使用维护工具或支撑环境可以大大降低维护的工作量。

(10) 用高级语言编写程序,易读易懂,可以提高可维护性。

不正确的叙述,如(1) 在需求分析时主要考虑软件要“做什么?”这一阶段对可维护性可以提出要求,要达到什么指标,而如何实现可维护性,是在设计和实现阶段考虑的问题。

(2) 在程序中加入注释,这是提高程序可读性,从而提高可维护性的重要手段,不能因为测试通过就删去它们。

相关文档
最新文档