考试宝典——软件过程与管理重点知识总结

概论

  1. 软件工程三要素

    1. 过程
    2. 方法
    3. 工具
  2. 软件过程的定义

    软件过程是用于软件开发及维护的一系列活动、方法及实践

  3. 常见软件过程分类(五大类)

    1. 客户-供应商过程:内部直接影响到客户、外部直接影响开发、向客户交付软件以及软件正确操作与使用的过程。
    2. 工程过程:软件系统、产品的定义、设计、实现以及维护的过程。
    3. 支持过程
    4. 管理过程:整个软件生命周期中为工程过程、支持过程和客户-供应商过程的实践活动提供指导、跟踪和监控的过程。
    5. 组织过程
  4. 常见软件过程(主要列举管理过程)

    1. 项目管理:计划、跟踪和协调项目执行及生产所需资源的管理过程。(主要关注时间、成本)
    2. 质量管理:对项目产品和服务的质量加以管理,从而获得最大的客户满意度。(主要关注质量)
    3. 风险管理:整个项目的生命周期中对风险不断的识别、诊断和分析,回避风险、降低风险或消除风险,并在项目以及组织层次上建立有效的风险管理机制。
    4. 子合同管理:选择合格的子合同商并对其进行管理的过程。
      在这里插入图片描述

软件质量管理

软件质量

  1. 定义:软件质量是软件产品满足明确或隐含需要能力的性能和特性的总体。

ISO/IEC 9126

  1. 软件质量度量模型的组成:
    1. 软件质量特性
    2. 软件质量子特性
    3. 软件质量度量评价标准
  2. 六个一级质量特性
    1. 功能性
    2. 可靠性
    3. 易用性
    4. 效率
    5. 可维护性
    6. 可移植性
  3. 一级特性对应的二级特性(选择题)
    在这里插入图片描述

朱兰质量管理三部曲

  1. 质量计划:确定项目应达到的质量标准,以及如何满足质量标准的计划安排和方法。
    1. 质量成本:为达到产品或服务质量而付出所有努力的总成本。
      • 预防成本
      • 评价成本
      • 失效成本
  2. 质量保证:确保项目达到有关标准而开展的有计划、有组织的工作活动。
    1. 正规的质量评价:质量审计
    2. 总结性的质量评价:质量改进
  3. 质量控制:确定项目结果与质量标准是否相符,并及时纠正产品缺陷的过程。
    1. 静态方法:审计
    2. 动态方法:测试

软件项目管理

基本概念

  1. 项目:项目是为完成某一独特的产品服务成果所做的一次性努力。

  2. 项目管理:项目管理就是在项目活动中运用相关知识, 技能, 工具和技术满足项目的要求。

  3. 项目管理的五大过程组:启动、计划、执行、控制和收尾。

  4. 项目管理的十大知识领域:

    1. 项目集成管理
    2. 项目范围管理
    3. 项目时间管理
    4. 项目成本管理
    5. 项目质量管理
    6. 项目人力资源管理
    7. 项目沟通管理
    8. 项目风险管理
    9. 项目采购管理
    10. 项目相关利益者管理

可行性分析

  1. 可行性分析——净现值

    1. 定义:净现值是成本效益分析的有力工具之一。
    2. 优点:
      • 适用性强,能基本满足项目年限相同的互斥投资方案决策。
      • 能灵活地考虑投资风险。

识别软件项目的活动

  1. WBS:WBS是面向可交付成果的对项目任务的分组,它组织并定义了整个项目范围。它是一个分级的树型结构,是对项目由粗到细的分解过程。

软件工作量估计方法

  1. 算法模型
  2. 专家判断
  3. 类比
  4. 自顶向下
  5. 自底向上

软件项目的进度安排

  1. 甘特图

    1. 缺点:无法描述任务的逻辑关系
  2. 关键路径法(CPM)

    1. 定义

      • 关键路径:项目网络图中花费时间最长的活动路线叫做关键路径。
      • 关键活动;组成关键路径的活动。
      • 关键路径法的缺点:关键路径法中的活动周期是确定的,固定不变的,这与现实不太符合。
    2. 关键路径的特点:

      • 关键路径上活动持续时间总和是项目的工期。
      • 关键路径上任何一个活动的延迟都会导致整个项目完工时间延迟。
      • 关键路径是相对的,也是变化的,非关键路径可能变为关键路径,关键路径也可能变为非关键路径。
    3. 计算

      • 核心:正向求最早开始时间和最早结束时间,二者取大作为最早开始时间;反向求最晚开始时间和最晚结束时间,二者取小作为最晚结束时间。

      • 自由时差(空闲缓冲期) = 后续活动的最早开始时间 − 当前活动的最早完成时间 自由时差(空闲缓冲期)=后续活动的最早开始时间-当前活动的最早完成时间 自由时差(空闲缓冲期)=后续活动的最早开始时间当前活动的最早完成时间

        总时差(总缓冲期) = 最晚完成时间 − 最早完成时间 总时差(总缓冲期)=最晚完成时间-最早完成时间 总时差(总缓冲期)=最晚完成时间最早完成时间

        干预缓冲期 = 总缓冲期 − 空闲缓冲期 干预缓冲期=总缓冲期-空闲缓冲期 干预缓冲期=总缓冲期空闲缓冲期

  3. PERT技术(工程评估评审技术)的步骤:

    • 估计每个活动的最可能的时间,乐观的时间,悲观的时间,计算活动的期望周期与标准偏差;
    • 正向遍历得到期望达到事件的日期;
    • 满足目标的可能性。
  4. 关键链法(CCPM)步骤:
    在这里插入图片描述

软件项目的资源管理

  1. 资源:资源是执行项目所需要的任何项和人。
  2. 资源分配直方图
    在这里插入图片描述

软件项目的风险管理

  1. 风险的定义:一个不确定的事件或者情况,若其一旦发生,会对项目的目标,例如:进度、成本和质量,产生积极或消极的影响。

  2. 风险管理的框架
    在这里插入图片描述

  3. 风险处理方法

    • 风险处理的方法—接受风险,规避风险,降低风险,转移风险

    • 风险的分类–4大类:参与者,技术,结构,任务

软件项目的监督和控制

  1. 挣值分析(计算题)

    1. 挣值:赋予每个任务一个“挣值”,表示完成这个任务需要的支出,一般用时间或金钱衡量。

    2. 赋值方法:0/100

    3. 三个数值:

      • 计划价值(PV):已计划工作的预测成本
      • 挣值(EV):已执行工作的预测成本
      • 实际成本(AC):已执行工作的实际成本
    4. 两个偏差:

      • 进度偏差(SV):挣值与计划价值的差
        S V = E V − P V SV=EV-PV SV=EVPV

      • 成本偏差(CV):挣值与实际成本的差

      C V = E V − A C CV=EV-AC CV=EVAC

    5. 两个性能比:

      • 进度性能指标(SPI):SPI < 1——进度落后
        S P I = E V / P V SPI=EV/PV SPI=EV/PV

      • 成本性能指标:CPI < 1——成本超支
        C P I = E V / A C CPI=EV/AC CPI=EV/AC

    6. 完成时间的估计值(TEAC):按照当前进度项目的完成时间估计

      项目的计划周期(SAC)
      T E A C = S A C / S P I TEAC = SAC / SPI TEAC=SAC/SPI
      项目成本预算(EAC):按照当前的进度,项目的总支出的估计

      全部工作的预算(按照原计划,完成所有工作所需的预算成本)(BAC)
      E A C = B A C / C P I EAC = BAC / CPI EAC=BAC/CPI

  2. 例题1:

    在这里插入图片描述

  3. 挣值法参数分析与对应措施表

    序号*三参数关系分析(含义)措施
    1AC > PV > EV SV<0 CV<O效率低 速度较慢 投入超前用工作效率高的人员更换一批工作效率低的人员
    2EV > PV > AC SV>0 CV>0效率高 速度较快 投入延后若偏离不大,维持现状
    3EV > AC > PV SV>0 CV>0效率较高 速度快 投入超前抽出部分人员,放慢进度
    4AC > EV > PV SV>0 CV<0效率较低 速度较快 投入超前抽出部分人员,增加少量骨干人员
    5PV > AC > EV SV<0 CV<0效率较低 速度慢 投入延后增加高效人员投入

软件项目的配置管理

  1. 配置管理的任务
    • 标志变更
    • 控制变更
    • 确保变更正确实现
    • 向受变更影响的组织和个人报告变更
  2. 配置项:软件配置管理的对象,一个软件配置项是项目中一个特定的、可文档化的工作产品集。

经典的软件过程管理

CMM

  1. CMM——软件过程能力成熟度模型

  2. 出发点:CMM描述软件组织一条从无序的、混乱的过程到成熟的、有纪律的过程的改进途径,描绘出软件组织如何增加对软件开发和维护的过程控制,如何向软件工程和管理的优秀文化演变等方面的指导 。

  3. CMM不是过程,不是技术,不是方法,它是一种指导思想。

  4. 体系结构
    在这里插入图片描述
    在这里插入图片描述

    • CMM由5个成熟度级别组成。

      • 初始级:软件过程不稳定,项目执行无序、混乱,没有稳定的开发环境。
      • 可重复级:规则化的
      • 已定义级:标准的、一致的
      • 已管理级:可预测的
      • 优化级:不断改进
        在这里插入图片描述
    • 每个成熟度级别(除级别1)包含了实现该级别的若干个关键过程域(KPA)。

    • 每一个KPA进一步被分为称为公共特征的5个部分:执行约定、执行能力、执行活动、测量和分析、验证实施

    • 这些公共特征包括了关键实践(KP),即每一个KPA包括5类KP,实现了这些KP后,就实现了关键过程域的目标。

  5. 关键过程域

    1. 定义:一系列相互关联的操作活动,标识了达到某个成熟度级别时所必须满足的条件。

      一个软件企业如果希望达到某一个成熟度级别,就必须完全满足该级别的关键过程域的要求,即满足每个关键过程域的目标。

    2. CMM共有18个KPA,每一级都有自己的KPA,KPA分为三大类:管理过程、组织过程和工程过程。

  6. 关键实践

    1. 定义:描述对KPA的有效实施和制度化起最重要作用的基础设施和活动。

CMMI

  1. CMMI的两种表示方法:

    • 阶段式表示法:作为整个组织已建立的一个过程域集合
    • 连续式表示法:作为单一过程域或者过程域集合
  2. CMM和CMMI的区别与联系

    1. 区别:

      • CMM适用于软件的组织成熟度测评。CMMI适用于多种组织成熟度测评。CMMI相对CMM更完整,更适用于大环境。
    2. 联系:CMMI有两种表示方法,一种就是与CMM一样的阶段式表现方法(把CMMI中的若干个过程区域分成5个成熟度级别);

      另一种是连续式的表现方法(将CMMI中过程区域分为四大类,过程管理,项目管理,工程以及支持)

PSP

  1. 体系结构

    1. PSP成熟度模型:PSP具有4个等级**,**7个台阶组成的成熟度框架 。4个等级分别为个体度量过程、个体计划过程、个体质量管理过程和个体循环过程。

在这里插入图片描述

  1. PSP过程框架:PSP过程由一系列方法、表格、脚本等组成,用以指导软件开发人员计划、度量和管理他们的工作。

  2. 两种日志

    1. 时间日志
    2. 缺陷日志
  3. 评审比测试有效的原因:在评审时发现的错误比测试时发现的多;成本低。缺陷发现的越早,修复的花费越低;且避免缺陷比发现和修复缺陷更有效。

  4. 四个设计模板:

    1. 操作规格模板(UML:用例图):描述了系统与外界的交互;描述了用户与待设计系统的正常情况下和异常情况下的交互。
    2. 功能规格模板(UML:类图):描述系统与外界的接口。
    3. 状态规格模板:可以精确定义程序的所有状态、状态之间转换以及伴随每次状态转换的动作。
    4. 逻辑规格模板:可以精确描述系统的内部逻辑状态。

软件过程模型

  1. 瀑布模型
    1. 特点:
      • 开发阶段严格按照线性方式进行
      • 阶段间有因果关系
      • 每个阶段需评审确认
      • 允许反馈
      • 强调文档
    2. 适用场所:需求易于完善定义的软件
    3. 缺点:
      • 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
      • 开发过程中很难响应客户的变更要求
      • 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来 严重的后果
  2. 快速原型模型
    1. 优点:
      • 加强用户和软件人员之间的沟通,明确系统的需求
      • 尽早得到系统可用性的反馈信息,及时修改以获得完整、正确需求
    2. 缺点:
      • 用户会由于看到的原型系统不完善,而对产品产生怀疑
      • 可能为了快速开发原型系统,而采用未经充分论证的技术(如操作系统平台、主要的算法)导致质量低下
  3. 增量模型
    1. 优点:
      • 整个产品被分解成若干个构件逐步交付,用户可以不断地看到所开发软件的可运行中间版本
      • 将早期增量作为原型有助于明确后期增量的需求
      • 降低开发风险
      • 重要功能被首先交付,从而使其得到最多的测试
    2. 缺点:
      • 需要软件具备开放式的体系结构,以便各个构件逐步进入
      • 需求难以在增量实现之前详细定义,因此增量与需求的准确映射以及所有增量的有效集成可能会比较困难,容易退化为边做边改方式,使软件过程的控制失去整体性
  4. 螺旋模型
    1. 优点:(风险驱动)
      • 关注软件的重用
      • 关注早期错误的消除
      • 将质量目标放在首位
      • 将开发阶段与维护阶段结合在一起
    2. 缺点:
      • 需要风险评估的经验
      • 只适应内部大规模软件开发
  5. 形式化方法模型
    1. 优点:
      • 由于数学方法具有严密性和准确性,形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性
    2. 缺点:
      • 开发人员需要具备一定技能并经过特殊训练
      • 形式化描述和转换是一项费时费力的工作,成本高,质量不一定高
      • 现实应用的系统大多数是交互性强的软件,但是这些系统难以用形式化方法进行描述
  6. 基于组件的开发模型
    1. 优点:
      • 充分体现软件复用的思想
      • 实现快速交付软件
      • 利用开源组件与软件
    2. 缺点:
      • 商业组件的修改受到限制,影响系统的演化

MSF

  1. 六个角色:产品管理,程序管理,开发,测试,发布管理,用户体验
  2. 过程模型中的五个阶段:构思阶段,计划阶段,开发阶段,稳定阶段,部署阶段

RUP

  1. 九个软件过程
    1. 6个核心过程流:商业建模,需求,分析和设计,实现,测试,部署
    2. 3个辅助过程流:配置和变更管理,项目管理,环境
  2. 四个阶段:
    • 初始阶段:里程碑:生命期目标
    • 细化阶段:里程碑:生命期构架
    • 构造阶段:里程碑:初始运作功能。构造阶段的结束是项目开发的第三个重要的里程碑。这个阶段产生的版本通常被称为β版。
    • 交付阶段:里程碑:产品发布
  3. 六大经验:迭代式开发,管理需求,基于组件的体系结构,可视化建模,验证软件质量,控制软件变更

敏捷软件开发

  1. 敏捷宣言
    • 注重个人及互动胜于过程和工具
    • 注重可用的软件胜于详尽的文档
    • 注重客户协作胜于合同谈判
    • 注重响应变化胜于恪守计划
  2. Scrum:一个敏捷开发框架,是一个增量的、迭代的开发过程
  3. 极限编程(XP):一种全新而快捷的软件开发方法。XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流。这可以帮助团队最大化地发挥他们的价值。
    • XP认为沟通是项目成功的关键
    • 实践:现场客户,计划游戏,系统隐喻,简单设计,代码集体所有
    • XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

路由器交换机直连方案(RM50+RTL8367N)

不经过网口和变压器&#xff0c;实现板级网口扩展。 通过网口&#xff0c;网线连接 板级芯片直接连接&#xff0c;验证OK 激光导航控制板通过路由器上网成功

二叉搜索树BST ——(C++)

本篇将会讲解有关二叉树的搜索原理&#xff0c;以及关于二叉搜索树的建立&#xff0c;以及二叉树搜索树的插入、删除和查找等基本操作。最后我们还会对二叉搜索树进行功能扩展&#xff0c;介绍有关搜索二叉树的 K 模型和 KV 模型。目录如下&#xff1a; 目录 1. 搜索二叉树 二叉…

PageHelper分页查询时,count()查询记录总数与实际返回的数据数量不一致

目录 场景简介代码判断异常情况排查原因解决 场景简介 1、使用PageHelper进行分页查询 2、最终构建PageInfo对象时&#xff0c;total与实际数据量不符 代码判断 异常情况 排查 通过对比count()查询的SQL与查询记录的SQL&#xff0c;发现是PageHelper分页查询时省去了order b…

香橙派 AIpro开发板:开启AI视觉的无限可能

前言 在当今这个由数据和智能驱动的时代&#xff0c; 人工智能&#xff08;AI&#xff09; 已经成为推动技术创新和实现自动化的关键。 特别是在计算机视觉领域&#xff0c;AI的潜能被无限放大&#xff0c;它使得机器能够“看见”并理解视觉世界&#xff0c;从而执行复杂的任务…

安捷伦Agilent 8114A脉冲发生器的特点资料

Agilent 8114A 脉冲发生器有助于测试当今的电信和计算机系统组件&#xff0c;这些组件越来越多地利用在高电压或大电流下运行的激光和红外二极管、EEPROMS 和闪存等设备。 Agilent 8114A 高功率脉冲发生器的特点包括&#xff1a; 频率高达 15 MHz 时&#xff0c;高达 100 V 的…

前端 CSS 经典:图片边框

前言&#xff1a;有这么一个业务&#xff0c;需要边框随着图片宽度的变化而变化&#xff0c;比如一些聊天的气泡框等。 实现原理&#xff1a;使用 border-image 属性 效果图&#xff1a; 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"><he…

Qt/C++音视频开发75-获取本地有哪些摄像头名称/Qt内置函数方式

一、前言 在需要打开本地摄像头的场景中&#xff0c;有个需求绕不开&#xff0c;那就是如何获取本地有哪些摄像头设备名称&#xff0c;这样可以提供下拉框给用户选择&#xff0c;不然你让用户去填设备名&#xff0c;你觉得用户会知道是啥&#xff0c;他会操作吗&#xff1f;就…

[猫头虎分享21天微信小程序基础入门教程] 第17天:小程序的用户授权与安全

[猫头虎分享21天微信小程序基础入门教程] 第17天&#xff1a;小程序的用户授权与安全 第17天&#xff1a;小程序的用户授权与安全 &#x1f512; 自我介绍 大家好&#xff0c;我是猫头虎&#xff0c;一名全栈软件工程师。今天我们继续微信小程序的学习&#xff0c;重点了解如…

【C++】Vector的简易模拟与探索

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

【C++初阶】auto关键字

目录 1.auto简介 2.auto的使用 1.auto简介 在早期C/C中auto的含义是&#xff1a;使用auto修饰的变量&#xff0c;是具有自动存储器的局部变量&#xff0c;但遗憾的 是一直没有人去使用它&#xff0c;大家可思考下为什么&#xff1f; C11中&#xff0c;标准委员会赋予了auto全…

Go语言

Go语言 Go语言全称Golanguage&#xff0c;Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译并发型语言。于2009年首次发布 官网 特点 简单易学&#xff1a;Go语言语法简洁明了&#x…

【AD21】原理图PDF文件的输出

原理图PDF文件可以共享给团队成员&#xff0c;用于设计审核、讨论和协同工作。 菜单栏中点击文件->智能PDF。 在弹出的界面点击Next&#xff0c;勾选当前项目&#xff0c;修改文件名&#xff0c;避免与制造装备图PDF文件重名将其覆盖&#xff0c;点击Next。 只输出原理图…

SmartEDA革新电路设计,效率飙升,Multisim与Proteus迎来强劲对手!

在电路设计领域&#xff0c;Multisim和Proteus一直以其强大的仿真功能和广泛的应用范围受到设计师们的青睐。然而&#xff0c;随着科技的不断进步和创新&#xff0c;一款名为SmartEDA的新兴软件正以其独特的优势&#xff0c;重新定义着电路设计的效率。 SmartEDA的崛起&#x…

基于Ubuntu的Bash脚本实现SystemUI的编译真机验证

使用场景描述 当开发SystemUI的时候&#xff0c;开发完一个需求后需要到真机上验证&#xff0c;虽然SystemUI模块开发最后的产物也是APK&#xff0c;但是这个APK 却不能单独安装查看效果&#xff0c;因为SystemUI是系统级别的应用&#xff0c;需要放置到系统指定的目录下。这时…

这13个前端库,帮我在工作中赢得了不少摸鱼时间

前言 平时开发的过程中&#xff0c;常常会使用到一些第三方库来提高开发效率&#xff0c;我总结了自己工作这么久以来经常用到的 13 个库&#xff0c;希望对大家有帮助&#xff5e; antd 全称应该是Ant Design&#xff0c;这是一个 React 的组件库&#xff0c;旨在提供一套常…

Android Studio 中gradle的bin和all区别

1.在android studio中设置安装gradle时&#xff0c;真各种版本看到眼花缭乱&#xff0c;还有疑惑gradle-*.*-all.zip与gradle-*.*-bin.zip的区别是什么。下面解压如下: bin&#xff1a; all: 其实&#xff0c;用bin就可以了&#xff0c;all文件就是多了docs(文档)和src(源码)两…

本周日晚8点预约宣讲会 | 深入了解项目,开启你的开源之旅!

引言 社区的亲爱的同学们&#xff01;为了帮助大家在这个夏天更好的参加“开源之夏”的活动&#xff0c;我们联合2位资深开源项目导师&#xff0c;给大家策划了这次“开源之夏”宣讲会。 这不仅是一个了解如何参与开源项目的机会&#xff0c;更是一个直接与项目导师面对面交流…

华火硬核专利库丨登创新科技之巅,探创新未至之境

十年的艰苦卓越&#xff0c;“灶”就了华火科技之巅&#xff1b;电生明火的应用&#xff0c;不仅是一次颠覆性的创新&#xff0c;更是对未来厨房的无尽遐想与探索。在当今日新月异的科技时代&#xff0c;创新已成为推动社会进步的重要动力。 华火烹饪科技&#xff0c;以其深厚的…

Unity 直线间隔放置物体

直线间隔放置物体 0. 新建一个空物体&#xff0c;挂上脚本ZYF_QuickPlaceObj 设置 间隔距离 和 预制体在Scene中拖动即可按间隔距离实例化物体物体的朝向始终朝向统一方向&#xff0c;并且可以在Scene中拖拽更改 传送门

Object类——toString方法和equals方法

前言&#xff1a; 在java中&#xff0c;所有类都是有继承关系存在的&#xff0c;都默认继承Object类。当一个类继承了其他父类&#xff0c;它并不会直接继承Object类&#xff0c;但是它的父类若是没有其他继承关系也会默认继承Object类&#xff0c;子类也可以继续调用Object类…