background image

上的费用在

1970 年用只占到软件的总预算 35%到 40%,到 1980 年的时候就已经上升到了

40%到 60%,而到 1990 年的时候更加明显的上升到了 70%至 90%。
  维护费用只不过是软件维护的最明显的代价,在未来,人们会更加关心那些其他的、显
现不明显的一些代价。由于可用的资源必须供维护任务使用的特点,这就容易带来耽误、严
重时丧失开发良机的问题,这种代价就是一种是软件维护的无形代价。
  此外,还有其他无形的代价还有:对于看来合理的有关改错以及修改要求未能够及时
完成时会导致用户满意度下降;因为维护时进行的改动而导致的在软件中出现潜伏错误,
进而影响了软件质量;在需要将软件工程师调去进行维护工作的时候,这会导致在开发的
过程中出现一定的混乱。
  软件维护的最后一个代价是生产率的大幅度下降,这种情况在维护旧程序时常常遇到。
例如,

Gausler 在 1976 年的时候曾报道,美国空军的飞行控制软件的每条指令的开发成本

只有

75 美元,相对而言,而每条指令的维护成本甚至达到了 4000 多美元,这也就是说软

件维护使得在生产效率中出现

50 倍的下降。

  在维护工作中,劳动可以分为生产性活动和非生产性活动两个方面。
  生产性劳动包括:对于软件的分析评价;软件修改的设计以及编写软件的程序代码等。
  非生产型劳动包括:对于程序代码功能的理解、对于数据结构的解释、接口特点和性能
限度等
  以下这一模型对于我们理解维护的工作量有一定的帮助:

M=P+Kexp(c

—d),可以在

一定程度上指导我们的工作。

M 是指总的工作量,p 是维护时生产性的工作量,k 定义为经

验指数,

c 是指工作复杂的程度,d 是指工作者对软件熟悉的程度。

  四、影响维护工作量的因素
  在软件的维护过程中,影响维护工作量的因素可以分为以下几个方面:
  (

1)首先软件维护的过程这就带来了理解别人写的程序时会出现很多困难,这种困难

随着软件配置成分的减少会出现较大的增幅。
  (

2)维护,这就说明了软件往往会出现文档不全的现象,这也会增加维护难度。

  (

3)在软件开发设计的时候对于维护工作没有进行过多的考虑。

  (

4)软件公司的人员流动性非常强,很容易开发人员在出现开发完就不见人的情况。

  (

5)很难对软件的建立过程进行追踪。

  五、软件维护的副作用
  修改软件是危险的。在复杂的逻辑过程中,每一次修改都可能使潜在的错误增加。设计
文档和细心的回归测试有助于消除错误,但仍然不可避免地出现维护的副作用。这种副作用
主要体现在以下几个方面:
  修改代码的副作用:代码不能随意的修改,最为简单的修改都有可能导致非常严重的
后果。虽然不是所有的副作用都有严重的后果,但修改容易招致错误,而错误经常造成各种
问题。在这里我们需要再一次强调

Murphy 的法则:如果一个源语句进行一个修改,它将可

能导致新的错误。