软件项目管理

news2024/11/18 21:43:21

1. 软件项目管理概述

1.1 软件项目管理

软件项目管理的提出是在20世纪70年代中期,当时美国国防部专门研究了软件开发不能按时提交、预算超支和质量达不到用户要求的原因,发现70%的项目是因为管理不善引起的,而非技术原因。

软件项目管理和其他的项目管理相比有相当的特殊性。

首先,软件是纯知识产品,其开发进度和质量很难估计和度量,生产效率也难以预测和保证。

其次,软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制。

Windows这样的操作系统有1500万行以上的代码,同时有数千个程序员在进行开发,项目经理都有上百个。这样庞大的系统如果没有很好的管理,其软件质量是难以想象的。

1.2 项目成功的标志

  • 达到项目预期的软件产品功能和性能要求。也就是软件产品达到了用户已认可的需求规格说明的要求。
  • 时限要求。项目应在合同规定的期限内完成。
  • 项目开销限制在预算之内。

研究软件项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则、方法,同时避免前人的失误。

软件项目管理的内容主要包括:人员的组织与管理,软件度量,软件项目计划,风险管理,软件质量保证,软件过程能力评估,软件配置管理等。

2. 人员的组织与管理

2.1 人员的组织与管理

美国卡内基·梅隆大学软件工程研究所的Bill Curtis在1994年发表了“人员管理能力成熟度模型”(people capability maturity model,P-CMM)。力图通过吸引、培养、激励、部署和骋用高水平的人才来提升软件组织的软件开发能力。

2.2 项目管理委员会

软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是单独开发,成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目组(负责市场调研和销售),组成软件产品项目组。

公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。

例如:项目管理办公室PMO。

公司项目管理的最高决策机构,一般包括总经理、副总经理。 主要职责:

  • 依照项目管理相关制度管理项目;
  • 监督项目管理相关制度的执行;
  • 对项目立项、项目撤消进行决策;
  • 任命项目管理小组组长、项目评审小组组长、软件产品项目组组长。

2.3 项目管理小组

由公司管理人员组成,主要职责:

  • 草拟项目管理的各项制度;
  • 组织项目阶段评审;
  • 保存项目过程中的相关文件和数据;
  • 为优化项目管理提出建议。

2.4 项目评审小组

可下设开发评审小组和产品评审小组,一般包括技术专家和市场专家。 主要职责:

  • 对项目可行性报告进行评审;
  • 对市场计划和阶段报告进行评审;
  • 对开发计划和阶段报告进行评审;
  • 项目结束时,对项目总结报告进行评审。

2.5 软件产品项目组

可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理,成员一般由公司技术人员和市场人员构成。

主要职责: 根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。

2.6 开发人员的配置

软件开发中的开发人员是最大的资源,对人员的配置、调度安排贯穿整个软件过程,人员的组织管理是否得当,是影响软件项目质量的决定性因素。 在软件开发的一开始,要根据项目的工作量、所需要的专业技能,再参考各个人员的能力、性格、经验,组织一个高效、和谐的开发小组。

(1)一般来说,一个开发小组人数在5到10人之间最为合适,如果项目规模很大,可以采取层级式结构,配置若干个这样的开发小组。 并不是一群高水平的程序员在一起就一定可以组成一个成功的小组,作为考察标准,技术水平、与本项目相关的技能和开发经验、以及团队工作能力都是很重要的因素。

例如,一个一天能写一万行代码但却不能与同事沟通融洽的程序员,未必适合一个对组员之间通讯要求很高的项目。

(2)还应该考虑分工的需要,合理配置各个专项的人员比例。

例如一个网站开发项目,小组中有页面美工、后台服务程序、数据库几个部分,应该合理的组织各项工作的人员配比。 对于一个中型农技网站,对数据采集量要求较高,一个人员配比方案可以是2个美工、2个后台服务程序编写、3个数据采集整理人员。

(3)由于工作环境、待遇、工作强度、公司的整体工作安排和其他无法预知的因素,一个项目尤其是开发周期较长的项目几乎无可避免的要面临人员的流入流出。 对人员风险进行控制:

  • 保证开发组中全职人员比例,项目核心的工作尽量由全职人员担任。
  • 建立良好的文档管理机制,包括项目组进度文档、个人进度文档、版本控制文档、整体技术文档、个人技术文档、源代码管理等。
  • 加强项目组内技术交流,比如定期开技术交流会等。
  • 对于项目经理,可以从一开始就指派一个副经理在项目中协同项目经理管理项目开发工作,如果项目经理退出开发组,副经理可以很快接手。
  • 为项目开发提供尽可能好的开发环境,包括工作环境、待遇、工作进度安排等等。

3. 软件度量

3.1 软件度量

软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。

通过软件度量可以改进软件开发过程,促进项目成功,开发出高质量的软件产品。软件项目度量目的在于度量软件项目规模、软件项目成本、软件项目进度、顾客满意度等,辅助项目管理进行项目控制。

3.2 规模度量

是估算软件项目工作量、编制成本预算、策划合理项目进度的基础。

有效的软件规模度量是成功项目的核心要素:基于有效的软件规模度量可以策划合理的项目计划,合理的项目计划有助于有效地管理项目。

规模度量的要点:由开发现场的项目成员进行估算;灵活运用实际开发作业数据;杜绝盲目迎合顾客需求的“交期逆推法”。

软件规模度量有助于软件开发团队准确把握开发时间、费用分布以及缺陷密度等等。软件规模的估算方法有很多种,如:功能点分析、代码行、德尔菲法等,这些方法不断细化为更多具体的方法。

3.3 成本度量

软件开发成本度量主要指软件开发项目所需的财务性成本的估算。主要方法:

类比估算法

通过比较已完成的类似项目来估算成本,适合评估一些与历史项目在应用领域、环境和复杂度方面相似的项目。估算的精确度依赖于历史项目数据的完整性、准确度以及现行项目与历史项目的近似程度。

细分估算法

将整个项目分解成若干个小系统,逐个估算成本,然后合计起来,这种细化的方式可能获得贴近实际的估算成本。难点:难以把握各小系统整合为大系统的整合成本。

4. 软件项目计划

4.1 软件项目计划

软件项目计划是一个软件项目进入系统实施的启动阶段,主要工作包括:确定详细的项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间计划、成本和预算计划、人力资源计划等。

软件项目计划的首要任务是进度安排,进度安排将为项目管理者建立起一张计划图。常用的制定进度计划的工具主要有甘特图和网络图两种。

4.2 甘特图

又称为横道图、条状图,以提出者的名字命名,通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。

甘特图通过活动列表和时间刻度表示出特定项目的顺序与持续时间,横轴表示时间,纵轴表示项目,线条表示期间计划和实际完成情况,直观表明计划何时进行,进展与要求的对比,便于管理者弄清项目的剩余任务,评估工作进度。

4.3 甘特图优缺点

甘特图的优点

直观、简单、通用、容易制作,便于理解,能很清晰地标识出直到每一项任务的起始与结束时间;有专业软件支持,无须担心复杂计算和分析。

甘特图存在的局限性

甘特图仅仅部分地反映了项目管理的三重约束(时间、成本和范围),因为它主要关注进程管理(时间);尽管能够通过项目管理软件描绘出项目活动的内在关系,但是如果关系过多,纷繁芜杂的线图必将增加甘特图的阅读难度。

4.4 甘特图的绘制

甘特图的制作工具:Microsoft OfficeProject,微软出品的通用型项目管理软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本的计划、控制。

5. 软件项目风险管理

5.1 软件项目风险管理

风险管理的主要目标是预防风险。

软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。

如果项目风险变成现实,很可能使软件项目不能实现。

当对软件项目给予较高期望时,一般都会进行风险分析。

在标识、分析和管理风险上花费的时间和人力可以从多个方面得到回报:更加平稳的项目进展过程;更高的跟踪和控制项目的能力;由于在问题发生之前已经做了周密计划而产生的信心。

5.2 需求风险

  • 需求已经成为项目基准,但需求还在继续变化。
  • 需求定义欠佳,而进一步的定义会扩展项目范畴。
  • 添加额外的需求。
  • 产品定义含混的部分比预期需要更多的时间。
  • 在做需求中客户参与不够。
  • 缺少有效的需求变化管理过程。

5.3 计划编制风险

  • 计划、资源和产品定义全凭客户或上层领导口头指令,并且不完全一致。
  • 计划是优化的"最佳状态",但计划不现实,只能算是"期望状态"。
  • 计划基于使用特定的小组成员,而此人其实指望不上。
  • 实际产品规模比估计的要大。
  • 完成目标日期提前,但没有相应地调整产品范围或可用资源。
  • 涉足不熟悉的产品领域,花费在设计和实现上的时间比预期要多。

5.4 组织和管理风险

  • 仅由管理层或市场人员进行技术决策,导致计划进度缓慢,计划时间延长。
  • 低效的项目组结构降低生产率。
  • 管理层审查决策的周期比预期的时间长。
  • 预算削减,打乱项目计划。
  • 管理层作出了打击项目组织积极性的决定。
  • 缺乏必要的规范,导致工作失误与重复工作。
  • 非技术的第三方的工作(预算批准、设备采购批准、法律方面的审查、安全保证等)时间比预期的延长。

5.5 人员风险

  • 作为先决条件的任务(如培训及其他项目)不能按时完成。
  • 开发人员和管理层之间关系不佳,导致决策缓慢,影响全局。
  • 缺乏激励措施,士气低下,降低了生产能力。
  • 某些人员需要更多的时间适应还不熟悉的软件工具和环境。
  • 项目后期加入新的开发人员,需进行培训并逐渐与现有成员沟通,从而使现有成员的工作效率降低。
  • 项目组成员之间发生冲突,导致沟通不畅、设计欠佳、接口出现错误和额外的重复工作。
  • 不适应工作的成员没有调离项目组,影响项目组其他成员的积极性。
  • 没有找到项目急需的具有特定技能的人。

5.6 开发环境风险

  • 设施未及时到位。
  • 设施虽到位,但不配套,如没有电话、网线、办公用品等。
  • 设施拥挤、杂乱或者破损。
  • 开发工具未及时到位。
  • 开发工具不如期望的那样有效,开发人员需要时间创建工作环境或者切换新的工具。
  • 新的开发工具的学习期比预期的长,内容繁多。

5.7 客户风险

  • 客户对于最后交付的产品不满意,要求重新设计和重做。
  • 客户的意见未被采纳,产品无法满足用户要求,必须重做。
  • 客户对规划、原型和规格的审核、决策周期比预期的要长。
  • 客户没有或不能参与规划、原型和规格阶段的审核,导致需求不稳定和产品生产周期的变更。
  • 客户答复的时间(如回答或澄清与需求相关问题)比预期长。
  • 客户提供的组件质量欠佳,导致额外的测试、设计和集成工作,以及额外的客户关系管理工作。

5.8 设计和实现风险

  • 设计质量低下,导致重复设计。
  • 一些必要的功能无法使用现有的代码和库实现,开发人员必须使用新的库或者自行开发新的功能。
  • 代码和库质量低下,导致需要额外测试,修正错误,或重新制作。
  • 过高估计了增强型工具对计划进度的节省量。
  • 分别开发的模块无法有效集成,需要重新设计或制作。

5.9 过程风险

  • 大量的纸面工作导致进程比预期的慢。
  • 前期的质量保证行为不真实,导致后期的重复工作。
  • 缺乏对软件开发策略和标准的遵循(太不正规),导致沟通不足,质量欠佳,甚至需重新开发。
  • 教条地坚持软件开发策略和标准(过于正规),导致过多耗时于无用的工作。
  • 向管理层撰写进程报告占用开发人员的时间比预期的多。
  • 风险管理粗心,导致未能发现重大的项目风险。

5.10 风险分析概况

分析风险概况:假设某一风险出现后,分析是否有其他风险出现,或是假设这一风险不出现,分析它将会产生什么情况,然后确定主要风险出现最坏情况后,如何将此风险的影响降低到最小,同时确定主要风险出现的个数及时间。

5.11 建立风险清单

建立风险清单:列举出任何时候可能碰到的风险,而且要随时更新风险清单,鼓励项目团队的每个成员勇于发现问题并提出警告。

建立风险清单的一个办法是将风险输入缺陷追踪系统中,建立风险追踪工具,缺陷追踪系统一般能将风险项目标示为已解决或尚待处理状态,也能指定解决问题的项目团队成员,并安排处理顺序。

5.12 风险清单案例

风险清单给项目管理提供了一种简单的风险预测技术。 一个风险清单的例子:

风险

类别

概率

影响

资金将会流失

商业风险

40%

1

技术达不到预期效果

技术风险

30%

1

人员流动频繁

人员风险

60%

3

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

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

相关文章

9月17–20日Sui新加坡参会指南,期待与您相聚

📧叮,您有一份Sui新加坡参会指南待领取~ 随着新加坡Token2049大会的临近,我们为即将前往新加坡参会的朋友们准备了一份指南,帮助你快速了解Sui团队的活动安排,并与Sui团队来个线下面对面的交流。 9月17日…

解码消费医疗机构:如何通过全场景AI运营实现营销破局?

在当今的医美市场中,“流量困境”已成为众多消费医疗机构面临的严峻挑战。传播日益碎片化,各大机构对流量争夺也愈演愈烈,不少机构面临着新客获取难、老客户留存转化难、运营成本高昂等困境。 那么,面对这一挑战,消费…

Leetcode面试经典150题-79.搜索单词

题目比较简单,回溯最基础的题,记得除非覆盖,否则一定要恢复现场就行 解法都在代码里,不懂就留言或者私信 class Solution {public boolean exist(char[][] board, String word) {int m board.length; int n board[0].length;i…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言) Baumer工业相机Baumer工业相机的图像剪切(ROI)功能的技术背景CameraExplorer如何使用图像剪切(ROI&#xff0…

公司搬迁至外地:选择新办资质还是迁移资质?

当企业面临搬迁,尤其是跨区域搬迁时,资质管理成为企业运营策略中的一个关键议题。企业需要在新办资质和迁移资质之间做出选择,这关系到企业的合规性、市场竞争力和业务连续性。本文将探讨这两种选择的考量因素,以及如何根据企业的…

cityengine修改纹理创建模型

数据准备 1、建筑shp面数据 2、安装好cityengine软件 3、Arcgis(非必要) 效果 1、新建工程 路径不要放C盘下 2、复制规则文件和纹理 安装软件后,这些素材在电脑上能找到,默认位置是:C:\Users{计算机名}\Documents\CityEngine\Default Workspace\ESRI.lib,如果找不到…

售后质保卡小程序系统开发制作方案

售后质保卡小程序系统作为一种数字化解决方案,通过微信小程序,为顾客提供更加便捷、高效、环保的质保服务体验。售后质保卡系统是集质保信息查询、报修申请、服务进度跟踪、顾客反馈等功能于一体的质保卡小程序。 目标顾客 1. 终端顾客:直接…

昇思MindSpore AI框架MindFormers实践3:ChatGLM3-6B对一段文字进行提取

MindSpore和MindFormers安装参见:昇思AI框架实践1:安装MindSpoe和MindFormers_miniconda 安装mindspore-CSDN博客 使用了MindSpore2.2和MindFormers1.0 支持的模型: KeyError: "model must be in odict_keys([gpt2, gpt2_lora, gpt2_xl, gpt2_xl…

Linux:开源世界的璀璨明珠

一、Linux 概述 Linux 是一种自由和开放源代码的类 Unix 操作系统,诞生于 1991 年,由芬兰大学生 Linus Torvalds 开发。它的起源离不开 Unix 家族,1969 年肯・汤普森设计了早期 Unix 的源头,到 1973 年丹尼斯・里奇等人以 C 语言…

基于多种智能优化算法优化BP神经网络的数据回归预测

基于多种智能优化算法优化BP神经网络的数据回归预测,主要是指通过引入一些优化算法来改进传统的BP(反向传播)神经网络的训练过程,以提高其在回归预测任务中的性能。以下是这个过程的基本原理: 代码原理及流程 1. BP神…

Java的发展史与前景

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 🌈C专栏:C 文章目录 0. Java语言的发展史1.概述1.1 什么是Java1.2 …

k8s 中的 Service 简介

前言 k8s 集群中的每一个 Pod 都有自己的 IP 地址,那么是不是有 IP 了,访问起来就简单了呢,其实不然。 因为在 k8s 中 Pod 不是持久性的,摧毁重建将获得新的 IP,客户端通过会变更 IP 来访问显然不合理。另外 Pod 还经…

JavaScript --函数作用域变量的使用规则(局部和访问)

访问规则&#xff0c;就近原则 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"w…

江西金融发展集团通过ZStack Zaku容器云推进数字化转型

江西金融发展集团选择ZStack Zaku容器云平台作为其数字化转型的关键技术支撑&#xff0c;以期构建一个创新的金融服务平台&#xff0c;实现业务流程的自动化和智能化&#xff0c;同时推出符合市场需求的新型金融产品。 产融结合综合金融服务集团 江西金融发展集团股份有限公司…

延迟退休,程序员的你准备好了吗?

随着社会的进步&#xff0c;人们的寿命也逐渐延长&#xff0c;65岁被认为是人们应该退休的年龄。然而&#xff0c;对于那些已经经历了35岁危机的程序员来说&#xff0c;65岁依然让他们感觉年轻。 在这种情况下&#xff0c;该如何应对已板上钉钉的延迟退呢&#xff1f;本文将探…

OZON电子产品大幅增长,OZON跨境PS5销量激增

Top1 存储卡 Карта памяти Canvas Select Plus 128 ГБ 商品id&#xff1a;1548303593 月销量&#xff1a;2131 欢迎各位卖家朋友点击这里&#xff1a; &#x1f449; D。DDqbt。COm/74rD 免费体验 随着智能手机和平板电脑的普及&#xff0c;用户对于存储空…

C++模拟实现priority_queue(仿函数)

目录 优先级队列仿函数 优先级队列 优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的。类似于堆&#xff0c;在堆中可以随时插入元素&#xff0c;并且只能检索最大堆元素(优先队列中位于顶部的元素) 学习优先级…

Qt 学习第十天:标准对话框 页面布局

系统标准对话框 错误对话框 //错误对话框connect(createPro, &QAction::triggered, this, []{//参数1 父亲 参数2 标题 参数3 对话框内显示文本内容 。。。QMessageBox::critical(this, "报错!", "没加头文件!");}); 【运行结果】 信息对话框 co…

虚拟背景扣像SDK解决方案,电影级抠像技术

美摄科技&#xff0c;作为影像技术领域的领航者&#xff0c;凭借其革命性的虚拟背景抠像SDK解决方案&#xff0c;正以前所未有的方式&#xff0c;重新定义电影级背景抠像技术&#xff0c;让直播与视频制作迈入全新境界。 电影级抠像技术&#xff0c;重塑视觉盛宴 美摄科技的虚…

【运维】自动化运维工具,使用 Ansible 进行开发环境配置管理(本地/远程,brew/scoop/yum,docker/packer/openstack)

【运维】自动化运维工具&#xff0c;使用 Ansible 进行开发环境配置管理&#xff08;本地/远程&#xff0c;brew/scoop/yum&#xff0c;docker/packer/openstack&#xff09; 文章目录 1、什么是 Ansible&#xff0c;如何安装2、使用 ansible 自动配置本地开发环境&#xff08;…