软件开发的管理和控制 (转)

软件开发的管理和控制 (转)[@more@]
软件开发的管理和控制

作者:不详

文章来源: .NET/getc/200103/0314013.htm" target=_blank>http://home.kzinfo.net/getc/200103/0314013.htm
 
 文章摘要: 
  软件开发是一项很复杂的工作,对于软件开发的管理和控制,现在有一门专门的学科:软件工程。在
这方面有许多国家标准和国际标准。许多公司也有相应的文档模版,及相关规定。本文从管理和实践的角
度来探讨软件开发的管理和控制应遵循的的一些原则。 
 
--------------------------------------------------------------------------------

正文: 

软件开发的管理和控制  

  软件开发是一项很复杂的工作,对于软件开发的管理和控制,现在有一门专门的学科:软件工程。在
这方面有许多国家标准和国际标准。许多公司也有相应的文档模版,及相关规定。现在不谈技术角度来规
范软件开发的管理和控制,从管理和实践的角度来探讨软件开发的管理和控制应遵循的的一些原则。
  对于软件开发项目中,经常出现两种极端情况,一种是创造了新的生产率和质量的纪录;一种则完全
是一场灾难,不是被取消就是拖延很长时间。前者如在很短的时间内,为了赶进度,在几乎不可能的时间
内开发出一套软件产品,创造了软件开发的记录,满足了上级所要求的上机日期,由于开发时间太短,过
于仓促,上机时,问题百出,试运行时间长达几个月或一年半载的,而且 程序一改再改,维护工作量大。
后者,如某套 系统未弄清楚需求,或因设计问题,开发失败。通过提炼这些成功和失败的例子,软件项目
成功或失败的根本原因可能会更清晰一些。
  在讨论这些原因之前,我们先来说明一下什么情况可以称为失败的软件项目。 
  1. 由于费用超支或计划 执行超时而终止。 
  2. 完成计划的时间或费用超过了原计划的50%。 
  3. 由于质量或 性能上的原因引起和客户的纠纷。

  下面我们将按其影响大小的顺序排列说明5种错误的实践方式。
  错误1:没有软件项目开发的历史数据 
  缺乏软件开发的历史数据是大多数软件项目失败的关键所在, 这样的结论也许使很多人感到吃惊,但
事实就是如此。没有一个可靠的软件开发的历史数据会使项目经理,程序员,客户对于软件开发的过程缺少
清醒的认识。 
假设现在你正在管理一个软件项目,而这个项目还没有一个公司在36个月内完成。作为一个负责的经理,你
作了一个比较细致和保守的估计,然后告诉你的客户和你的手下说你认为这个项目需要36-38个月完成。然
而常常有这样的情况发生:你的客户和程序员要求把时间 压缩到18个月。客户一方面希望软件尽早投入使
用而产生经济效益,一方面也想压缩项目时间作为一个讨价还价的筹码;而程序员一方面可能过于自信,一
方面尽早结束项目也能使他们多赚点钱。而此时你的手头上也没有一个可靠的软件开发的历史数据,在他
们的压力下你同意了18个月的计划,于是一场灾难开始了。 
  在项目的开始阶段你发现计划被拖延了,于是开始向程序员们施加压力,要求他们加快进度,程序员为
了追求进度而不得不把其它指标放在一边,这些问题不断的积累下来而项目经理却蒙在鼓里。到了项目中
后期这些质量问题会不断暴露出来,而且互相关联并且难以解决,甚至有些是系统设计的问题,这时才发现
好多模块要推倒重来,18个月完成计划变成了天方夜谭。虽然上面只是一个虚拟的例子,但在实际中这种情
况比比皆是。问题的关键就在于软件开发的历史数据是反映软件开发队伍的能力的标尺,没有了这个标尺,
就无法对软件的开发过程有一个清醒的认识。 

  错误2:不重视使用软件费用估值工具软件和计划工具软件
  软件开发方法述评
  60年代中期开始爆发了众所周知的软件危机。为了克服这一危机,在1968、1969年连续召开的两次著
名的NATO会议上提出了软件工程这一术语,并在以后不断发展、完善。与此同时,软件研究人员也在不断
探索新的软件开发方法。至今已形成八类软件开发方法。

  一、Parnas方法
  最早的软件开发方法是由D.Parnas在1972年提出的。由于当时软件在可维护性和可靠性方面存在着
严重问题,因此Parnas提出的方法是针对这两个问题的。首先,Parnas提出了信息隐蔽原则:在概要设计
时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这
些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。信息隐蔽技术不仅提高了软
件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。现在信息隐蔽原则已成为软件工程学中
的一条重要原则。
  Parnas提出的第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。软件是很脆弱的,
很可能因为一个微小的错误而引发严重的事故,所以必须加强防范。如在分配使用设备前,应该取设备状
态字,检查设备是否正常。此外,模块之间也要加强检查,防止错误蔓延。
  Parnas对软件开发提出了深刻的见解。遗憾的是,他没有给出明确的工作流程。所以这一方法不能独
立使用,只能作为其它方法的补充。

  二、? SASA方法
  1978年,E.Yourdon和L.L.Constantine提出了结构化方法,即SASD方法,也可称为面向功能的软
件开发方法或面向数据流的软件开发方法。1979年TomDeMarco对此方法作了进一步的完善。
  Yourdon方法是80年代使用最广泛的软件开发方法。它首先用结构化分析(SA)对软件进行需求分
析,然后用结构化设计(SD)方法进行总体设计,最后是结构化 编程(SP)。这一方法不仅开发步骤明
确,SA、SD、SP相辅相成,一气呵成,而且给出了两类典型的软件结构(变换型和事务型),便于参照,
使软件开发的成功率大大提高,从而深受软件开发人员的青睐。

  三、面向数据结构的软件开发方法
  Jackson方法
  1975年,M.A.Jackson提出了一类至今仍广泛使用的软件开发方法。这一方法从目标系统的输入、
输出数据结构入手,导出程序 框架结构,再补充其它细节,就可得到完整的程序结构图。这一方法对输
入、输出数据结构明确的中小型系统特别有效,如商业应用中的 文件表格处理。该方法也可与其它方法结
合,用于模块的详细设计。
Jackson方法有时也称为面向数据结构的软件设计方法。
  Warnier方法
  1974年,J.D.Warnier提出的软件开发方法与Jackson方法类似。差别有三点:一是它们使用的图形
工具不同,分别使用Warnier图和Jackson图;另一个差别是使用的伪码不同;最主要的差别是在构造程序
框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据
结构。

  四、问题分析法
  PAM问题分析法。PAM(ProblemAnalysisMethod)是80年代末由日立公司提出的一种软件开发方法。
  PAM方法希望能兼顾Yourdon方法、Jackson方法和自底向上的软件开发方法的优点,而避免它们的缺
陷。它的基本思想是:考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。这一
方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关
系逐步综合处理框,直到画出整个系统的PAD图。从上述步骤中可以看出,这一方法本质上是综合的自底
向上的方法,但在逐步综合之前已进行了有目的的分解,这个目的就是充分考虑系统的输入、输出数据结
构。
  PAM方法的另一个优点是使用PAD图。这是一种二维树形结构图,是到目前为止最好的详细设计表示方
法之一,远远优于NS图和PDL语言。
  这一方法在日本较为流行,软件开发的成功率也很高。由于在输入、输出数据结构与整个系统之间同
样存在着鸿沟,这一方法仍只适用于中小型问题。

  五、面向 对象的软件开发方法
  面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。
  随着 oop(面向对象编程)向OOD(面向对象设计)和 ooa(面向对象分析)的发展,最终形成面向对
象的软件开发方法OMT(LbjectModellingTechnique)。这是一种自底向上和自顶向下相结合的方法,而且
它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。所以
OMT彻底实现了PAM没有完全实现的目标。不仅如此,OO技术在需求分析、可维护性和可靠性这三个软件开
发的关键环节和质量指标上有了实质性的突破,彻底地解决了在这些方面存在的严重问题,从而宣告了软
件危机末日的来临。
  自底向上的归纳
  OMT的第一步是从问题的陈述入手,构造系统模型。从真实系统导出类的体系,即对象模型包括类的
属性,与子类、父类的继承关系,以及类之间的关联。类是具有相似属性

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-988086/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-988086/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值