软考之软件工程基础理论知识

软件工程基础

软件开发方法

  • 结构化方法
    • 将整个系统的开发过程分为若干阶段,然后依次进行,前一阶段是后一阶段的工作依据按顺序完成。
    • 应用最广泛。
    • 特点是注重开发过程的整体性和全局性。
    • 缺点是开发周期长文档设计说明繁琐,工作效率低
    • 开发前要求全面获取需求和所有变更,但这不现实。
  • 原型法
    • 基于对用户需求的初步理解,先快速开发一个原型系统,然后通过反复修改来实现用户的最终系统需求。
  • 面向对象方法
    • 用对象表示客观事物,对象是一个严格模块化的实体,在系统开发中可被共享和重复引用以达到复用的目的。
    • 其特点是在整个开发过程中使用的是同一套工具。
    • 面向对象方法主要涉及分析、设计、实现三个阶段。
  • 敏捷方法
    • 以人为核心、选代、循序新进的开发方法
    • 适用于一开并没有或不能完整地确定出需求和范围的项目
    • 或者需要应对迅速变化的环境,或者需求和范围难以事先确定,或者能够以有利于干系人的方式定义较小的增量改进。

软件开发模型

瀑布模型

在这里插入图片描述

该模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水逐级下落。

优点

瀑布模型的优点容易理解,管理成本低:强调开发的阶段性早期计划及需求调查和产 品测试。

不足之处
  • 客户必须能够完整、正确和清晰地表达他们的需要
  • 在开始的两个或 3 个阶段中,很难评估真正的进度状态
  • 当接近项目结束时,出现了大量的集成和测试工作;
  • 直到项目结束之前,都不能演示系统的能力。

在瀑布模型中,需求或设计中的错误往往只有到了 项目后期才能够被发现,对于项目风险的控制能力较弱,从而导致项目常常延期完成,开发费 用超出预算。

增量模型

在这里插入图片描述

该模型融合了瀑布模型的基本成分和原型实现的迭代特征,它假设可以将需求分段为一 系列增量产品,每一个增量可以分别开发。该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第一个增量往往是核心的产品。客户对每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

不足之处

增量模型有以下不足之处

  • 如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定
  • 如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布
  • 管理发生的成本、进度和配置的复杂性可能会超出组织的能力。
演化模型

演化模型是迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本。演化模型特别适用于对软件需求缺乏准确认识的情况。典型的演化模型有原型模型和螺旋模型等。

原型方法
  • 原型方法比较适合于用户需求不清、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法比较好。原一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。当然能够采用原型方法是因为开发工具的快速发展,使得能够迅速地开发出一个让用户看得见、摸得着的系统框架。
    在这里插入图片描述
螺旋模型
  • 螺旋模型对于复杂的大型软件,开发一个原型往往达不到要求。
    • 螺旋模型将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补了这两种模型的不足。

螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,每个螺旋周期分为如下 4 个工作步骤。

  • 制订计划
    • 确定软件的目标,选定实施方案,明确项目开发的限制条件。
  • 风险分析
    • 分析所选的方案,识别风险,消除风险。
  • 实施工程
    • 实施软件开发,验证阶段性产品。
  • 用户评估
    • 评价开发工作,提出修正建议,建立下一个周期的开发计划。

在这里插入图片描述

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,从而做 出应有的反应。因此,该模型特别适用于庞大、复杂并且具有高风险的系统。

喷泉模型

在这里插入图片描述

这是是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。喷泉模型的各个阶段没有明显的界线,开发人员可以同步进行。

其优点是可以提高软件项目的开发效率,节省开发时间。由于喷泉模型在各个开发阶段是重叠的,在开发过程中需要大量的开发人员,不利于项目的管理。此外,这种模型要求严格管理文档,使得审核的难度加大。

(5)统一过程(UP)模型

统一过程模型是一种“用例和风险驱动,以架构为中心,迭代并且增量”的开发过程,由 UML 方法和工具支持。
迭代的意思是将整个软件开发项目划分为许多个小的“袖珍项目”,每统一过程定义了 4个技术阶段及其制品。

  • 起始阶段 (InceptionPhase)
    • 起始阶段专注于项目的初创活动
    • 产生的主要工作产品有
      • 构想文档(Vision Document)
      • 初始用例模型
      • 初始项目术语表
      • 初始业务用例
      • 初始风险评估
      • 项目计划(阶段及迭代)
      • 业条模型以及一个或多个原型(需要时)
  • 精化阶段(ElaborationPhase)
    • 该阶段在理解了最初的领域范围之后进行需求分析和架构演进
    • 产生的主要工作产品有
      • 用例模型
      • 补充需求(包括非功能需求)
      • 分析模型
      • 软件体系结构描述
      • 可执行的软件体系结构原型
      • 初步的设计模型
      • 修订的风险列表
      • 项目计划(包括迭代计划、调整的工作流、里程碑和技术工作产品)以及初始用户手册
  • 构建阶段(ConstructionPhase)
    • 构建阶段关注系统的构建产生实现模型
    • 产生的主要工作产品有
      • 设计模型
      • 软件构件
      • 集成的软件增量、测试计划及步骤
      • 测试用例以及支持文档(用户手册、安装手册和对于并发增量的描述)
  • 移交阶段 (Transition Phase)
    • 移交阶段关注于软件提交方面的工作,产生软件增量
    • 产生的主要工作产品有
      • 提交的软件增量,贝塔测试报告和综合用户反馈

题目

题目 1

某公司拟开发一个地面清洁机器人。机器人的控制者首先定义清洁任务和任务之间的关系,机器人接受任务后,需要响应外界环境中触发的一些突发事件,根据自身状态进行动态调整,最终自动完成任务。针对上述需求,该机器人应该采用( )架构风格最为合适。

A. 面向对象

B. 主程序—子程序

C. 规则系统

D. 管道—过滤器

题目 2

某公司拟开发一个语音识别系统,其语音识别的主要过程包括分割原始语音信号、识别音素、产生候选词、判定语法片断、提供语义解释等,每个过程都需要进行基于先验知识的条件判断并进行相应的识别动作。针对该系统的特点,采用( )架构风格最为合适。

A. 解释器

B. 面向对象

C. 黑板

D. 隐式调用

题目 3

某公司拟开发一个轿车巡航定速系统,系统需要持续测量车辆当前的实时速度,并根据设定的期望速度自动控制轿车的油门和刹车。针对上述需求,采用( )架构风格最为合适。

A. 解释器

B. 过程控制

C. 分层

D. 管道—过滤器

题目 4

某公司拟开发一套在线游戏系统,该系统的设计目标之一是支持用户自行定义游戏对象的属性、行为和对象之间的交互关系。为了实现上述目标,公司应该采用( )架构风格最为合适。

A. 管道—过滤器

B. 隐式调用

C. 主程序—子程序

D. 解释器

题目 5

某公司为其研发的硬件产品设计实现了一种特定的编程语言,为了方便开发者进行软件开发,公司拟开发一套针对该编程语言的集成开发环境,包括代码编辑、语法高亮、代码编译、运行调试等功能。针对上述描述,该集成开发环境应采用( )架构风格最为合适。

A. 管道—过滤器

B. 数据仓储

C. 主程序—子程序

D. 解释器

题目 6

软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动,是一个迭代的过程。架构设计主要关注软件组件的结构、属性和(请作答此空),并通过多种( )_全面描述特定系统的架构。

A. 实现方式

B. 交互作用

C. 设计方案

D. 测试方式

题目 7

A. 对象

B. 代码

C. 文档

D. 视图

题目 8

某公司拟开发一个 VIP 管理系统,系统需要根据不同商场活动,不定期更新 VIP 会员的审核标准和 VIP 折扣标准。针对上述需求,采用( )架构风格最为合适。

A. 规则系统

B. 过程控制

C. 分层

D. 管道-过滤器

题目 9

以下关于软件架构设计重要性的描述,()是错误的。

A. 软件架构设计能够满足系统的性能、安全性、可维护性等品质

B. 软件架构设计能够帮助项目干系人(Stakeholder)更好地理解软件结构

C. 软件架构设计能够帮助架构师更好地捕获和细化系统需求

D. 软件架构设计能够有效地管理系统的复杂性,并降低系统维护费用

题目 10

某公司拟开发一个新闻系统,该系统可根据用户的注册兴趣,向用户推送其感兴趣的新闻内容,该系统应该采用( ) 架构风格最为合适。

A. 事件驱动系统

B. 主程序-子程序

C. 黑板

D. 管道-过滤器

带解析版

题目 4

某公司拟开发一个地面清洁机器人。机器人的控制者首先定义清洁任务和任务之间的关系,机器人接受任务后,需要响应外界环境中触发的一些突发事件,根据自身状态进行动态调整,最终自动完成任务。针对上述需求,该机器人应该采用( )架构风格最为合适。

A. 面向对象

B. 主程序—子程序

C. 规则系统

D. 管道—过滤器

正确答案:正确答案: C

解析:

机器人需要根据自身状态的外界环境进行自动调整,这是一个典型的根据外部事件进行响应的场景。比较4个候选项,规则系统比较适合根据外部事件,以自身状态为基础自动进行处理和动作的场景。

题目 5

某公司拟开发一个语音识别系统,其语音识别的主要过程包括分割原始语音信号、识别音素、产生候选词、判定语法片断、提供语义解释等,每个过程都需要进行基于先验知识的条件判断并进行相应的识别动作。针对该系统的特点,采用( )架构风格最为合适。

A. 解释器

B. 面向对象

C. 黑板

D. 隐式调用

正确答案:正确答案: C

解析:

根据题目描述,语音识别系统是一个十分典型的专家系统,其特点是求解的正确结果不止一个,求解过程比较复杂,需要通过专家知识和反馈逐步得到正确结果。因此对比4个候选项,黑板结构特别适合求解这类问题。

题目 6

某公司拟开发一个轿车巡航定速系统,系统需要持续测量车辆当前的实时速度,并根据设定的期望速度自动控制轿车的油门和刹车。针对上述需求,采用( )架构风格最为合适。

A. 解释器

B. 过程控制

C. 分层

D. 管道—过滤器

正确答案:正确答案: B

解析:

根据题目描述,轿车巡航定速系统是一个十分典型的控制系统,其特点是不断采集系统当前状态,与系统中的设定状态进行对比,并通过将当前状态与设定状态进行对比从而进行控制

题目 7

某公司拟开发一套在线游戏系统,该系统的设计目标之一是支持用户自行定义游戏对象的属性、行为和对象之间的交互关系。为了实现上述目标,公司应该采用( )架构风格最为合适。

A. 管道—过滤器

B. 隐式调用

C. 主程序—子程序

D. 解释器

正确答案:正确答案: D

解析:

该软件系统特别强调用户定义系统中对象的关系和行为这一特性,这需要在软件架构层面提供一种运行时的系统行为定义与改变的能力,根据常见架构风格的特点和适用环境,可以知道最合适的架构设计风格应该是解释器风格

题目 8

某公司为其研发的硬件产品设计实现了一种特定的编程语言,为了方便开发者进行软件开发,公司拟开发一套针对该编程语言的集成开发环境,包括代码编辑、语法高亮、代码编译、运行调试等功能。针对上述描述,该集成开发环境应采用( )架构风格最为合适。

A. 管道—过滤器

B. 数据仓储

C. 主程序—子程序

D. 解释器

正确答案:正确答案: B

解析:

编程语言的集成开发环境需要提供代码编辑、语法高亮、代码编译、运行调试等功能,这些功能的特点是以软件代码为中心进行对应的编译处理与辅助操作。根据常见架构风格的特点和适用环境,可以知道最合适的架构设计风格应该是数据仓库风格。

题目 9

软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动,是一个迭代的过程。架构设计主要关注软件组件的结构、属性和(请作答此空),并通过多种( )_全面描述特定系统的架构。

A. 实现方式

B. 交互作用

C. 设计方案

D. 测试方式

正确答案:正确答案: B

解析:

软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动,是一个迭代的过程。架构设计主要关注软件组件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。

题目 10

A. 对象

B. 代码

C. 文档

D. 视图

正确答案:正确答案: D

解析:

软件架构设计包括提出架构模型、产生架构设计和进行设计评审等活动,是一个迭代的过程。架构设计主要关注软件组件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。

题目 11

某公司拟开发一个 VIP 管理系统,系统需要根据不同商场活动,不定期更新 VIP 会员的审核标准和 VIP 折扣标准。针对上述需求,采用( )架构风格最为合适。

A. 规则系统

B. 过程控制

C. 分层

D. 管道-过滤器

正确答案:正确答案: A

解析:

根据题目中描述,VIP管理系统会根据不同商场活动,不定期更新VIP会员的审核标准和折扣标准,属于典型规则系统应用场景。

题目 12

以下关于软件架构设计重要性的描述,()是错误的。

A. 软件架构设计能够满足系统的性能、安全性、可维护性等品质

B. 软件架构设计能够帮助项目干系人(Stakeholder)更好地理解软件结构

C. 软件架构设计能够帮助架构师更好地捕获和细化系统需求

D. 软件架构设计能够有效地管理系统的复杂性,并降低系统维护费用

正确答案:正确答案: C

解析:

软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。软件架构设计能够满足系统的性能、安全性、可维护性等品质;软件架构设计能够帮助项目干系人(Stakeholder)更好地理解软件结构;软件架构设计能够有效地管理系统的复杂性,并降低系统维护费用;软件架构设计对系统开发具有指导性;软件架构设计为系统复用奠定的基础;软件架构设计能够支持冲突分析。需要注意的是,软件架构设计与系统需求是直交的,两者并无必然联系。

题目 13

某公司拟开发一个新闻系统,该系统可根据用户的注册兴趣,向用户推送其感兴趣的新闻内容,该系统应该采用( ) 架构风格最为合适。

A. 事件驱动系统

B. 主程序-子程序

C. 黑板

D. 管道-过滤器

正确答案:正确答案: A

解析:

根据题目的意思,用户会注册自己的兴趣,然后系统也会把新闻按兴趣分类,如果某个新闻事件发生,可以通过事件来触发推送动作,将新闻推送给对其感兴趣的用户。这是典型的事件驱动系统应用场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/115878.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BEV-YOLO 论文学习

1. 解决了什么问题? 出于安全和导航的目的,自驾感知系统需要全面而迅速地理解周围的环境。目前主流的研究方向有两个:第一种传感器融合方案整合激光雷达、相机和毫米波雷达,和第二种纯视觉方案。传感器融合方案的感知表现鲁棒&am…

docker学习笔记

1. docker安装 可以从以下地址下载并安装docker,Linux,Windows,MacOS均支持: 官网:https://docs.docker.com/engine/install/阿里云镜像安装:https://developer.aliyun.com/mirror/docker-ce Docker 安装…

3.Docker的客户端指令学习与实战

1.Docker的命令 1.1 启动Docker(systemctl start docker) systemctl start docker1.2 查看docker的版本信息(docker version) docker version1.3 显示docker系统范围的信息(docker info) docker info1.4…

3.21每日一题(区间在现求定积分)

当发现一个定积分,原函数根本找不出来时,可以用变量代换:区间再现!!!

【JVM】双亲委派机制、打破双亲委派机制

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 一、双亲委派机制1.1 双亲委派的作用1.…

AST注入-从原型链污染到RCE

文章目录 概念漏洞Handlebarspug 例题 [湖湘杯 2021 final]vote 概念 什么是AST注入 在NodeJS中,AST经常被在JS中使用,作为template engines(引擎模版)和typescript等。对于引擎模版,结构如下图所示。 如果在JS应用中存在原型污染漏洞&…

【蓝桥杯选拔赛真题10】C++求奇数和 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++求奇数和 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <

sqlsugar查询数据库下的所有表,批量修改表名字

查询数据库中的所有表 using SqlSugar;namespace 批量修改数据库表名 {internal class Program{static void Main(string[] args){SqlSugarClient sqlSugarClient new SqlSugarClient(new ConnectionConfig(){ConnectionString "Data Source(localdb)\\MSSQLLocalDB;In…

VS Code 开发 Spring Boot 类型的项目

在VS Code中开发Spring Boot的项目&#xff0c; 可以导入如下的扩展&#xff1a; Spring Boot ToolsSpring InitializrSpring Boot Dashboard 比较建议的方式是安装Spring Boot Extension Pack&#xff0c; 这里面就包含了上面的扩展。 安装方式就是在扩展查找 “Spring Boot…

故障诊断 | MATLAB实现GRNN广义回归神经网络故障诊断

故障诊断 | MATLAB实现GRNN广义回归神经网络故障诊断 目录 故障诊断 | MATLAB实现GRNN广义回归神经网络故障诊断故障诊断基本介绍模型描述预测过程程序设计参考资料故障诊断 基本介绍 MATLAB实现GRNN广义回归神经网络故障诊断 数据为多特征分类数据,输入12个特征,分3

SpringSecurity全家桶 (二) ——实现原理

1. SpringSecurity的强大之处 当我们并未设置登录页面时&#xff0c;我们只需要导入SpringSecurity的依赖就可以令我们的界面进入保护状态&#xff0c;由下面例子可以凸显出&#xff1a; 随便写个接口 RequestMapping("/hello")public String hello(){return "H…

【this详解】学习JavaScript的this的使用和原理这一篇就够了,超详细,建议收藏!!!

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript进阶指南 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继…

虹科案例 | AR内窥镜手术应用为手术节约45分钟?

相信医疗从业者都知道&#xff0c;在手术室中有非常多的医疗器械屏幕&#xff0c;特别是内窥镜手术室中医生依赖这些内窥镜画面来帮助病患进行手术。但手术室空间有限&#xff0c;屏幕缩放位置相对固定&#xff0c;在特殊场景下医生观看内窥镜画面时无法关注到病患的状态。这存…

FFmpeg 硬件加速视频转码指南

基于 Windows 下演示&#xff0c;Linux 下也可以适用。 所使用 ffmpeg 版本为 BtbN 编译的 win64-gpl 版&#xff08;非 gpl-share&#xff09;&#xff0c;项目地址&#xff1a;BtbN / FFmpeg-Builds 也可以使用 gyan.dev 编译的 git-full 版&#xff0c;地址&#xff1a;gyan…

【Kafka】基本概念

文章目录 一、消息队列的流派1.1 有Broker1.1.1 重topic1.1.2 轻topic 1.2 无Broker 二、kafka安装三、kafka基本术语四、发送消息五、消费消息六、单播消息七、多播消息八、查看消费组的详细信息九、主题topic十、分区十一、kafka中消息⽇志⽂件中保存的内容 一、消息队列的流…

4 个最常见的自动化测试挑战及应对措施

有人说&#xff1a;“杂乱无章的自动化只会带来更快的混乱。”不仅更快&#xff0c;而且是更严重、更大的混乱。如果使用得当&#xff0c;自动化可以成为测试团队中令人惊叹的生产力助推器和系统的质量增强器。自动化测试的关键是要正确运用&#xff0c;这是初始最困难的部分。…

如何利用AppScan扫描H5页面,进行安全测试?

前期项目组接触的都是Web安全测试&#xff0c;今天做安全测试的时候&#xff0c;有一个项目刚好有H5页面&#xff0c;用以前那种AppScan内置浏览器的探索方式是不行的&#xff0c;研究了下&#xff0c;可以使用外部设备进行探索。 AppScan有两种手动探索方式&#xff0c;一种是…

面试算法53:二叉搜索树的下一个节点

题目 给定一棵二叉搜索树和它的一个节点p&#xff0c;请找出按中序遍历的顺序该节点p的下一个节点。假设二叉搜索树中节点的值都是唯一的。例如&#xff0c;在图8.9的二叉搜索树中&#xff0c;节点8的下一个节点是节点9&#xff0c;节点11的下一个节点是null。 分析&#xf…

memtest86 prosite v10.6

passmark官方的memtest86 v10开始支持颗粒级别的坏内存芯片定位了&#xff0c;对于特定的若干种CPU和芯片组的组合&#xff0c;支持这项功能。 当然支持颗粒定位的site版本售价4800美金&#xff0c;是比较贵的。所以网络上出现了破解版的&#xff0c;人才真是。但是鼓励大家支…

短视频矩阵营销系统工具如何助力商家企业获客?

1.批量剪辑技术研发 做的数学建模算法&#xff0c;数学阶乘的组合乘组形式&#xff0c;采用两套查重机制&#xff0c;一套针对素材进行查重抽帧素材&#xff0c;一套针对成片进行抽帧素材打分制度查重&#xff0c;自动滤重计入打分。 2.账号矩阵分发开发 多平台&#xff0c;…
最新文章