我们天天在开发软件产品,有必要思考一下软件产品的特点,我大致查阅了有关材料,做点总结:         

  1. 知识密集

  2. 创造性

  3. 虚拟性(不可见性)

  4. 实现不具有唯一性

  5. 复杂

  6. 高附加值

  7. 逻辑性强(*)

      由于软件所具有的这5个特性,导致了软件开发工作的复杂性。软件开发知识密集,意味着我们需要高智商的群体来完成,具有创造性也对人提出了很高的要求。虚拟的,看不见,就验不着,验不着的事就会有点悬,因此软件开发就必须千方百计的要让它看得见,文档、模型都是在设计阶段的要求。

      看不见的问题,也导致客户在表述有关需求的难度,这个难度也正好是软件开发最不好解决的问题之一。

      实现不具有唯一性,这个就麻烦了,每个人都可以有自己的做法,都能实现软件产品外部看起来的行为,但是里面怎么样,只有专业人士可以明白,这也导致了很多投机取巧的行为出现。

      复杂,这个Dijistra在几十年做过一个总结,大意是说只有软件系统从底层到顶层的复杂性为9级。

      高附加值,这个不知道是好是坏,好在于这个特性说明了软件的重要性,坏,也就说明了一旦出事的严重性。一旦软件投入使用,可能影响到一个企业的各个方面。

      总的来说,软件产品是纯脑力劳动的结果,它不同于我们以往的产品。我们不能要求梵高一定要每天画出一副画,但社会确要求我们的工程师按照这个速度生产软件。

      我们是脑力劳动者,却被像工人一样要求,我们是知识工人。

posted on 2010-08-13 18:38  caidehui  阅读(505)  评论(0编辑  收藏  举报