系统架构设计师(第二版)学习笔记----软件工程
【原文链接】系统架构设计师(第二版)学习笔记----软件工程
文章目录
- 一、软件工程
- 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…...
文件名批量重命名与翻译的实用指南
在日常办公中,我们经常遇到需要批量修改文件名并进行翻译的情况。手动一个一个修改文件名既费时又繁琐,而且还可能出现错误。今天,我们将介绍一种高效的方法,利用文件管理工具“固乔文件管家”,能够快速批量修改文件名…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
