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

news2024/11/30 2:40:08

软件工程基础

软件开发方法

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

软件开发模型

瀑布模型

在这里插入图片描述

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

优点

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

不足之处
  • 客户必须能够完整、正确和清晰地表达他们的需要
  • 在开始的两个或 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.coloradmin.cn/o/1159666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python脚本监听域名证书过期时间,并将通知消息到钉钉

版本一: 执行脚本带上 --dingtalk-webhook和–domains后指定钉钉token和域名 python3 ssl_spirtime.py --dingtalk-webhook https://oapi.dingtalk.com/robot/send?access_tokenavd345324 --domains www.abc1.com www.abc2.com www.abc3.com脚本如下 #!/usr/bin…

pytorch笔记 GRUCELL

1 介绍 GRU的一个单元 2 基本使用方法 torch.nn.GRUCell(input_size, hidden_size, biasTrue, deviceNone, dtypeNone) 输入:(batch,input_size) 输出和隐藏层:(batch,hidden_size&#xf…

Unity 报警告warning CS0649: Field ‘...‘ is never assigned to,...解决办法

文章目录 1. 现象2. 警告出现原因3. 解决方法 1. 现象 2. 警告出现原因 该警告应仅出现在私有成员变量中。那些不能从外部设置,这就是为什么编译器可以确定这些变量没有在任何地方蛇者其值。在C#中,没有访问修饰符的变量(private…

React中的状态管理

目录 前言 1. React中的状态管理 1.1 本地状态管理 1.2 全局状态管理 Redux React Context 2. React状态管理的优势 总结 前言 当谈到前端开发中的状态管理时,React是一个备受推崇的选择。React的状态管理机制被广泛应用于构建大型、复杂的应用程序&#xf…

HNU-编译原理-讨论课1

讨论课安排:2次4学时,分别完成四大主题讨论 分组:每个班分为8组,每组4~5人,自选组长1人 要求和说明: 以小组为单位上台报告;每次每组汇报2个小主题,每组按要求在2个小主题中各选1…

GEE——Publisher Data Catalogs发布者数据目录

发布者数据目录 发布者数据目录由数据集发布者策划,供更大范围的 Google 地球引擎社区使用,并作为地球引擎资产集公开共享。这些目录并非由 Google 编制。这里是GEE团队简政放权的一个过程,也就是说这些数据集的后续更新和维护并不由GEE团队负…

在虚拟机centos7中部署docker+jenkins最新稳定版

在虚拟机centos7中部署dockerjenkins最新稳定版 查看端口是否被占用 lsof -i:80 查看运行中容器 docker ps 查看所有容器 docker ps -a 删除容器 docker rm 镜像/容器名称 强制删除 docker rmi -f 镜像名 查看当前目录 pwd 查看当前目录下所有文件名称 ls 赋予权限 chown 777 …

[TryHackMe] [Intro to Offensive Security] 网络安全概论.黑掉你的第一个网站

TASK1:什么是进攻性安全? 简而言之,攻击性安全是闯入计算机系统、利用软件错误并查找应用程序中的漏洞以获得未经授权的访问的过程。 要打败黑客,你需要表现得像个黑客,在网络犯罪分子之前发现漏洞并推荐补丁 另一方面&#xf…

Yolov5-detect.py代码简化(便于移植)

Yolov5-detect.py代码简化(便于移植) # -*- coding: UTF-8 -*- # Time : 2023/11/1 18:23 # File : detect_iter.py # Software: PyCharm # YOLOv5 🚀 by Ultralytics, GPL-3.0 license import argparse import os import sys import time…

C语言_自定义类型详解

文章目录 前言一.结构体的声明1.1结构体的基础知识1.2结构的声明1.3特殊声明1.4结构体的自引用在结构中包含一个类型为该结构本身的成员是否可以?正确的自引用方式匿名结构体类型和typedef的结合形式 1.5 结构体变量的定义和初始化结构体定义与初始化结构体里嵌套结…

数据结构与算法:稀疏数组Java版

什么是稀疏数组 稀疏数组是一种特殊的数据结构,它仅在数组中保存了有效的数据元素,忽略掉了大部分未被使用或被零值占据的元素,从而节省了内存空间。 在稀疏数组中,只有非零元素会被保存,这些元素在原数组中的位置和…

姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)

姿态识别康复训练矫正(AI 健身教练姿态分析) 目录 本文旨在构建一个 AI 健身教练,帮助判断姿态标准与否,并且矫正姿态!无论您是初学者还是专业人士,它都可以帮助您无缝地进行深蹲。为了完成这项任务&…

基于海洋捕食者算法的无人机航迹规划-附代码

基于海洋捕食者算法的无人机航迹规划 文章目录 基于海洋捕食者算法的无人机航迹规划1.海洋捕食者搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用海洋捕食者算法来优化无人机航迹…

SANSAN每周新鲜事|到底哪一款物联网平台适合你?

假如您有对设备进行监控、控制、管理、维护的需求,或者您的业务系统涉及设备管控、设备数据可视化和分析,大概率上,您需要开发一套系统专门去做设备接入和管理,您会面临两种选择: 1、选择一款合适的物联网平台&#x…

“消费增值:绿色商业模式的创新之路“

随着消费者对绿色、环保生活方式的追求不断增加,一种名为消费增值的商业模式正逐渐受到人们的关注。通过鼓励绿色消费行为,消费增值模式引导消费者形成低碳环保的生活方式,并实现积分的增值和社会效益的提升。一种只涨不跌的模式,…

历年网规上午真题笔记(2015年)

解析: 变更控制为“问题识别”——“问题分析与变更描述”——“变更分析与成本计算”——“变更实现”——“修改后的需求” 自动化工具能够帮助变更控制过程更有效地运作,能有效收集、存储、管理变更,工具应该具备的特征如下: 可定义变更请求中的数据可定义变更请求生命…

以八数码问题为例实现A*算法的求解(未完结)

八数码: 在一个 33 的网格中,1∼8 这 8 个数字和一个 x 恰好不重不漏地分布在这 33 的网格中。 例如: 1 2 3 x 4 6 7 5 8在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。…

SQL server数据库端口访问法

最近数据库连接&#xff0c;也是无意中发现了这个问题&#xff0c;数据库可根据端口来连接 网址:yii666.com< 我用的是sql2014测试的&#xff0c;在安装其他程序是默认安装了sql(sql的tcp/ip端口为xxx)&#xff0c;服务也不相同&#xff0c;但是由于比较不全&#xff0c;我…

yum工具(介绍+常用指令)

目录 yum--软件包管理器 概念 引入 rpm安装 yum安装 指令 yum list yum install 包名 yum remove 包名 yum search 包名/关键字 yum update/upgrade yum makecache fast du命令 yum--软件包管理器 概念 引入 在linux中下载软件,可以下载源代码进行编译执行但是…