软件工程概论(高起专)学习指南西交大考试题库及答案_第1页
软件工程概论(高起专)学习指南西交大考试题库及答案_第2页
软件工程概论(高起专)学习指南西交大考试题库及答案_第3页
软件工程概论(高起专)学习指南西交大考试题库及答案_第4页
软件工程概论(高起专)学习指南西交大考试题库及答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

软件工程概论(高起专)学习指南西交大考试题库及答案1.软件工程是研究如何以系统性的、规范化的、可度量的方法去开发、运行和维护软件的学科,其核心目的是提高软件的质量与开发效率,降低开发成本。下列哪一项不属于软件工程的基本要素?A.方法B.工具C.过程D.程序员答案:D解析:软件工程的三要素是方法、工具和过程。方法提供如何构建软件的技术;工具为方法提供自动化或半自动化的支持;过程则是将方法和工具结合起来,定义一系列活动的框架。程序员是开发活动的执行者,不属于基本要素范畴。2.在软件开发过程中,将用户需求转化为系统需求,并建立系统模型的过程属于哪个阶段?A.可行性研究B.需求分析C.软件设计D.编码实现答案:B解析:需求分析阶段的核心任务是深入理解用户需求,将其精确化、完整化,并形成系统化的需求规格说明,其中就包括建立分析模型(如数据流图、实体关系图等),为后续设计奠定基础。3.下列哪一项描述最符合“软件危机”的现象?A.软件开发技术飞速发展B.软件开发进度、成本和质量难以预测和控制C.软件需求量急剧下降D.计算机硬件性能过剩答案:B解析:软件危机是指在计算机软件开发、维护过程中所遇到的一系列严重问题,主要表现为软件质量低劣、开发进度难以预测、开发成本失控、软件难以维护等,与硬件发展无关。4.一个软件项目团队正在决定是采用瀑布模型还是增量模型。如果项目需求明确且稳定,且团队希望严格控制每个阶段,他们最可能选择:A.瀑布模型B.增量模型C.原型模型D.螺旋模型答案:A解析:瀑布模型适用于需求明确、稳定且变化少的项目,它强调阶段的划分、顺序性和严格的评审与文档控制。增量模型则更适用于需求可能逐步清晰或需要早期获得部分功能反馈的项目。5.在结构化分析方法中,用于描述系统数据流及其加工处理的图形化工具是:A.实体关系图B.状态转换图C.数据流图D.程序流程图答案:C解析:数据流图是结构化分析的核心工具,它从数据传递和加工的角度,以图形方式刻画系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。6.模块独立性是软件设计的关键质量指标。如果一个模块只完成一个独立的功能,且与其他模块的接口简单,则该模块具有:A.高内聚、高耦合B.低内聚、低耦合C.高内聚、低耦合D.低内聚、高耦合答案:C解析:模块独立性由内聚和耦合两个标准衡量。高内聚指模块内部各成分关联紧密,完成单一功能;低耦合指模块间接口简单、关联程度低。高内聚、低耦合是优秀设计的追求目标。7.软件测试的目的是:A.证明软件没有错误B.发现软件中尽可能多的错误C.评估软件程序员的能力D.为了完成项目计划中的任务答案:B解析:测试的根本目的是为了发现软件中存在的缺陷,而非证明其正确性。根据G.Myers的观点,成功的测试是发现了尚未发现错误的测试。8.黑盒测试法主要关注:A.程序内部逻辑结构B.程序代码的复杂性C.软件的功能需求规格说明D.程序中的控制流程答案:C解析:黑盒测试又称功能测试,它将软件视为一个不透明的“黑盒”,只依据需求规格说明书检查程序功能是否符合要求,而不考虑内部逻辑结构。9.在面向对象方法中,将数据和对数据的操作封装在一起,形成一个整体,这体现了:A.继承性B.多态性C.抽象性D.封装性答案:D解析:封装是面向对象的基本原则之一,它将对象的属性和操作(方法)结合成一个独立的系统单位,并尽可能隐藏对象的内部细节,只保留有限的对外接口。10.软件维护活动中,为了适应运行环境的变化(如操作系统升级、硬件更新)而进行的修改属于:A.改正性维护B.适应性维护C.完善性维护D.预防性维护答案:B解析:适应性维护是指为使软件适应外部环境(新的硬件、软件平台、数据环境等)的变化而进行的修改活动。11.软件配置管理的主要任务不包括:A.版本控制B.变更控制C.需求分析D.配置审计答案:C解析:软件配置管理旨在标识、控制、审计和报告软件配置项(如代码、文档)的变更。其核心活动包括版本控制、变更控制、配置状态报告和配置审计。需求分析是软件工程的前期独立活动。12.在项目进度管理中,用于表示任务依赖关系和关键路径的常用图表是:A.鱼骨图B.甘特图C.帕累托图D.PERT图/网络图答案:D解析:PERT(计划评审技术)图或网络图能够清晰展示任务之间的前后依赖关系,并通过计算找出决定项目最早完成时间的关键路径。甘特图则更直观地展示任务的时间安排。13.一个函数有20个条件判断语句,使用基本路径测试法计算其环路复杂度V(G)。已知其控制流图有15条边和10个节点。A.5B.6C.7D.8答案:C解析:环路复杂度V(1.V(G)2.V(3.数区域数。根据计算结果为7。14.估算一个软件项目的规模,已知其功能点计数中,外部输入数为12,外部输出数为8,外部查询数为5,内部逻辑文件数为4,外部接口文件数为2。假设复杂度调整因子为1.0,未调整功能点数为多少?答案:首先计算未调整功能点数。通常采用如下权重系数(以简化版为例):外部输入(EI):权重4外部输出(EO):权重5外部查询(EQ):权重4内部逻辑文件(ILF):权重10外部接口文件(EIF):权重7则UFP=12=48=162因此,未调整功能点数为162。15.什么是软件过程模型?简述敏捷开发模型(如Scrum)的核心思想及其两种主要实践。答案:软件过程模型是软件开发全部过程、活动和任务的结构框架,它清晰、直观地表达了软件开发全过程,规定了开发活动的阶段划分、顺序及交付物。敏捷开发模型的核心思想是:以人为本、快速迭代、拥抱变化、持续交付可工作的软件。它强调个体和互动高于流程和工具,可工作的软件高于详尽的文档,客户合作高于合同谈判,响应变化高于遵循计划。两种主要实践包括:1.迭代开发:将长周期开发分解为一系列短周期(通常为1-4周,称为一个冲刺或迭代),每个迭代结束时都产生一个可运行、可演示的软件增量。2.每日站会:团队每日进行短暂的同步会议,每个成员说明昨天完成了什么、今天计划做什么、遇到了什么障碍,以促进沟通和快速解决问题。16.请详细比较白盒测试与黑盒测试的区别,并各举两种常用的测试用例设计方法。答案:白盒测试与黑盒测试的主要区别如下:对比维度白盒测试黑盒测试测试依据程序的内部逻辑结构软件的需求规格说明测试对象主要是程序代码主要是软件功能测试人员通常为开发人员或专业测试工程师通常为测试工程师或最终用户优点能对程序内部特定部位进行覆盖测试从用户角度出发,容易发现需求不符的问题缺点无法检测遗漏的功能或需求无法测试程序内部特定路径阶段主要用于单元测试、集成测试主要用于系统测试、验收测试常用测试用例设计方法:白盒测试:逻辑覆盖法(如语句覆盖、判定覆盖、条件覆盖、路径覆盖等)、基本路径测试法。黑盒测试:等价类划分法、边界值分析法、因果图法、场景法。17.论述软件生命周期中“需求分析”阶段的主要任务和成果,并说明为什么需求分析至关重要,若需求分析失误可能带来哪些后果。答案:需求分析阶段的主要任务包括:1)问题识别:与用户充分沟通,发现用户的真实需求和目标。2)分析与综合:对收集的需求进行整理、分析,消除矛盾,建立系统模型(如数据模型、功能模型、行为模型)。3)编制需求规格说明书:以规范的文档形式详细描述系统必须做什么,包括功能需求、非功能需求(性能、安全等)和约束条件。4)需求评审:组织专家和用户对需求文档进行正式审查,确保其正确性、完整性和一致性。该阶段的主要成果是《软件需求规格说明书》,它是后续设计、编码、测试及验收的基准。需求分析至关重要,因为它是连接用户和开发者的桥梁,是后续所有开发活动的基础。需求分析的失误是导致软件项目失败的最主要原因之一。可能带来的后果包括:1)开发出的产品不是用户真正需要的,导致项目彻底失败。2)频繁的需求变更,导致开发成本激增、进度严重延误。3)软件设计结构不合理,可维护性差。4)测试缺乏依据,无法有效验证软件质量。5)团队士气受挫,客户关系恶化。18.一个简单的学生成绩管理系统,需要记录学生的学号、姓名、课程名和成绩。请用面向对象的思想设计至少两个类(如Student和Course),并说明它们之间可能的关系(如关联),用伪代码或文字描述关键属性和方法。答案:类设计示例:1.Student类:属性:studentID(字符串,学号),studentName(字符串,姓名),courseList(列表,存放所选课程及成绩的对象引用或信息)。方法:`enrollCourse(course,grade)`:学生选修一门课程并记录成绩。`getGPA()`:计算并返回该学生的平均绩点。`displayInfo()`:显示学生的基本信息。2.Course类:属性:courseID(字符串,课程编号),courseName(字符串,课程名称),credit(浮点数,学分),studentRoster(列表,存放选修该课程的学生对象引用或信息)。方法:`addStudent(student,grade)`:向课程中添加一名学生及其成绩。`getAverageGrade()`:计算并返回该课程所有学生的平均成绩。`displayCourseInfo()`:显示课程的基本信息。关系说明:Student类和Course类之间存在“多对多”的关联关系。一个学生可以选修多门课程,一门课程也可以被多个学生选修。这种关系通常通过引入一个中间类(如“选课记录”Enrollment)来具体化,该中间类包含成绩、选课时间等属性,分别与Student和Course建立关联。简化设计中,也可以在Student的courseList属性中存储课程和成绩信息,或在Course的studentRoster中存储学生和成绩信息,但这会带来一定的数据冗余或访问复杂性。19.某软件公司承接一个为期12个月的项目,采用COCOMOII模型进行估算。初步估算其规模为50KSLOC(千行源代码)。该项目属于半独立型(Nominal),其成本驱动因子乘积为1.2。请使用指数模型计算该项目所需的工作量(人月)。已知指数模型公式为:PM答案:根据COCOMOII指数模型公式:P将已知数值代入:A=3.0Size=50KSLOCB=1.12EAF=1.2首先计算(S计算=。l1.12≈则P因此,该项目估算所需工作量约为288人月。20.阅读以下关于代码质量的描述,指出其中违反了哪些软件设计原则,并说明应如何改进。“在一个订单处理模块中,有一个`OrderProcessor`类,其`processOrder`方法长达500行。该方法内部直接连接数据库执行SQL查询、计算订单折扣(包含了十几种不同的折扣规则逻辑)、生成发票、更新库存,并且方法中大量使用具体的条件判断语句(if-else)来处理不同的支付方式(信用卡、支付宝、微信等)。当需要增加一种新的支付方式时,必须直接修改这个庞大的`processOrder`方法。”答案:该段代码主要违反了以下软件设计原则:1.单一职责原则:`OrderProcessor`类的`processOrder`方法承担了过多的职责,包括数据访问、业务规则计算(折扣)、发票生成、库存更新等。这导致该类因多个引起变化的原因而极易被修改,且难以理解和维护。2.开闭原则:系统对支付方式扩展是封闭的。增加新支付方式需要修改`processOrder`方法内部的源代码,而不是通过扩展(如继承、多态)来实现。这增加了修改的风险和测试的负担。3.高内聚低耦合原则:方法内代码涉及多个完全不相关的功能领域,内聚性极低。同时,它将多种不同的业务逻辑紧密耦合在一起。改进建议:分解类和方法:将`OrderProcessor`的职责分解。可以创建独立的类,如:`OrderRepository`:专门负责订单数据的持久化操作(数据库访问)。`DiscountCalculator`:专门负责计算折扣,将不同的折扣规则封装为独立的策略类,使用策略模式使其易于扩展。`InvoiceGenerator`:负责生成发票。`InventoryService`:负责更新库存。使用面向接口编程和多态:定义一个`PaymentMethod`接口,包含`pay(amount

温馨提示

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

评论

0/150

提交评论