系统架构设计师(第二版)学习笔记----软件工程
【原文链接】系统架构设计师(第二版)学习笔记----软件工程
文章目录
- 一、软件工程
- 1.1 软件危机的表现
- 1.2 软件工程的内容
- 二、软件过程模型
- 2.1 软件的声明周期
- 2.2 瀑布模型
- 2.3 瀑布模型的缺点
- 2.4 原型模型
- 2.5 原型模型开发阶段
- 2.6 开发原型的途径
- 2.7 螺旋模型
- 2.8 螺旋模型每个阶段的组成
- 三、敏捷模型
- 3.1 敏捷型方法的特点
- 3.2 敏捷方法的核心思想
- 3.3 常见的敏捷方法实践
- 3.4 极限编程的基础和价值
- 3.5 FDD认为软件开发需要的3要素
- 3.6 FDD定义了6中项目角色
- 3.7 FDD的5个核心过程
- 四、统一过程模型(RUP:Rational Unified Process)
- 4.1 RUP的生命周期
- 4.2 RUP中每个循环中的过程
- 4.3 RUP中的核心概念
- 4.4 RUP的特点
- 4.5 RUP的视图模型
- 4.6 软件开发采用迭代和增量的好处
- 五、软件能力成熟度模型
- 5.1 CMMI的5个成熟度等级
一、软件工程
1.1 软件危机的表现
- 软件开发进度难以预测
- 软件开发成本难以控制
- 软件功能难以满足用户期望
- 软件质量无法保证
- 软件难以维护
- 软件缺少适当的文档资料
1.2 软件工程的内容
- P(Plan):软件规格说明,规定软件功能及其运行时的限制
- D(Do):软件开发,开发出满足规格说明的软件
- C(Check):软件确认,确认开发的软件能够满足用户的需求
- A(Action):软件演进,软件在运行过程中不断改进以满足客户新的需求
二、软件过程模型
2.1 软件的声明周期
- 需求分析
- 软件设计
- 软件开发
- 运行维护
- 淘汰
2.2 瀑布模型
- 需求分析
- 系统设计
- 程序设计
- 编码实现
- 单元测试
- 集成测试
- 系统测试
- 运行维护

2.3 瀑布模型的缺点
- 软件需求的完整性、正确性等很难确定,甚至是不可能和不现实的
- 瀑布模型是一个严格串行化的过程模型,使得用户和软件项目负责人要相当长时间才能得到一个可以看得见的软件系统。如果出现于用户的期望不一致、或者出现需求变更,将会带来巨大的损失
- 瀑布模型的基本原则是在每个阶段一次性地完全解决该阶段的工作,不会出现遗漏、错误等情况,二实际上这是不现实或者不可能的。
2.4 原型模型

2.5 原型模型开发阶段
- 原型开发阶段
- 目标软件开发阶段
2.6 开发原型的途径
- 利用模拟软件系统的人机界面和人际交互方式
- 真正开发一个原型
- 找来一个或几个正在运行的类似软件进行比较
2.7 螺旋模型

2.8 螺旋模型每个阶段的组成
- 目标设定
- 风险分析
- 开发和有效验证
- 评审
三、敏捷模型
3.1 敏捷型方法的特点
- 敏捷方法是“适应性”而非“预设性”
- 敏捷方法是“面向人”而非“面向过程”
3.2 敏捷方法的核心思想
- 敏捷方法是适应型,而非可预测型
- 敏捷方法是以人文本,而非以过程为本
- 迭代增量式的开发过程
3.3 常见的敏捷方法实践
- 极限编程(XP)
- 水晶系列方法
- Scrum
- 特征驱动开发方法(FDD)
3.4 极限编程的基础和价值
- 加强交流
- 从简单做起
- 寻求反馈
- 勇于实事求是
3.5 FDD认为软件开发需要的3要素
- 人
- 过程
- 技术
3.6 FDD定义了6中项目角色
- 项目经理
- 首席架构师
- 开发经理
- 主程序员
- 程序员
- 领域专家
3.7 FDD的5个核心过程
- 开发整体对象模型
- 构造特征列表
- 计划特征开发
- 特征设计
- 特征构建
四、统一过程模型(RUP:Rational Unified Process)
4.1 RUP的生命周期
- 业务建模
- 需求
- 分析与设计
- 实现
- 测试
- 部署
- 配置与变更管理
- 环境
4.2 RUP中每个循环中的过程
- 初始阶段:定义最终产品视图和业务模型,并确定系统范围
- 细化阶段:设计及确定系统的体系结构,指定工作计划及资源要求
- 构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交
- 移交阶段:把产品提交给用户使用
4.3 RUP中的核心概念
- 角色(Role):Who的问题
- 活动(Activity):How的问题
- 制品(Artifacts):What的问题
- 工作流(Workflow):When的问题
4.4 RUP的特点
- 用例驱动
- 以体系结构为中心
- 迭代和增量
4.5 RUP的视图模型
- 用例视图
- 逻辑视图
- 实现视图
- 进程视图
- 部署视图

4.6 软件开发采用迭代和增量的好处
- 在软件开发的早起就可以对关键的、影响大的风险进行处理
- 可以提出一个软件体系结构来指导开发
- 可以更好的处理不可避免的需求变更
- 可以较早得到一个可运行的系统,鼓舞开发团队的士气,增强项目成功信心
- 为开发人员提供一个能更有效工作的开发过程
五、软件能力成熟度模型
5.1 CMMI的5个成熟度等级
- Level 1 初始级
- Level 2 已管理级
- Level 3 已定义级
- Level 4 量化管理级
- Level 5 优化级
相关文章:
系统架构设计师(第二版)学习笔记----软件工程
【原文链接】系统架构设计师(第二版)学习笔记----软件工程 文章目录 一、软件工程1.1 软件危机的表现1.2 软件工程的内容 二、软件过程模型2.1 软件的声明周期2.2 瀑布模型2.3 瀑布模型的缺点2.4 原型模型2.5 原型模型开发阶段2.6 开发原型的途径2.7 螺旋…...
C与C++字符串分割方法示例汇总
在C语言中,没有内置的字符串分割函数。但是,你可以使用其他字符串操作函数和循环来实现字符串分割。这里是使用 strtok 函数在C中分割字符串的示例: #include <stdio.h> #include <string.h> int main() {char str[] "Hel…...
HTTP代理与VPN:网络代理技术的比较
HTTP代理和VPN是两种常见的网络代理技术,它们可以帮助用户隐藏自己的IP地址、保护网络隐私、绕过网络限制等。本文将介绍HTTP代理和VPN的定义、工作原理、优缺点以及使用场景。 一、HTTP代理 HTTP代理是一种通过代理服务器转发网络请求的技术。当用户发起网络请求时…...
免费低代码平台,助企业高效管理任务
编者按:本文主要介绍了免费的低代码平台实现了高效的任务管理系统,助力企业在任务管理方面的效率更上一层楼!这个免费的低代码平台,将提高员工的工作效率。它不仅是一个任务管理系统,更是一个能让 企业 摆脱繁琐工作&a…...
基于conda的相关命令
conda 查看python版本环境 打开Anaconda Prompt的命令输入框 查看自己的python版本 conda env list激活相应的python版本(环境) conda avtivate python_3.9 若输入以下命令可查看python版本 python -V #注意V是大写安装相应的包 pip install 包名5.查看已安装…...
【微信小程序】swiper的使用
1.swiper的基本使用 <jxz-header></jxz-header> <view class"banner"><swiperprevious-margin"30rpx"autoplayinterval"2000"indicator-dotsindicator-color"rgba(0,0,0,0.3)"indicator-active-color"#bda…...
iText实战--PDF和iText 简介
PDF可以做如下事务 iText 5步创建PDF import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter;public class PdfHelloWorld {/*** param args*/public static void main(String[]…...
「大数据-0.1」虚拟机VMware安装、配置、使用、创建大数据集群教程
目录 一、下载VMware Wworkstation Pro 16 二、安装VMware Wworkstation Pro 16 三、检查与设置VMware的网卡 1. 检查 2. 设置VMware网段 四、在VMware上安装Linux虚拟机 五、对安装好的虚拟机进行设置 1. 打开设置 2. 设置中文 3. 修改字体大小 4. 修改终端字体大小 5. 关闭虚…...
【HTTP】GET 和 POST 的区别
GET 和 POST 的区别 首先: GET 和 POST 没有本质区别, 具体来说, GET 的使用场景可替换为 POST,POST 使用的场景也可以替换为 GET. 语义上的区别: GET 通常用来获取数据, POST 通常用来上传数据. 现状是 GET 也经常用来上传数据, POST 也经常用来获取数据. 数据存放的位置不同…...
Unity Asset Bundle Browser 工具
Unity Asset Bundle Browser 工具 您可以在 Unity 项目中使用 Asset Bundle Browser 工具能够查看和编辑资源包的配置。 有关更多信息,请参阅 Unity Asset Bundle Browser 文档。 注意:此工具是不受支持的实用程序。查看极大的资源包可能会导致性能下…...
使用Linkerd实现流量管理:学习如何使用Linkerd的路由规则来实现流量的动态控制
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
1462. 课程表 IV
文章目录 Tag题目来源题目解读解题思路方法一:Floyd传递闭包方法二:拓扑排序 思考写在最后 Tag 【拓扑排序】【传递闭包】【并查集】【数组】 题目来源 1462. 课程表 IV 题目解读 给你一个表示课程先决条件的数组 prerequisites,prerequis…...
QTday2
完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮…...
thrift的简单使用
写在前面 本文一起看下一种由facebook出品的rpc框架thrift。 源码 。 1:开发步骤 1:编写thrift idl文件 2:根据thrift idl文件生成java模板代码 3:继承模板代码的*.Iface接口给出server的具体服务实现 4:使用模板的HelloWorldSe…...
Python实现猎人猎物优化算法(HPO)优化随机森林分类模型(RandomForestClassifier算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…...
2023年7月京东平板电脑行业品牌销售排行榜(京东销售数据分析)
鲸参谋监测的京东平台7月份平板电脑市场销售数据已出炉! 根据鲸参谋电商数据分析平台的相关数据显示,今年7月份,京东平台上平板电脑的销量为68万,同比增长超过37%;销售额为22亿,同比增长约54%。从价格上看…...
HTML显示中文空格字符,emsp;一个中文字符,ensp;半个中文字符
 一个中文字符  半个中文字符 <ul><li class"li">姓  名:<input type"text" /></li><li class"li">手 机 号:<input type"…...
Python基础指令(上)
Python基础指令上 常量和表达式变量和类型1. 什么是变量2. 变量的语法2.1 定义变量2.2 使用变量 3. 变量的类型4. 为什么要有这么多类型5. 动态类型特性 注释输入输出1. 程序与用户的交互2. 通过控制台输出3. 通过控制台输入 运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. …...
Python之FastAPI返回音视频流
Python之FastAPI返回音视频流 今天想要记录一下困扰我几天的一个问题,关于FastAPI返回音视频流。首先FastAPI挂载静态资源其实超级简单,但是对于音视频流,如果你想要有播放进度可以拖动,需要单独处理。 有以下几点想跟大家分享&a…...
文件名批量重命名与翻译的实用指南
在日常办公中,我们经常遇到需要批量修改文件名并进行翻译的情况。手动一个一个修改文件名既费时又繁琐,而且还可能出现错误。今天,我们将介绍一种高效的方法,利用文件管理工具“固乔文件管家”,能够快速批量修改文件名…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
