系统分析师软件工程三模拟题.docx
《系统分析师软件工程三模拟题.docx》由会员分享,可在线阅读,更多相关《系统分析师软件工程三模拟题.docx(24页珍藏版)》请在冰豆网上搜索。
![系统分析师软件工程三模拟题.docx](https://file1.bdocx.com/fileroot1/2023-2/9/66a4b2f8-2180-4a77-acbc-15c349dfec5a/66a4b2f8-2180-4a77-acbc-15c349dfec5a1.gif)
系统分析师软件工程三模拟题
[模拟]系统分析师软件工程(三)
选择题
净室软件工程(Cleanroom)是软件开发的一种形式化方法,可以开发较高质量的软件。
它使用
(1) 进行分析和建模,并且将
(2) 作为发现和排除错误的主要机制。
使用(3) 测试来获取认证软件可靠性所需要的信息。
第1题:
A.产生式归约
B.移进归约
C.盒结构归约
D.规范归约
参考答案:
C
第2题:
A.正确性验证
B.黑白盒测试
C.集成测试
D.基本路径测试
参考答案:
A
第3题:
A.边界值
B.统计
C.代数
D.精确
参考答案:
B
净室软件工程是软件开发的一种形式方法,它可以生成质量非常高的软件。
它使用盒结构规约(或形式化方法)进行分析和设计建模,并且强调将正确性验证,而不是测试,作为发现和消除错误的主要机制。
使用统计的测试来获取认证被交付软件的可靠性所必需的出错率信息。
净室方法从使用盒结构表示的分析和设计模型入手,一个“盒”在某特定的抽象层次上封装系统(或系统的某些方面)。
黑盒用于表达系统的对外可观测行为,状态盒封装状态数据和操作,清晰盒用于对某状态盒中的数据和操作所蕴涵的过程设计进行建模。
一旦完成了盒结构设计,则运用正确性验证。
软件构件的过程设计被划分为一系列子函数,为了证明每个子函数的正确性,要为每个函数定义出口条件并实施一组子证明。
如果每个出口条件均被满足,则设计一定是正确的。
一旦完成了正确性验证,便开始统计的使用测试。
和传统测试不同,净室软件工程并不强调单元或集成测试,而是通过定义一组使用场景、确定对每个场景的使用概率及定义符合概率的随机测试来进行软件测试。
将产生的错误记录和取样、构件和认证模型相结合使得可以数学地计算软件构件的可靠性。
净室哲学是一种严格的软件工程方法,它是一种强调正确性的数学验证和软件可靠性认证的软件过程模型,其目标和结果是非常低的出错率,这是使用非形式化方法难以或不可能达到的。
第4题:
基线是软件生存期各个开发阶段的工作成果,测试阶段的基线是______。
A.可提交的软件
B.被测试的程序
C.提交报告
D.测试报告
参考答案:
D
一般来说,软件开发各阶段的配置基线如下。
(1)计划阶段:
开发计划。
(2)需求分析阶段:
需求规格说明、用户手册。
(3)设计阶段;设计规格说明。
(4)编码阶段;程序清单。
(5)测试阶段:
测试报告。
第5题:
使用自动项目管理工具与使用手工方法管理相比有许多优点,但是______不属于自动项目管理工具的优点。
A.能对大型项目进行精确跟踪,使项目经理能及时掌握实际工作进展和资源的实际消耗情况
B.能指导设计人员采用软件生存周期各阶段的适用技术,进行设计和控制工程进度
C.能辅助开发PERT、CPM(关键路径方法)和WBS(工作分解结构),自动更新活动网络图和Gantte图
D.能自动计算、自动积累数据、自动生成图形和报表来取代人工计算、调度、统计和文档工作,提高管理工作效率。
参考答案:
B
第6题:
软件的分层式体系结构把软件系统划分为4层,这4层结构自顶向下分别是______。
A.应用软件 业务构件 中间件 系统软件
B.业务构件 应用软件 中间件 系统软件
C.应用软件 中间件 系统软件 业务构件
D.业务构件 中间件 应用软件 系统软件
参考答案:
A
软件的分层式体系结构把软件系统划分为4层,这4层结构自顶向下分别是应用软件、业务构件、中间件和系统软件。
第7题:
有两种需求定义的方法——严格定义和原型定义,在关于这两种方法的描述中,不正确的是______。
A.严格定义方法假定所有的需求都可以预先定义
B.严格定义方法假定软件开发人员与用户之间的沟通存在障碍
C.原型定义方法认为需求分析中不可避免地要出现很多反复
D.原型定义方法强调用户在软件开发过程中的参与和决策
参考答案:
B
严格定义(预先定义)是目前采用较多的一种需求定义方法。
在采用严格定义的传统的结构化开发方法中,各个工作阶段排列成一个理想的线性开发序列,在每一工作阶段中,都用上一阶段所提供的完整、严格的文档作为指导文件,因此它本质上是一种顺序型的开发方法。
在传统的结构化开发中,需求的严格定义建立在以下的基本假设上。
(1)所有需求都能够被预先定义假设意味着,在没有实际系统运行经验的情况下,全部的系统需求均可通过逻辑推断得到。
这对某些规模较小、功能简单的系统是可能的,但对那些功能庞大、复杂且较大的系统显然是困难的。
即使事先做了深入细致的调查和分析,当用户见到新系统的实际效果时,也往往会改变原先的看法,会提出修改或更进一步增加系统功能的要求,所以再好的预先定义技术也会经常反复。
这是因为人们对新事物的认识与理解将随着直观、实践的过程进一步加深,这是与人类认识世界的客观规律相一致的。
所以,能够预先定义出所有需求的假设在许多场合是不能成立的。
(2)开发人员与用户之间能够准确而清晰地交流假设认为,用户与开发人员之间,虽然每人都有自己的专业、观点、行话,但在系统开发过程中可以使用图形/文档等通信工具进行交流,进行清晰、有效的沟通,这种沟通是必不可少的。
可是,在实际开发中,往往对一些共同的约定,每个人可能都会产生自己的理解和解释。
即使采用结构化语言、判定树、判定表等工具,仍然存在精确的、技术上的不严密感。
这将导致人们有意无意地带有个人的不同理解而各行其事,所以在多学科、多行业人员之间进行有效的通信交流是有一定困难的。
(3)采用图形/文字可以充分体现最终系统在使用严格定义需求的开发过程中,开发人员与用户之间交流、通信的主要工具是定义报告,包括叙述文字、图形、逻辑规则和数据字典等技术工具。
它们都是静止的、被动的,不能实际表演,很难在用户头脑中形成一个具体的形象。
因此,要用静止的图形/文字描述来体现一个动态的系统是比较困难的。
除了所论述的情况外,上述基本假设还将导致严格定义的结构化开发方法存在以下缺陷。
首先是文档量大,由于在结构化方法的每个阶段都必须写出规范、严密的各种文档,这些文档虽然有助于开发人员之间、用户与开发人员间的通信交流,有助于开发过程的规范化,但由于编写文档花费大量人力和时间,导致系统开发周期增大。
其次是开发过程可见性差,来自用户的反馈太迟。
由于在需求定义、系统设计阶段都不能在用户终端显示新系统的实际效果,一直到系统实现阶段结束,用户才有机会通过对新系统的实际操作和体会来提出他们对新系统的看法和意见,但此时整个开发已近尾声,若想修改前几段的工作或修改需求定义,都将付出较大的代价,有时这种修改甚至会导致整个系统的失败。
综上所述,需求的严格定义的基本假设在许多情况下并不成立,传统的结构化方法面临着一些难以跨越的障碍。
为此,需要探求一种变通的方法。
原型方法以一种与严格定义法截然不同的观点看待需求定义问题。
原型化的需求定义过程是一个开发人员与用户通力合作的反复过程。
从一个能满足用户基本需求的原型系统开始,允许用户在开发过程中提出更好的要求,根据用户的要求不断地对系统进行完善,它实质上是一种迭代的循环型的开发方式。
采用原型方法时需要注意的几个问题。
(1)并非所有的需求都能在系统开发前被准确地说明。
事实上,要想严密、准确地定义任何事情都是有一定难度的,更不用说是定义一个庞大系统的全部需求。
用户虽然可以叙述他们所需最终系统的目标及大致功能,但是对某些细节问题却往往不可能十分清楚。
一个系统的开发过程,无论对于开发人员还是用户来说,都是一个学习和实践的过程,为了帮助他们在这个过程中提出更完善的需求,最好的方法就是提供现实世界的实例——原型,对原型进行研究、实践,并进行评价。
(2)项目参加者之间通常都存在交流上的困难,原型提供了克服该困难的一个手段。
用户和开发人员通过屏幕、键盘进行对话和讨论、交流,从他们自身的理解出发来测试原型,一个具体的原型系统,由于直观性、动态性而使得项目参加者之间的交流上的困难得到较好的克服。
(3)需要实际的、可供用户参与的系统模型。
虽然图形和文字描述是一种较好的通信交流工具,但是,其最大缺陷是缺乏直观的、感性的特征,因而不易理解对象的全部含义。
交互式的系统原型能够提供生动的规格说明,用户见到的是一个“活”的、实际运行着的系统。
实际使用在计算机上运行的系统,显然比理解纸面上的系统要深刻得多。
(4)有合适的系统开发环境。
随着计算机硬件,软件技术和软件工具的迅速发展,软件的设计与实现工作越来越方便,对系统进行局部性修改甚至重新开发的代价大大降低。
所以,对大系统的原型化已经成为可能。
(5)反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法。
对系统改进的建议来自经验的发展,应该鼓励用户改进他们的系统,只有做必要的改变后,才能使用户和系统间获得更加良好的匹配,所以,从某种意义上说,严格定义需求的方法实际上抑制了用户在需求定义以后再改进的要求,这对提高最终系统的质量是有害的。
另一方面,原型方法的使用并不排除严格定义方法的运用,当通过原型并在演示中得到明确的需求定义后,应采用行之有效的结构化方法来完成最终系统的开发。
第8题:
风险的成本估算完成后,可以针对风险表中的每个风险计算其风险曝光度。
某软件小组计划项日中采用50个可复用的构件,每个构件平均是100LOC,本地每个LOC的成本是13元人民币。
下面是该小组定义的一个项目风险:
1、风险识别:
预定要复用的软件构件中只有50%将被集成到应用中,剩余功能必须定制开发;
2、风险概率:
60%;
3、该项目风险的风险曝光度是______。
A.32500
B.65000
C.1500
D.19500
参考答案:
D
风险曝光度(riskexposure)的计算公式如下。
风险曝光度;错误出现率(风险出现率)×错误造成损失(风险损失)在本题中,风险概率为60%,风险损失为所有构件价格的50%,因此,其风险曝光度为:
50×100×13×50%×60%=19500
第9题:
为了使构件系统更切合实际、更有效地被复用,构件应当具备______,以提高其通用性。
A.可继承性
B.可变性
C.可封装性
D.可伸缩性
参考答案:
B
评价软件的质量通常可以从产品运行、产品修改和产品转移三个不同角度来进行。
除了软件应满足产品规格说明的正确性和保证运行效率以外,(10) 和(11) 也是产品运行期间影响软件质量的两个质量因素,其中(10) 是指在遇到意外时系统能做出适应反应的程度。
可维护性是影响产品修改的一个质量因素,它主要包括可理解性、可修改性和(12) 。
一般认为,(13) 是影响产品转移的一个质量因素。
为了保证软件质量,在开发过程的各阶段进行(14) 是一个重要的手段。
第10题:
A.灵活性
B.可重用性
C.适应性
D.健壮性
参考答案:
D
第11题:
A.灵活性
B.可重用性
C.适应性
D.可用性
参考答案:
D
第12题:
A.可测试性
B.可移植性
C.适应性
D.健壮性
参考答案:
A
第13题:
A.灵活性
B.可重用性
C.完整性
D.安全性
参考答案:
B
第14题:
A.验收测试
B.用户培训
C.软件评审
D.文件修改
参考答案:
C
对软件开发的看法可有多种观点,敏捷软件开发方法是一种(15) ,代表性是极限编程XP,它的核心思想为(16) 。
第15题:
A.数学观
B.建模观
C.工程观
D.协作游戏
参考答案:
D
第16题:
A.强调文档和以敏捷性应对变化
B.强调建模和以敏捷性应对变化
C.强调设计和以敏捷性应对变化
D.强调人和人之间的合作的因素和以敏捷性应对变化
参考答案:
D
在我们面临“软件危机”所带来的挑战之时,曾经通过采用严格的规范、详尽的文档来约束开发过程,以保证开发的质量与效果,获得了突出的成就。
但是随着时代的进一步发展,商业周期越来越短,变化越来越快,甚至在软件开发的过程中,商业逻辑和需求已经悄然变化,这给本来还不成熟的软件产业带来了新的挑战。
正在这种情况下,敏捷方法论应运而生。
2001年这些方法论的创始人走到一起,成立了敏捷联盟,发表了颇具影响力的敏捷宣言:
个体和交互胜过过程和工具,可工作的软件胜过面面俱到的文档,客户合作胜过合同谈判,响应变化胜过遵循计划。
比较有影响力的敏捷方法论包括XP(极限编程)、FDD(特征驱动开发)、CrystalMethod(水晶方法)、DSDM(动态系统开发方法)、ASD(自适应开发)、Scrum等。
XP的核心是其总结的沟通、简单、反馈、勇气四大价值观。
它包括12种最佳实践:
计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户以及编码标准。
第17题:
软件项目管理中可以使用各种图形工具,在以下关于各种图形工具的论述中正确的是______。
A.流程图直观地描述了工作过程的具体步骤,以及这些步骤之间的时序关系,可以用于控制工作过程的完成时间。
B.PERT图画出了项目中各个活动之间的时序关系,可用于计算工程项目的关键路径,以便控制项目的进度。
C.因果分析图能表现出软件过程中各种原因和效果之间的关系,并且表现了它们随时间出现的顺序和重要程度,这些数据可用于改进软件过程的性能。
D.Gantte图为整个项目建立了一个时间表,反映了项目中的所有任务之间的依赖关系以及各个任务的起止日期,这些信息可用于项目的任务调度。
参考答案:
B
软件项目管理中可以使用各种图形工具,例如流程图,PERT图、Gantte图、因果分析图等。
流程图可以直观地描述工作过程的具体步骤,以及这些步骤之间的关系,帮助我们预测在何处可能发生何种质量问题,并由此帮助开发处理他们的办法。
但流程图不能用于控制工作过程的完成时间。
PERT技术(计划评审技术)是安排开发进度,制定软件开发计划的最常用的方法。
PERT图采用网络图来描述一个项目的任务网络,也就是从一个项目的开始到结束,把应当完成的任务用图或表的形式表示出来。
通常用两张表来定义网络图。
一张表给出与—特定软件项目有关的所有任务(也称为任务分解结构),另一张表给出应当按照什么样的次序来完成这些任务(也称为限制表),在项目的早期阶段,PERT图对于组织任务、建立时间框架,反映项目中的所有任务之间的依赖关系十分有用。
PERT技术为项目计划人员提供了一些定量的工具。
(1)确定关键路径,即决定项目开发时间的任务链。
(2)应用统计模型,对每一个单独的任务确定最可能的开发持续时间的估算值。
(3)计算边界时间,以便为具体的任务定义时间窗口。
边界时间的计算对于软件项目的计划调度是非常有用的。
因果分析图又称特性要因图,因其形状像树枝或鱼骨,故又称鱼骨图、鱼刺图、树枝图,是分析质量问题产生原因的有效工具。
因果分析图描述相关的各种原因和子原因如何产生潜在问题或影响,但不能表现它们随时间出现的顺序和重要程度。
因果图的做法是将要分析的问题放在图形的右侧,用一条带箭头的主干指向要解决的质量问题,一般从人、设备、材料、方法、环境五个方面进行分析。
对具体问题来讲,这五个方面的原因不一定同时存在,要找到解决问题的方法,还需要对上述五个方面进一步分解。
它们之间的关系也用带箭头的箭线表示。
Gantte图(甘特图)用水平线段表示任务的工作阶段:
线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。
随着项目的进展,Gantte图可以指明已完成的任务(纵线扫过的)和有待完成的任务(纵线尚未扫过的)。
从Gantte图上可以很清楚地看出各子任务在时间上的对比关系。
在Gantte图中,每一任务完成的标准,不是以能否继续下一阶段任务为标准,而是必须交付应交付的文档与通过评审为标准。
因此在Gantte图中,文档编制与评审是软件开发进度的里程碑。
Gantte图的优点是标明了各任务的计划进度和当前进度,能动态地反映软件开发进展情况。
缺点是难以反映多个任务之间存在的复杂的逻辑关系。
风险分析和管理是软件开发的一项重要活动。
在软件工程领域考虑风险时,主要基于以下三个概念:
(18) 以及必须抓住选择机会。
实践中存在许多种软件风险,如“潜在的设计、实现、维护等方面的问题”属于(19) 风险;“开发了一个没有人真正需要的优秀产品”属于(20) 风险;“开发的产品不再符合公司的整体商业策略”属于(21) 风险。
通常在软件项目开发过程中,我们希望首先实现(22) 的用例。
第18题:
A.关心当前,关心变化
B.关心当前,关心不变性
C.关心未来,关心变化
D.关心未来,关心不变性
参考答案:
C
第19题:
A.技术
B.过程
C.项目
D.商业
参考答案:
A
第20题:
A.技术
B.过程
C.项目
D.商业
参考答案:
D
第21题:
A.技术
B.过程
C.项目
D.商业
参考答案:
D
第22题:
A.风险最小
B.风险最大
C.风险中等
D.任意风险
参考答案:
B
第23题:
结构模板能够帮助分析员建立一个逐层细化的层次结构。
结构环境图(ArchitectureContextDiagram,ACD)则位于层次结构的顶层。
在从ACD导出的______中给出了各个专门子系统和重要(数据与控制)信息流。
A.系统语境图(SCD)
B.结构互连图(AID)
C.结构流程图(AFD)
D.结构图的规格说明(ADS)
参考答案:
C
结构模板能帮助系统分析员建立一个细节的层次结构。
结构环境图ACD则位于层次结构的顶层,建立了待实现系统与系统运行环境之间的信息边界。
ACD定义了:
(1)系统使用的所有信息的外部产生者:
(2)由系统建立的所有信息的外部使用者:
(3)通过接口进行通信或实施维护与自测试的所有实体。
专门子系统定义在从ACD导出的结构流程图AFD(ArchitectureFlowDiagram)中。
信息流穿越ACD的各个区域,可用于引导系统工程师开发AFD。
AFD给出了各个专门子系统和重要的(数据与控制)信息流。
结构模板把子系统处理划分成5个处理区域。
每个子系统可以包含一个或多个系统元素(如硬件、软件、人),它们是系统工程师分配给子系统的。
第24题:
系统开发过程的流程如图9-5所示,______阶段拟定了系统的目标、范围和要求。
A.①
B.②
C.③
D.④
参考答案:
A
软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求。
需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题。
在系统需求分析阶段,就要拟定系统的目标、范围和要求(需求),明确项目视图和范围。
在业务领域分析过程中,通过建立实体关系图,把与业务相关的数据模型化:
通过建立(25) 来表示业务活动的分解过程;两个业务过程之间的相互依赖关系应记录在过程依赖图中;通过建立(26) 来详细说明整个业务过程的逻辑。
第25题:
A.数据流图(DFD)
B.过程层次图(PHD)
C.过程活动图(PAD)
D.过程关系图(PRD)
参考答案:
B
第26题:
A.数据流图(DFD)
B.过程层次图(PHD)
C.过程活动图(PAD)
D.甘特图(Gaotte)
参考答案:
C
在业务领域分析过程中,通过建立实体关系图,把与业务相关的数据模型化;通过建立过程层次图来表示业务活动的分解过程;两个业务过程之间的相互依赖关系应记录在过程依赖图中;通过建立过程活动图来详细说明整个业务过程的逻辑。
软件测试通常可分为单元测试、集成测试、确认测试和系统测试,其中确认测试主要用于发现(27) 阶段的错误。
在集成测试时,通常可采用自顶向下增殖式集成和自底向上增殖式集成。
在自底向上增殖式集成时,对每个被集成的模块(28) 。
对那些为众多用户开发的软件(如操作系统、编译程序),通常还要进行α测试和β测试,以发现可能只有最终用户才能发现的错误。
其中,α测试是指晕终用户在(29) 的情况下所进行的测试,β测试是指最终用户在(30) 的情况下所进行的测试。
在软件维护阶段,当修改软件后,除了进行常规的测试外,还应进行(31) 测试。
第27题:
A.需求分析
B.概要设计
C.详细设计
D.编码
参考答案:
A
第28题:
A.不必设计驱动模块和桩(stub)模块
B.不必设计驱动模块,但要设计桩模块
C.要设计驱动模块,但不必设计桩模块
D.要设计驱动模块和桩模块
参考答案:
C
第29题:
A.开发环境下,开发人员不在场
B.开发环境下,开发人员在场
C.用户的实际使用环境下,开发人员不在场
D.用户的实际使用环境下,开发人员在场
参考答案:
B
第30题:
A.开发环境下,开发人员不在场
B.开发环境下,开发人员在场
C.用户的实际使用环境下,开发人员不在场
D.用户的实际使用环境下,开发人员在场
参考答案:
C
第31题:
A.恢复
B.强度
C.安装
D.回归
参考答案:
D
第32题:
质量控制非常重要,但是进行质量控制也需要一定的成本。
_____可以降低质量控制的成本。
A.使用抽样统计
B.进行过程分析
C.对全程进行监督
D.进行质量审计
参考答案:
A
根据PMBOK2004版,正确的答案是A。
由于是抽样统计,节省了大量的质量控制成本。
软件方法学是以软件方法为研究对象的学科。
从开发风范上看,可分为(33) 。
从性质上看,可分为(34) 。
从适应范围来看,可分为(35) 。
形式方法的目的是把软件作为数学来重新发现。
形式方法被用来避免系统中的(36) 、不一致性。
软件自动化方法是指利用计算机使软件的设计实现自动化的方法和相关的技术。
软件自动化的实现途径有四种:
过程途径、归纳途径、(37) 。
第33题:
A.整体性方法与局部性方法
B.面向对象开发方法与结构化开发方法
C.面向对象开发方法与非形式方法
D.形式方法与非形式方法
参考答案:
A
第34题:
A.歧义性、不完全性
B.歧义性、不安全性
C.歧义性、不适应性
D.歧义性、不可靠性
参考答案:
A
第35题:
A.演绎途径、编译途径
B.转换途径、编译途径
C.编译途径、解释途径
D.演绎途径、转换途径
参考答案:
D
软件方法学是以软件方法为研究对象的学科。
从开发方法上看,可分为自顶向下开发方法和自底向上开发方法。
自顶向下开发方法强调开发过程是由问题到解答、由总体到局部、由一般到具体;自底向上开发方法从系统实现的最基础部分着手,由简单到复杂,逐层向上构造,直至得到所需的软件。
从性质上看,软件方法学可分为形式方法与非形式方法,形式方法是建立在严格数学基础上的软件开发方法。
在软件开发的各个阶段中,凡是采用严格的数学语言,具有精确的数学语义的方法,称为形式方法。
采用形式方法可避免系统中的歧义性、不完全性和不一致性。
而非形式方法则不把严格作为其主要着眼点。
从适用范围上看,软件方法学可分为整体性方法和局部性方法。
整体性方祛适用于软件开发的全过程,如自顶向下方法、自底向上方法、软件自动化方法;局部性方法适用于软件开发过程的某个具体阶段,如各种需求分析方法、