莫泊桑项链电影下载:从软件蓝领的提出看中国软件业的发展--葛志春

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 06:39:43
从软件蓝领的提出看中国软件业的发展  
 "蓝领"给人的第一印象是穿着工服,机械式地在流水线上做着重复劳动的工人。最生动的莫过于"摩登时代"中卓别林的表演。而软件蓝领意指那些面对电脑,写代码的工人。这种概念的提出似乎让人觉得中国软件发展之瓶颈是编码人员的缺乏。果真如此吗?
  毋庸置疑,软件的开发有个大致的流程,从生产角度来看,有个流水线。然而,有别于一般意义上的流水线,这个流水线没有一个机械的制约,也没有一个量化的标准,在任何时候都很难正常地流下去,中间充满着反复,修正的过程。无论是哪种软件开发方式,瀑布式的,螺旋式的,快速原型法等,都强调这个反复的过程,而不去追求一个非常量化的标准。为什么呢?在这竞争激烈的时代,功能要求越来越多,交付时间越来越短,客户化的程度越来越大,而其间的需求又常处在变化之中,所谓"唯一不变的就是变"在软件开发中尤为明显。我们已无法指望在每一阶段为下一阶段提供完善的结果,常常需要的是各阶段的并行和平衡。更何况,软件的特性导致许多结果是靠下一阶段或更后的阶段才能验证其正确。例如,在需求阶段,我们规划实现某种功能,在设计阶段对其性能进行设计,然而我们会遇到在初步编码完成和集成测试时才发现性能达不到指标或功能需做调整,以求整体的优化。为什么呢?这是因为软件开发至始至终是一个创造性的过程。创造完毕之时,也是产品基本交付之始。
  既然是一个创造性的过程,机械式地工作或蓝领之说就难成立。但我们要做的又是一个工程,那么如何做到大规模的生产进而稳定发展中国的软件行业?为此,我们需要关注的是软件开发的过程管理或过程控制。
  过程管理其根本是要理顺软件开发各阶段的协同运作,使个人知识的积累成为公司知识的积累。软件公司大多遇到过人员瓶颈,骨干人员的去留变成项目成败的关键,或拼命加人也未见时间的缩短或质量的提高。这些问题都是我们忽略了软件开发的过程管理,而侥幸地认为靠个人英雄或人海战术就能完成软件的开发,达到公司的积累,成本的降低。
  在过程管理中,各阶段不单纯是划分任务的标志点,更重要的是阶段成果相互验证,完善的反馈点。正如当在设计阶段时,我们需考虑其需求之合理性;当我们在编码时,我们需关注其设计之合理性。毕竟,设计在很大程度上是纸上谈兵。若设计详细到蓝领们能按图索骥,其实我们大可花精力规范一套设计语言,使编码自动化。然而,要做到这一点,也即规范到每个模块,函数的输入,输出,算法,其耗费的精力与产出已不成比例。毕竟我们是做工程,有其时间,资源的局限性。
  软件验证经常是在编码与测试阶段,而加人也常常是这两个并行阶段的重点考虑。但我们是否真正理解这两个阶段的过程管理呢?代码的增加会导致bug的增多,测试又会发现更多的bug,我们是否考虑过代码的稳定与bug数的关系;在发布时,是否考虑过代码和bug的周期变动情况;是否又考虑过开发队伍和测试队伍的交互过程?这些不仅影响着软件的质量,同时也是软件开发过程的不可视和不可控的一个重要原因所在。经常,我们不就发现前面的几个阶段,包括需求,功能,设计似乎风平浪静,但在编码与测试时,就问题百出。这时若再加上前面几个阶段的变更,便会雪上加霜。一个好的过程管理,应该使的发布变成周期性的一列火车,而火车的各个站点就是每个阶段,任务就是要能赶上每趟班列。这样周而复始,来完成每次的发布,也通过协调,使得过程管理得以完善,历史数据成为决策的信息,流程成为一个不断进化中的流程。
  当然为使这个过程有效,各种工具的合理利用是我们考虑的一个重点。但这并不是一味地追求工具的万能。在中国软件人员中,唯工具论是一普遍现象。似乎掌握了工具,便掌握了软件开发的真谛。这想必也是软件蓝领的发源之一。工具是重要的,但它仅是辅助创造过程的。没有了思想,拿着工具,也只能是在简历上多填几个英文的缩写。但这思想的培养并不是通过软件速成班能够实现的。世界的发展沿着劳动密集,设备密集,信息密集到知识密集的线路来发展。软件产业是一个典型的知识密集性产业。堆砌很多蓝领,掌握若干工具,并不是知识密集性产业的标志,知识的积累和在积累中的知识管理,才是其根本。
  我们经常困惑如何估算软件开发的大体工作量,这个困惑一来是由于其软件开发是个创造性劳动的特点,另一个是无法正确估算各自企业的软件生产能力。没有了历史的积累,就没有了判断当前生产能力的依据和提升的基础。而这积累便是通过过程管理来产生,又反作用于过程,使得过程管理变成在运行中不断完善的动态,进化系统。从这个系统里面,我们可以得知制作一个模块的大概时间,也可以知道在各个阶段的大概时间;同时更重要的是通过分析各阶段的交互过程,我们可以发现问题的瓶颈所在,是需求的不过关,还是设计问题,抑或是测试与编码的不匹配等等,进而能针对性地解决问题,而不是脚痛医脚,头痛医头。只有在这个系统里面,人员和工具才能创造出预期的生产力。否则,若未加分析地加编码人员,那花在沟通,协调,内耗上的时间只会延长交付时间,降低交付质量。
  软件工业的发展只有几十年的时间,在中国,也就才十几年的历史,又不幸地有一段浮躁的网络泡沫期。在这竞争激烈的年代,为了拿到项目,软件公司拼命地做出价格、时间、质量、服务的空头许诺来满足客户的要求,但唯独忘记的是质量,成本保证体系不是靠承诺和纸上谈兵的项目管理理念,而是靠实实在在的软件过程运作。承诺的不兑现,导致客户对软件企业的信任度越来越差;鱼目混珠,导致一个项目在报价时,金额可以从几万到上千万。这想必就是当前软件业的状态。而软件蓝领的提出只会给市场传递一个错误的信息:只要多加一些蓝领工人就能解决问题。这将使得软件从业人员对其职业的迷茫和规划的短暂,而也会加剧客户对软件的不切实际的预期和产品交付时的恼怒。这些只会导致软件产业的衰败,而不是发展。所谓皮之不存,毛将焉附,没有了过程管理这个骨干,人员的增加只会产生消耗能量的无效运动;失去了客户和市场,这个行业又怎能发展呢?