当前位置: 首页 > news >正文

【软考速通笔记】系统架构设计师⑤——软件工程基础知识

文章目录

  • 一、前言
  • 二、基础知识点
    • 2.1 软件危机
    • 2.2 软件生命周期
  • 三、软件过程模型(论文)
    • 3.1 瀑布模型
    • 3.2 原型模型
    • 3.3 螺旋模型
    • 3.4 敏捷模型
    • 3.5 软件统一过程模型
    • 3.6 软件成熟度模型
    • 3.7 软件成熟度模型集成
  • 四、需求工程
  • 五、软件测试
    • 5.1 根据程序执行状态分类
    • 5.2 根据是否关注内部实现分类
    • 5.3 根据程序执行方式分类
    • 5.4 根据测试阶段分类
  • 六、项目管理
    • 6.1 软件进度管理
    • 6.2 软件配置管理
    • 6.3 软件质量管理
    • 6.4 软件风险管理

一、前言

笔记目录大纲请查阅:【软考速通笔记】系统架构设计师——导读

二、基础知识点

2.1 软件危机

  • 软件开发进度难以预测
  • 软件开发成本难以控制
  • 软件功能难以满足用户期望
  • 软件质量无法保证
  • 软件难以维护
  • 软件缺少适当的文档资料

2.2 软件生命周期

  • 需求分析
  • 软件设计
  • 软件开发
  • 运行维护
  • 直到被淘汰

三、软件过程模型(论文)

3.1 瀑布模型

瀑布模型是一种传统的软件开发模型,结构化开发方法,特点是因果关系紧密相连,前一个阶段工作的输出结果是后一个阶段工作的输入。

缺点:

  • 需求难以一次确定
  • 变更的代价高
  • 结果难以预见
  • 各阶段工作不能并行

瀑布模型的流程是

  • 需求分析
  • 系统设计
  • 程序设计
  • 编码实现
  • 单元测试
  • 集成测试
  • 系统测试
  • 运行维护

3.2 原型模型

原型模型,又称为快速原型。

  • 解决问题:瀑布模型需求难以一次确定,结果难以预见的问题。
  • 使用方法:它通过快速构建一个可以运行的原型,让用户和开发者更直观地了解系统的功能和外观。

原型模型有原型开发和目标软件开发两个阶段。

  • 在原型开发阶段,开发者会快速构建一个简单的原型,供用户测试和反馈。
  • 根据用户的反馈,开发者会对原型进行修改和完善,直到用户满意为止。
  • 最后,开发者会根据最终的原型开始目标软件的开发。

3.3 螺旋模型

螺旋模型,在快速原型的基础上结合瀑布模型扩展而成。

它把整个软件开发流程分为多个阶段,每个阶段都由目标设定、风险分析、开发和有效性验证、评审等4部分组成。

在螺旋模型中,每个迭代都会进行风险评估和管理,以确保项目的顺利进行。这种模型适用于大型、复杂、高风险的项目,因为它可以帮助开发者更好地管理风险和不确定性。

3.4 敏捷模型

属于敏捷方法使用的模型。

  • 极限编程:高效低风险,测试先行(先写测试程序,再编写程序)。
  • 水晶系列方法:不同的项目,采用不同的策略。
  • 并列争球法:侧重于项目管理。
  • 特征驱动开发方法:将开发人员分类,分为指挥者、类程序员等。

3.5 软件统一过程模型

软件统一过程(Rational Unified Process,RUP)模型。

  • 9个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境
  • 特点:用例驱动、以架构为中心、迭代和增量
  • “4+1”视图模型
    • 逻辑视图:支持功能性需求,常用类图、对象图、状态图、协作图表示。
    • 实现视图(开发视图):描述软件的实现结构,包括代码组织和软件组件的实现。常用包图和组件图。
    • 进程视图(过程视图):考虑非功能性需求,如性能、并发、可用性、容错性、分布式、系统完整性等问题。常用活动图表示。
    • 部署视图(物理视图):反映了部署在硬件上的软件分布和配置情况,包括服务器、数据库、网络设备等资源的分配和连接关系。
    • 用例视图:所有视图都依靠用例视图(场景)来指导它们

3.6 软件成熟度模型

软件成熟度模型(Capability Maturity Model for Software,CMM)

是一种评估和提高组织软件工程能力的标准体系。

CMM把软件开发过程的成熟度由低到高分为五个级别,等级越高,表明该企业软件开发失败风险越低,整体开发时间越短,并能减少开发成本,降低错误发生率,提高产品质量。

3.7 软件成熟度模型集成

软件成熟度模型集成(Capability Maturity Model Integrattion for Software,CMMI)

在CMM的基础上发展而来,将软件过程改进的步骤组织成5个成熟度等级。

  • 初始级:组织的软件开发过程是不可预测的,缺乏稳定性,通常依赖于个别人的经验和技能。
  • 已管理级:组织已经有了基本的过程管理和文档标准的要求,并进行了控制。这些程序通常是项目级别的,而不是组织级别的。
  • 已定义级:组织的过程已经被标准化和文档化,并且在组织中得到了广泛的运用。组织能够自下而上地看到过程,并能进行过程的改进。
  • 量化管理级:组织通过定量的方法评估和控制过程的性能,并对过程进行持续改进。组织不仅需要有标准的软件开发过程,还需要对这些过程进行量化分析和度量,以便更好地了解过程的表现并做出持续改进。
  • 优化级:在优化级别上,组织的过程完全被优化,并且能够实现持续的过程改进和优化。

量化管理级与已定义级的区别是对过程性能的可预测

四、需求工程

需求工程由5个阶段组成

  • 需求获取:方法包括用户面谈、需求专题讨论会、问卷调查、现场观察、原型化方法和头脑风暴。
  • 需求分析:需求被进一步分析和细化。
  • 需求文档化:形成需求规格。
  • 需求确认与验证:确保需求文档准确反映了用户的实际需求。
  • 需求管理
    • 需求变更:问题分析和变更描述、变更分析和成本计算、变更实现。
    • 需求跟踪:建议与维护“需求—设计—编程—测试”。
    • 版本控制:确保需求文档准确反映了用户的实际需求。

五、软件测试

5.1 根据程序执行状态分类

  • 静态测试
  • 动态测试

5.2 根据是否关注内部实现分类

  • 黑盒测试
  • 白盒测试
  • 灰盒测试

5.3 根据程序执行方式分类

  • 人工测试
  • 自动化测试

5.4 根据测试阶段分类

  • 单元测试
  • 集成测试
  • 系统测试
  • 验收测试

六、项目管理

6.1 软件进度管理

工作分解结构(Work Breakdown Structur,WBS)把一个项目,按照一定原则分解成任务,任务再分解成一项项工作,再把工作分配到每个人的活动中,直到分解不下去为止。

  • 活动定义:明确项目需要完成的具体活动或任务。
  • 活动排序:确定活动之间的逻辑关系,即哪些活动需要先完成,哪些活动可以并行进行。
  • 活动资源估计:评估完成每个活动所需的资源,包括人力、物力、财力等。
  • 活动历时估计:预测完成每个活动所需的时间。
  • 制定进度计划:根据活动排序、资源估计和历时估计,制定详细的进度计划。
  • 进度控制:监控项目进度,确保项目按计划进行,并在必要时进行调整。

6.2 软件配置管理

软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。

  • 目的:是使错误降为最小并最有效地提高生产效率。
  • 核心内容:版本控制和变更控制。

6.3 软件质量管理

软件质量管理(Software Quality Assurance SQA),软件质量保证。

  • 目的:使软件过程对于管理人员来说是可见的。
  • 主要任务:SQA审计预评审,SQA报告,处理不符合问题。
  • 软件质量认证:ISO 9001 和 CMM。

6.4 软件风险管理

在软件开发过程中遇到预算和进度等方面的问题,以及这些问题对软件项目的影响。

  • Bochm
    • 风险估计:风险预测、风险辨识、风险分析、风险排序
    • 风险管理:风险管理计划、风险处理、风险监督
  • Charette
    • 风险分成分析:辨识、估计、评价
    • 管理:计划、控制、监督

若觉得文章对你有帮助,随手『点赞』、『收藏』、『关注』,也是对我的支持。

相关文章:

【软考速通笔记】系统架构设计师⑤——软件工程基础知识

文章目录 一、前言二、基础知识点2.1 软件危机2.2 软件生命周期 三、软件过程模型(论文)3.1 瀑布模型3.2 原型模型3.3 螺旋模型3.4 敏捷模型3.5 软件统一过程模型3.6 软件成熟度模型3.7 软件成熟度模型集成 四、需求工程五、软件测试5.1 根据程序执行状态…...

Qt 详解QRubberBand

文章目录 QRubberBand 简介前言 QRubberBand 的作用QRubberBand 的主要功能QRubberBand 的常用方法QRubberBand 的典型应用场景示例代码总结 QRubberBand 简介 前言 在 Qt 中,QRubberBand 是一个非常实用的控件,它通常用于图形界面中的“选择区域”功能…...

HTB:Love[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机开放端口进行脚本、服务扫描 使用浏览器访问靶机443端口 尝试利用该功能访问靶机自身80端口 使用ffuf对靶机80端口进行路径FUZZ 漏洞利用 使用searchsploit搜索靶机80端…...

【RabbitMQ 消息列队测试之:调试技巧】

RabbitMQ 消息列队测试之:调试技巧 1. 使用 RabbitMQ 管理界面2. 启用日志记录3. 使用 `rabbitmqctl` 命令行工具4. 检查和分析死信队列(DLQ)5. 监控系统资源6. 性能测试工具:`rabbitmq-perf-test`7. 使用工具调试消息内容8. 检查和调整消费者处理速率9. 启用长时间运行的测…...

Ubuntu FTP服务器的权限设置

在Ubuntu中设置FTP服务器的权限,主要涉及到用户权限管理和文件系统权限设置。以下是详细的步骤和配置方法: 安装FTP服务器软件 首先,确保已经安装了FTP服务器软件。常用的FTP服务器软件包括vsftpd和Pure-FTPd。以下是使用vsftpd作为示例的安…...

@Pattern (用于校验字符串是否符合特定正则表达式)

Pattern 是一个用于校验字符串是否符合特定正则表达式的注解,它在 Java 中常用于验证输入数据的格式。以下是 Pattern 注解的详解和使用方法: 含义 Pattern 注解用于在 Java 中对字段进行注解,以确保其值与指定的正则表达式匹配。这个注解可…...

5G学习笔记之随机接入

目录 1. 概述 2. MSG1 2.1 选择SSB 2.2 选择Preamble Index 2.3 选择发送Preamble的时频资源 2.4 确定RA-RNTI 2.5 确定发送功率 3. MSG2 4. MSG3 5. MSG4 6. 其它 6.1 切换中的随机接入 6.2 SI请求的随机接入 6.3 通过PDCCH order重新建立同步 1. 概述 随机接入…...

webGL入门教程_03GLSL、OpenGL、WebGL 定义及关系

GLSL、OpenGL、WebGL 定义及关系 1. 定义 1.1 GLSL(OpenGL Shading Language) 定义: GLSL 是 OpenGL 的着色器语言,用于编写 GPU 可编程着色器,定义图形渲染过程中顶点和像素(片元)的处理逻辑。…...

git基本操作说明

一 基本操作说明 Git常用命令: clone、push、add、commit、checkout、pull。 流程如下: 仓库说明: workspace:工作区staging area:暂存区/缓存区local repository:版本库或本地仓库remote repository&…...

微知-git如何添加空目录的几种方式?(.gitkeep, githook, gitconfig)

背景 在Git中,空目录(空文件夹)默认是不会被跟踪的,因为Git主要跟踪文件的变化。但是如何让git添加空目录? #mermaid-svg-3Y4NksLyEeuMs4FC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…...

MySQL 数据库学习教程一:开启数据库探索之旅

在当今数字化时代,数据已然成为企业和组织最为宝贵的资产之一。而数据库管理系统则是存储、管理和操作这些数据的核心工具。MySQL 作为一款广泛应用的开源关系型数据库管理系统,以其可靠性、高性能和易用性而备受青睐。如果你渴望踏入数据库领域&#xf…...

Vue+Elementui el-tree树只能选择子节点并且支持检索

效果&#xff1a; 只能选择子节点 添加配置添加检索代码 源码&#xff1a; <template><div><el-button size"small" type"primary" clearable :disabled"disabled" click"showSign">危险点评估</el-button>…...

Lumos学习王佩丰Excel第十八讲:LOOKUP函数与数组

一、回顾统计函数 1、使用SUMIF函数 sumif(条件区域,求和条件,求和区域) 2、使用SUMIFS函数 SUMIFS(求和范围, 条件范围1, 条件1, 条件范围2, 条件2, ...) 二、认识数组 1、数组生成原理 所谓数组&#xff0c;是有序的元素序列。组成数组的各个变量称为数组的元素。对于Ex…...

Git的基本使用操作

文章目录 Git 全局配置基本操作Git 常用命令版本回退根据版本号回滚分支远端分支 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Git专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月1日12点50分 Git 全局配置 虽然说是全局配置&am…...

【C语言】结构体嵌套

结构体嵌套是指在一个结构体中定义另一个结构体作为其成员。这种方式可以实现更复杂的数据结构设计&#xff0c;便于对数据进行分层管理和组织&#xff0c;广泛应用于实际开发中&#xff0c;例如操作系统内核、嵌入式系统、网络协议解析等。下面是对结构体嵌套的详细介绍&#…...

PDF view | Chrome PDF Viewer |Chromium PDF Viewer等指纹修改

1、打开https://www.browserscan.net/zh/ 2、将internal-pdf-viewer改为 internal-pdf-viewer-jdtest看下效果&#xff1a; 3、源码修改&#xff1a; third_party\blink\renderer\modules\plugins\dom_plugin_array.cc namespace { DOMPlugin* MakeFakePlugin(String plugin_…...

maxun爬虫工具docker搭建

思路来源开源无代码网络数据提取平台Maxun 先把代码克隆到本地&#xff08;只有第一次需要&#xff09; git clone https://github.com/getmaxun/maxun.git 转到maxun目录 cd maxun 启动容器 docker-compose --env-file .env up -d 成功启动六个容器 网址 http://local…...

JAVAWeb之javascript学习

1.js引入方式 1. 内嵌式&#xff1a;在head中&#xff0c;通过一对script标签引入JS代码&#xff1b;cript代码放置位置有一定的随意性&#xff0c;一般放在head标签中&#xff1b;2.引入外部js文件 在head中&#xff0c;通过一对script标签引入外部JS代码&#xff1b;注意&…...

vue3中是如何实现双向数据绑定的

在 Vue 3 中&#xff0c;双向数据绑定主要通过 v-model 指令实现。v-model 是一个语法糖&#xff0c;它内部实际上结合了 v-bind 和 v-on 指令来实现数据的双向绑定。下面详细介绍 Vue 3 中双向数据绑定的实现原理和使用方法。 双向数据绑定的基本原理 v-bind 指令&#xff1…...

JavaScript事件机制详解

JavaScript中的事件模型是指当用户与网页进行交互时&#xff0c;浏览器会触发不同类型的事件&#xff0c;开发者可以通过添加事件监听器来响应这些事件。事件流是描述事件在页面元素中传播的过程&#xff0c;从窗口对象开始&#xff0c;逐级向下传播到最具体的元素&#xff0c;…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...