软件项目由于其开发过程的复杂性,经常会出现项目失败的情况。如何进行软件项目开发工作,是很多软件界人士一直在寻求的答案。在此,笔者只是从自身多年的软件开发经验来谈一下对软件项目的看法。
首先,先来说明一下什么是KPA。KPA这个缩写来自于CMM,它的英文原义是Key Process Area。直译成中文就是关键过程区域,也可理解为要素、要点等。在这里我不说软件项目中的要素,而要使用这个洋名词。就是为了迎合大家喜欢新奇的心态,否则这篇文章可能就没有人看了。特别说明一下,在这里使用这个缩写,只是为了吸引人,并不是说本文所提到的KPA与CMM的KPA是相同的含义。
言归正传,说起项目管理,很多人马上会想到项目三要素:进度、成本、质量。项目管理也就是对这三要素进行协调与管理。但是,这是项目的通用特征,也只是一个理论,仅靠此是远不够的。否则,盖楼的项目经理就可以申请去管理修路项目了,同样也可以申请管理软件开发项目了(现在做软件项目经理收入高啊)。在实际中,每类项目除了做为项目的一些通用特征外,更重要是各类项目自身的特征。而项目的这些自身独有的特征,就是我们所要谈的项目的KPA。
软件开发项目一般被分为定制软件项目和产品软件项目,二者之间有一些差别,但大部分都是一样的。下面我们先来看一下软件项目共有的KPA。
1、需求KPA
l 功能定义
l 系统分析
l 功能跟踪
l 功能变更与控制
l 功能评审
2、软件开发KPA
l 软件设计
l 设计变更与控制
l 设计评审
l 编码
l 编码复审
l 每日构建
l 软件部署
3、测试KPA
l 测试用例设计
l 测试用例评审
l 测试执行
l 缺陷跟踪与监控
4、项目计划KPA
l 计划制定
l 计划跟踪与调整
l 计划评审
5、配置管理
l 配置管理工具
l 配置基线
l 配置项
l 配置管理委员会
6、质量管理
l 质量保证计划
l 质量保证委员会
l 质量保证体系
7、子合同管理
l 分包商审核
l 合同评审
l 入库检验
l 过程监控
定制软件项目除了上述这些KPA以外,主要是包括一些实施过程中的KPA。主要有以下内容:
8、用户教育
l 培训资料编写
l 用户培训
9、软件实施
l 系统安装
l 系统初始化
除了以上这些直接与软件开发活动相关的KPA以外,还有一些KPA可能与具体的项目关系不大,但却间接影响着项目的成败。主要有以下这些:
10、其它
l 商务关系管理
l 人员岗位与职责
l 激励与考核体系
l 管理办法与流程
l 技术规范
l 技术培训与交流
l 售后服务
以上这些KPA,基本上包括了大多数的软件开发工作。在实际中,各个公司或项目团队依据不同的情况,会进行不同的取舍。
上面唠唠叨叨的说了一大堆,可能大家要问了,这些条目我都知道,你道底要说明什么问题,不会只是让我再回忆一下这些内容吧。首先声明,决对不是这样,我没这么无聊。在这里我不厌其烦的把这些列一遍,其实是要告诉大家。软件项目管理,就是要管理这些KPA。做为一个合格的软件项目管理者,必须对以上各KPA详加了解,并在实际中加以灵活应用。
在软件项目管理中,一直存在两种管理模式。一种可称为IBM模式,另外一种可称为Microsoft模式。IBM模式的主要思想是按照工业化的思路来进行管理,项目经理一般由MBA来做。这种模式在软件开发比较成熟,软件项目变化相对较小时效果较好。Mircrosoft模式由微软公司首创,随着微软公司的壮大而在全球软件界得以推广。这种模式充分考虑了软件产业自身的不成熟,更加强调项目人员的技术背景,对项目沟通工作和风险管理关注更多。这种模式在软件开发不成熟,项目变化较大时更为适合。另外,这种模式对人的主观创造性更有促进作用,更能保证软件的市场竞争力。但这种模式最大的缺点就是对项目人员的素质要求较高,尤其是技术素质。在这种模式下,项目经理一般由资深开发人员来担任。
软件产业在今天的中国,还是处于一个相当不成熟的状态。没有合适的开发模型、没有大家认可的国家标准、没有对从业人员真正能力的认定标准、没有几个让大家真正认可的软件产品。在这种情况下,如何管理软件项目,企业如何建立适合自身的软件开发团队,就成为一个仁者见仁,智者见智的事情。到底哪种做法才是对的,恐怕只能由市场来考验了。再过10年,也许到那时,大家就不会再为这些问题来烦恼了。为什么呢?不合适的企业已被淘汰出局了,留下的都是合适的,没有必要在这上面烦恼了。
在这里,我专门将软件项目开发中的KPA列出来,就是希望大家最好先将这些KPA相关的知识掌握好了,再去谈软件项目管理。否则就是误人误已,早晚没法在这个行业混下去。 也许我这个人说话不好听,但所谓良药苦口利于病,忠言逆耳利于行。如果你想准备做软件项目经理,而你还不具备我上面所说这些知识,那就快去学,学好了再来管理也来得及。如果你看到我这些话很生气,那快去学习练练度量。如果没有这样的容人度量,那肯定是做不成的。否则,一旦真的管理了项目,项目人员对你的评价,那才真是让你容不了的。如果你有多年项目管理经验,想和我对软件项目管理进行讨论,在下不胜欢迎,随时候教,不管你的想法是否和我相符,我想讨论对你我都是有利的。