软件开发工艺的改进是软件业的突破
日期:2006-11-26 荐:
19世纪发生在制造业的各国的工业革命,通过标准化的生产形成社会化的分工,促使制造业从手工作坊走向了社会化大生产的时代;社会化大生产极大的丰富了商品的供应,降低了成本,由此带来了人类文明的一次大飞跃!
近年来,在网络经济泡沫破灭之后,业界人士一直期盼着下一轮软件革新。在分析下一轮软件革新是什么之前,让我们回顾一下传统产业的发展规律和软件产业的现状。
产业阶段性分析
一个产业,一般可以分为四个时期。每一时期都有其不同的特点与主要矛盾,谁有了解决主要矛盾的方法和产品,谁就掌握了本产业在这一阶段发展的金钥匙。
第一个产业阶段为婴儿期。在这个阶段,事实上整个产业还没有真正的形成,而仅是以某一形式与其母产业结合在一起,并且慢慢从母产业中分离出来。在这个阶段的主要矛盾是“新概念”的有与无。一个企业如果有一个符合未来产业发展远景的新概念,必定在媒体的炒作下而闻名。
第二个时期为青少年期。在这个阶段,产业开始形成规模,技术日新月异,公司如雨后春笋般出现,产业经营处于“暴利”阶段。这个产业阶段的主要矛盾是有没有“新技术”,谁掌握了新技术,谁就是“武林盟主”。
第三个阶段为壮年期。产业所需技术已基本成熟,分工越来越细,产业进入稳定持续发展期。产业链已经形成,公司经互相兼并,在产业链中都已找到自己的位置。因为技术不再是某几个公司的专利,在大家大打“价格战”之后,也已无“暴利”可言;所以这个阶段的主要矛盾是“新工艺”——只有工艺的不断创新,降低成本,提高质量,才能在“价格战”中取胜,获得长期稳定的发展。
第四个产业阶段是老年期,俗称“夕阳工业”,就像某些制造业。在这个阶段,技术已经非常成熟,工艺也已无太大的改进空间,于是“劳动力成本”上升成为主要矛盾。“夕阳产业”总是向劳动力成本低的地区漂移。如今,我国已成了“世界制造中心”,就是因为我国的物美价廉的劳动力优势。外包、代工是这个阶段产业的典型特征。当然了,新的更替产业在这个阶段的后期已经开始慢慢的萌芽。
软件产业所处阶段
那软件产业现在处于哪一阶段呢?在北美,软件作为产业出现于70年代末,80年代初(之前还不能叫产业),80年代末至今是新概念、新技术的爆发期,多种技术思想“各领风骚三五年”,逐渐形成了.Net和J2EE两大阵营,软件技术已经越来越成熟,分工越来越细。而从外包的风行也可以看出软件技术走向成熟。从商业角度来看,企业软件的高价位上的“假性饱和”也是产业走向成熟的标志。所以,从全球角度来看,现在的软件产业处于青少年期转入壮年期之间,但现在的软件开发工艺还是“人海战术”,软件产业还是“高级劳动力密集型”,工艺的创新余地极大,许多软件公司已经在工艺创新与工具创新上下功夫。新的工艺与工具将会大大提高自动化程度,并降低对软件人员的技术要求。并且,随着技术的成熟,硅谷产业低端技术开始外移,低端技术已经步入老年期,但软件工业化在历经风雨、变革之后,正在成为硅谷目前革命的方向。软件产业正步入壮年期,它正迈过劳动密集型手工作坊式生产,从工业化定制,走向工艺化精益求精和大规模定制生产。
软件革命从传统产业上的借鉴
在产业发展史上,有一个后来居上的先例,那就是日本的汽车产业。日本汽车制造业并不是靠外包、代工发展起来的。二战后的日本经过十几年的发展后,各行各业元气恢复,但所有的工业还是受美国的支配,这时的日本急需建立自己的支柱产业。
当时的美国汽车业以汽车城底特律为代表,工业化程度也很高,完全打破了手工作坊的生产,汽车业的生产效率第一次得到大幅度的提高。但是,日本发明了敏捷制造(JIT,Just In Time Inventory),并以日本人特有的在细节上精益求精的精神对工艺的每一个操作参数进行优化、在零部件的质量上下功夫,实现了汽车制造工艺的第二次革命。日本就是凭借第二次的工艺革命取代了美国在汽车行业的垄断,使美国汽车城底特律成了“鬼城”(Ghost Town)。时至今日,走在底特律老城区,你仍可感受到产业竞争的残酷。日本不但在商场上赢得了汽车产业的竞争,而且改变了日本人在美国人心目中的形象。现在,美国人在赞叹自然现象的精确时,会开玩笑说“God must be Japanese, a perfect engineer”(自然界那么精确,创造自然的上帝一定是日本人,一个完美的工程师)。可见,工艺化生产不仅是对工业化的革命,更是一种深度发挥和产业阶段的更替,是一个自然规律。
国际厂商软件工艺化行动
北美软件业在将许多老产品的服务与二次开发转向印度等海外市场的同时,正酝酿着一场以软件开发自动化和业务组件灵活组装为核心的软件开发工艺革命。这次工艺革命可能在几年内将应用软件开发效率提高数倍甚至数十倍。
软件开发自动化这个多少年来无数人的梦想,多少人前赴后继,但最多只能停留在理论层次,在实用性上几乎都失败了。主要原因之一是因为技术还不成熟,在技术不成熟的时候谈工艺是奢望;其次,大多数研究都是针对整个开发流程的某一点上的自动化,没有成链的自动化,不能产生太大的实际效益;其三,工艺化改革必须是对先进工艺技术、优秀工程师经验的固化,而不是纸上谈兵,所以,没有丰富的软件业从业经验积累,工艺化也将仅仅是想法而不是现实。而如今,情况已发生变化,技术逐步走向成熟,具备多年从业经验的优秀工程师比比皆是,软件工艺化这个梦想也就离我们越来越近。
SAP的做法
作为提出“管理软件是先进的管理理念”的始作俑者——第一大企业软件供应商SAP,并没有沉醉在这个市场理念被世人所接受的狂喜中,而是非常明白传统软件开发的弱点,一直在潜心流程引擎和开发效率的研究,预计一至两年内其新一代的开发平台将面世。这显然是SAP的“核心”技术,不会作为产品销售,但其自身开发的产品成本与产品对不同企业、不同市场的适应性将大大改进。
PeopleSoft的应对
第二大企业软件供应商PeopleSoft正在研制新一代People Tool,新一代的开发工具将流程技术与开发自动化相结合,虽然它有很大的历史包袱,但其开发效率与对变化的适应性方面都将有质的飞跃。Oracle收购PeopleSoft后短短一、两个月,就开始将People Tool在易用性上的好处与Oracle的纯JAVA平台相结合,开始Oracle的新平台研发工作。
国际厂商已经在工艺方面醒过来了,做了很多工作,未来的企业及应用软件将是基于业务组件来随需组合的,其工艺革命所降低的成本将超越我们在劳动力成本方面的优势。
中国软件产业的现状和出路
一家著名的IT咨询公司的调查表明,困扰我国软件企业的主要问题表现在以下几个方面:企业经营者缺乏有效的管理手段以准确掌握并控制产品及项目的开发成本;研发部门苦于人员流动造成的开发文档、源代码及其他知识资源流失;项目经理苦于开发过程失控,使得产品的质量和交付期得不到保障;开发人员陷入修改黑洞,深入的技术研究和创新能力受损,员工满意度下降;项目计划和财务预算缺乏科学依据及可靠的模型支持。
对于国内软件产业的发展和出路,已经有过一些探讨和研究。
比如说,学习印度模式,走外包之路。从企业发展的角度来看,外包是可行的、可参考的,但对于国家软件产业来说,外包除可以作为过渡性的行为之外,不值得学习,也不值得提倡!
首先,通过外包,代工的方式可以学习,但不可能实现超越,印度的BOMBAY永远不可能取代美国的硅谷。日本汽车制造业并不是靠外包、代工发展起来的。其次,从竞争优势的角度分析,对于外包和代工,和印度比起来,中国已经没有太大的价格优势。我最近从美国公司给印度的单子,1小时17美元,约合人民币140元,差不多是一个月人民币22400元,这与当今国内软件企业接单价的2万元人民币/月已相差无几。加上印度工程师在语言上的优势,其实我们在外包代工方面的优势一点都不明显。再者,随着人民生活水平的提高,劳动力价格就会提高,凭一时的低廉劳力,不可能支撑国家一个重要产业的发展。而罗马尼亚等东欧国家在美国打出低于15美元一小时的报价,使得外包的价格战越演越烈。
印度的软件产业外包模式是建立在“软件产业是高级劳动力密集型”这一假设之上的,而新工艺所带来的这种游戏规则的变化,可以将印度的模式在一夕之间变得无关紧要。这种打击将可能是毁灭性的。毕竟软件产业才刚进入壮年期,外包、代工作为“夕阳工业”的典型特征,在这一阶段还不是主要矛盾,所以,随时都有“出局”的可能。既然我们在产业发展上已经是后来者,那么想要居上,就不能一味紧跟别人的脚步,一定要有新的突破!
另外的一些探讨,比如业务平台、业务基础件的提出。从技术上讲,相当于在已有的应用服务器、中间件等业内格局上加入有中国特色的一层,从而限制某些应用项目上国外技术的进入,或者至少要求多加入一层,另辟一块市场出来。在国外,没有这样一个“层”的概念,大家更多地说“业务解决方案”,或“解决方案服务器”这样的思路,在一个世界公认的开放平台上,针对不同的业务提供和共享解决方案,以开放的态度解决问题,共同推进产业的发展和壮大,而不是人为设置某些技术壁垒。所以,业务平台从一定意义上说,限制了中国软件企业国际化进程,是值得商榷的。
中国软件业要走自己的路
我们从产业的分析中发现,要想打赢软件产业的国际攻坚战,必须跨越式发展——从工艺化角度出发,甩掉软件产业手工作坊式生产的帽子,打破软件工业化的技术、人才限制,从工艺化上进行突破。所以,我们应该以先进的行业经验重新规划软件产业理论和技术布局,掌握话语权,引领国际潮流,只有如此,才能实现中国软件产业真正的崛起!
当技术逐步成熟,而新经济泡沫破灭的今天,软件的开发与拥有成本及质量问题越来越受到重视。和传统产业一样,解决成本和质量的问题,就得靠工艺的改进。工艺革命可能带来的是产业游戏规则的改变,而游戏规则的改变将会为后发企业提供一个超越前人的历史机遇。
国家应该扶持新工艺的研究,形成自己企业的生产规模。学习日本汽车业的发展模式,而不是印度当前的外包代工模式。我们想要后来居上,跨越强国,我们必须抓住当前软件产业发展阶段的主要矛盾,在工艺上下功夫,在质量上下功夫,建立起自己的软件产业。希望有一天,中国能将硅谷变成象当年底特律一样的Ghost Town!在未来虚拟世界里跑的都是“MADE IN CHINA”软件。让世人讲起软件,就会想起中国,就象讲起汽车,就会想起日本的丰田、本田一样。
先进的软件开发工艺
传统产业曾经依赖先进的生产工艺来解决产品成本与质量的问题。在传统产业的过程系统工程理论中,工艺的范畴包括生产过程、原料/零件配送流程、操作参数优化、公用工程等四个主要方面。传统产业对这几个方面进行改造革新,从而降低产品的成本和提高产品质量。
生产过程主要是指原料和零组件进入生产厂房,到产品包装入库成为可出售的成品的过程。在这个过程中,流水线式的生产过程是现代先进生产过程的代表。而工厂化的培训,清晰岗位设置,知识传递方法等现代管理方法是从管理的角度保证生产过程的顺利进行。
一个产品的成本其实不仅是生产过程的成本,它还涉及到零组件/原材料的成本及它们的配送成本。组成产品的零组件/原材料时将是产品成本的一大组成部分。并且,零组件/原材料的质量在很大程度上影响着整个产品的品质。工艺是为了解决成本和质量的问题而进行的革新,其目的是降低产品的成本,提高产品的质量,它覆盖了产品生产的整个过程。零组件/原材料作为产品成本的重要组成部分和产品高质量的重要决定因素,其生产的自动化和配送的自动化就显得尤为重要了。所以,在工艺里,必须要实现零组件/原材料的自动化生产和配送。
工艺解决的已经不是产品能否生产的问题。而是如何生产更为优质的产品,也就是说,工艺处理的已经不是在产品生产过程中的“能与不能”的问题,而是产品的优化问题。所以,我们说,在工艺的实施过程中,产品必须是可优化。对于产品的优化,一般表现为两大方面,一方面,生产过程的优化外,另一方面为产品零组件/原材料的优化。大家一定都非常清楚宝马车要比国产的夏利好,那它为什么好?好在哪里呢?我们想,它好在做工,好在零件上。做工是什么?事实上它就是宝马车的生产过程 ,并且宝马的零组件都是千里挑一。事实上,宝马是什么,是优化的生产过程加上优质的零组件生产出来优质产品。所以,在工艺里,有了操作参数优化的概念,它代表了整个产品生产周期的优化。
当然了,我们的生产还与一部分东西有息息相关的联系,比如说能源。设想下,如果没有能源,那么我们如何达到自动化生产?记得在20世纪中叶 ,所有的炼钢厂都设有自己的发电厂。那时候生产的钢材成本非常的高。在那时候,炼钢厂一样采用的是自动化的生产线,有很好的生产管理,有很好的原料配送,那为什么那时候的生产成本要远远高于现在的企业呢?因为那时候的能源基本是自给自足,能源的生产成本非常昂贵,而现在的能源,由于有专门的生产企业进行生产,其成本已经非常的低,作为产品总成本的组成部分之一,它也影响了产品总成本。所以,在工艺革新里,类似于能源这样的一些行业公用的资源将被细分为单独的、专业的企业来生产,这样大大的降低了产品的总成本。而在工艺里,将这部分资源称为公用工程。
我们现在软件业所需要解决的是如何降低产品生产成本、提高产品质量的问题,那么软件产业也需要工艺革新。软件产业的工艺是什么?它其实和传统产业的工艺其实没有本质的区别,它同样由生产过程、原料/零件配送流程、操作参数优化、公用工程等四个主要方面组成。
我们现在仍然采用非常落后的手工作坊的方式生产应用软件。劳动密集型产业中:产能的落后,成本的居高不下,质量低下等等问题让所谓的“高新”产业变得有点尴尬。所以,我们必须要工艺革新。
软件业需要工艺革新,首要的任务就是改变我们现有的软件的生产方式。我们要采用流水线自动化的生产方式,并且,要如同传统产业一样工厂化的管理。现在,我们有很多的组织一直在做着这方面的研究,也取得了一定的成果,比如CMM,ISO9001等等
我们的客户关心的我们的应用软件如何更好的满足他们的业务需求。那么
我们必须优化我们所生产的应用软件的质量。而应用软件的优化,将体现在两方面:一是作为应用软件业务组成的唯一原材料业务对象与业务对象间关系的优化。另一方面是优化客户需求中的业务流程。
我们要工艺革新,我们就必须解决我们原材料的来源问题。应用软件的唯一原材料就是业务组件。所以,我们必须能够完成业务组件的动生成,自动配送。
同理,在应用软件里,有非常多的资源是可以公用的!比如处理操作系统间关系的支撑体系、比如处理和数据库间高效交互的技术体系都是可公用的资源,这些资源,也就构成我们今天所提的“中间件”的概念。应用软件是企业管理活动的映射,在一定意义上说,它就是虚拟的企业。企业的管理活动一直在变,但是,随着它成熟度的增高,已经有一部分管理活动已经变得规范,比如企业组织架构等,这些资源,在任何一个应用软件中基本都是同质的,也就是说,可以形式化成为我们的作业务支撑体系,即业务通用平台进行公用。以上种种资源,它都不应该由我们的应用软件集成商去完成其生产,必须要专业的产商来完成,这样才能够真正降低我们应用软件生产的成本。
以上的四大部分,就构成了我们今天所提的软件工艺!今天的软件产业还非常的年轻;概念已经成熟,技术不断发展。对于整个产业的发展方向上的探讨,已经有了非常多的论证,而最为统一的观点就是软件需要工业化。当然了,我们都知道,任何一个产业的工业化都是一个漫长而痛苦的过程。从成熟的产业来看,工业化真正完成的时间的标志点就是工艺的成熟。软件需要工业化,那么,我们不能单纯的仅仅做出一条自动化的生产线,或者仅仅能够自动化的生产业务组件;这些,都仅仅是工业化过程中的一个点,而我们追求的应该是整个工业化的面的总体层次的上升,那我们说,我们要实现软件工艺。
然而,软件工艺的实现需要一个过程。过程的正确往往是保证结果符合我们期望值得关键点。所以,在如何顺利实现软件工艺的问题上,我们提出了软件“软件四化”的解决方案。
所谓“软件四化”就是构架平台化、组件业务化、编码自动化和管理工厂化。这四大部分即是独立的,又是相辅相成的,它们共同协作,完成软件工艺化的整体功能。其中,构架平台化解决的是公用工程的问题;组件业务化解决了产品优化策略的问题;编码自动化解决了产品原材料的自动化生产与配送的问题;管理工厂化解决了生产过程中的管理问题。
标签: