【软件工程】第二讲软件过程

news2024/9/20 8:47:11

【软件工程】第二讲软件过程

文章目录

  • 【软件工程】第二讲软件过程
    • 1. 软件过程概述
      • 1.1 软件工程的金三角
      • 1.2 软件过程的定义
      • 1.3 软件过程的组成
    • 2. 软件生命周期模型
      • 2.1 瀑布模型
      • 2.2 增量模型
      • 2.3 演化模型
    • 3. 统一软件过程RUP
      • 3.1 RUP最佳实践
      • 3.2 统一软件过程RUP
    • 4. 敏捷过程
      • 4.1 敏捷过程
      • 4.2 SCRUM
      • 4.3 喷泉模型

1. 软件过程概述

1.1 软件工程的金三角

  • :完成软件开发的主体
  • 技术:提供了建造软件在技术上需要“如何做”的方法
  • 管理:提供了质量管理、成本管理、时间管理、范围管理等知识和技能

过程:这是将人、技术、管理结合在一起的凝聚力;过程是产品成本、进度和质量的主要决定因素

1.2 软件过程的定义

Defines who is doing what, when to do it, and how to reach a certain goal.

在这里插入图片描述

1.3 软件过程的组成

软件过程,也称为软件生存周期过程,是指软件生存周期中的一系列相关过程,其中过程就是活动的集合,活动是任务的集合,任务要起到把输入加工成输出的作用

活动的执行可以是顺序的、迭代的(重复的)、并行的、嵌套的,或者是有条件地引发的

2. 软件生命周期模型

软件生存周期模型,又称软件开发模型,是软件生命周期的一个框架,规定了软件开发、运作和维护等所需的过程、活动和任务

软件生存周期模型分类:

  • 瀑布模型Waterfall Model
  • 增量模型Incremental Model
  • 演化模型Evolutionary Model

2.1 瀑布模型

最早的软件开发模型,又称为线性顺序模型

sp20240902_184424_420.png

  • 特点
    • 强调阶段的划分及其顺序性
    • 强调各阶段工作及其文档的完备性
    • 每个阶段结束之前,都从技术和管理两个角度进行严格的审查
    • 是一种严格线性的、按阶段顺序的、逐步细化的开发模式
  • 适用时机
    • 所有功能、性能等要求能一次理解和描述时
    • 所有的系统功能一次交付时
    • 必须同时淘汰全部老系统时
  • 瀑布模型的价值
    • 结构简单明了;历史悠久、应用面广泛、为广大软件工作者所熟悉;已有与之配套的一组十分成熟的开发方法和丰富的支撑工具
    • 一种较为有效的管理模式:订计划、成本预算、组织开发人员、阶段评审、文档管理,从而对软件质量有一定的保证
  • 瀑布模型的风险
    • 获得完善的需求规约是非常困难的
    • 难以适应快速变化需求
    • 系统太大时,难以一次做完
    • 反馈信息慢
    • 极可能引起开发后期的大量返工,如返工到需求、设计等早期活动

2.2 增量模型

需求和架构确定后,增量式进行开发,构造一系列可执行的版本

在这里插入图片描述

  • 增量模型的风险
    • 需求未被很好地理解
    • 一次要求所有功能
    • 需求迅速发生变化
    • 事先打算采用的技术迅速发生变化
    • 长时期内仅有有限的资源/人员/资金
  • 增量模型的适用时机
    • 需要早期获得所有需求
    • 根据需求建立稳定的软件架构
    • 中间产品可以提供使用
    • 系统被自然地分割成增量
    • 工作人员/资金可以逐步增加

2.3 演化模型

  • 增量现状

    • 软件需求在软件开发过程中常常发生改变,想要一次迭代就开发出最终产品是不可能的
    • 紧迫的市场期限使得难以一下子完成一个完善的软件产品
  • 解决方案:演化模型:只要核心能够被很好地理解,就可以进行渐进式开发,其余需求可以在后续的迭代中进一步定义和实现。这种过程模型称为演化模型,它能很好地适应随时间演化的产品的开发

  • 特点

    • 迭代的开发方法,渐进地开发各个可执行版本,逐步完善软件产品。每个版本在开发时,开发过程中的活动和任务顺序地或部分重叠平行地被采用
    • 与增量模型地区别是:需求在开发早期不能被完全了解和确定,在一部分被定义后开发就开始了,然后在每个相继的版本中逐步完善
  • 迭代设计

    • 每次迭代都应产生一个可执行的软件版本,每次迭代都包括计划、需求、设计、编码、测试、总结等活动
    • 要求有计划的迭代
      • 通常有3-9个迭代组成
      • 风险驱动:项目的风险越高,迭代就越多;风险越高的工作,越在早期的迭代中执行
      • 迭代可以并行、重叠、串行
      • 迭代内部的活动可以交叉并行
  • 演化模型已称为主流

    • 现代软件过程都采用演化模型

      • 统一软件过程RUP
      • 敏捷过程(SCRUM、XP等)
      • 净室(Cleanroom)软件过程
    • 演化模型的“子类”

      • 原型Prototyping

        在这里插入图片描述

      • 螺旋模型Spiral Model

        sp20240902_194840_265.png

3. 统一软件过程RUP

3.1 RUP最佳实践

  • 迭代式开发:迭代式开发允许在每次迭代过程中需求都可以有变化,这种开发方法通过一系列细化来加深对问题的理解,因此能更容易地容纳需求的变更
  • 管理需求:RUP描述了如何提取、组织系统的功能性需求和约束条件并把它们文档化
  • 使用基于构件的体系结构:RUP提供了使用现有的或新开发的构件定义体系结构的系统化方法,从而有助于降低软件开发的复杂性,提高软件重用率
  • 可视化建模:与可视化建模语言UML紧密地联系在一起,在开发过程中建立起软件系统的可视化模型,可以帮助人们提高管理软件复杂性的能力
  • 验证软件质量:软件质量评估不再是事后型的或由单独小组进行的孤立活动,而是内建在贯穿于整个开发过程的、由全体成员参与的所有活动中
  • 验证软件变更:RUP描述了如何控制、跟踪和监控修改,以确保迭代开发的成功

3.2 统一软件过程RUP

在这里插入图片描述

一个二维的生命周期模型,纵轴代表核心工作流,横轴代表时间;共有9各核心工作流,前六个为核心过程工作流程,后三个为核心支持工作流程

RUP是一个风险驱动的、基于UML和构件式架构的演化开发过程

  • RUP的四个阶段

    在这里插入图片描述

    • INCEPTION: Define the scope of project
    • ELABORATION: Plan project, specify features, baseline architecture
    • CONSTRUCTION: Build the product
    • TRANSITION: Transition the product into end user community
    • 每个阶段的结束都是一个大的里程碑
  • 阶段和迭代

    sp20240904_105318_430.png

    An iteration is a distinct sequence of activities with an established plan and evaluation criteria, resulting in an executable release ( internal or external )

  • 一个迭代周期:一个小的瀑布模型

    在这里插入图片描述

4. 敏捷过程

4.1 敏捷过程

  • 敏捷过程
    • 敏捷过程很容易适应变化并迅速做出自我调整,在保证质量的前提下,实现企业效益的最大化
    • 敏捷过程在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品
    • 2001年2月,新方法的一些创始人在美国犹他州成立Agile联盟
  • 敏捷宣言
    • 较之于过程和工具,更注重人及其相互作用的价值
    • 较之于无所不及的各类文档,更注重可运行的软件的价值
    • 较之于合同谈判,更注重与客户合作的价值
    • 较之于按计划行事,更注重响应需求变化的价值
  • 敏捷过程的适用范围:不是到处可适用的
    • 需求不稳定、易挥发
    • 有责任感和积极向上的开发人员
    • 用户容易沟通并能参与
    • 小于10个人的项目团队

4.2 SCRUM

  • Scrum — 敏捷的软件项目管理

    • 1994年由Ken Schwaber和Jeff Sutherland提出
    • Scrum一词来源于橄榄球运动,意为两队并列争球
    • 过程核心:
      • 一个体育队加小队长,全体团队负责拿球向前冲
      • 团队成员能够独立地、集中地在创造性地环境下工作
  • Scrum的核心准则

    • 迭代开发
    • 自我管理
  • Scrum的过程框架
    在这里插入图片描述

    • Sprint:周期为30天的迭代
    • Backing:待办事项表(功能和非功能需求清单)
    • Daily Scrum:每日15分钟简会
  • Scrum团队

4.3 喷泉模型

在这里插入图片描述

  • “喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。迭代是软件开发过程中普遍存在的一种内在属性。用面向对象方法学开发软件时,工作重心应该放在生命周期中的分析阶段
  • 图中代表不同阶段的圆圈互相重叠,这明确表示两个活动之间存在交迭
  • 图中在一个阶段内的向下箭头代表该阶段内的迭代
  • 图中较小的圆圈代表维护,圆圈较小象征着采用了面向对象泛型之后维护时间缩短了

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

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

相关文章

Qt-常用控件(2)-按钮类和显示类

​ 1. QPushButton 使用 QPushButton 表示一个按钮.这也是当前我们最熟悉的一个控件了 QPushButton 继承自 QAbstractButton.这个类是一个抽象类.是其他按钮的父类 在 Qt Designer中也能够看到这⾥的继承关系 QAbstractButton 中,和 QPushButton 相关性较⼤的属性 属性说明t…

触想全新Z系列工控机扩展IIoT应用潜能

8月31日,触想重磅推出全新Z系列高性能、扩展型工控机——TPC05/06/07-WIPC,提供标准版/双卡槽/四卡槽3款机型选择。 作为边缘计算、机器视觉、AI智能和工业应用的理想机型,Z系列工控机支持Intel第12/13/14代Core™ i3/i5/i7/i9处理器&#xf…

git如何灵活切换本地账号对应远程github的两个账号

git如何灵活切换本地账号对应远程github的两个账号 问题: 有时候我们会同时维护两个github的账号里面的仓库内容,这时候本地git需要频繁的切换ssh,以方便灵活的与两个账号的仓库可以通信。这篇日记将阐述我是怎么解决这个问题的。1. 第一个账…

kubernetes--配置与存储(ConfigMap、加密数据配置Secret、SubPath、热更新、Volumes、NFS挂载、PV与PVC)

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 出自B站博主教程笔记: 完整版Kubernetes(K8S)全套入门微服务实战项目,带你一站式深入掌握K8S核心能…

Tranformer分布式特辑

随着大模型的发展,如何进行分布式训练也成了每位开发者必备的技能。 单机训练 CPU OffloadingGradient Checkpointing 正向传播时,不存储当前节点的中间结果,在反向传播时重新计算,从而起到降低显存占用的作用 Low Precision Da…

HarmonyOS 是如何实现一次开发多端部署 -- HarmonyOS自学1

一次开发多端部署遇到的几个关键问题 为了实现“一多”的目标,需要解决如下三个基础问题: 问题1:页面如何适配 不同设备间的屏幕尺寸、色彩风格等存在差异,页面如何适配。 问题2:功能如何兼容 不同设备的系统能力…

身份证实名认证接口如何用C#实现

一、什么是身份证实名认证? 身份证实名认证又叫身份证实名核验、身份证二要素、身份实名核验、身份证验证,输入姓名、身份证号,校验此两项是否匹配,同时返回生日、性别、籍贯等信息,同时支持港澳台证件核验。 二、身…

【Three.js】实现护罩(防御罩、金钟罩、护盾)效果

前言: 在这篇博客中,我们将使用 Three.js 从零开始生成一个护罩效果。护罩将使用自定义的 Shader 材质,带有动画效果,最终呈现一个视觉上酷炫的护罩。此篇文章的重点将放在如何生成一个3D护罩,其它功能将在之后的博客…

SprinBoot+Vue旅游网站的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…

AI和新基建赋能智慧工地超融合管理平台解决方案

1. 项目背景与需求 电力行业的工程管理正朝着智慧化发展,但目前仍处于起步阶段。为满足数字化、网络化、智能化的发展需求,需要构建一个高效综合监控平台,实现对电力项目全过程的精益化管控。 2. 综合管理平台的构建 该平台集成了超融合实…

【Visual Studio 报错】未加载 wntdll.pdb(一种可行的解决办法)

调试程序时,会出现下面这个报错 分析原因: 出现未加载 wntdll.pdb 报错大概率是你的指针使用错误 ,比如使用野指针、越界访问、或者堆区空间释放方式错误等。 这里以 堆区空间释放方式错误 为例子 1、堆区开辟的数组空间使用 delete 释放 …

Java 日志

日志就是为了将程序的运行状况保存到文件中去。 命名的一个小细节: 比如把信息保存到文件中这个方法的名字可以写为infoToFile,有个人为了偷懒,写成info2File,发现效果还挺好,一下就能分清两个单词,所以后…

windows版本mysql8.2忘记密码

忙了一年的项目终于有点空闲时间了(996累成狗),想折腾点开源项目, 结果发现忘了本地mysql密码,查了一些资料,记录如下: --windows mysql8.2忘记密码(思路整理:先无密码…

【信创建设】信息系统信创建设整体技方案(word原件完整版)

信创,即“信息技术应用创新”。我国自主信息产业聚焦信息技术应用创新,旨在通过对IT硬件、软件等各个环节的重构,基于我国自有IT底层架构和标准,形成自有开放生态,从根本上解决本质安全问题,实现信息技术可…

Superset二次开发之新增复选框Checkbox筛选器

一. 背景 Superset目前支持的筛选类型:值、数值范围、时间列、时间粒度、时间范围 5种类型,显然无法满足业务需求。根据产品需要,需要支持复选框、单选框、级联选择等类型的筛选器。本文探讨复选框、单选框的技术实现方式。 二. 效果预览 三. 实现思路 复用 值 筛选器模块,…

计算蛋白质结构中氨基酸之间的方向和方位

在蛋白质结构分析中,方向(direction)和方位(orientation)是描述相邻氨基酸(残基)之间相对空间关系的重要几何参数。可以通过原子坐标来计算相邻氨基酸之间的方向向量和方位关系。以下是这些概念的详细解释以及如何通过 PyTorch 来计算它们。 1. 方向 (Direction) 方向…

二、Maven工程的创建--JavaSEJavaEE

1、idea创建Maven JavaSE工程: 2、idea创建Maven JavaEE工程: (1)手动创建 (2)插件方式创建 在idea里安装插件JBLJavaToWeb; 选择需要生成的项目文件后,右击: 项目…

拉普拉斯分布-简要介绍

拉普拉斯分布,又称双指数分布,是概率论中的一种连续概率分布。拉普拉斯分布是由法国数学家皮埃尔-西蒙拉普拉斯在研究误差理论时提出的,在数据集中经常用于描述具有尖峰和长尾特征的分布。 拉普拉斯分布的定义 拉普拉斯分布的概率密度函数&…

HOT 100(七)栈、堆、贪心算法

一、栈 1、每日温度 使用单调递减栈来解决。主要思路是遍历temperatures数组,利用栈来存储还没有找到比当前温度高的天数的索引。当遇到比栈顶索引所对应温度更高的温度时,就可以确定当前这一天的温度比之前那一天高。索引的差值就是等待的天数。 求一…

前端 Vue3 项目开发—— ESLint prettier 配置代码风格

ESLint & prettier 介绍 如果你用的是 pnpm create vue 来创建项目,那么创建项目时就会让你选择是否添加 ESLint 和 prettier 我们在上一篇博客中详细介绍过 ESLint,可以说上一篇博客是这篇博客的先修知识,所以各位小伙伴们请先去看看我…