软考中级习题与解答——第四章_软件工程(1)
例题1
1、知识点总结
本题考查软件质量特性相关概念,涉及可移植性、可靠性、可理解性等软件质量属性的定义:
- 可移植性:软件从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度。
- 可靠性:在规定条件下和规定时间内,软件完成规定功能的能力(通常用概率等指标衡量)。
- 可理解性:软件能够被软件维护人员或其他开发者阅读并理解的容易程度。
2、选项分析
- 选项 A:描述符合 “可移植性” 的定义,即软件在不同计算机系统间转移的容易程度,该选项正确。
- 选项 B:“软件在需要它投入使用时能实现其指定功能的概率” 描述的是可用性(强调 “需要使用时能工作的概率”),而非可靠性(可靠性更强调 “在规定条件和时间内持续完成功能”),该选项错误。
- 选项 C:描述符合 “可理解性” 的定义,即便于维护人员阅读和理解的程度,该选项正确。
- 选项 D:描述符合 “可靠性” 的定义,即在规定条件和期间内实现指定功能的概率,该选项正确。
3、最终答案:B
例题2
1、知识点总结
本题考查软件工程需求分析阶段的任务范畴。需求分析阶段的核心是明确用户对软件系统在功能、性能、数据、可靠性等方面的需求,即 “做什么”,而不涉及 “怎么做”(如具体采用什么开发语言、技术架构等实现层面的决策)。
2、选项分析
- 选项 A:确定软件系统的可靠性要求(如系统需达到的故障容忍度、可用时长等),属于需求分析阶段对软件质量属性的需求定义,属于需求分析阶段任务。
- 选项 B:确定软件系统的性能需求(如响应时间、并发处理能力等),是需求分析阶段需明确的非功能需求,属于需求分析阶段任务。
- 选项 C:确定软件系统将采用什么开发语言开发,这属于设计阶段(尤其是详细设计或实现规划阶段)的任务,关注 “如何实现”,而非需求分析阶段的 “做什么”,不属于需求分析阶段任务。
- 选项 D:确定软件系统的数据要求(如数据结构、数据存储、数据流转等),是需求分析阶段需明确的重要内容(属于功能需求或数据需求范畴),属于需求分析阶段任务。
3、最终答案:C
例题3
1、知识点总结
本题考查软件生命周期各阶段的时长特点。软件生命周期包括需求分析、设计、实施(编码、测试等)、维护等阶段,其中软件维护阶段是时间最长的阶段,因为软件交付后,需要长期对其进行纠错、适应性调整、完善性增强等维护工作,贯穿软件从投入使用到退役的整个过程。
2、选项分析
- 选项 A:需求分析阶段是确定软件要做什么的阶段,时间相对较短,主要聚焦于明确用户需求,不是时间最长的阶段。
- 选项 B:软件维护阶段,软件在投入使用后,会因用户新需求、环境变化、发现错误等原因,长期进行维护,是软件生命周期中时间最长的阶段,该选项正确。
- 选项 C:软件设计阶段是将需求转化为软件架构、模块等设计方案的阶段,时间长度通常短于维护阶段,不是时间最长的阶段。
- 选项 D:软件系统实施阶段主要包括编码、测试等工作,完成后软件即可交付使用,时间长度远短于维护阶段,不是时间最长的阶段。
3、最终答案:B
例题4
1、知识点总结
本题考查软件需求说明书的内容范畴。软件需求说明书是需求分析阶段的核心文档,主要用于明确软件系统的功能、性能、数据等需求,是后续设计、开发、测试等工作的依据。
2、选项分析
- 数据描述:需求分析阶段需要明确软件系统涉及的数据结构、数据存储、数据流转等内容,属于软件需求说明书应包含的内容
- 功能描述:清晰阐述软件需要实现的功能,是需求说明书的核心部分,属于应包含的内容。
- 模块描述:模块是软件设计阶段(如概要设计、详细设计)对系统进行拆分后的产物,用于说明模块的职责、接口等,不属于需求分析阶段软件需求说明书的内容。
- 性能描述:说明软件在响应时间、并发处理、吞吐量等方面的性能要求,属于需求说明书应包含的非功能需求内容。
3、最终答案:D
例题5
1、知识点总结
本题考查数据流图(DFD)的相关概念,数据流图是结构化分析方法的重要工具,用于在需求分析阶段对系统的功能、数据流转等进行建模。
2、选项分析
- 选项 A:数据流图是结构化分析建模的核心工具之一,用于描述系统的功能和数据流动情况,该说法正确。
- 选项 B:传统的数据流图主要包含加工(处理)、外部实体、数据流、数据存储这 4 种基本构件,没有控制流(控制流是结构化设计中流程图等工具的概念),该说法错误。
- 选项 C:数据流图可以有一个(如顶层数据流图,描述系统与外部的交互),也可以有多个(如分层的数据流图,对系统进行逐步细化),该说法正确。
- 选项 D:数据流图是在需求分析阶段,用于分析和明确系统需求(功能、数据等)的产物,该说法正确。
3、最终答案:B
例题6
1、知识点总结
本题考查内聚和耦合的概念及分类,这是软件工程中模块设计的核心原则:
- 内聚:衡量一个模块内部各元素(如代码、功能)之间结合的紧密程度,内聚度越高,模块的独立性越强。
- 耦合:衡量模块之间相互依赖、相互联系的紧密程度,耦合度越低,模块的独立性越强,系统越容易维护和扩展。
2、选项分析
- 选项 A:内聚的核心就是描述模块内部功能的集中程度(即内部元素结合的紧密性),该描述正确。
- 选项 B:耦合的定义就是模块间联系的紧密程度,该描述正确。
- 选项 C:内聚度从低到高的常见分类为:偶然内聚 <逻辑内聚 < 时间内聚 < 通信内聚 < 顺序内聚 < 功能内聚。因此 “通信内聚比逻辑内聚的内聚度更高”,该描述正确。
- 选项 D:耦合度从低到高的常见分类为:非直接耦合 <数据耦合 < 标记耦合 < 控制耦合 < 外部耦合 < 公共耦合 < 内容耦合。因此 “数据耦合的耦合度低于公共耦合”,该选项描述错误。
3、最终答案:D
例题7
1、知识点总结
本题考查软件质量特性中 “可用性” 的子特性范畴。根据 ISO/IEC 25010 等软件质量模型,可用性主要衡量软件产品被用户理解、学习、使用的难易程度,其典型子特性包括可理解性、易学性、可操作性等。
2、选项分析
- 选项 A(可理解性):指用户能理解软件功能和操作逻辑的程度,属于可用性子特性。
- 选项 B(易学性):指用户学习软件使用方法的难易程度,属于可用性子特性。
- 选项 C(依从性):通常属于安全性或合规性相关的特性(如软件符合法规、标准的程度),不属于可用性子特性。
- 选项 D(可操作性):指用户操作软件完成任务的难易程度,属于可用性子特性。
3、最终答案:C
例题8
1、知识点总结
这道题考察的是对几种常见软件开发生命周期模型的理解和辨析。
软件开发模型 :
它是对软件开发全过程(从需求分析到维护)的抽象描述,定义了构成软件开发过程的各个阶段、活动、任务以及它们之间的关系。它为软件开发提供了一个系统化的、结构化的框架。
瀑布模型
特点: 最早也是最经典的软件开发模型。它将软件生命周期划分为一系列线性、顺序的阶段(如需求分析、设计、编码、测试、维护)。每个阶段都必须在前一阶段完全结束后才能开始,阶段之间有严格的界限。
优点: 强调文档化,管理简单,每个阶段都有明确的产出和评审点。
缺点: 缺乏灵活性,无法适应需求变化,风险暴露晚。
文档: 瀑布模型非常强调文档驱动,每个阶段都会产生大量的、被严格定义的文档,作为下一阶段的输入。
快速原型模型
特点: 在正式开发前,快速构建一个可运行的、简化的系统原型,让用户尽早看到系统的样子,以便于沟通需求、收集反馈。仅用于获知和澄清用户的真正需求。一旦需求被完全理解和确定,这个原型就会被抛弃,后续的开发会从零开始(通常采用瀑布模型等更规范的方式)。
优点: 能有效解决需求不明确的问题,降低开发风险
演化模型
特点:将初始原型作为产品的核心,然后通过不断迭代,逐步增加功能、完善细节,最终演化成最终的软件产品。原型不会被抛弃,它就是产品的第一个版本,并在此基础上不断生长。
螺旋模型
特点: 这是一个风险驱动的迭代模型。它将开发过程组织成一个不断迭代的螺旋线,每一圈螺旋都包含四个阶段:制定计划、风险分析、实施工程、客户评估。
优点: 结合了瀑布模型(系统化、规范化)和演化模型(迭代、渐进交付)的优点。特别强调在每个迭代周期开始前进行风险分析,非常适合大型、复杂、高风险的项目。
喷泉模型
- 特点: 这是一种典型的面向对象的开发模型。它体现了迭代和无间隙的思想。各个开发阶段(如分析、设计、编码)之间没有明显的界限,开发过程可以像喷泉一样,水喷上去又落下来,意味着开发人员可以在不同阶段之间来回迭代。例如,在编码阶段发现设计问题,可以立刻返回到设计阶段进行修改。
优点: 提高了软件项目的开发效率和质量,因为迭代允许不断求精和修正。
2、选项分析
- 选项 A:软件开发模型的定义就是软件开发全部过程、活动和任务的结构框架,该描述正确。
- 选项 B:喷泉模型以面向对象的软件开发为基础,其迭代和无间隙的特性适合描述面向对象的开发过程,该描述正确。
- 选项 C:瀑布模型是一种线性、顺序的开发模型,严格规定了各阶段的顺序,且各阶段必须提交相应的文档(如需求规格说明书、设计文档等),该描述正确。
- 选项 D:螺旋模型中的原型并不是“抛弃式”的,而是作为产品核心不断演进的,这完全符合“演化模型”的定义,而不是“快速原型模型”的定义,该描述不正确。
3、最终答案:D
例题9
1、知识点分析
本题考查软件开发模型在 “系统二次开发” 场景下的选择。系统二次开发通常是在已有系统基础上进行功能扩展、优化或适配,需要快速验证需求、迭代调整,因此需选择适合迭代、能快速构建原型的开发模型。
- 原型法:核心是快速构建原型验证需求,适合需求不明确,需要迭代探索的场景。
- 瀑布模型:是线性、顺序的模型,要求需求明确且稳定,各阶段文档驱动,流程规范。
- V - 模型:是瀑布模型的变种,强调测试与开发的对应,同样依赖明确的需求。
- 螺旋模型:结合瀑布的系统性、原型的迭代性,还突出风险驱动,适合风险大的大中型项目。
2、选项分析
题干中提到 “财务系统功能基本完善,但由于系统比较老旧,需要二次开发”。给定分析认为,因为财务系统已存在且功能完善,二次开发的基本需求是明确的(比如是在已有功能基础上做扩展、优化,需求的方向性和核心目标是清晰的)。
而瀑布模型适合需求明确的场景,此时采用瀑布模型,能以规范的阶段划分(分析、设计、编码、测试等),基于明确的需求对老旧系统进行二次开发,保证开发过程的可控性和文档的完整性。
3、最终答案:B
例题10
1、知识点总结
考查统一过程(UP,Unified Process)的阶段划分及各阶段核心任务。UP 是一种用例驱动、以架构为中心、迭代式增量的软件开发过程,一个开发周期分为初始、精化、构建、提交 4 个阶段。
2、选项分析
- 选项 A(初始阶段):主要任务是确定项目范围、愿景,初步分析风险,建立业务案例,并非开发构件,不符合。
- 选项 B(精化阶段):核心是确定架构基线,解决关键需求和高风险问题,为构建阶段做准备,不是开发剩余构件的阶段,不符合。
- 选项 C(构建阶段):在架构基线基础上,开发剩余的构件,完成所有功能的实现、集成和测试,符合“开发剩余构件” 的描述。
- 选项 D(提交阶段):主要任务是将产品交付给用户,进行用户培训、处理反馈等,不涉及构件开发,不符合。