日本软件开发的度量取向根据意识:言而有据的诉求判断基于事实,承诺源自依据。日本软件企业在软件开发过程中让人感觉到一种习惯性的根据意识:立足于数据而不是假设之上。规模估算、进度估算、成本估算、人员估算,都需要说明理由,而不是仅仅凭借经验甚至感觉作出判断;进度调整、质量评估、费用超支、人员追加,仍然需要提出变更的原因,不管这种变更是否对企业有利;项目意见、作业提案、选择建议、管理流程,都需要通过调查分析阐述各自的依据。尽可能排除直观感觉可能带来的误差甚至错误,通过切实有效的数据来反映事实状况,并通过这些数据来判断发展趋势,作到“言之有据”。因为面对客户的需求,不能主观随意地作出判断或者抛出承诺,而没有相应的根据,否则顾客将会感到“不安”。这就是软件开发者的根据意识。根据意识源自危机意识,日本似乎与生俱来的危机感促使其在软件开发过程中尽量排除风险,而排除风险就必须基于科学的决策,必须拥有根据,而不是凭空决策。精度管理:敏感的数据倾向危险出在管理上,魔鬼藏在精度中。精度表现着对事物认识的深入程度,不管是软件成熟度模型,还是六西格玛,都表达着对高精度管理的诉求。日本软件开发过程中对精度的要求包括项目计划精度、工数估算精度、进程控制精度、缺陷统计精度、成本控制精度、品质控制精度等等,力求通过数据来描述和分析问题。特别是在项目规模、项目缺陷、累计工数、需求变更、测试和审查等方面,更加注重精度管理,更加注重度量。以前,日本企业的规模估算等方面依赖于KDD,即勘(Kan:直觉)、经验(Keiken)、度胸(Dokyou:胆识),但这种情况已经被基于数据和科学方法的精度管理所取代。数据敏感,具有较好的数据分析和判断能力,这已经逐渐成为现代企业管理者的基本资质要求。如果分析和判断建立在准确数据的基础之上,那么精度管理就获得了必要的操作依托。软件开发计划与实绩管理就是最明显的精度管理:精度意味着实绩与计划的吻合程度,如果实绩与计划相去甚远,那么其计划精度就存在问题。当软件品质中融入精度管理的时候,精度管理就成为与软件品质改善并驾齐驱的主线。可视作业:工具的灵活运用可视化作业能在作业的效率和质量上给项目团队带来惊喜。日本软件企业在软件开发过程中注重作业过程中的可视化,追求项目成果的可预见性、项目问题的可追溯性、项目绩效的可评价性,利用各种软件开发工具来阐明现状、沟通思想、分析问题和团队作业,防微杜渐,通过新旧七大工具以及MicrosoftProject等工具推动可视化,并在数据、图表、模型等的熟练使用方面拥有相当的根基。项目管理方面的“看板”就是典型。工具是用来处理其他事务的手段或器材。灵活运用工具解决实际问题的能力,对管理层人员来说至关重要:没有对软件开发过程的可见度就无法管理;而没有对事物进行适当的度量,也无法进行有效和高效的管理。软件工程的方法论主要在提供可见度方面下工夫,从多个角度推动可视作业,对软件开发的绩效发挥着越来越重要的作用。日本软件企业的开发管理概况一、日本软件企业的发展概况日本软件企业起步于上世纪60年代末70年代初。当时起步的绝大部分软件企业均源自母公司的软件开发部门。在80年代经历了一个平稳的发展期后,90年代初日本软件企业达到了发展的高峰期,不少现在的大型软件企业正是在这个时期急剧壮大,直至问鼎日本信息产业界。此后90年代中期,日本软件企业不断整合,涌现了不少经整合而成的”巨无霸”,YahooBB、富士通システムソリューション株便是其中的代表。近90年代末期,日本经济大萧条,银根紧缩,日本软件企业为了保持或获取更大的利润空间,纷纷将开发业务转至海外。加之中国劳动力便宜,地理上曾与日本依水相连,文化上与中国息息相通,于是大量日本软件企业纷纷涌入中国寻找合作开发商,使目前的中国对日软件外包输出呈现一片欣欣向荣蓬勃发展的局面。二、日本软件行业的特点日本软件行业从规模上说,体现为众多大型企业与小型企业竞相并存的局面,而非像中国以大多小型软件企业为主导的情形。从分工方式上来说,大型企业主要从事上流设计(需求分析,概要设计,系统测试和维护),小型企业主要从事底层的工作(详细设计及编码测试)。大小软件企业分工合作,互补其短,非常有利于节省成本和提高效率,同时大家都有利可图。这与国内企业“一条龙”的开发方式显然大相径庭。有人不禁会发问:”为什么这么一个小国家有如此大的软件需求”。首先从经济生产方面看,日本产业经济的高度自动化和信息化是一个强有劲的动力。其次在日本人观念中,行业软件的概念比较淡薄(社会上标准的被广泛运用的诸如微软操作系统这样的软件除外),量身定做的模式比较容易受到大众青睐。实际上,日本很多软件企业的盈利大部分来自系统维护、优化、改造等这样的售后服务。与之相反,这样的观念在中国却很难被客户接受。在日本,企业的终生客户比例非常高,因此日本的IT企业一般都有比较固定的客户群,因此企业营运相对来说也比较稳定。此外日本的软件企业一般都有自己的一套经过多年实践总结出来的开发流程和开发规范,在一般性的软件开发时按部就班地进行,做到尽量不出差错。相比之下,国内的软件企业往往心高气傲,好高骛远,不重视平时的技术经验积累,因此也就难以作大成为大企业。三、日本企业的经营特点相对欧美企业而言,日本软件企业在经营上体现出下列几个特点:1.盈利目标和利益分配:日本企业更加注重于产品的市场占有率,同时也比较重视新产品比重。在利益分配方面,兼顾股东利益、员工利益和社会利益的三者结合。从根本上讲,由于员工利益能够得到保障,所以在日本终生雇佣制能够主导日本企业的用人机制。2.企业战略:日本企业非常重视营业资源长期累积,采取的是高质量产品战略而非新产品战略。不过最近几年这种战略观念开始受到冲击并逐步向新产品战略转化。3.技术:日本企业一般从应用角度出发,技术难度不高。企业不少技术均来自于模仿抄袭和改造。由于日本法律的原因,许多国外先进技术被日本企业侵权后引发纠纷大多只能草草收场。这在IBM控告富士通侵权一案上得到了突出的体现。4.组织构造:日本企业的组织比较注重整体观念,采取有机的组织方式,很少采用事业部制。不过近年来,日本大中型IT企业的组织机构正在由原来的”职能划分”向”业务领域划分”转变。5.组织方式:采用了不同于欧美企业的集体决策机制,集思广益,从而能够调动员工的积极性,同时也会出现”决策滞留”的低效率现象。此外企业内的所有成员共享企业的经营、技术等方面信息,对于欧美企业来说,这是比较难以想象的。6.经营者个性:日本企业并不太看中经营者的技术能力,拥有良好人际关系的员工常常被青睐并作为候选人员。技术能力突出的员工通常是作为顾问专家这样一种形式得到提拔。四、日本软件企业的开发组织模式非事业部制的日本软件企业一般采用的是”经营-开发-后勤”这样一个模式来从事软件开发。这一点跟中国国内的软件比较相似(图1)。但要指出的是这里的”后勤”范围很广,包括企业的员工培训和发展计划,系统审计,信息化,企业经营等,与国内不同,日本的大中型IT企业均设有信息推进部这样一个由专业技能非常突出的人员构成的部门,专门从事企业信息化、软件复用体系构建、帮助中心(Helpdesk)、人才育成体系构建这样的”后勤工作”。也正是”后勤”方面资金投入、建设力度等方面的差距,决定了中日软件企业实力对比上的根本差距。图1日本企业的组织模式五、日本企业的项目开发管理日本企业的开发管理,讲究中规中矩,非常重视文档的规范化管理,力求做到”凡事必求有据”,体现一个”稳”字。下面以富士通SDEM(软件开发环境方法)为一典型,说明日本企业的项目开发流程。SDEM是日本富士通根据CMM标准,结合自身二十多年的经验提出的软件开发管理体系标准。它全面兼容CMM与ISO9000,甚至在某些部分超过现有国际标准,在日本享有盛誉并为众多的大中型IT企业所效尤。SDEM的要旨是以时间为横坐标,以文档为纵坐标。根据项目时间的推移,对某个项目阶段的需要进行的项目活动和书写的工程文档进行定义,从而达到整个项目的开发管理。从形式上与CMM3较为类似。SDEM的理念是从不同项目干系人的角度(视图)看待开发。用户看到的是企业的业务和可系统化的对象(即现实世界)。项目开发着看到的是开发支援活动和项目管理活动(即电脑世界)。双方通过可交付的软件(广义概念,开发未完成时指的是文档)和硬件作为两个世界的接口,并在每个开发阶段得以定义和实现。随着项目阶段的推移,用户的业务和可系统化对象得到进一步细化和实现,这同时也体现了”由顶自下,逐步求精”这样一种开发思路。图2SDEM视图SDEM分为五个流程,其中契约流程和组织流程贯穿于整个项目阶段。项目阶段包括分为企画、开发及维护三个流程。1.契约流程契约流程分为两个方面:购入和供给。购入流程是开发实体为了能够进行项目开发需要向”资源提供商”(包括本公司其他部门或开发小组)”购入”资源的过程。流程中涉及了资源(人、财物)申请提案、预算书和批准文书等文档。供给流程则是针对客户的提案、合同签订等应该进行的活动以及涉及的文档。通过上述两个流程的综合,项目有关客户、成本方面的因素便一目了然。同时也为开发提供了相应的依据。2.组织流程组织流程则包括组织管理流程和系统审计流程两个并行流程。组织流程是企业针对该次项目开发实施一系列管理、开发支援活动。中间包括了事业计划、员工培训等内容。它的好处在于开发组只需专心开发,”你要什么,我就给您什么”。从而减少项目管理者的工作量,同时在内部成本核算等方面也显得极为便捷。系统审计流程由独立于项目开发人员的第三者来进行。它的主要任务在于对所有实施阶段中的项目开发效率,开发进度,资源等方面进行追踪,然后通过书面报告的方式向项目管理者提出改善建议。使项目管理更加全面和高效地得以执行。3.企画流程企画流程包括信息化构想立案(VP)和系统企画(SP)两个流程。每个流程均分为企画立案和项目推进两方面内容。信息化构想立案针对的是公司项目方针,项目间的计划过程。在这个流程里,公司的经营管理者对目前公司内的项目进行计划,调整开发组织结构。系统企画则是针对特定的某一个项目制订的方针、投资效果分析以及过去同类项目的业务总结等。通过该流程,开发人员对即将从事的项目形成大体轮廓,并界定原有可复用资产(包括文档、人员、经验等)。SDEM的企画流程分别从企业级和项目级对具体项目进行早期统筹安排,强调整体效应,这一点非常值得国内借鉴。4.开发流程与瀑布模型极其类似,富士通SDEM将开发流程分为系统分析(SA)、用户界面设计(UI)、系统设计(SS)、详细设计(PS)、程序编码(PG)、程序测试(PT)、集成测试(IT)、系统测试(ST)和运用测试(OT)九个环节。每个环节均包含业务、业务式样、应用、软硬件需求、开发支援和项目管理六个视图。每个视图与具体的文档或过程相对应,均以相应活动的完成或文档的生成作为视图的里程碑。5.应用维护流程应用维护流程(ME)再现了日本的终身服务理念。在日式软件开发中,应用维护作为软件开发流程的一部分也是最重要的一部分得以重视。系统一旦交付使用,将有专人会同客户,对专门人员进行培训、同时对系统的使用进行评估,提出评估报告,总结经验教训,并提出改善方案。较大型的系统在运营期间一般由开发商专人或聘人进行维护,直至系统报废为止。当然,维护费用还是比较可观的。实际上,不少日本IT企业营业利润的主要来源很大一部分是客户系统的维护和优化。图3SDEM模型(V模型)六、日本企业的信息推进上面曾提到日本的大中型IT企业均设有信息推进部这样一个一级部门。信息推进在日本企业具起着极其重要的作用。它覆盖了日本企业信息化的所有方面。企业级软件复用的实施,开发流程的改进。企业现有项目经验、技术的整理分类,根据企业和项目的需要会同人事部实施人才战略等等,都属于信息推进部的职责。信息推进部定期从各个开发和业务部门收集有关资料和信息,经分析处理后向各部门提出指导性建议或进行相关的人力或技术支援。在一些较小的公司,则成立信息技术推进室这样一个类似部门,由工作多年并拥有各种高级资格的技术、管理人员构成