大学软件工程真题及解析_第1页
大学软件工程真题及解析_第2页
大学软件工程真题及解析_第3页
大学软件工程真题及解析_第4页
大学软件工程真题及解析_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学软件工程真题及解析一、单项选择题(共10题,每题1分,共10分)软件工程学科的核心研究对象是以下哪一项A.计算机硬件的运行逻辑B.软件的开发、维护全流程的规律与方法C.互联网通信协议的实现逻辑D.人工智能算法的数学推导过程答案:B解析:软件工程的定义就是研究软件从需求提出到最终报废全生命周期内的开发、维护、管理的理论与方法,正确选项B符合核心定义。选项A属于计算机组成原理的研究范畴,选项C属于计算机网络的研究范畴,选项D属于人工智能学科的研究范畴,均不属于软件工程的核心研究对象。软件生命周期中,明确“用户需要软件解决什么核心问题”的阶段是A.代码实现阶段B.需求分析阶段C.软件测试阶段D.系统维护阶段答案:B解析:需求分析阶段的核心目标就是对接用户的实际诉求,明确软件需要实现的所有功能与非功能要求,确认用户要解决的核心问题,选项B正确。选项A的代码实现阶段是将设计结果转化为可运行程序,选项C的软件测试阶段是验证软件是否符合需求要求,选项D的系统维护阶段是软件上线后修复问题、迭代优化,均不承担明确用户核心诉求的任务。结构化设计方法中,最高内聚的内聚类型是A.逻辑内聚B.偶然内聚C.功能内聚D.时间内聚答案:C解析:功能内聚指一个模块内所有元素的处理动作都为完成同一个明确的功能服务,是内聚程度最高、模块独立性最强的内聚类型,选项C正确。选项A逻辑内聚是模块内多个逻辑相似的功能放在一起,内聚程度中等;选项B偶然内聚是模块内元素毫无逻辑关联,是内聚程度最低的类型;选项D时间内聚是把同一时间段执行的动作放在一个模块,内聚程度较低。以下哪一项属于典型的黑盒测试方法A.语句覆盖测试B.边界值分析测试C.判定覆盖测试D.路径覆盖测试答案:B解析:黑盒测试也叫功能测试,不关注程序内部代码逻辑,仅验证输入输出是否符合需求,边界值分析是典型的黑盒测试方法,选项B正确。选项A、C、D都属于白盒测试方法,需要基于程序内部的代码结构设计测试用例,不符合黑盒测试的特征。瀑布模型最适合的适用场景是以下哪一种A.用户需求频繁变动的创业项目B.需求明确、前期阶段需求几乎不会调整的传统工业软件项目C.工期极短、要求快速迭代上线的互联网产品D.技术储备不足、需求模糊的探索性研发项目答案:B解析:瀑布模型要求每个阶段按线性顺序推进,前一阶段的输出是后一阶段的输入,前期几乎不允许出现需求变更,适合需求明确稳定的项目,选项B正确。选项A的需求频繁变动场景瀑布模型完全无法适配,选项C的快速迭代场景适合敏捷开发,选项D的需求模糊探索性项目不适合用线性推进的瀑布模型。UML用例图的核心作用是A.描述程序代码的类之间的继承关系B.描述用户和系统的交互场景,梳理系统的功能需求C.描述程序运行时各个对象之间的消息传递时序D.描述软件部署阶段的硬件节点分布结构答案:B解析:用例图的核心组成元素是参与者、用例、关联关系,用来从用户视角梳理系统的所有交互功能需求,选项B正确。选项A是类图的作用,选项C是时序图的作用,选项D是部署图的作用。软件维护阶段中,占总维护工作量比例最高的维护类型是A.改正性维护B.适应性维护C.完善性维护D.预防性维护答案:C解析:完善性维护指软件上线后根据用户新的使用需求新增功能、优化性能和交互体验的维护工作,占总维护工作量的六成以上,是占比最高的维护类型,选项C正确。改正性维护是修复上线后发现的隐藏bug,适应性维护是适配新的硬件或系统环境,预防性维护是为未来可能的变更提前优化代码结构,三者的工作量占比都低于完善性维护。以下哪一项不属于软件的核心组成部分A.可运行的程序代码B.配套的开发文档、用户手册C.软件运行产生的相关数据D.运行软件的计算机主机答案:D解析:软件的定义包含程序、相关文档、运行产生的数据三个部分,运行软件的计算机主机属于硬件范畴,不属于软件的组成部分,选项D正确,其余三个选项都属于软件的核心组成内容。软件需求规格说明书的核心作用不包含以下哪一项A.作为开发方和需求方之间的正式需求约定依据B.作为软件测试阶段设计测试用例的核心参考标准C.作为软件项目竣工验收的核心参考文档D.作为底层硬件电路设计的实现指导手册答案:D解析:软件需求规格说明书描述的是软件层面的功能与非功能要求,不会涉及底层硬件电路的设计指导内容,选项D不属于其作用,其余三个选项都是需求规格说明书的核心作用。敏捷开发中“Scrum框架”里,负责协调团队进度、消除开发阻碍的角色是A.产品负责人B.ScrumMasterC.最终用户D.测试工程师答案:B解析:ScrumMaster的核心职责就是扫除开发团队推进过程中遇到的各类阻碍,保障迭代流程顺畅推进,选项B正确。选项A产品负责人的职责是梳理需求优先级,选项C最终用户是软件的使用者,选项D测试工程师负责验证软件质量,三者都不承担协调进度消除阻碍的职责。二、多项选择题(共10题,每题2分,共20分)以下属于软件的核心固有特性的有A.软件是逻辑实体,不是物理实体,不存在物理磨损B.软件的生产过程和传统硬件的流水线加工模式完全一致C.软件的复杂度通常远高于普通硬件产品,开发成本难以精准预估D.软件的使用过程中可以持续迭代更新优化能力答案:ACD解析:软件是纯逻辑的产物,没有物理损耗,复杂度高、开发成本难预估,且可以持续迭代优化,选项ACD正确。选项B错误,软件的开发是智力密集型的创造性工作,和硬件的流水线批量加工模式完全不同,不会出现完全一模一样的复制生产过程。以下属于软件需求分类的正确选项有A.功能需求:描述软件必须完成的具体功能动作B.非功能需求:描述软件的性能、安全性、兼容性等质量属性要求C.设计约束:描述软件设计开发过程中必须遵守的各类限制条件D.硬件采购需求:描述项目需要采购的服务器的型号参数答案:ABC解析:软件需求分为功能需求、非功能需求、设计约束三大类,选项ABC都是正确的分类。选项D的硬件采购需求不属于软件需求的范畴,属于项目采购管理的内容。以下属于常见软件开发过程模型的有A.瀑布模型B.增量模型C.螺旋模型D.硬件冲压模型答案:ABC解析:瀑布模型、增量模型、螺旋模型都是软件工程领域主流的软件开发过程模型,选项ABC正确。选项D的硬件冲压模型属于工业硬件制造领域的工艺模型,和软件开发完全无关。以下属于白盒测试方法的有A.语句覆盖测试B.判定覆盖测试C.条件覆盖测试D.等价类划分测试答案:ABC解析:语句覆盖、判定覆盖、条件覆盖都是基于程序内部代码结构设计用例的白盒测试方法,选项ABC正确。选项D等价类划分是典型的黑盒测试方法,不需要关注代码内部逻辑。软件设计阶段提出的耦合类型中,属于低耦合、符合设计优化方向的耦合类型有A.数据耦合B.标记耦合C.公共耦合D.内容耦合答案:AB解析:数据耦合指两个模块之间仅通过传递基础数据参数交互,标记耦合指两个模块之间通过传递结构化的记录参数交互,二者都属于低耦合类型,模块独立性较强,选项AB正确。公共耦合是多个模块共享同一个全局数据区,内容耦合是一个模块直接访问修改另一个模块的内部代码数据,二者都是高耦合的糟糕设计,不符合优化方向。以下属于UML交互图分类的有A.时序图B.协作图C.用例图D.部署图答案:AB解析:UML的交互图包含时序图和协作图两个子类,用来描述对象之间的消息交互流程,选项AB正确。用例图属于用例图分类,部署图属于实现图分类,二者不属于交互图范畴。以下属于ISO9126标准定义的软件核心质量特性的有A.功能性:软件实现符合需求的功能的能力B.易用性:用户使用软件时付出的学习成本和操作难度C.经济性:软件生产过程中消耗的原材料重量D.可维护性:软件被修改优化的难易程度答案:ABD解析:ISO9126定义的软件质量六大特性包含功能性、易用性、可维护性、效率、可移植性、保密性,选项ABD都是正确的质量特性。选项C中软件是逻辑实体,几乎不消耗实体原材料,经济性不属于该标准定义的软件质量特性。以下属于敏捷开发常见实践的有A.短周期迭代,每次迭代交付可运行的软件版本B.每日站会,团队同步当日进度和遇到的阻碍C.完整的前期需求文档,后续完全不允许任何需求调整D.持续集成,代码修改后自动完成编译、测试、部署流程答案:ABD解析:短周期迭代、每日站会、持续集成都是敏捷开发的典型实践,选项ABD正确。选项C完全不允许需求调整是瀑布模型的特征,和敏捷开发拥抱合理需求变更的核心思想完全相悖。软件项目风险管控的常见应对策略有A.风险规避:通过调整项目方案直接消除风险来源B.风险转移:将风险的部分影响转移给第三方,比如购买项目保险C.风险减轻:通过提前做预案降低风险发生的概率或者造成的损失D.风险无视:所有风险都不用处理,等风险发生之后再临时补救答案:ABC解析:风险规避、风险转移、风险减轻都是软件工程中标准的风险应对策略,选项ABC正确。选项D的风险无视是完全错误的项目管理行为,会大幅提升项目失败的概率。软件需求规格说明书的评审参与方通常包含以下哪些角色A.需求提出方的业务代表B.软件开发团队的核心开发人员C.软件测试团队的负责人D.和项目毫无关联的社会公众答案:ABC解析:需求评审需要需求方、开发方、测试方的核心角色共同参与,确认各方对需求的理解完全一致,选项ABC正确。和项目无关的社会公众不需要参与需求评审环节。三、判断题(共10题,每题1分,共10分)软件是由程序、相关文档和运行产生的数据共同组成的集合,不是单指可运行的程序代码。答案:正确解析:软件工程领域对软件的标准定义明确包含程序、配套文档、相关数据三个部分,缺少任意一个部分都不能构成完整的可用软件。偶然内聚是所有内聚类型中内聚程度最高的类型。答案:错误解析:偶然内聚指一个模块内部的多个处理动作完全没有任何逻辑关联,是内聚程度最低、模块独立性最差的内聚类型,功能内聚才是内聚程度最高的类型。等价类划分测试方法的核心思路是把所有可能的输入数据划分为若干个等价子集,从每个子集里选取少量代表性数据作为测试用例,减少不必要的重复测试。答案:正确解析:等价类划分是经典的黑盒测试用例设计方法,通过划分等价类可以大幅降低测试用例的冗余度,在覆盖绝大多数场景的前提下提升测试效率。螺旋模型将瀑布模型和增量模型的优势结合起来,每个迭代周期都加入了风险评估环节,特别适合大型高风险的软件研发项目。答案:正确解析:螺旋模型的每个周期都包含需求定义、风险评估、开发实现、用户评审四个环节,通过持续的风险排查规避大型项目的研发风险,非常适合高成本高风险的军用软件、大型工业软件项目。软件测试的目的是为了证明软件完全没有任何bug。答案:错误解析:软件测试的目的是尽可能多的发现软件中隐藏的缺陷,验证软件是否符合需求要求,不可能通过有限的测试用例证明软件完全不存在任何bug。高内聚低耦合是软件架构设计阶段公认的核心优化原则,可以大幅提升软件的可维护性和扩展性。答案:正确解析:高内聚指单个模块内部的元素关联度足够强,低耦合指不同模块之间的依赖关联尽可能少,这种设计可以让后续修改、扩展模块的时候尽可能少影响其他模块,是软件设计的核心优化方向。UML类图中,继承关系用带空心三角的实线箭头表示,指向父类。答案:正确解析:UML类图的标准语法里,继承也就是泛化关系的表示符号就是带空心三角的实线箭头,箭头指向被继承的父类。软件维护阶段的成本通常只占软件全生命周期总成本的不到10%,开发阶段的成本才是占比最高的部分。答案:错误解析:统计数据显示,软件全生命周期中维护阶段的成本通常占总成本的七成以上,远高于前期开发阶段的成本占比。敏捷开发完全不需要写任何文档,所有需求都靠口头沟通传递。答案:错误解析:敏捷开发并不是完全拒绝所有文档,而是主张减少不必要的冗余文档,保留对项目有实际价值的核心文档,完全靠口头传递需求会出现大量的信息偏差,反而会拖慢项目进度。软件项目的可行性研究阶段需要从技术可行性、经济可行性、操作可行性三个核心维度评估项目是否值得启动。答案:正确解析:软件工程标准流程中,正式立项前的可行性研究阶段就需要从这三个核心维度全面评估项目的落地可能性,避免投入不必要的资源去推进完全无法落地的项目。四、简答题(共5题,每题6分,共30分)简述软件工程的七条核心基本原理答案:第一,用分阶段的生命周期计划严格管理整个项目进度,把整个开发过程拆分为多个可管控的阶段,每个阶段明确进度目标;第二,坚持进行阶段评审,每个阶段完成后都组织相关角色评审交付物质量,避免问题流到后续阶段放大修复成本;第三,实行严格的产品控制,对需求的变更走正式的评审审批流程,避免随意修改需求打乱项目节奏;第四,采用现代程序设计技术,使用经过业界验证的成熟开发方法和技术栈,提升开发效率和代码质量;第五,结果可以被清晰的审查,所有阶段的产出物都是可量化、可验证的,避免模糊不清的交付要求;第六,开发团队的人员数量要合理,避免过多的人员投入带来不必要的沟通成本,也避免人员不足拖慢进度;第七,承认不断改进软件工程实践的必要性,持续总结项目经验优化开发流程,适配不同类型的项目特点。解析:这七条原理是软件工程学科经过几十年的实践总结出来的核心准则,几乎适用于所有类型的软件研发项目,能够从管理和技术两个维度降低软件项目的失败概率。简述需求分析阶段需要完成的核心任务答案:第一,需求获取,通过访谈用户、调研业务流程等方式全面收集所有相关的业务诉求,不遗漏用户的核心隐性需求;第二,需求建模,使用数据流图、用例图等可视化工具对收集到的需求进行梳理建模,把模糊的业务诉求转化为清晰的结构化描述;第三,需求规格说明编写,把梳理完成的所有需求整理成标准化的软件需求规格说明书文档,明确每条需求的验收标准;第四,需求评审,组织需求方、开发方、测试方的核心人员共同评审需求文档,确认各方对需求的理解完全一致,达成正式的需求约定;第五,需求验证,通过做简易的原型给用户演示的方式,确认最终产出的需求内容完全符合用户的真实预期,避免出现理解偏差。解析:需求分析是软件全生命周期中最重要的阶段之一,需求阶段的错误如果流到后续开发阶段,修复的成本会是需求阶段的数十倍甚至上百倍,所以完整完成这些核心任务可以从源头规避大量项目风险。简述白盒测试和黑盒测试的核心区别答案:第一,测试的关注维度不同,白盒测试关注程序内部的代码实现逻辑,需要覆盖代码内部的所有逻辑分支路径,黑盒测试完全不关注代码内部结构,只从用户视角验证软件的输入输出是否符合功能需求;第二,适用的测试阶段不同,白盒测试通常由开发人员在单元测试阶段使用,用来验证单个函数、单个模块的内部逻辑正确性,黑盒测试通常由测试人员在集成测试、系统测试阶段使用,用来验证整个系统的功能是否符合用户要求;第三,用例设计的依据不同,白盒测试的用例设计依据是代码的逻辑结构、分支覆盖要求,黑盒测试的用例设计依据是软件需求规格说明书里的功能要求;第四,覆盖的侧重点不同,白盒测试侧重覆盖代码内部的隐藏逻辑漏洞,黑盒测试侧重覆盖用户实际使用过程中的所有业务场景。解析:白盒测试和黑盒测试是软件测试的两大核心分类,二者不存在互相替代的关系,在实际项目中通常结合使用,才能尽可能全面的覆盖所有测试场景,保障软件质量。简述耦合和内聚的核心概念,以及软件设计阶段的优化方向答案:第一,耦合的核心概念是用来衡量不同软件模块之间互相依赖关联的紧密程度,耦合度越高说明不同模块之间的关联越强,一个模块修改的时候对其他模块的影响范围就越大;第二,内聚的核心概念是用来衡量单个软件模块内部所有处理元素之间关联的紧密程度,内聚度越高说明这个模块的所有功能都是围绕同一个明确的核心目标服务的,模块的职责就越单一;第三,软件设计阶段的优化方向就是尽可能降低模块之间的耦合度,同时尽可能提升每个模块自身的内聚度,也就是业界常说的高内聚低耦合设计原则;第四,通过这个原则设计出来的软件系统,后续的修改、扩展、维护的成本都会大幅降低,模块的复用性也会得到明显提升。解析:耦合和内聚是结构化设计方法中的两个核心评价指标,几乎所有的软件架构设计优化最终都是围绕着这两个指标的优化来展开的,是软件设计阶段必须遵守的核心准则。简述软件项目风险管理的基本流程答案:第一,风险识别,提前梳理项目全流程中所有可能出现的各类风险,包括技术风险、人员风险、需求风险、进度风险等,把所有可能的风险点逐一列出来登记造册;第二,风险评估,对每一个识别出来的风险点,从发生的概率和一旦发生会造成的损失严重程度两个维度进行评估,划分出不同的风险等级,优先处理高等级的重大风险;第三,风险应对,针对每一个高优先级的风险点制定对应的应对预案,根据风险的特点选择规避、转移、减轻等不同的应对策略,提前准备好解决方案;第四,风险监控,在项目推进的全流程中持续跟踪所有风险点的状态,及时发现新出现的风险点,根据项目的实际进展动态调整应对预案,避免风险发生后没有对应的处理方案,导致项目出现严重的进度延误。解析:完善的风险管理流程可以提前规避绝大多数可能导致项目失败的隐患,把很多潜在风险扼杀在萌芽状态,大幅提升软件项目的成功率。五、论述题(共3题,每题10分,共30分)结合实际项目案例,论述瀑布开发模型和敏捷开发模型的核心差异,以及两类模型各自的适用场景答案:首先是核心论点:瀑布模型和敏捷开发模型是两种开发思路完全不同的过程模型,二者没有绝对的优劣之分,分别适配不同特点的项目场景,选择合适的模型才能最大程度保障项目成功。然后是论据部分,第一点是核心流程逻辑差异,瀑布模型是线性的顺序推进流程,严格按照需求分析、设计、实现、测试、上线的顺序逐个推进,前一个阶段完全结束之后才会进入下一个阶段,每个阶段有明确的完整交付物,比如某传统银行的核心交易系统改造项目,前期需求和监管要求都完全确定,团队使用瀑布模型,花三个月完成需求调研,之后四个月完成系统设计,再之后六个月完成代码开发,最后三个月完成全量测试和上线,整个过程几乎没有出现需求变更,最终项目顺利交付。而敏捷开发是迭代式的推进思路,把整个项目拆分成多个1到2周的短周期迭代,每个迭代都交付一个可运行的软件版本,快速响应用户的需求反馈,比如某创业团队开发面向C端的电商小程序,采用两周一个迭代的敏捷模式,每周和产品运营团队对齐需求,快速上线新功能,根据用户的反馈快速调整优化,在半年时间里快速迭代了二十多个版本,最终产品收获了大量用户。第二点是对需求变更的态度差异,瀑布模型本质上是排斥需求变更的,所有的需求变更都需要走非常严格的审批流程,频繁的需求变更会直接打乱瀑布模型的推进节奏,导致项目延期超支,而敏捷开发的核心思想就是拥抱合理的需求变更,哪怕是在开发后期提出的有价值的需求调整,也可以放到下一个迭代里落地实现。第三点是文档要求差异,瀑布模型要求每个阶段都产出完整详尽的标准化文档,作为后续阶段工作的唯一依据,而敏捷开发主张轻量化文档,只保留核心的必要文档,把更多的精力投入到可运行的软件产出上。最后是结论部分,瀑布模型更适合需求完全明确稳定、监管要求严格、前期不能随便调整的大型工业软件、银行核心系统、航空航天控制软件这类项目,而敏捷开发更适合需求前期不明确、需要快速试错快速迭代的互联网产品、创业类项目,团队在实际开发中需要结合项目的实际特点选择对应的开发模型,也可以把两种模型的优势结合起来,形成适配自身项目的混合开发流程,最大化提升项目的成功率。结合实际项目案例,论述软件测试在软件全生命周期中的核心价值答案:首先核心论点:软件测试不是软件开发完成之后的“收尾环节”,而是贯穿软件全生命周期的核心质量保障环节,能够从成本、体验、安全多个维度保障软件项目的最终交付质量。然后是论据部分,第一点是软件测试可以大幅降低全生命周期的缺陷修复成本,软件行业的统计数据显示,一个在需求阶段就被发现的缺陷,修复的成本可能只需要几十块,同样的缺陷如果流到上线之后才被用户发现,修复的成本会提升数百倍甚至数千倍。比如某高校的校园选课系统开发项目,在前期需求评审阶段,测试团队就发现了需求文档里的逻辑漏洞:旧规则里所有学生的选课提交时间完全统一,几万人同时提交请求会直接压垮服务器,团队在需求阶段就调整了规则,给不同年级的学生设置了错峰的选课时间窗口,几乎没有付出任何额外成本就规避了问题,如果这个漏洞没有被发现,等到上线选课的时候系统直接崩溃,就会严重影响全校的选课进度,后续修复要付出极高的成本。第二点是软件测试可以提前规避上线之后的业务风险和安全风险,对于金融、医疗这类和用户财产安全、生命安全直接相关的软件,一个小小的测试遗漏就可能造成极其严重的后果。比如某医院的挂号系统,测试团队在性能测试环节发现了极端情况下挂号接口返回状态码异常,会导致同一个号源被多个患者同时抢到,团队及时修复了这个逻辑漏洞,避免了后续上线之后出现号源冲突引发的医患纠纷。第三点是软件测试可以保障最终交付的软件完全符合用户的实际使用需求,避免开发出来的功能和用户的预期完全不符,出现“为了做功能而做功能”的无效投入。很多项目里开发团队埋头写代码几个月,最终交付的功能和用户的实际业务流程完全不匹配,所有代码全部要推倒重写,就是因为测试环节没有提前介入对齐需求要求。最后是结论部分,现代软件工程的最佳实践早就把测试环节从开发完成之后移到了全生命周期的各个阶段,从需求评审阶段测试人员就提前介入,全程参与需求梳理、设计评审、用例设计、代码评审、上线回归的全流程,把缺陷尽可能早的发现并修复,既可以大幅降低项目的总体成本,也能保障最终上线的软件产品有足够好的质量,为用户提供稳定可靠的服务。结合实际项目案例,论述软件架构设计中“高内聚低耦合”原则的落地方法和实际收益答案:首先核心论点:高内聚低耦合不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论