当前位置: 首页 > news >正文

8 软件项目管理

软件项目管理

  • 1、软件项目管理概念
    • 1.1 软件项目管理内容
    • 1.2 软件项目管理的4P要素
      • 人员
      • 产品
      • 过程
      • 项目
  • 2、软件项目度量
    • 2.1 软件项目度量定义及度量方法
    • 2.2 面对规模的度量
    • 2.3 面对功能的度量
    • 2.4 软件估算
      • 三点期望值法
        • 案例分析
      • 基于过程分解的估算
      • 基于经验的软件估算
      • COCOMO经验估算模型
  • 3、软件项目计划
    • 3.1 项目进度计划概念与可视化
    • 3.2 WBS分解与任务网络图
      • 编制项目进度计划的步骤
      • WBS工作分解结构
      • 关键路径计算

1、软件项目管理概念

·计划、协调、度量、监控、控制及报告等管理方法在软件开发和维护中的具体应用,以保证整个过程是系统的、有原则的、可量化的(IEEE610.12-90).

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。

1.1 软件项目管理内容

在这里插入图片描述

1.2 软件项目管理的4P要素

在这里插入图片描述

人员

  1. 客户:阐明软件需求的人员。
  2. 项目管理者:计划、激励、组织和控制软件开发人员。
  3. 高级管理者:负责定义业务问题。
  4. 开发人员:拥有开发产品或应用程序所需技能的人员。
  5. 最终用户:直接使用或者与软件产品交互的人。
  • 团队类型
    1. 封闭式:按照权利层次来组织团队,做过去类似项目有优势,难以承担创新性项目。
    2. 随机式:松散。专家组合型团队。有创新优势,难以承担有次序执行的项目。
    3. 开放式:封闭式+随机式。适合解决有次序又有创新的复杂项目,效率可能不是太高。
    4. 同步式:根据项目分解进行分工,适合松散耦合子系统项目,项目集成可能会遇到问题。

产品

在这里插入图片描述

过程

在这里插入图片描述

项目

在这里插入图片描述

2、软件项目度量

2.1 软件项目度量定义及度量方法

当你能够度量你所说的事物,并能用数字表达它时,你就对它有了一定了解;反之,如果不能测量他,也不能用数字表达,就说明你对它的了解还不深入,不能令人满意。

软件项目管理的成熟化也需要度量与数字化,目的是持续改进软件过程,并用于项目估算、质量控制、生产率评估等。

  • 软件项目度量内容

    1. 生产率度量:项目工作量、项目周期、项目成本
    2. 质量度量:产品发布之前发现的缺陷数;产品发布后用户报告的缺陷数;产品的运行速度
      行业及组织的历史数据是软件项目度量的基础。
  • 软件项目度量的方法:面对规模的度量;面向功能点的度量;面向对象的度量;面向用例的度量

2.2 面对规模的度量

通过对质量和(或)生产率的测量进行规范化而得到的,这些测量是根据开发过的软件的规模得到的。

  1. 干行代码(KLOC):这些代码指的是源代码,通过源代码的行数来直观度量一个软件程序有多大规模。
  2. 生产率(PM):PM=L/E,L表示代码总量(单位:KLOC),E表示软件工作量(单位:人月)
  3. 每干行代码的平均成本(CKL):CKL=S/L,S为软件项目总开销,L表示代码总量(单位:KLOC)
  4. 代码出错率(EQRI):EQRI=Ne/L,Ne表示代码出错的行数,L表示代码总量(单位:KLOC)
  5. 文档与代码比(DI):DI=Pd/L,Pd表示文档页数,L表示代码总量(单位:KLOC)

在这里插入图片描述

  • 优点:简单易行,自然直观
  • 缺点:依赖于程序设计语言的表达能力和功能;软件开发初期很难估算出最终软件的代码行数;对精巧的软件项目不合适。

2.3 面对功能的度量

用软件的功能表示软件规模,应用最广泛的是功能点(Function Pointment,FP)法。
项目开发初期就可估算出。功能点计算目前主要基于经验公式。
在这里插入图片描述

UFC相关的五类组件

  1. ·内部逻辑文件(ILF,Internal Logical Files )
    • 一个用户可识别的逻辑相关的数据组,它在应用程序边界内,由用户输入来维护。
    • 它可能是某个大型数据库的一部分或是一个独立的文件。
  2. 外部接口文件(EIF,External Interface Files)
    • ·一个用户可识别的逻辑相关的数据组但只能被引用,且数据完全存于软件外部,由另一个应用程序进行维护
    • 是机器可读的全部接口(如磁盘或磁带上的数据文件)
    • 是另一个应用程序的内部逻辑文件
  3. 外部输入(El,ExternalInput)
    • 来自于软件外部的数据输入
    • 控制信息(不更新ILF)/业务逻辑信息(更新ILF)
    • 可来自于一个数据输入屏幕或其他应用程序。
  4. 外部输出(EO,External Output)
    • 经过处理的数据,由程序内部输出到外部
    • 从ILF、EIF中取出数据经过一定的组合、计算后得出的输出数据,如生成报表,派生数据,可能更新ILF
  5. 用户查询(EQ.External Query)
    • 一个输入输出的组合过程,从一个或多个ILF、EIF中取出数据输出到程序外部
    • 输入过程不更新ILF,输出过程不进行任何数据处理

在这里插入图片描述

  • UFC计算
    在这里插入图片描述
    在这里插入图片描述

14个复杂性调节因素 F i F_i Fi

在这里插入图片描述

  • 优点:与程序设计语言无关,在开发前就可以估算出软件项目的规模
  • 不足:没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统;功能点计算主要靠经验公式,主观因素比较多。

一个功能点开发代码行数

在这里插入图片描述

2.4 软件估算

概念:项目启动之前,软件团队应该估算将要做的工作、所需要的资源、成本、从开始到完成的时间,也即是对这些内容进行预测。

策略:项目度量方法为项目估算提供了依据与有效输入;尽量把估算推迟到项目的后期进行;根据已经完成的项目进行估算

  • 项目估算方法
    1. 基于分解技术的项目估算方法:基于问题分解的估算(基于LOC、基于功能点FP);基于过程分解的估算
    2. 基于经验的项目估算方法:基于回归分析的经验估算模型(基于LOC、基于功能点FP);COCOMO模型

三点期望值法

在基于问题的分解估算方法中,通过估计最大值,最小值,最可能值的加权平均值作为期望值来估算。
估计期望值 = ( 最大值 + 4 × 最可能值 + 最小值 ) / 6 估计期望值=(最大值+4\times最可能值+最小值)/6 估计期望值=(最大值+4×最可能值+最小值)/6

例如:如果估计系统X规模的最大值为100KLOC,最小值为50KLOC,最可能值为60KLOC,则其估计期望规模为 ( 100 + 4 x 60 + 50 ) / 6 = 65 K L O C (100+4x60+50)/6=65KLOC (100+4x60+50)/6=65KLOC

案例分析

在这里插入图片描述

  • 基于LOC的估算
    在这里插入图片描述
  • 基于功能点的估算
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

基于过程分解的估算

在这里插入图片描述

基于经验的软件估算

基于回归分析的经验估算模型
在这里插入图片描述
在这里插入图片描述

COCOMO经验估算模型

  • COCOMO模型?
    COCOMO是指COnstructive COst MOdel,构造性成本模型。Boehm于1981年提出,用于对软件开发项目的规模、成本、进度等方面进行估算。COCOMO模型是一个综合经验模型,模型中的参数取值来自于经验值,并且综合了诸多的因素、比较全面的估算模型。在欧盟国家应用较为广泛。

  • COCOMO模型的层次:支持不同的阶段

    1. 基本COCOMO摸型:系统开发的初期,估算整个系统的工作量(包括维护)和软件开发和维护所需的时间
      在这里插入图片描述
      在这里插入图片描述

    2. 中间COCOMO模型:估算各个子系统的工作量和开发时间
      在这里插入图片描述

      • EAF的取值(考虑15个因素):
        1. 软件产品属性(3):软件可靠性,软件复杂性,数据库的规模
        2. 计算机属性(4):程序执行时间,程序占用内存大小,软件开发环境的变化,软件开发环境的响应速度
        3. 人员属性(5):分析员能力,程序员能力,领域经验,开发环境的经验,程序设计语言的经验
        4. 项目属性(3):软件开发方法的能力,软件工具的数量和质量,软件开发的进度要求
      • EAF的取值(范围):很低、低、正常、高、很高、极高;Boehm建议取值范围[0.70-1.66];·EAF的计算=ПF:(i=1…15)
      • 调节因子及其取值由统计结果和经验决定,不同的软件开发组织在不同的时期可能会有不同的取值
    3. 详细COCOMO摸型:估算独立的软构件,如各个子系统的各个模块的工作量和开发时间

3、软件项目计划

3.1 项目进度计划概念与可视化

对项目进行任务划分,定义任务之间的依赖关系,并进行时间估算和资源分配,确保以最佳的时间与成本输出满足质量要求的产品。

编制项目计划本质是一个优化问题。
在这里插入图片描述

  • 表示软件项目工作量(成本)与开发时间之间的PNR曲线
    在这里插入图片描述

  • 项目进度计划的价值

    1. 有序、可控制地对软件项目进行管理;
    2. 确保员工保持高生产率;
    3. 及时交付软件产品;
    4. 降低软件开发成本;
    5. 提高客户满意度;
    6. 及时发布产品新版本。
  • 项目进度计划的可视化

    1. 甘特图
      在这里插入图片描述
      工具:微软的Project软件,可以显示进度条模式
      在这里插入图片描述
  • 里程碑
    里程碑显示项目进展中重大工作完成。里程碑不同于活动,活动是需要消耗资源的,里程碑仅仅表示事件的标记。
    在这里插入图片描述

3.2 WBS分解与任务网络图

编制项目进度计划的步骤

在这里插入图片描述

WBS工作分解结构

工作分解结构(Work Breakdown Structure)是将项目按照功能或过程进行逐层分解,直到划分为若干内容单一、便于组织管理的单项工作,最终形成的树型结构示意图。

  • 作用:

    1. 相关成员可直观了解软件项目中的各项任务(活动);
    2. 将项目分解为可管理的任务(活动);
    3. 作为项目计划与跟踪的基础。
  • 分解模式
    在这里插入图片描述

  • WBS构建应该注意的原则

    1. 一个任务只应该在WVBS中的一个地方出现
    2. WVBS中某项任务的内容是其下所有VVBS项的总和
    3. 一个WBS项只能由一个人责任,其他人只能是参与者
    4. WBS必须与实际工作中的执行方式一致
    5. 应让项目团队成员积极参与创建VVBS,以确保WVBS的一致性
    6. 每个WVBS项都必须文档化,以确保准确理解已包括和未包括的工作范围
    7. WBS可以根据需求进行必要变更维护
  • 任务网络图
    在这里插入图片描述

关键路径计算

在任务网络图中,从项目开始到项目完成有许多条路径,路径上所有弧权重之和最大的路径(路径最长)叫关键路径。

在整个任务网络图中非最长的路径都叫非关键路径。
在这里插入图片描述
关键路径的意义:关键路径上任何任务(活动)的延长都会导致整个项目周期的延长;如果缩短项目周期,就必须缩短关键路径的长度;项目经理应该随时关注关键路径上任务(活动)的完成情况以及关键路径是否发生了变化;对WBA中任务的串行和并行安排方式有指导意义。

  • 可用资源对项目计划与关键路径的影响
    实例:
    有一个停车管理软件需要开发,包含三个功能:停车位管理、停车收费管理、人员管理
    每个功能都需要经过三个活动:需求分析、系统设计、系统开发,假定这三个功能在这三个活动上花费的时间分别为(5天、4天、3天),(5天、4天、4天),(4天、5天、5天)。
    有三个工程师:一个需求分析员、一个软件设计师、一个程序员。如何安排此项目活动比较好?

在这里插入图片描述
在这里插入图片描述

相关文章:

8 软件项目管理

软件项目管理 1、软件项目管理概念1.1 软件项目管理内容1.2 软件项目管理的4P要素人员产品过程项目 2、软件项目度量2.1 软件项目度量定义及度量方法2.2 面对规模的度量2.3 面对功能的度量UFC相关的五类组件14个复杂性调节因素 F i F_i Fi​一个功能点开发代码行数 2.4 软件估算…...

【移除bpmn-js流程图中的logo图标】

在node_modules文件中查找 bpmn-js\dist\bpmn-modeler.development.js bpmn-js\lib\BaseViewer.js在文件中搜索linkMarkup var linkMarkup <a href"http://bpmn.io" target"_blank" class"bjs-powered-by" title"Powered by bpmn.i…...

Springboot集成ElasticSearch实现minio文件内容全文检索

一、docker安装Elasticsearch &#xff08;1&#xff09;springboot和Elasticsearch的版本对应关系如下&#xff0c;请看版本对应&#xff1a; 注意安装对应版本&#xff0c;否则可能会出现一些未知的错误。 &#xff08;2&#xff09;拉取镜像 docker pull elasticsearch:7…...

ISAAC SIM踩坑记录--ROS2相机影像发布

其实这个例子官方和大佬NVIDIA Omniverse和Isaac Sim笔记5&#xff1a;Isaac Sim的ROS接口与相机影像、位姿真值发布/保存都已经有详细介绍了&#xff0c;但是都是基于ROS的&#xff0c;现在最新的已经是ROS2&#xff0c;这里把不同的地方简单记录一下。 搭建一个简单的场景&a…...

CSS Module:告别类名冲突,拥抱模块化样式(5)

CSS Module 是一种解决 CSS 类名冲突的全新思路。它通过构建工具&#xff08;如 webpack&#xff09;将 CSS 样式切分为更加精细的模块&#xff0c;并在编译时将类名转换为唯一的标识符&#xff0c;从而避免类名冲突。本文将详细介绍 CSS Module 的实现原理和使用方法。 1. 思…...

JavaSE常用API-日期(计算两个日期时间差-高考倒计时)

计算两个日期时间差&#xff08;高考倒计时&#xff09; JDK8之前日期、时间 Date SimpleDateFormat Calender JDK8开始日期、时间 LocalDate/LocalTime/LocalDateTime ZoneId/ZoneDateTIme Instant-时间毫秒值 DateTimeFormatter Duration/Period...

AutoDL上进行tensorboard可视化

1.下载SSH隧道工具 输入ssh指令、ssh密码、代理到本地端口、代理到远程端口 2.在实例中执行&#xff1a;export https_proxyhttp://127.0.0.1:1080 3.在实例中执行&#xff1a;tensorboard --port 6006 --logdir work_dirs 4.打开 http://localhost:6006/ 即可...

20.UE5UI预构造,开始菜单,事件分发器

2-22 开始菜单、事件分发器、UI预构造_哔哩哔哩_bilibili 目录 1.UI预构造 2.开始菜单和开始关卡 2.1开始菜单 2.2开始关卡 2.3将开始菜单展示到开始关卡 3.事件分发器 1.UI预构造 如果我们直接再画布上设计我们的按钮&#xff0c;我们需要为每一个按钮进行编辑&#x…...

【C语言指南】C语言内存管理 深度解析

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C语言指南》 期待您的关注 引言 C语言是一种强大而灵活的编程语言&#xff0c;为程序员提供了对内存的直接控制能力。这种对内存…...

前海华海金融创新中心的工地餐点探寻

​前海的工地餐大部分都是13元一份的哈。我在前海华海金融创新中心的工地餐点吃过一份猪杂饭&#xff0c;现做13元一份。我一般打包后回公司吃或直接桂湾公园找个环境优美的地方吃饭。 ​我点的这份猪杂汤粉主要是瘦肉、猪肝、肉饼片、豆芽和生菜&#xff0c;老板依旧贴心问需要…...

索引及练习

1.索引 &#x1f4d6;什么是索引&#xff1f; 1. 索引是对数据库一列或者多列的值进行排序的一种结构。 2. 索引的建立会大大提高 mysql 的检索速度。 3. 如果想高效的使用 mysql, 而且数据量大时&#xff0c;需要花费事件去设计索引&#xff0c;建立优秀的索引规 则&a…...

java版嘎嘎快充汽车单车充电系统源码系统jeecgboot

汽车使用云快充1.6 1.5协议&#xff0c;单车用的铁塔协议 前端uniapp、后端jeecgbootvue2...

vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果

说明 vue路由切换时&#xff0c;当前页面左侧和右侧容器分别从两侧滑出&#xff0c;新页面左右分别从两侧滑入 效果展示 路由切换-滑入滑出效果 难点和踩坑 现路由和新路由始终存在一个页面根容器&#xff0c;通过<transition>组件&#xff0c;效果只能对页面根容器有效…...

MacOS编译hello_xr——记一次CMake搜索路径限制导致的ANDROID_NATIVE_APP_GLUE not found

首先,由于之前使用过Unity, 系统已经装好了android SDK和NDK, 所以在hello_xr文件夹下, 用local.properties文件来设置系统中二者的路径: sdk.dir/Applications/Unity/Hub/Editor/2022.3.48f1c1/PlaybackEngines/AndroidPlayer/SDK/ # ndk.dir/Applications/Unity/Hub/Editor/…...

基于NI Vision和MATLAB的图像颜色识别与透视变换

1. 任务概述 利用LabVIEW的NI Vision模块读取图片&#xff0c;对图像中具有特征颜色的部分进行识别&#xff0c;并对识别的颜色区域进行标记。接着&#xff0c;通过图像处理算法检测图像的四个顶点&#xff08;左上、左下、右上、右下&#xff09;&#xff0c;并识别每个顶点周…...

【Linux:IO多路复用(select、poll函数)

目录 什么是IO多路复用&#xff1f; select: 参数介绍&#xff1a; select函数返回值&#xff1a; fd_set类型&#xff1a; 内核如何更新集合中的标志位 处理并发问题 处理流程的步骤&#xff1a; poll: poll的函数原型&#xff1a; 参数介绍&#xff1a; select与p…...

计数排序(C语言)

一、步骤 1.首先&#xff0c;遍历数组统计出相同元素出现的次数 2.根据统计的结果将序列收回到原来的数组 方法&#xff1a;我们可以建立一个临时数组用来存储元素出现的次数&#xff0c;然后用该数组的下标表示该元素&#xff08;即假设i为临时数组的下标&#xff0c;a[i]为…...

LabVIEW弧焊参数测控系统

在现代制造业中&#xff0c;焊接技术作为关键的生产工艺之一&#xff0c;其质量直接影响到最终产品的性能与稳定性。焊接过程中&#xff0c;电流、电压等焊接参数的精确控制是保证焊接质量的核心。基于LabVIEW开发的弧焊参数测控系统&#xff0c;通过实时监控和控制焊接过程中关…...

Android笔记(三十七):封装一个RecyclerView Item曝光工具——用于埋点上报

背景 项目中首页列表页需要统计每个item的曝光情况&#xff0c;给产品运营提供数据报表分析用户行为&#xff0c;于是封装了一个通用的列表Item曝光工具&#xff0c;方便曝光埋点上报 源码分析 核心就是监听RecyclerView的滚动&#xff0c;在滚动状态为SCROLL_STATE_IDLE的时…...

【Linux】内核模版加载modprobe | lsmod

modprobe modprobe 是一个用于加载和卸载 Linux 内核模块的命令。它不仅能够加载单个模块&#xff0c;还能处理模块之间的依赖关系&#xff0c;确保所有依赖的模块都被正确加载。以下是一些关于 modprobe 命令的基本用法和常见选项的详细介绍。 基本语法 modprobe [option…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...