系统架构设计师教程 第5章 5.1 软件工程 笔记

news2024/9/20 13:38:43

5.1 软件工程 ★★★★☆

5.1.1 软件工程定义

软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下4个方面。
(1)P(Plan)——软件规格说明。规定软件的功能及其运行时的限制。
(2)D(Do) — —软件开发。开发出满足规格说明的软件。
(3)C(Check) — —软件确认。确认开发的软件能够满足用户的需求。
(4)A(Action)——软件演进。软件在运行过程中不断改进以满足客户新的需求。

5.1.2 软件过程模型 ★★★★★

软件要经历从需求分析、软件设计、软件开发、运行维护,直至被淘汰的全过程,这个全过程称为软件的生命周期。软件生命周期描述了软件从生到死的全过程。
1.瀑布模型 (Waterfall Model)
在这里插入图片描述
瀑布模型的特点是容易理解,管理成本低,每个阶段都有对应的成果产物,各个阶段有明显的界限划分和顺序要求,一旦发生错误,整个项目推倒重新开始。
适用于需求明确的项目,一般表述为需求明确、或二次开发,或者对于数据处理类型的项目

优点是:容易理解,管理成本低,强调开发的阶段性早期计划及需求调查和产品测试。
不足之处是:客户必须能够完整、正确和清晰地表达他们的需要,需求或设计中的错误往往只有到了项目后期才能够被发现。

2.原型化模型(Prototype Model)
在这里插入图片描述
两个阶段
(1)原型开发阶段。

(2)目标软件开发阶段。

3.螺旋模型 (Spiral Model)
在这里插入图片描述
螺旋模型是一种演进式的软件过程模型,结合了原型开发方法的系统性和瀑布模型的可控性特点,加入风险分析
它是由目标设定、风险分析、开发和有效性验证、评审这一循环组成

5.1.3 敏捷模型 ★★★★★

1.敏捷方法的特点
适应性、面向人的

2.敏捷方法的核心思想
(1)敏捷方法是适应型,而非可预测型。与传统方法不同,敏捷方法拥抱变化,也可以说 它的初衷就是适应变化的需求,利用变化来发展,甚至改变自己,最后完善自己。
(2)敏捷方法是以人为本,而非以过程为本。传统方法以过程为本,强调充分发挥人的特性,不去限制它。并且软件开发在无过程控制和过于严格烦琐的过程控制中取得一种平衡,以保证软件的质量。
(3)迭代增量式的开发过程。敏捷方法以原型开发思想为基础,采用迭代增量式开发,发行版本小型化。它根据客户需求的优先级和开发风险,制订版本发行计划,每一发行版都是在前一成功发行版的基础上进行功能需求扩充,最后满足客户的所有功能需求。

3.主要敏捷方法简介
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想。常见的敏捷开发方法有极限编程法、水晶法、并列争球法和自适应软件开发方法。
(1)极限编程 (Extreme Programming,XP)。
极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。
它的基础和价值观是交流、朴素、反馈和勇气,即任何一个软件项目都可以从4个方面改善:加强交流;从简单做起;寻求反馈;勇于实事求是。

XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其他一系列的方法,开发人员和客户可以非常清楚开发进度、 变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

(2)水晶系列方法。由Alistair Cockburn 提出。以人为中心,其目的是发展一种提倡“机动性 的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。Crystal 家族实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,它的发明使得敏捷 团队可以根据其项目和环境选择最合适的 Crystal 家族成员。

(3)Scrum。侧重于项目管理。Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum包括了一系列实践和预定义角色的过程骨架(是一种流程、计划、模式,用于 有效率地开发软件)。
在Scrum 中,使用产品Backlog 来管理产品的需求,产品 Backlog 是一个按照商业价值排序的需求列表。根据Backlog 的内容,将整个开发过程被分为若干个短的迭代周期 (Sprint)。 在 Sprint 中,Scrum 团队从产品Backlog 中挑选最高优先级的需求组成 Sprint backlog。在每个 迭代结束时, Scrum 团队将递交潜在可交付的产品增量。当所有 Sprint结束时,团队提交最终 的软件产品。

(4)特征驱动开发方法 (Feature Driven Development,FDD)。FDD是由Jeff De Luca和大师Peter Coad提出来的。FDD 是一个迭代的开发模型。FDD认为有效的软件开发需要3个要素:人、过程和技术。
FDD 定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。根据项目大小,部分角色可以重复。
FDD 有5个核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建。其中,计划特征开发根据构造出的特征列表、特征间的依赖关系进行计划,设计出包 含特征设计和特征构建过程组成的多次迭代。

5.1.4 统一过程模型 (RUP) ★★★★★

软件统一过程 (Rational Unified Process,RUP)
1 .RUP 的生命周期
9个核心工作流
需求、分析与设计、业务建模、环境、项目管理、实现、配置与变更管理、测试、部署
4个阶段
● 初始 (inception) 阶段:定义最终产品视图和业务模型,并确定系统范围。
● 细化 (elaboration) 阶段:设计及确定系统的体系结构,制订工作计划及资源要求。
● 构造 (construction) 阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
● 移交 (transition) 阶段:把产品提交给用户使用。
在这里插入图片描述

  1. RUP 中的核心概念
    ● 角色 ( Role ): Who的问题。角色描述某个人或一个小组的行为与职责。
    ● 活动 (Activity):How 的问题。活动是一个有明确目的的独立工作单元。
    ● 制品(Artifact):What的问题。制品是活动生成、创建或修改的一段信息。
    ● 工作流 (Workflow):When 的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。

3 . RUP 的特点
RUP是用例驱动、以体系结构为中心、迭代和增量的软件开发过程。
在“4+1”视图模型中,
分析人员和测试人员关心的是系统的行为,会侧重于用例视图;
最终用户关心的是系统的功能,会侧重于逻辑视图;
程序员关心的是系统的配置、装配等问题,会侧重于实现视图;
系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,会侧重于进程视图;
系统工程师关心的是系统的发布、安装、拓扑结构等问题,会侧重于部署视图。
在这里插入图片描述

5.1.5 软件能力成熟度模型

软件能力成熟度模型 (Capability Maturity Model for Software,CMM)
CMMI(Capability Maturity Model Integration for Software, 软件能力成熟度模型集成)
5个成熟度等 级
1)Level 1 初始级
过程通常是随意且混乱的。能产出能用的产品与服务,但经常超出在计划中记录的预算与成本。
2)Level2 已管理级
组织需要为过程建立明确的目标,并能实现成本、进度和质量目标等。
3)Level3已定义级
企业能够根据自身的特殊情况定义适合自己企业和项目的标准流程,将这套 管理体系与流程予以制度化,同时企业开始进行项目积累,企业资产的收集。
4)Level 4量化管理级
组织建立了产品质量、服务质量以及过程性能的定量目标。成熟度级别3 级与4级的关键区别在于对过程性能的可预测。
5)Level 5优化级
关注于通过增量式 的与创新式的过程与技术改进,不断地改进过程性能。组织使用从多个项目收集来的数据对整体的组织级绩效进行关注。

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

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

相关文章

成功晋级 | 3本ELSEVIER期刊正式被ESCI收录,最快的录用后2天即可出版

爱思唯尔(ELSEVIER)作为一家国际顶尖出版集团,自1880年创办以来,旗下出版期刊有2800多种,其中包含《柳叶刀》《细胞》等TOP期刊,在学术科研界享誉盛名。 根据八月份公布的最新SCI目录显示,ELSE…

基于单片机的水情监测站设计

本设计以STM32单片机为控制核心,利用DS18B20温度检测模块,TSW-30浊度传感器,PH值传感器,完成对水环境温度,水浊度,PH值的检测。系统使用OLED12864作为系统显示模块,使用WiFi模块来实现对监测数据…

GPU池化如何帮助用户灵活“避坑”

随着5G、人工智能、云计算、大数据、IoT等技术的推动,万物互联的时代即将到来。因为大量AI应用都依赖GPU的超强计算能力,可以预见算力需求将越来越大,GPU在数据中心的地位也会越来越高。 然而理想是丰满的,现实却是骨感的&#x…

Vue3 : ref 与 reactive

目录 一.ref 二.reactive 三.ref与reactive的区别 四.总结 一.ref 在 Vue 3 中,ref 是一个用于创建可读写且支持数据跟踪的响应式引用对象。它主要用于在组件内部创建响应式数据,这些数据可以是基本类型(如 number、string、boolean&…

音视频入门基础:AAC专题(4)——ADTS格式的AAC裸流实例分析

一、ADTS格式的AAC裸流实例分析 在《音视频入门基础:AAC专题(3)——AAC的ADTS格式简介》中对AAC的ADTS格式进行了简介。下面用一个具体的例子来对ADTS格式的AAC裸流进行分析。 通过《音视频入门基础:AAC专题(2&#x…

内蒙古优质农畜产品天津推介会成功举办

9月10日至11日,内蒙古自治区人民政府驻北京办事处联合内蒙古自治区农牧厅、商务厅、市场监督管理局及内蒙古国贸集团主办的内蒙古优质农畜产品天津推介会在天津市和平区津湾广场成功举办。 本次推介会采取了两会(品牌推介会、产销对接会)、三…

PoS 和 PoW 矿机系统区块链公链开发成本分析

区块链公链的开发成本受到多个因素的影响,尤其是不同共识机制(如 PoS 和 PoW)的选择。本文将深入分析 PoS(权益证明)和 PoW(工作量证明)矿机系统的特点,以及其开发公链的成本和价格组…

SAP自动化-AS02修改资产信息

Python源码 #-Begin-----------------------------------------------------------------#-Includes-------------------------------------------------------------- import sys, win32com.client import os#-Sub Main-----------------------------------------------------…

《深度学习》—— 神经网络模型中的损失函数及正则化惩罚和梯度下降

文章目录 前言一、损失函数二、正则化惩罚三、梯度下降 前言 在神经网络中,损失函数、正则化惩罚和梯度下降是三个关键的概念,它们共同作用于网络的训练过程,以提升网络的性能和泛化能力。神经网络模型结构如下图所示: 在构建好一…

Linux 挂载磁盘与开机自动挂载操作指南

Linux 挂载磁盘与开机自动挂载操作指南 文章目录 Linux 挂载磁盘与开机自动挂载操作指南一 挂载磁盘1 查看硬盘信息2 新增数据盘执行分区3 新建分区4 创建一个主分区5 分区编号6 初始磁柱编号7 截止磁柱编号8 查看新建分区信息9 分区结果写入10 新分区同步操作系统11 设置新分区…

[docker]入门

本文章主要讲述的是,docker基本实现原理,docker概念的解释,docker的使用场景以及docker打包与部署的应用。 文章中docker所运行的系统:CentOS Linux release 7.9.2009 (Core) 目录 docker是什么,什么时候需要去使用 …

香港电讯SASE解决方案:终端与云端的安全护航

现代工作模式存在网络安全隐忧 随着远程办公模式的普及,越来越多员工使用各种个人终端设备,如台式电脑、笔记本电脑、智能手机、平板电脑等进行协作办公。然而,由于IT人才短缺和员工隐私等因素,许多企业无法统一管理端点设备的安…

Gitlab实现多项目触发式自动CICD

工作中可能会遇到这种场景,存在上游项目A和下游项目B,项目B的功能依赖项目A(比如B负责日志解析,A是日志描述语言代码),这种相互依赖的项目更新流程一般如下: A项目更新,通知B项目开发…

怎么将flv转换成mp4格式?这几种转换方法超多人在用!

怎么将flv转换成mp4格式?FLV,这一视频格式在大众视野中相对边缘化,其鲜为人知并非偶然,背后隐藏着多重挑战,首要挑战在于其兼容性的局限,由于FLV的小众属性,许多现代软件与操作系统并未给予充分…

多个音频怎么合并?把多个音频合并在一起的方法推荐

多个音频怎么合并?无论是制作连贯的播客节目还是将音乐片段整合成专辑,音频合并已成为许多创作者的常见需求。通过有效合并音频,可以显著提升项目的整体质量,确保内容的连续性和一致性。然而,合并后的文件通常比原始单…

滑动窗口(4)_将x减到0的最小操作数

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 滑动窗口(4)_将x减到0的最小操作数 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目…

CANFD在乘用车应用说明

随着汽车电子的高速发展,车内信息的急剧增多,传统的CAN总线的数据传输能力已经很难满足车辆ECU的数据传输需求了,此时CANFD就应运而生了。CANFD和CAN最主要的区别就是CANFD的ID段和数据段能够以不同的速率传输数据,这就保证了即使…

【Python】生成图片验证码

1. 首先安装第三方库PIL(图像处理库) pip install pillow 2. 编写生成验证码代码 这里字体 SimHei.ttf 文件要放在该文件目录下。 import random from PIL import Image, ImageDraw, ImageFont, ImageFilterdef check_code(width128, height30, char…

UE-- 引入IOS framework 库 真机运行闪退

UE-- 引入IOS framework 库 真机运行闪退 事请是这样的 我编写了一个插件 里面是 调用IOS原生代码的 obj-c与swift混编 我从Xcode编写了一个framework库(动态库) 然后放入ue进行引用 正常的打包出来了 ipa 文件 结果真机运行报错了 Exception Typ…

Apache SeaTunnel Committer 进阶指南

Apache SeaTunnel 作为一个开源的数据集成工具,旨在简化和加速海量数据的采集和传输。 社区的 Committer 是指拥有项目存储库的写权限的社区成员,即 Committer 可以自行修改代码、文档和网站,也可以合并其他成员的贡献。成为 Apache SeaTunn…