软件开发的管理和控制

原创 2001年09月30日 09:10:00

 

 

 软件开发的管理和控制

PS:本文是由半导结合国外资料和自己经验总结的

恳请各位网友批评指正

发言人 semicon 

    软件开发是一项复杂的工作,对于软件开发的管理和控制,

展出一门专门的学科:软件工程。在这方面有许多的国家标准和

国际标准。但软件工程更多的是从技术的角度来规范软件开发的

管理和控制,本文试图从管理者和实践的角度来阐述一些软件开发

的管理和控制所应遵循的基本原则。

    在软件开发项目中经常出现二种极端情况:一种是创造了新的

生产率和质量的纪录;一种则完全是一场灾难,不是被取消就是拖

延很长时间。通过提炼这些成功和失败的例子,软件项目成功或失

败的根本原因可能会更清晰一些。

    在讨论这些原因之前,我们先来定义一下什么情况可以称为失

败的软件项目。

    1. 由于费用超支或计划执行超时而终止。

    2. 完成计划的时间或费用超过了原计划的50%

    3. 由于质量或性能上的原因引起和客户的纠纷。

    下面我们将按其影响大小的顺序排列说明5种错误的实践方式。

 

错误1:没有软件开发的历史数据

    缺乏软件开发的历史数据是大多数软件项目失败的关键所在,

这样的结论也许使很多人感到吃惊,但事实就是如此。没有一个可

靠的软件开发的历史数据会使项目经理,程序员,客户对于软件开发

的过程缺少清醒的认识。

        假设现在你正在管理一个软件项目,而这个项目还没有一

个公司在36个月内完成。作为一个负责的经理,你作了一个比较细

致和保守的估计,然后告诉你的客户和你的手下说你认为这个项目

需要3638个月完成。然而常常有这样的情况发生:你的客户和程

序员要求把时间压缩到18个月。客户一方面希望软件尽早投入使用

而产生经济效益,一方面也想压缩项目时间作为一个讨价还价的筹

;而程序员一方面可能过于自信,一方面尽早结束项目也能使他们

多赚点钱。而此时你的手头上也没有一个可靠的软件开发的历史数

,在他们的压力下你同意了18个月的计划,于是一场灾难开始了。

在项目的开始阶段你发现计划被拖延了,于是开始向程序员们施加

压力,要求他们加快进度,程序员为了追求进度而不得不把其它指标

放在一边,这些问题不断的积累下来而项目经理却蒙在鼓里。到了项

目中后期这些质量问题会不断暴露出来,而且互相关联并且难以解决,

甚至有些是系统设计的问题,这时才发现好多模块要推倒重来,18个月

完成计划变成了天方夜谭。虽然上面只是一个虚拟的例子,但在实际

中这种情况比比皆是。问题的关键就在于软件开发的历史数据是反映

软件开发队伍的能力的标尺,没有了这个标尺,就无法对软件的开发过

程有一个清醒的认识。

 

错误2:不重视使用软件费用估值工具软件和计划工具软件

    国内的软件公司大多数是处在“十几条枪,一个手工作坊”

的水平上,在承接软件开发的项目之后往往是几位骨干人物讨论之后

对费用和进度作一个大致的估计,然后就开始进入项目的执行。这种方

法带有明显的主观性。在作一个精确的软件费用估计和作一个比较现

实的项目开发计划时需要考虑许多因素。对于一个大的软件项目,用手

工作费用估计和作计划是不能胜任的。现在国外市场上有大约50种商

业软件费用估计工具包和大约100种商业项目计划工具包,使用他们作

精确的估计比手工的估计更可能获得成功。常用的软件费用估计工具

软件有Checkpoint,Colomo,Estimacs,Price_s,Slim 常用的项目管

理软件有MS Project,Primavera,Project Manager*s Workbench,

Timeline。把这二种工具软件联合使用可以互为补充,帮助经理驳回

客户和程序员的无理要求并且能精确的控制项目的执行。

 

 

错误3:忽视用户的需求的变动

    尽管最初的用户需求在签定开发合同时已经包含在需求说明书中,

但在整个开发周期中期望用户的需求一直保持不变是不大可能的,

为用户对于如何应用计算机软件并没有一个成熟的经验。在项目进行

中用户的需求会不断的增长,一般情况下用户的需求以每月1%的速率增

,如果一个项目在12个月内完成,最终将有超过10%的改动,如果项目

要持续36个月,最后将增加1/3的功能。每月1%也只是一个经验数据,

个缺乏计算机应用经验的用户会更频繁的改变和增加他的要求。因此

在作项目的费用和时间估计时一定要考虑用户需求的变化。一种比较

明智的方法是在签定开发合同时把用户需求的改动和经济利益挂钩,

果用户增加或改动了需求,那么软件的交付日期可以推迟,费用也应增加。

 

错误4:忽视监督项目的进度

    到目前为止,软件产业还没有一个标准的项目进度的检查标准。一

个比较清晰的尺度是用已经实现的软件功能反映项目的进度。但这种方

法是否就是最科学的衡量标准,现在还不能定论,毕竟在一个软件项目中

软件功能只是一个主要而非全部的任务。因此一个项目经理在监控项目

执行时不应该只关注实现的软件功能,还要关心文档,测试,技术支持这些

因素。在实际工作中我们经常听到经理或程序员说这样的话:“项目已经

完成了90%,这种结论带有明显的主观性,一个优秀的项目经理不应该被

手下的判断所迷惑,而应该按照一个比较客观的标准去深入检查。

 

错误5:忽视设计复查和代码复查

    很多程序员习惯于这样一种工作方式:只做不想。他们更关心每天

可以写多少行代码,完成几个模块。在这种态度下,他们都很不愿意复查

自己的工作,而习惯于在软件测试阶段把隐藏的错误改正过来。但设计复

查和代码复查在大型的软件项目中已经有30年的应用历史,而且已经被证

明在设计和代码编写阶段的复查比软件测试更能有效的消除错误,一些经

验数据表明,在设计和代码复查时发现的错误是在同等工作量下软件测试

发现的错误的两倍。

 

结论:

    软件开发是一个带有一定风险的工作,为了把风险降到最低, 在项目

的执行中项目经理必须严格的监督项目的进度,对程序员不愿复查的坏习

惯要给予纠正。项目经理必须要从软件开发的历史数据和辅助工具包提

供的数据中作出精确的估计,在作估计时他应该考虑为不断变化的用户需

求留出富余量。

摘自: bbs.net.tsinghua.edu.cn

软件开发项目成本管理实践

人力不足,任务没有完成; 人力投入进去了,任务还没有完成; 结果项目延期,利润所剩无几。本文将从项目经理、软件开发团队的角度,怎么做项目成本管理。...
  • xiaoyw
  • xiaoyw
  • 2016年12月19日 22:46
  • 1800

软件版本控制介绍

本文集中讨论版本控制如何工作。我将从宏观的角度开始,结尾将关注于一个具体的Git例子,Git是一个最近比较流行的版本控制系统。你或许已经知道这个版本控制主要用来追踪和记载一个或者多个文件的历史记录。然...
  • bamboolsu
  • bamboolsu
  • 2015年10月22日 16:45
  • 1310

谈谈我对软件开发项目管理的理解

首先声明一下,我并不是一个PM,也从未做过与项目管理相关的工作。作为一个每天都偏安一角静静地写代码的程序猿,本不应该发表与项目管理相关的观点。无奈,以个人的角度和眼光,鉴于工作中出现的一些问题,还是想...
  • sweeper_freedoman
  • sweeper_freedoman
  • 2017年02月17日 02:48
  • 982

软件开发项目风险管理的几点体会

参与过大型软件项目的人都会认识到许多事情都可能出错,一但出错就可能给项目带来危害、损失或其它不利影响。风险是在项目中发生的一系列事件或不利结果的可能性。软件开发是一项 高风险的活动,在项目开发过程的...
  • kaiyang45
  • kaiyang45
  • 2015年10月14日 09:11
  • 5890

管理和控制--软件开发

软件开发的管理和控制,容易产生的错误
  • syf88888888
  • syf88888888
  • 2016年12月09日 20:11
  • 59

版本控制与常见的分支模型

不稳定主干策略、稳定主干策略、敏捷发布策略。 下面是对这几种策略的摘录: 不稳定主干策略 使用用主干作为新功能开发主线,分支用作发布。 被广泛的应用于开源项目。 ...
  • huaishu
  • huaishu
  • 2014年10月27日 17:49
  • 4391

LED显示屏控制系统软件的开发

摘要: 伴随当今高度发展的信息时代, LED 显示屏控制技术在信息领域也取得了长足的进步。灰度控制技术的发展, 真彩色图像的展现; 驱动电路的灵活、高效, 控制系统技术的提高无不体现了LED 行业技术...
  • u012781329
  • u012781329
  • 2013年12月23日 17:20
  • 1256

软件开发中的版本控制

面对不知所措的异常时,版本的控制,显得是如此的重要
  • lihxa2002
  • lihxa2002
  • 2016年11月07日 09:15
  • 407

软件研发部管理制度

为加强对公司软件研发部门工作管理,缩短开发周期,提高软件开发质量,降低开发成本,提高开发效率,特制定软件研发部管理制度。 第一章、总则 为保证日常工作正常有序的进行,让开发中各个环节更紧凑,更可控...
  • haifengid
  • haifengid
  • 2016年06月30日 09:57
  • 9924

关于软件开发团队的一些思考

概述: 目前一些软件开发团队,特别是中小型团队,由于在低成本模式下运行,加之对软件过程管理的不尽规范,在团队建设上只重视代码开发,不重视设计,只重视编程技术,不重视需求分析、架构设计等技术,只重...
  • xjbclz
  • xjbclz
  • 2016年06月20日 21:48
  • 1599
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件开发的管理和控制
举报原因:
原因补充:

(最多只允许输入30个字)