大学软件工程复习资料
软件工程复习资料精选全文完整版

可编辑修改精选全文完整版一、单选题(共20题,40分)1、使用数据流图,并不断细化的需求获取方法是()。
(2.0)A、简易的应用规格说明B、面向数据流自顶向下逐步求精C、访谈D、快速原型法正确答案: B2、Z语言是以()为基础的形式化规格说明语言。
(2.0)A、微积分B、概率C、图形D、一阶谓词演算正确答案: D3、HIPO是指(2.0)A、层次输入处理输出图或表B、层次功能结构图C、功能结构图D、输入处理输出图或表正确答案: A4、高铁调用系统最适宜采用()方法。
(2.0)A、有穷状态机B、 Petri网C、 Z语言D、一阶线性时态逻辑正确答案: B5、假设学生年龄的成绩输入范围为18-25,则根据等价类划分技术,下列划分正确的是()。
(2.0)A、可划分为2个有效等价类,2个无效等价类B、可划分为1个有效等价类,2个无效等价类C、可划分为2个有效等价类,1个无效等价类D、可划分为1个有效等价类,1个无效等价类正确答案: B6、用于并发系统,解决定时问题的形式化方法是()。
(2.0)A、 VDMB、 Z语言C、 Petri网D、一阶线性时态逻辑正确答案: C7、软件生命周期中所花费费用最多的阶段是(2.0)A、需求分析B、软件总体设计C、软件维护D、软件实现正确答案: C8、软件质量保证措施SQA不包括:(2.0)A、复审或评审B、软件测试C、程序正确性证明D、软件代码编写正确答案: D9、希望确定软件实现的功能是否与需求规格说明书一致,需进行()。
(2.0)A、单元测试B、有效性测试C、确认测试D、集成测试正确答案: C10、总体设计不包括:(2.0)A、体系结构设计B、数据库设计C、模块内算法设计D、逻辑数据结构设计正确答案: C11、关于类和对象的说法,正确的是(2.0)A、一个类只能有一个角色B、类的命名必须用动词C、类的所有对象都具有相同的属性和操作D、类是对象的实例,对象是类的抽象正确答案: C12、数据字典的基本功能是(2.0)A、数据库设计B、数据通信C、数据定义D、数据维护正确答案: C13、软件需求规格说明的内容不应该包括(2.0)A、主要功能B、算法的描述C、用户界面及其运行环境D、软件性能正确答案: B14、增量模型在添加新的模块时,有一个要求是()(2.0)A、需要更多的测试B、有足够的开发人员C、软件体系结构开放D、各个模块都要进行评审正确答案: C15、在软件详细设计过程中不采用的工具是(2.0)A、判定表B、PDLC、程序流程图D、DFD正确答案: D16、软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(2.0)A、结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑正确答案: B17、耦合是模块之间的相对独立性的度量。
软件工程复习资料

1.软件工程:是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
2.软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
3.需求分析:开发人员准确理解用户的要求,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的功能规约的过程。
4.结构化分析方法:面向数据流自顶向下由内到外逐步求精进行需求分析的方法。
5.模块化:指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程6.软件设计:是一个解决问题和规划软件解决方案的过程,在确定软件目的和规格后,软件开发者会进行设计或请软件设计师提出解决方案,包括软件系统结构、软件详细设计和设计测试三部分内容。
软件设计的目标:是对将要实现的软件系统的体系结构、系统的数据、系统模块间的接口,以及所采用的算法给出详尽的描述。
软件设计原则:分而治之,模块独立性,提高抽象层次,复用性设计,灵活性设计。
7.过程设计:详细设计主要确定每个模块的具体执行过程,也称过程设计。
过程描述工具:①图形工具:把过程的细节用图形方式描述出来,如程序流程图、N-S图、PAD图、决策树等。
②表格工具:用一张表来表达过程的细节,这张表列出了各种可能的操作及其相应的条件,即描述了输入、处理和输出信息,如判定表。
③语言工具:用某种类高级语言来描述过程的细节。
过程设计的目的:是为软件结构图中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出更清晰的描述。
主要任务是编写软件的“过程设计说明书”。
过程设计阶段设计人员应该做的工作有:(1)为每个模块确定采用的算法。
选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;2)确定每一模块使用的数据结构;3)确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节。
8.软件测试:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。
软件工程复习提纲

软件工程复习提纲第一篇:软件工程复习提纲《软件工程》课程要点λ每章教学课件中的“本章小结”列出了需要掌握的内容λ教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);(2)软件危机的含义、表现、产生原因(客观、主观)(3)软件工程学科包括的内容、解决的主要问题(4)软件生命周期的含义、组成阶段及各阶段主要任务2.需理解的问题:(1)软件与程序的区别和联系?(2)开发一个软件项目包括哪些基本的步骤?每一步骤完成哪些工作?(3)主要的软件过程模型(生命周期模型)有哪些?各自有什么特点?二、结构化分析-面向数据流的分析方法1.什么是软件需求?需求分析过程(步骤)?2.需求分析模型:(1)功能模型(数据流图DFD)的含义、描述符号、画法步骤及规则(2)数据模型(E-R图)的作用(3)行为模型(状态转换图)的作用(4)数据字典的作用三、结构化设计1.软件设计的任务?结构化设计与结构化分析的区别和联系?2.软件设计遵循的基本原理及规则:(1)模块化的含义、如何划分模块(降低成本、提高独立性)?(2)抽象与逐步求精的含义、二者间关系如何?(3)信息隐藏的含义(4)如何完善软件结构(深度、宽度、扇入、扇出、作用域、控制域)? 3.模块独立性:(1)模块独立性含义?(2)模块独立性的度量标准:耦合的分类、含义及应用;内聚的分类、含义及应用。
4.概要设计(面向数据流的设计方法)(1)概要设计的任务?(2)数据流图的类型及特征(变换型、事务型)(3)变换分析设计方法的应用(步骤)(4)事务分析设计方法的应用(步骤)4.详细设计(过程设计)(1)详细设计的任务(2)结构化程序(设计)的特征(3)详细设计结果的描述工具:程序流程图、N-S图、PAD图、PDL、判定表四、软件测试1.软件测试基础(1)软件测试的含义和目的?(2)测试用例的内容(输入数据、预期输出结果)?(3)主要测试方法(黑盒测试、白盒测试)的含义?2.主要的白盒测试技术及应用-------逻辑覆盖法?基本路径测试方法? 3.主要的黑盒测试技术及应用-------等价类法? 边界值分析法?4.软件测试的过程?(1)单元测试(采用的测试方法;测试内容)(2)集成测试(采用的测试方法;测试内容;模块组装策略)(3)确认测试(采用的测试方法;测试内容;α测试与β测试?)(4)辅助模块的含义及作用(驱动模块、存根模块?)五、面向对象方法学基础 1.基本概念:(1)对象的含义及特点?(2)类的含义?类与对象的关系?(3)消息及消息传递的含义及作用?(4)继承的含义?多态性机制?2.面向对象建模技术中的三种模型及各自作用?3.对象模型及描述(类图):对象(类)的图形表示;关系(关联、聚集、继承)的图形表示; 4.事件追踪图、状态图、用例图的作用六、面向对象分析与设计过程1.面向对象分析(OOA)的任务?OOA的基本过程?2.面向对象设计(OOD)的主要任务?OOD与OOA的区别和联系?3.OOD模型的组成(四部分)及内容?七、软件维护1.软件维护的含义及类型? 2.软件维护过程?--------------- 课堂练习题目一、填空题1.软件主要包括程序、和三部分内容。
软件工程复习资料

软件工程复习资料第一篇:软件工程复习资料软件工程复习资料一、熟悉和理解(一)软件工程概述1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动,关键不足在于不能适应需求的动态变更。
2.软件不只是用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,编写程序代码只是软件开发的一个部分。
3.快速原型模型可以有效地适应用户需求的动态变化。
4.生产高质量的软件产品是软件工程的首要目标。
5.软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致,是产生软件危机的一个原因。
6.开发一个软件项目总存在某些不确定性,即存在风险.有些风险如果控制得不好,可能导致灾难性的后果。
7.缺乏处理大型软件项目的经验.是产生软件危机的一个原因。
8.瀑布模型本质上是一种线性顺序模型,增量模型本质上是一种快速原型模型。
9.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出可行或不可行的回答。
10.软件生存周期模型包括瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。
11.软件是一种逻辑产品。
12.“软件危机”是指软件开发和维护中出现的一系列问题,成本高、生产率低、质量得不到保证、需求不能充分理解都是是软件危机的表现形式。
13.原型化方法是用户和设计者之间执行的一种交互过程,适用于需求不确定性高的系统。
14.软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的各个阶段.15.研究开发所需要的成本和资源是属于可行性研究中的经济可行性研究的一方面。
16.快速原型模型的主要特点之一是及早提供工作软件。
17.软件工程由方法,工具和过程三部分组成,称软件工程的三要素.18.基于计算机系统的软件要素中的软部件由程序,数据和文档组成.19.瀑布模型是以文档为驱动、适合于软件需求明确的软件项目的模型。
20.螺旋模型是风险驱动的,而瀑布模型是文档驱动的。
软件工程复习资料-完整版

软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
软件工程知识点复习资料

软件工程知识点复习资料一、软件工程概述软件工程是一门研究如何以系统性的、规范化的、可度量的方法进行软件开发、运行、维护和管理的学科。
它涵盖了软件开发生命周期的各个阶段,包括需求分析、系统设计、编码实现、测试和维护等。
二、软件生命周期与开发模型1. 软件生命周期包括需求分析、系统设计、编码实现、测试和维护等阶段。
不同的项目可以采用不同的开发模型,常见的有瀑布模型、迭代模型和敏捷模型。
2. 瀑布模型是一种线性顺序开发模型,各个阶段严格按序进行,适用于需求较为稳定的项目。
3. 迭代模型将软件开发过程划分为多个迭代阶段,每个迭代阶段都包含需求分析、设计、编码和测试等活动,适用于需求较为不确定或需要持续改进的项目。
4. 敏捷模型强调快速响应需求变化和灵活合作,通过迭代、增量的方式进行开发,适用于需求频繁变更的项目。
三、需求工程1. 需求分析是软件开发的第一步,包括需求获取、需求分析、需求建模等过程,目的是明确系统的功能和性能需求,并与客户达成一致。
2. 需求获取可以通过面谈、问卷调查、观察等方式进行,需求分析则要对已收集到的需求进行分析、整理和归纳。
3. 需求建模使用UML(统一建模语言)等工具,将需求表示为用例图、活动图、时序图等形式,便于后续的系统设计和编码实现。
四、设计与架构1. 系统设计是软件开发的关键阶段,包括软件架构设计和详细设计等过程,目的是指导后续的编码和测试工作。
2. 软件架构设计确定系统的整体结构、模块划分和模块间的关系,常见的架构风格包括层次结构、客户-服务器、面向对象等。
3. 详细设计是对系统模块的具体设计,包括数据结构设计、算法设计和接口设计等,常用的设计方法有结构化设计和面向对象设计。
五、编码实现与调试1. 编码实现是将设计阶段得到的设计方案转化为计算机可执行的代码,采用合适的编程语言和开发工具进行。
2. 编码时要注重代码的可读性、可维护性和可重用性,采用良好的编程风格和命名规范。
软件工程复习资料-完整版

一、选择题:1、用例图中,用来表示用例的符号为( B ) 。
2、协作图中包含的元素包括(A ) 。
A. 对象 B. 链 C. 激活 D. 消息3、在类图中,哪种关系表达整体与部分的关系( D ) 。
A .泛化 B. 实现 C. 依赖 D. 聚合4、下列各种图形符号中,用来表示组成关系的符号为 (B )。
A. B. C. D.5 、(A )工具在软件的详细设计中不能使用。
A . DFD B. N-S 图 C. 流程图 D. PDL6 、 “软件危机”是指 (C )。
A. 计算机病毒的出现B. 利用计算机进行经济犯罪活动C. 软件开发和维护中出现的一系列问题D. 人们过分迷恋计算机系统7 、 快速原型是利用原型辅助软件开发的一种新思想,它是在研究 (A )的方法和技术中产生 的。
A. 需求阶段B. 设计阶段C. 测试阶段D. 软件开发的各个阶段8、从严格意义上讲,下列 4 个选项中属于顺序图的元素是(ABCD ) 。
A.对象B. 参与者C. 消息D. 激活9、下列 UML 图形中, (ABCD )属于 UML 的动态视图。
A. 协作图B. 状态图C. 活动图D. 顺序图10、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是( D ) 。
A. 数据库设计B. 数据通信C. 数据关系描述D. 数据定义11、详细设计与概要设计衔接的图形工具是 (D )。
A. DFD 图B. 程序图C. PAD 图D. SC 图12 、UML 中,大多数建模者把节点分为(AC )A . 设备 B. 构件 C. 处理器 D. 显示器13 、(C)是一种特殊形式的状态机,用于对计算流程和工作流程建模。
A .时间图 B. 流程图 C. 活动图 D. 状态图14 、(A )描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。
A. 状态图B. 序列图C. 协作图D. 活动图15、下列特点属于描述用例的特点的是( D ) 。
软工复习资源整理

软工复习资源整理软件工程(Software Engineering)是一门关于软件开发过程、方法和工具的学科。
在软件工程的学习和实践中,充足的复习资源对于提高学习效果和应对考试至关重要。
本文将为大家整理一些软工复习资源,以帮助大家更好地准备软工考试。
一、教材和参考书籍1. 《软件工程导论》:作者Ian Sommerville,这是一本系统而全面地介绍软件工程的教材,对软件工程的基本概念、原理和方法有深入的解析,是软工复习的基础。
2. 《软件工程:实践者的研究方法》:作者Roger S. Pressman,这本书强调软件工程的实际应用和项目管理,对软件开发过程、需求分析、设计和测试等方面有详细的介绍,适合进一步深入学习软件工程的同学。
3. 《软件项目管理案例教程》:作者美国卫斯理理工大学的Joey F. George,这本书以案例的方式介绍软件项目管理的各个方面,包括项目计划、进度控制、配置管理等,对软件工程项目管理的重要知识点进行了详细的说明。
二、在线学习平台1. Coursera:Coursera是一个在线学习平台,提供了众多软件工程相关的课程,如软件开发流程、敏捷开发方法、软件测试等。
通过这些课程的学习,可以系统地学习软件工程的各个方面知识。
2. Mooc学院:Mooc学院是中国的一个在线学习平台,提供了一系列软件工程相关的课程,如软件需求工程、软件开发过程、软件配置管理等。
学生可以根据自己的需求,选择合适的课程进行学习。
三、开源项目参与开源项目是学习软件工程的一个重要途径,通过参与开源项目,可以锻炼自己的软件开发能力和团队协作能力。
下面是一些比较知名的开源项目:1. Apache项目:Apache是一个开源软件基金会,旗下有很多优秀的开源项目,如Apache Tomcat、Apache Hadoop、Apache Maven等。
参与这些项目的开发可以学习到先进的软件开发方法和工程实践。
2. Linux内核:Linux是一个成熟的开源操作系统,其内核是由一群开发者共同维护。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、简答题1.层次图和层次方框图之间区别何在? P92①层次图描绘软件的层次结构,层次方框图描绘数据结构②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。
2.2、软件设计过程中为什么要采用模块化设计方法?P85参考答案:(1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解;(2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性;(3)、模块化可以提高软件的可修改性;(4)、模块化有助于开发过程的组织和管理;3.用某种软件复杂性度量算法来度量不同类型的程序时。
得出的度量值是否真正反映了它们的复杂性?如果对同类型的程序进行度量,其结果是否就比较有价值?参考答案:开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。
因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。
所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。
但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。
4.数据流图的作用是什么?它有哪些基本成分?参考答案:数据流图可以用来抽象地表示系统或软件。
它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。
因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。
基本成分有:数据原点/终点数据处理数据流数据存储5.常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。
代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同;功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。
6.CMM的全称是什么?其基本思想是什么?为什么要对CMM进行分级?P321其基本思想是:软件开发和维护过程中的问题是由于管理软件过程的方法不当引起的,即使是应用新的软件技术,也不会自动提高软件的生产率和质量。
能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。
改进后的软件过程将有利于开发出高质量的软件,使更多的软件项目免受时间和费用超支之苦。
·······························3分对于任何软件开发机构的软件过程的改进都是在完成一个又一个小的改进的基础之上不断进行的渐进过程,而不是一蹴而就的彻底革命。
CMM将软件过程从无序到有序的进化过程分为5个等级,用于测量软件机构的软件过程成熟度和评价其软件过程能力什么是软件配置管理?答:软件配置管理,简称SCM(Software Configuration Management),是在软件的整个生命周期内管理变化的一组活动。
具体地讲,这组活动包括:①标志变化,②控制辩化,③确保适当地实现变化,④向需要指导这类信息的人报告变化。
软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高生产率。
7.什么是基线?你是如何理解基线的?P319基线:已经通过正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。
基线是通过了正式复审的软件配置项。
一旦软件配置变成基线,那么,对于软件配置的改变,必须使用特定的、正式的过程来评估、实现和验证每个变化。
基线除了包含软件配置之外,还有可能包含软件工具。
8.什么是面向对象的方法学?它有哪些优点?P193面向对象的方法就是模拟人类认识世界解决问题的思维习惯开发软件的方法,这种方法认为:OO=对象+类+继承+对象之间的通讯。
························1分OO方法有如下四个方面的要点:①客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以有比较简单的对象以某种方式组合而成。
②把所有对象都划分成各种对象类,每个类定义一组数据(静态属性,状态信息,类实例专有数据)和一组方法(施加于对象上的操作,类实例所共有的)。
③按照子类与父类的关系,把若干个类组成一个层次结构的系统。
子类继承父类的方法和属性,同时可以重载某些方法。
④对象之间仅能通过传递消息相互联系··················2分优点:①与人类习惯的思维方法一致,②稳定性好,③可重用性好,④较易开发大型软件产品,⑤可维护性好。
································2分六、分析题1.试说明下面的两个程序段的功能是什么?可否用另一些等效的程序段来代替它,以提高其可读性。
(1)A=A+BB=A-BA=A-B(2)for(i=0;j<n;i++)for(j=0;j<n;j++)V[i][j]=(i/j)*(j*i)假设几种可能的条件是:T1: A>3 F1:A<=3 T2: B=1 F2: B≠1 T3: A=1 F3:A≠1 T4:M>1 F4:M<=13.下面是一段用Seidel迭代法求解线性方程组的程序。
其中A[n,n]是方程组的系数矩阵。
B[n]是方程组的右端项,X[n]是方程组的解向量。
eps是控制迭代精度的较小实数。
imax是控制迭代的最大次数。
flag是标志,值为0时表示迭代不收敛,值为l时表示迭代收敛。
for(k=0;k<n;k++)X[k]=0.0;X[n-1]=1.0;for(i=1;i<imax;i++){flag=1;for(j=0;j<n;j++){s=B[j];for(k=0;k<n;k++){if(j==k)s += X[k];s=s-A[j,k]*X[k];}if(abs(X[j]-s) > (abs(s) + 1.0)*epsflag=0;X[j]=s;}if(flag==1)break;}画出该C伪码的程序流程图,N-S图,程序流图,并计算程序的McCabe环形复杂度。
4.阅读下列关于软件可靠性方面的叙述,回答问题1和问题2。
软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。
某软件中心的评测部为了评估已开发实现的应用软件ASP的可靠性,决定采用软件可靠性的错误播种模型来进行测试和评估。
评测部在评估时,作了下列3个假设:(l)在测试前,单位长度的故障个数E T/I T为一常数,此常数基本上落在一个固定的范围内。
其中I T为被测程序的长度(即机器指令条数),E T为被测程序中故障总数。
(2)失效率正比于软件中剩余的(潜伏的)故障数,平均无敌障时间MTTF(Mean Time To Failure)与单位长度的剩余故障个数成反比,即MTTF=1/(K·εr)。
其中εr为单位长度剩余故障个数,K的典型值现取为200。
(3)测试中发现的错误都得到了及时改正,在测试过程中没有引入新的错误。
评测部对ASP 软件人为地植入了10个错误,即N s =10,在开始测试的一小段时间内,发现了160个固有故障,即n=160,又发现了植入的故障2个,即n s =2,被测程序ASP 的长度(即机器指令条数)为100000。
问题1:用故障播种(植入)的数学模型,估算出被测程序ASP 的固有故障的个数N 的值。
如果通过测试一段时间后,发现的固有错误个数为E C =795时,请估算此程序的平均无故障时间MTTF 的值。
问题2:若要求把此MTTF 提高4倍,应至少再排除多少个固有错误?请简要地列出有关计算式。
800102160=⨯==s s N n n N()()100100000/795800*2001)/)((1*1=-=-*==T C T r I E E K K MTTF ε 由()()500100000/800*2001=-x 得: 799=x所以应该在排除:799-795=4个错误。
5. 对于包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h ;经过两个月的测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h 。
请问:(1)在开始测试之前,软件中潜藏着多少个错误?(2)为了达到MTTF=100h ,还应该改正多少个错误?程序中还残留多少个错误?6. 在测试一个长度为24000条指令的程序时,第一个月内由甲、乙两人各自独立地测试这个程序。
经过一个月后,甲发现并改正了20个错误,使MTTF 达到10h 。
与此同时,乙发现了24个错误,其中6个错误甲也发现了。
以后甲一个人继续独立测试这个程序。
请问:(1)刚开始测试这个程序时,程序中总共潜藏有多少个错误?(2)为了使MTTF 达到60h ,需要再改正多少个错误?此时程序中还残留有多少个错误?7. 根据下列程序流程图画出相应得N-S 图和P A BQ Start While P A Until Q B End七、名词解释 1、系统流程图系统流程图是描绘物理系统的传统工具,用图形符号来表示系统中的各个元素,表达了系统中各个元素之间的信息流动的情况。
2.数据字典答:数据字典(Data Dictionary ,简称DD)就是对数据流图中包含的所有元素的定义的集合。