国际化软件开发需要遵守国际化技术准则,采用软件项目(或产品)方式进行。一个完整的国际化软件项目将包含很多内容和阶段,其中软件的国际化和本地化是两项主要内容。
为了更深入地理解国际化软件的开发流程,我们先从分析国际化项目失败的原因开始,然后列举国际化软件的设计准则,讨论项目团队的组织结构。在此基础上,再详细论述国际化软件的开发流程和本地化流程。
1. 国际化软件项目失败的原因分析
开发国际化项目最大的难点是避免失败。由于软件生产过程和技术的复杂性,软件业在20世纪60年代出现了“软件危机”——失败的几率很高。时至今日,虽然软件开发和管理技术已经取得了“突飞猛进”式的发展,但是“软件危机”仍然没有根本消除,新开发软件项目失败的比例仍然居高不下。
与面向单一区域、单一语言的软件开发项目相比,开发国际化软件项目不仅在技术上,而且在项目需求和管理的各个方面都更加复杂,国际化软件项目失败的案例较多,开发国际化软件项目成为高风险的生产活动。
分析那些失败的国际化软件项目,其原因可能多种多样,但是没有遵守国际化软件的设计准则和技术要求,没有考虑国际化和本地化的使用要求等因素成为最大的问题。具体而言,导致国际化软件项目失败的原因主要有以下几个方面:
● 在最初编写软件规格说明和开发阶段没有考虑软件的国际化问题,经常在软件编码完成后进行测试时,才发现大量的国际化设计缺陷。
● 虽然考虑了软件的国际化需求,但是没有深入考虑当地用户和市场的特定需求。
● 软件开发团队不熟悉国际化开发技术,不知道如何开发和管理国际化软件。
● 测试团队不熟悉国际化测试技术,没有在本地化的操作系统和设备上进行产品测试。
● 项目管理团队低估了软件国际化和本地化处理所需的时间。
● 国际化软件开发公司让当地不合格的软件经销商进行软件本地化处理。
为了尽量避免国际化软件项目的失败,需要研究、学习和遵守国际化软件准则,充分运用国际化设计技术、工程技术、本地化技术,深入获取不同区域市场的特定功能特性需求和理解文化习俗等方面的差异。
2. 国际化软件设计准则
在进行国际化软件设计实践过程中,软件专业人员逐步总结出一些通用的准则。遵守这些准则,可以尽可能地避免国际化软件项目失败,提高质量,降低开发和维护费用。
国际化软件设计需要遵循的通用准则如下:
● 在国际化软件项目的初期融入国际化思想,并且使国际化贯穿于项目的整个生命周期。
● 采用单一源文件进行多语言版本的本地化,不针对不同的语言编写多套代码。
● 需要本地化的文字与软件源代码分离,存储在单独的资源文件中。
● 软件代码支持处理单字节字符集和多字节字符集文字的输入、输出和显示,并且遵守竖排和折行规则。
● 软件代码应该支持Unicode标准,或者可以在Unicode和其他代码页(Code Pages)互换。
● 软件代码不要嵌入字体名,也不要假设使用某种字体。
● 使用通用的图标和位图,避免不同区域的文化和传统差异,避免在图标和位图中嵌入需要本地化的文字。
● 菜单、对话框等界面布局能够满足处理本地化文字的长度扩展的需要。
● 源语言的文字要准确精简,使用一致的术语,避免歧义和拼写错误,以便进行本地化翻译。
● 保证不同区域的键盘布局都能使用源软件的快捷键。
● 考虑不同区域的法律和文化习俗对软件的要求。
● 如果软件中采用第三方开发的软件或组件,需要检查和确认是否满足国际化的要求。
● 保证源语言软件可以在不同的区域和操作系统上正确运行。
● 软件代码中避免“硬编码”,不使用基于源语言的数字常量、屏幕位置、文件和路径名。
● 字符串的缓冲区长度要满足本地化字符扩展的长度。
● 软件能正确支持区域排序和大小写转换。
3. 项目与团队
项目是为完成某一项特定产品、服务或结果而实施的一项临时任务,它具有明确的目标、起止时间和预算。
复杂的项目需要成立项目团队,来自不同国家或地区的具有不同技能和经验的人员,为着共同的任务目标相互配合,共同完成项目的不同子任务。
国际化软件的开发是复杂的工作,需要良好的项目规划,成立有协作精神的团队,由于现代软件设计的复杂性和本地化对语言质量的较高要求,经常由分布在世界各地的多家公司的不同技术和管理人员组成国际化软件项目团队。
一般地,国际化软件项目可以分为规划阶段、实施阶段和验收结尾阶段。每一阶段的任务都需要考虑国际化和本地化需要,而且尽早进行国际化需求分析,可以有利于控制项目成本和进度。
现在软件外包成为国际化软件项目新的开发模式,通常大型跨国软件公司专注于进行软件项目规划和核心功能和特征设计,将软件的本地化外包给专业的本地化公司。现在,软件编码和测试的外包也流行起来。
项目团队对于国际化软件项目的成败具有关键性的作用。除了软件技术之外,大型国际化软件项目的项目管理非常重要,尤其是当项目由多家分布于不同国家或地区的软件公司共同实施时,项目规划和管理交流就变得更为重要了。
为了便于项目管理,通常采用“单点联系(Single point contact)”的方式,每个公司在项目准备阶段指定惟一的项目经理(Project Manager, PM),负责项目联系的一切任务。各个公司的项目经理负责组建各自的项目团队,跟踪和控制项目的实施,并且报告项目进度、存在的问题和可能的改进方法。
项目团队的构成与各家公司承担的项目任务有关系,通常项目经理按照任务类型组建不同的项目组,每个项目组指定一位组长(Team Lead),负责小组的技术和协调问题,每个组的成员由项目经理和组长协商确定。
为了顺利实施软件本地化,软件开发公司的本地化项目经理,与软件本地化外包服务公司的项目经理,以及软件开发公司在当地的分公司经理互相协作完成软件本地化。
软件开发公司的分公司主要负责对本地化的内容进行语言质量和文化传统等方面的审阅。可以由分公司内部的专职人员承担审阅任务,也可以在当地市场寻找专业人士兼任。
软件本地化公司根据项目的要求,可能组建不同的团队。对于完整的本地化项目,一般需要成立本地化语言组、本地化工程组、本地化测试组和本地化桌面排版组等。
4. 国际化软件开发流程
在讨论国际化软件的流程前,需要熟悉国际化软件的开发周期。对于国际化软件而言,完整地开发周期包括需求分析、国际化、本地化、发布和维护等过程。其中国际化包括设计、开发和测试等,在国际化的各个环节都要重视软件的本地化能力。越在软件项目早期重视软件的本地化要求,就越对控制软件项目的正常进度和质量有利。
随着市场竞争的加剧,软件的国际化版本和本地化版本需要同时发布(Simship),而且本地化的语言版本越来越多,承担本地化服务的公司往往不止一家,它们可能还要进一步外包。正是由于这种复杂的环节和过程,使得大型国际化软件的项目管理更趋复杂。
国际化软件的开发流程包括开发国际化软件需要遵循软件工程的要求,分为需求分析、软件设计、软件编码、软件测试、质量保证、软件发布等过程。
在需求分析阶段,既要考虑软件的功能特性需求,也要考虑软件的国际化需求。另外,为了缩短源语言开发的版本和本地化版本的发布时间间隔(甚至达到同步发布),国际化版本的开发应该与软件本地化过程同时进行。在测试方面,对国际化版本的国际化功能测试和对本地化版本的本地化测试尽可能同时进行,以便尽早发现和修改国际化设计缺陷。
在软件进入最终本地化和测试之前,需要“冻结 (Freeze)”用户界面和功能特性设计,保证软件在发布之前不再对需要本地化的内容进行改动。因为,每次改动用户界面,本地化过程都需要重新翻译一次,相应的联机帮助文档和本地化的软件手册等的内容也需要重新更新,这样会增加项目成本,延迟本地化版本的发布。
5. 软件本地化流程
软件本地化的流程与具体的项目有关。复杂的软件本地化可能包括翻译、排版、工程处理和测试等内容,而较小的本地化项目可能只包含翻译或排版。
和任何软件项目一样,本地化项目的前期准备非常重要,明确项目的范围、要求、技术和资源,对于保证项目的成功可能起到关键的作用。
软件本地化项目在正式开始之前,通常需要参加项目启动会议。由软件开发公司的项目经理召集和主持,由来自多个公司的项目组关键成员参加。
大型本地化项目的实施过程可能跨度较长,通常需要进行几个周期的更新过程。按照项目计划的里程碑进行进度和质量跟踪,本地化服务公司的项目经理与开发商的本地化项目经理保持有效交流,有助于保证本地化项目的顺利实施。