2010-2022 同等学力申硕国考:软件工程简答题真题汇总

2010年简答题

  1. 给出数据流图的定义,并举例说明数据流图的四个基本构成成份。
    数据流图(Data Flow Diagram, DFD)是一种用于描述系统中数据流动和处理过程的图形工具。它通过直观的方式展示了系统的输入数据如何经过一系列处理变换为输出数据,帮助理解系统的工作流程和信息交换方式。
    数据流图的四个基本构成成分包括:
    外部实体(External Entities):指系统之外与系统交互的人或组织,它们是数据的来源或目的地。
    处理过程(Processes):表示对数据进行操作以改变其内容或形式的动作或活动。
    数据存储(Data Stores):用于保存数据的地方,可以是数据库、文件等。
    数据流(Data Flows):表示数据在系统内外部实体、处理过程和数据存储之间的移动路径。
    例子:考虑一个简单的图书馆管理系统:
    外部实体:读者、管理员
    处理过程:借书、还书、查询书籍状态
    数据存储:书籍数据库、借阅记录数据库
    数据流:读者提交的借书请求、从书籍数据库获取书籍信息的数据流等
  2. 给出对象的聚合关系的定义,并举例说明松散聚合和紧密聚合。
    聚合关系(Aggregation)是一种特殊的关联关系,表示整体与部分之间的关系,但部分可以在不依赖于整体的情况下独立存在。它通常用来表示一种"拥有"关系,但不同于组合关系,聚合中的部分对象可以属于多个整体对象,或者即使没有整体对象也可以单独存在。
    松散聚合:指的是部分对象和整体对象之间关系较弱,部分对象可以在脱离整体对象后仍然保持其功能性和独立性。
    例子:汽车和轮胎的关系。轮胎可以从一辆汽车上拆卸下来并安装到另一辆汽车上,轮胎本身仍然是有用的。
    紧密聚合:虽然也是聚合的一种形式,但这里的部分对象更依赖于整体对象的存在,尽管它们依然能够独立存在,但在实际应用中往往作为整体的一部分来使用。
    例子:公司与部门的关系。虽然理论上部门可以在没有公司的环境下存在,但在现实中,部门通常是作为一个更大组织的一部分运作,且其很多职能和服务都是针对该组织提供的。这种情况下,部门与公司的关系可以视为紧密聚合。然而,要注意的是,紧密聚合并不是面向对象编程中的正式术语,这里主要是为了对比说明聚合关系的不同程度。

2011年简答题

  1. 给出事务型数据流图的定义,并举例说明。
    事务型数据流图(Transaction Data Flow Diagram)是一种特定类型的数据流图,用于表示系统如何处理输入的事务或事件。在这种类型的DFD中,外部实体生成的事务被系统接收并处理,通常经过一个事务中心来决定如何处理该事务,然后将事务分发到相应的处理逻辑进行进一步处理。事务型数据流图特别适用于描述那些需要根据输入的不同执行不同流程的应用场景。
    例子:考虑一个在线书店的订单处理系统。顾客提交订单(事务),系统接收到订单后,首先由订单处理中心确定订单类型(如新订单、查询订单状态或取消订单)。根据订单类型,系统会采取不同的处理路径:如果是新订单,则检查库存并更新库存记录;如果是查询订单状态,则从数据库检索订单信息;如果是取消订单,则更新订单状态并将商品返回库存。
  2. 给出对象的依赖关系的定义,并举例说明。
    在面向对象编程中,对象的依赖关系指的是一个对象的状态或行为依赖于另一个对象的存在或状态。这种依赖可以是直接的也可以是间接的。当一个对象A使用了另一个对象B的数据或者方法时,我们说对象A依赖于对象B。
    例子:假设有一个EmailSender类和一个User类。EmailSender负责发送电子邮件,而User包含用户的邮箱地址等个人信息。如果EmailSender需要使用User的信息来构造邮件内容并发送,则可以说EmailSender依赖于User。例如,在EmailSender的一个方法中调用了User.getEmailAddress()来获取收件人的邮箱地址,这就是一种依赖关系的表现。

2012年简答题

给出对象的关联关系定义,并举例说明。

对象的关联关系定义: 对象的关联关系是指不同对象之间的结构关系,它描述了一个对象如何知道另一个对象的存在,以及它们之间如何相互作用。关联关系通常通过对象之间的属性和方法来体现。

关联关系的例子:

学生类(Student)和课程类(Course)之间的关联:一个学生可以选修多门课程,而一门课程可以被多个学生选修。这种关系在UML类图中通常表示为学生和课程之间的关联线,可能带有角色名(如"选修")和多重性(如""表示多个)。

给出模块的高内聚、低耦合原则的具体含义。

模块的高内聚、低耦合原则的具体含义:

高内聚(High Cohesion):模块的内聚性是指模块内部各个元素之间相关联的程度。高内聚意味着一个模块内的所有元素都紧密地结合在一起,共同完成一个单一的任务或功能。高内聚的模块通常更容易理解和维护,因为它们有清晰且单一的责任。

低耦合(Low Coupling):模块的耦合性是指不同模块之间相互依赖的程度。低耦合意味着模块之间的依赖关系尽可能少,每个模块尽可能独立。低耦合的模块更容易重用,因为它们与其他模块的交互较少,修改一个模块通常不会影响到其他模块。

2013年问答题

  1. 验证和确认是软件质量审查的两个重要手段,简述它们的区别和联系。
    验证(Verification):指的是在开发周期中评估一个产品或工作产品是否满足特定的要求。它关注的是"我们是否正确地构建了产品?"即检查过程中的各个阶段的产品是否符合规范、标准和需求规格说明。验证活动通常包括评审、走查、检查和模拟等。
    确认(Validation):则是评估软件在实际使用环境下的有效性,确保软件满足用户的需求和期望。它回答的问题是"我们是否构建了正确的产品?"即最终产品是否能够满足用户的实际需求。确认活动主要通过测试来实现,如功能测试、系统测试、验收测试等。
    两者之间的联系在于都是为了保证软件质量的重要措施,并且相互补充。验证侧重于过程中的质量控制,而确认则更关注于最终产品的适用性。
  2. 说明什么是 UML 状态图?它的作用是什么?
    UML状态图(State Diagram)是一种描述对象在其生命周期内所经历的各种状态以及状态之间转换的图形化表示方法。它是统一建模语言(UML)的一部分,用于可视化展示系统的动态行为。
    作用:
    展示对象在其生命周期内的各种可能状态。
    描述导致状态变化的事件或条件。
    明确不同状态间的转换关系,帮助理解复杂的行为逻辑。
    支持设计和分析系统的行为方面,特别是对于那些具有显著状态变化的对象或组件。

2014年问答题

  1. 什么是面向对象系统中的消息?一个消息应包括哪几部分?

在面向对象系统中,消息是指对象之间进行通信的一种方式。当一个对象希望另一个对象执行某个操作或服务时,它会发送一条消息给目标对象。这条消息可以触发目标对象的方法调用。

一个消息通常包括以下几部分:

接收者:即接收消息的对象。

方法名:指明接收者应该执行的具体方法。

参数列表:传递给方法的值或变量,这些参数可能会影响方法的行为。

返回值(可选):方法执行完毕后返回给发送者的值。

  1. 什么是基本路径覆盖测试?它应满足哪一种测试覆盖准则?

基本路径覆盖测试是一种白盒测试技术,旨在通过覆盖程序的基本路径来确保软件的质量。这种测试方法首先计算程序控制流图的环形复杂度以确定线性独立路径的数量,然后设计足够数量的测试案例,使得每个基本路径至少被执行一次。

它主要满足的是基本路径覆盖准则,这意味着测试案例的设计应当保证程序中的每一条独立路径至少被执行一次。这种方法有助于检测代码中的逻辑错误和控制流错误。

  1. 什么是CMMI?在CMMI连续式表示中把能力等级划分为哪几个等级?

CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一个过程改进框架,用于指导组织如何改进其开发、维护和购买产品和服务的过程。CMMI可以帮助组织提高性能、关键能力和项目成功的可能性。

在CMMI的连续式表示中,能力等级被划分为以下几个等级:

0级:不完整级 组织的过程可能是不完整的,缺乏某些重要组件。

1级:已执行级 过程已经完成,并且实现了预期的目标。

2级:已管理级 过程被计划和执行,绩效得到监控和审查。

3级:已定义级 过程被标准化并记录下来,在整个组织内统一使用。

4级:定量管理级 使用量化数据对过程和产品质量进行详细控制。

5级:优化级 持续改进过程,利用统计和其他技术识别缺陷和效率低下之处,并采取措施加以改进。这些等级代表了组织过程管理和改进的不同成熟度水平。

2017年问答题

  1. 如果待开发软件是大系统的一部分,为什么在该软件的需求规格说明中需要包括对大系统的描述?
    当待开发的软件是更大系统的一个组成部分时,在需求规格说明中包含对大系统的描述非常重要。这样做有几个关键原因:
    上下文理解:了解软件在整个大系统中的角色和功能有助于开发团队更好地理解软件的目的和工作环境。
    接口定义:清晰地描述大系统可以帮助识别和定义与其他组件或系统的接口,确保软件能够正确地与其它部分交互。
    限制与依赖性:识别并记录任何技术、操作或性能上的限制以及软件对其它系统组件的依赖性。
    一致性保证:确保新软件的设计与实现符合整个大系统的架构原则和设计规范,维持整体的一致性和兼容性。
  2. 软件质量保证的活动之一是进行技术评审。什么是技术评审,它的主要目标是什么?
    技术评审是一种正式的评估方法,通过同行或其他专家对某个项目阶段的产品(如文档、代码等)进行检查,以发现缺陷和问题,并提出改进建议。其主要目标包括:
    提高产品质量:通过早期发现和纠正问题,减少后期修复的成本和时间。
    验证是否满足要求:确认产品是否按照预定的要求和标准进行开发。
    知识分享:促进团队成员之间的知识交流,提升整体技术水平。
    风险控制:提前识别潜在的风险因素,制定相应的应对策略。
  3. 什么是程序调试? 程序调试活动是由哪两部分活动组成?
    程序调试是指开发者在发现程序运行结果与预期不符时,采取一系列步骤找出错误原因并加以修正的过程。程序调试活动通常由以下两部分组成:
    错误定位:通过各种手段(如日志分析、断点调试等)确定程序中导致错误的具体位置。
    错误修正:一旦确定了错误的原因和位置,接下来就是修改代码以解决问题,然后重新测试以验证修改是否有效解决了问题。

2018年简答题:

  1. 在承包软件项目之前为什么要进行可行性研究?软件项目的可行性研究主要研究哪几个方面的可行性?

    为什么需要进行可行性研究:

    在承包软件项目之前进行可行性研究是为了评估项目是否值得投资,能否在规定的时间和预算内完成,并且满足用户需求。这有助于避免资源浪费,降低项目失败的风险。

    主要研究的几个方面包括:

    技术可行性:评估现有技术是否足以支持项目目标的实现。

    经济可行性:分析项目的成本效益,确定投资回报率是否合理。

    操作可行性:考虑组织内部环境、文化以及人员因素,判断项目是否能在该环境中成功实施。

    法律可行性:确保项目符合相关法律法规的要求。

    时间可行性:评估项目能否在预定时间内完成。

  2. 事务驱动风格的体系结构在软件体系中属于控制模式,它是通过外部生成的事件触发的系统。典型的事务驱动风格的体系结构有哪种类型?简述他们的控制机制。

    事务驱动风格的体系结构是一种根据外部事件触发执行特定逻辑的设计方式。典型的事务驱动风格的体系结构包括:

    事件驱动架构(EDA):在这种架构中,系统组件之间通过事件进行通信。一个组件发出事件,其他感兴趣的组件监听并响应这些事件。这种架构非常适合处理异步数据流和松耦合的服务交互。

    控制机制:当一个事件发生时,系统中的监听者会接收到通知,并根据事件内容采取相应的行动。这种方式允许系统具有高度的灵活性和可扩展性。

  3. 软件生存周期中可能执行的活动可以分为5个基本过程,这5个基本过程是什么?每一个基本过程与软件项目的哪一方相关?

    五个基本过程分别是:

    获取过程:涉及获取或采购软件产品和服务的活动。与客户或采购方紧密相关。

    供应过程:涵盖供应商为客户提供软件解决方案所需的所有活动。与供应商或服务提供商有关。

    开发过程:包含从概念到成品的软件创建活动。主要与开发团队关联。

    运作过程:关注软件部署后的运行维护工作,确保其稳定可靠地运行。通常由运维团队负责。

    维护过程:包括对软件产品的更新、改进和修复等活动,以延长其生命周期。同样主要由运维和支持团队承担。

    每个过程都涉及到不同的利益相关者,并且对于确保软件项目的成功至关重要。

2019年简答题:

  1. 软件需求是什么?共分为几个层次?
    软件需求是指用户对目标软件系统在功能、性能、界面、可靠性等方面的期望和要求。它是软件开发过程中的关键输入,定义了软件应该做什么以及如何做才能满足用户的业务需求。
    软件需求通常分为三个层次:
    业务需求:高层次的目标,描述为什么要构建系统,它试图解决的问题或达成的商业目标。
    用户需求:具体说明用户使用系统要完成的任务,通常以用例或场景的形式表达。
    系统需求:进一步细化为功能需求和非功能需求。功能需求详细描述系统应提供的特定服务或功能;非功能需求则涉及系统的质量属性,如性能、可靠性、易用性等。
  2. 软件质量保证的是什么?它的四个活动是什么?
    质量保证是为项目生存周期内的软件过程和软件产品提供适当保障的过程,目的是使它们符合所规定的需求,并遭循已建立计划。包括过程实现,产品保证,过程保证,质量体系保证四个活动。
  3. 说明客户端/服务器,对等模式采用的三层结构是什么?
    客户端/服务器模型
    在传统的客户端/服务器模型中,通常涉及到的三层结构是指:
    • 表示层(Presentation Layer):这是最接近用户的层次,负责处理用户界面。例如,在Web应用程序中,这可能包括HTML、CSS和JavaScript代码。
    • 业务逻辑层(Business Logic Layer):这一层包含应用的核心功能和逻辑,负责处理数据请求和响应。它位于表示层与数据存储层之间,确保数据的有效性和完整性。
    • 数据存储层(Data Storage Layer):该层负责存储和管理数据,可以是数据库系统或文件系统等。它为上层提供数据支持,并且负责数据的安全性、完整性和持久性。

2020年问答题

三、简答题(共12分)

1. 什么是开源软件?试举一简单说明。

开源软件(Open Source Software)是指源代码公开,允许用户自由使用、修改和分发的软件。其核心特点是遵循开源许可证(如GPL、MIT等),用户可查看、学习甚至改进代码。

举例:

Linux操作系统是一个典型的开源软件,其内核代码公开,允许开发者自由修改和分发。

2. RUP的每一个迭代周期中设计6个核心工程工作流,3个核心支持工作流。试简述每个核心工程工作流的名称和主要目的。

核心工程工作流:

  1. 业务建模(Business Modeling):理解业务需求,定义系统在组织中的目标。
  2. 需求(Requirements):捕获和分析用户需求,形成用例和功能规约。
  3. 分析与设计(Analysis & Design):将需求转化为系统架构和详细设计方案。
  4. 实现(Implementation):编写代码、构建可执行系统,并完成单元测试。
  5. 测试(Test):验证系统是否符合需求,包括集成测试、系统测试等。
  6. 部署(Deployment):将系统交付用户,包括安装、培训和运维支持。
    核心支持工作流:
  7. 项目管理(Project Management):规划、监控和协调项目资源与进度。
  8. 配置与变更管理(Configuration & Change Management):管理版本控制和变更请求。
  9. 环境(Environment):提供开发工具和流程支持。

21年问答题:

1. 什么是WEB应用软件?请举例说明。

WEB应用软件(Web Application)是一种基于浏览器/服务器(B/S)架构的软件,用户通过浏览器访问,后端由Web服务器处理请求并返回动态内容。其特点包括跨平台性、无需安装客户端、实时更新等。

举例:

在线购物平台(如淘宝、京东):用户通过浏览器访问,后端处理商品展示、订单支付等逻辑。

社交媒体(如微博、Facebook):动态加载内容,支持用户交互(点赞、评论)。

2. RAD有哪三种建模?每个建模的主要活动是什么?

答:

RAD(快速应用开发,Rapid Application Development)包含以下三种核心建模:

  1. 业务建模(Business Modeling)
    主要活动:分析业务流程,识别关键功能和数据流,定义系统如何支持业务目标。
    示例:绘制业务流程图,确定用户角色和用例。
  2. 数据建模(Data Modeling)
    主要活动:设计数据库结构,定义实体、属性及关系(如ER图)。
    示例:创建数据库表结构,规范主键、外键约束。
  3. 过程建模(Process Modeling)
    主要活动:描述系统如何处理数据,定义操作流程(如数据输入、处理、输出)。
    示例:使用流程图或UML活动图描述用户注册、订单处理等逻辑。
    关系说明:
    业务建模确定"做什么",数据建模解决"数据如何存储",过程建模明确"如何实现功能"。

22年问答题:

1.以G.J.Myers的观点,简述软件测试的目的。

根据G.J.Myers的观点,软件测试的主要目的是:

发现错误:测试是为了发现程序中的缺陷或错误,而不是证明程序没有错误。

验证程序是否满足需求:测试确保程序的功能和性能符合用户的需求和规格说明。

评估软件质量:通过测试,可以评估软件的可靠性、稳定性、易用性等质量属性。

提高软件的可信度:通过系统化的测试,可以增强用户对软件的信任。

  1. 消息传递机制与传统程序设计模式中的过程调用有什么本质区别?

消息传递机制与过程调用的本质区别如下:

封装性:消息传递是面向对象方法中的核心交互方式,对象之间通过消息进行通信,而过程调用是函数或子程序之间的直接调用,缺乏封装性。

动态性:消息传递支持动态绑定,即在运行时确定接收消息的对象及其响应方式;而过程调用通常是静态绑定,在编译时就确定了调用的目标。

灵活性:消息传递允许对象根据自身的状态决定如何响应消息,而过程调用的行为是固定的,无法根据上下文变化。

耦合性:消息传递降低了模块之间的耦合性,因为发送消息的对象不需要知道接收消息对象的具体实现细节;而过程调用通常会导致较高的耦合性。

  1. 面向对象分析阶段所建立的对象模型、动态模型和功能模型之间的关系。

对象模型:描述系统的静态结构,包括类、对象及其属性和关系。它是整个模型的基础,为动态模型和功能模型提供结构框架。

动态模型:描述系统的控制逻辑和行为,包括对象的状态变化、事件及其响应。它依赖于对象模型中定义的对象和类,展示它们在不同场景下的动态行为。

功能模型:描述系统的功能需求,包括数据流、处理流程和操作。它与对象模型和动态模型相辅相成,功能模型中的操作通常由对象模型中的对象实现,而动态模型则展示了这些操作的执行顺序和条件。

三种模型相互关联,共同构成了面向对象分析的完整视图。对象模型提供了结构基础,动态模型描述了行为逻辑,功能模型明确了系统的功能需求。

📌 特别说明:本文整理了 2004-2023 年核心简答题和答案方便背诵,但计算机专业申硕备考时需要更加完整的资料,本人已悉数整理完毕!

👉 完整版资料包含:

① 计算机综合各科目完整学习视频;

② 各科目知识点总结,考点分布总结;

③ 历年真题及答案解析。

✨ 需要完整版资料的同学,可私信我关键词【国考计算机综合资料】,获取高清电子版详情~

相关推荐
会飞的土拨鼠呀17 分钟前
如何查询MySQL的CPU使用率突然变高
数据库·mysql
想用offer打牌25 分钟前
一站式了解数据库三大范式(库表设计基础)
数据库·后端·面试
甘露s26 分钟前
MySQL深入之索引、存储引擎和SQL优化
数据库·sql·mysql
偶遇急雨洗心尘1 小时前
记录一次服务器迁移时,数据库版本不一致导致sql函数报错和系统redirect重定向丢失域名问题
运维·服务器·数据库·sql
Arva .1 小时前
MySQL 的存储引擎
数据库·mysql
Logic1011 小时前
《Mysql数据库应用》 第2版 郭文明 实验5 存储过程与函数的构建与使用核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
小二·2 小时前
MyBatis基础入门《十六》企业级插件实战:基于 MyBatis Interceptor 实现 SQL 审计、慢查询监控与数据脱敏
数据库·sql·mybatis
bing.shao2 小时前
Golang WaitGroup 踩坑
开发语言·数据库·golang
专注VB编程开发20年2 小时前
C#内存加载dll和EXE是不是差不多,主要是EXE有入口点
数据库·windows·microsoft·c#
小二·2 小时前
MyBatis基础入门《十二》批量操作优化:高效插入/更新万级数据,告别慢 SQL!
数据库·sql·mybatis