1. 传统软件开发模式和敏捷软件开发模式
2.1 传统软件开发模式
瀑布模型(WaterfallModel)是传统软件开发模型的典型代表。瀑布模型将软件生命周期划分为需求分析、软件计划、软件设计、程序编码、软件测试和运行维护共6个基本活动,并规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。这种模型适应需求固定、项目明确的软件开发,难以适应客户需求的频繁变更,导致软件开发超时、超预算、低质量等问题。为解决这些问题,传统软件工程在软件开发过程中加入了概要设计、详细设计等环节,使得开发过程变的越来越复杂,开发效率也随之降低。
2.2 敏捷软件开发模式
自2001年敏捷宣言发表后,敏捷开发思想广泛传播,以极限编程(eXtremeProgramming)、Scrum2、精益开发(LeanDevelopment)和动态系统开发方法(DS-DM)等为代表的敏捷软件开发方法开始在全世界范围内流行(荣国平,刘天宇,谢明娟2014:268)。敏捷软件开发模式(AgileDevelopmentModel)是一种以人为核心、迭代、循序渐进的软件开发模式(韩鹏2011:42)。在这一开发模式中,软件构建被切分成多个子项目,各个子项目以不断迭代方式开发,每次迭代的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目切分为多个相互联系,但也可独立运行的子项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷软件开发路线图包括:测试驱动开发(Test-drivendevelopment)、持续集成(ContinuousIntegration)、重构(Refactoring)、结对编程(Pair-Programming)、站立会议(StandupMeeting)、小版本发布(FrequentReleases)、较少文档(MinimalDocumentation)、以合作为中心(CollaborativeFocus)、现场客户参与(CustomerEngagement)、自动化测试(AutomatedTesting)、可调整计划(AdaptivePlanning)。由此可见,敏捷软件开发模式强调持续集成,尽早交付可以工作的软件,即使到了开发后期,也可以很好地应对客户改变需求,并以此为客户创造竞争优势(陈昊,明仲2008:46)。因此,敏捷开发具有持续交付、高效率、高质量、高回报等优点,能够满足互联网应用快速、个性化和适应强的要求。
2. 敏捷软件本地化模式
在传统的软件本地化模式中,本地化过程实施处于软件开发和测试完成后,是产品开发周期的末端。本地化团队以一个稳定的源语言软件为基础,进行软件用户界面、联机帮助和用户手册等内容和功能的本地化。在敏捷软件开发广泛应用的今天,软件开发项目普遍呈现出迭代、时效性强等特点,从规划协调、成本控制、交付时效、沟通协作、质量控制和响应速度等方面对本地化提出了更高的要求。为适应敏捷软件开发模式这一新变化,本地化模式也要相应“敏捷”起来(DePalma2014:1)。敏捷软件本地化模式吸收了敏捷开发方法的优势,通过迭代和持续 交付等方法提高本地化团队适应需求变更的能力(Lin2011:4)。图1和图2分别是传统本地化模式与敏捷软件本地化模式,对比分析可以了解敏捷软件本地化的特征。

图1. 传统本地化模式 图2. 敏捷软件本地化模式
3.1 敏捷软件本地化模式的特征
与传统软件本地化的实施方式相比,敏捷软件本地化模式(AgileLocalizationModel)具有模块化、结构化和重复使用三个特征。
(1)模块化(Modular)。与敏捷开发方法相似,敏捷软件本地化模式强调将本地化内容切分为多个独立模块,以模块为单位分配任务,而非字数、页数或文档个数。为译员提供已完成的项目文档或辅助材料,帮助译员了解语境,提高本地化质量。在软件产品的更新换代中,保留已经翻译过的没有任何变化的模块,不再重复翻译。此外,对于新设计的、或者内容更新的模块,一经批准即可开始翻译,无需等到整个项目文档完成。如果在本地化过程结束后,由于需求变化导致软件设计发生变动,只需改动相应发生变化的模块,无需重复执行本地化流程,从而降低开发成本、提升生产效率、缩短开发周期。
(2)结构化(Structured)。为了提高软件文档(联机帮助、用户手册等)的写作和本地化翻译效率,文档多以模块化和标准化的方式进行组织,在本地化人员看来,内容呈现结构化外在特征(崔启亮,张航2015:8)。因此在敏捷软件本地化模式中,应根据以往的项目经验,针对本地化内容设计结构,归纳总结各部分的内容特点、设计需求、重复频率等,形成结构化模板。本地化内容翻译结束后,只需自动套入结构化模板即可形成本地化产品。如果界面设计需求发生变化,只需修改或重新设计结构化模板,并将本地化内容重新套入新模板中,使调整影响降到最低,既节省排版时间,也可以规范本地化翻译内容,提升本地化产品质量。
(3)重复利用(Reusable)。在软件产品开发及更新换代中,除去没有发生变化的模块无需重复翻译外,还存在一些特殊信息可以参考已有翻译,做到“一次翻译,多次使用”。这些特殊信息包括:品牌信息(例如商标、品牌标志等),联系方式、法律信息(例如担保条款、免责声明等),产品信息(例如产品说明、产品功能等),流程及图像等(Rockley2015:8)。在同样的文本环境下,重复使用的字符串也不需要多次翻译。译员既可以根据自身知识和经验,也可以利用翻译记忆库和术语库,或者程序分析等手段识别这些可重复利用的信息,减少翻译工作量,提高翻译准确度。
3.2 敏捷软件本地化模式的实施策略
软件开发是信息技术发展和市场需求推动的产物,软件敏捷本地化模式离不开信息技术的驱动。实际上,软件敏捷本地化模式顺利实现的基础是信息技术的有效和渗透式应用。但是,实施软件敏捷本地化模式绝不能仅仅依赖信息技术,也应该从项目管理层面做出改进。本文从信息技术和项目管理角度,对实施软件敏捷本地化模式提出以下策略。
(1)本地化人员全程参与软件开发过程。高质量、高效率的本地化应从软件开发周期的源头开始。软件敏捷本地化模式将软件本地化纳入软件开发的过程之中,因此软件本地化人员也应该被纳入软件开发团队中。本地化人员必须参与开发过程的各个环节,从讨论需求清单(用户故事,UserStory)到软件开发项目结束后的整体回顾。一方面在软件开发过程中尽早展开本地化工作,无需等到软件开发和测试完成后,从而缩短软件开发时间;另一方面,督促软件开发人员,使其软件设计满足本地化的技术和功能要求,提高本地化翻译质量,并避免因源语言软件本地化能力不足导致后期重复修改。
(2)持续交付。软件敏捷开发过程中,设计、编码和测试交替进行。迭代周期要尽可能缩短,一个小的功能模块完成后,可以快速测试并及时交付,以便及时获取客户的反馈。敏捷软件本地化模式中,源软件开发与本地化并行实施,敏捷软件开发过程中发布的各个小版本都进行相应的本地化。在任意本地化过程中,都包括文本内容翻译、构建本地化版本、语言测试、功能测试、客户反馈和修改缺陷,每一次版本交付都是功能相对稳定的本地化版本,以及时获取客户的反馈,提升本地化人员团队适应需求变更的能力,如图3所示。例如,Adobe公司的中心本地化团队目前已采用敏捷软件本地化模式,开发周期不断缩短,从之前的18至24个月,缩短至现在的两周左右。Adobe团队和其他公司甚至每天发布多个软件更新版本,使得持续交付的需求更为迫切(Vanreusel2013)。

图3. 软件敏捷开发的持续交付
(3)及时沟通与反馈。与传统软件开发方法不同,敏捷开发方法的特点是适应性,而非预测性。它强调沟通和反馈,通过及时反馈尽早纠正软件中的错误,提高开发效率,为需求调整提供更多机会。因此敏捷软件开发团队不仅包括开发人员,还包括管理人员和客户(Humble2011:12)。例如,敏捷开发方法之一的“极限编程”认为面对面交流是最有效的沟通方式,它要求去掉员工之间的隔板,客户、开发和测试人员在一个大房间中协同工作,并将其总结为“现场客户”工作方式(Martin2003:9)。敏捷软件本地化模式也同样借鉴了这一概念,将软件本地化人员纳入软件开发团队中,使得本地化人员与开发、测试人员甚至客户在一个开放场所中协同工作成为可能。在一些公司的项目实践中,由于时间距离或工作方式的差异,现场客户很难实现,甚至本地化与开发团队也很难面对面交流,此时需要项目经理也成为联系本地化人员、开发团队甚至客户的桥梁,负责及时沟通、参与需求的调研和讨论、制定项目实施流程并快速验证需求取得反馈等,这样就可以在增强本地化团队适应需求变更能力的基础上,提高在实际软件开发中的可操作性。
(4)加强语言资产管理及流程自动化。以翻译记忆库和术语库为核心的软件语言资产技术(Languageasset),以信息内容重复利用为核心的本地化技术(Localization),以信息、团队和流程为核心的信息全球化管理系统(GlobalizationManagementSystem,GMS),构成了软件敏捷本地化模式的核心信息技术(Parievsky2014:7)。在本地化实施的每一个阶段,都应该实时更新维护并及时发布翻译记忆库(TranslationMemoryDatabase)和术语库(TerminologyDatabase),实现翻译内容最大程度的重复利用,保持翻译的质量和一致性(王华树,张政2014:67)。此外,实现敏捷不能通过电子邮件发送翻译需求,或者通过粘贴电子数据表的内容到源文件的方式实现本地化。敏捷软件本地化模式需要实现自动化,需要集中化的系统进行管理。这一系统能够联接不同的内容管理系统(ContentManagementSystem,CMS),管理翻译任务,将现存译文内容重复应用于不同的项目和内容类型中,提供机器翻译引擎的译文自动化获取等。除了完成翻译任务外,软件本地化还包括版本构建、保证质量、修正缺陷、截取图像、发布本地化版本等工作,在这些方面实现自动化以提升效率,缩短开发周期同样重要。
(5)本地化服务方的服务敏捷化。软件厂商经常将本地化外包给本地化服务商(LSP),敏捷软件本地化的实施要求本地化服务商也要服务敏捷化。为此,本地化服务商在项目开始前需要确定资源并固化流程,了解客户开发计划,确定内容、语种、匹配资源,报价可在项目交付之后完成。定制高质量合适译员,根据预算和质量应用项目模板,应用自动化质量检查工具进行译文的语法、数值、拼写和术语一致性等检查。报价在提交项目后单独或定期合并完成,项目费用结算也可以定期合并完成。本地化服务商的项目经理工作重点在于了解客户的内容开发计划,并提前与客户约定单价、文件、报价、付款、质量保证等事宜。协调外部资源部门提前准备好语言服务团队成员并进行培训。另外,本地化服务商的翻译管理系统(TMS)应该与客户的信息全球化管理系统(GMS)或者内容管理系统(CMS)良好对接,以高效率和自动化的方式完成本地化项目文件的接收与发送、工作任务分解、资源匹配、任务指派、流程自动化、进度管控、报价、订单、发票等财务管理(魏泽斌2018)。
3. 惠普公司敏捷软件本地化模式实践
惠普公司(Hewlett-Packard,HP)是一家全球性的信息科技公司,主要专注于打印机、数码影像、软件、计算机与资讯服务等业务。在其影像和平面媒体软件本地化的某个项目中(4万字符,近30种语言),惠普公司本地化团队采用了敏捷方法,实施了敏捷软件本地化模式的最佳实践。
在此本地化项目中,惠普公司本地化团队面临以下挑战:项目开始结束时间不明确;迭代开发对资源配置提出了更高的要求;用户界面因需求变化频繁变更;每个功能模块进行独立单元测试,难以整体把握本地化成果;系统集成测试前需要尽可能发现、修补漏洞;及时与软件开发团队、测试团队同步本地化代码等等。
惠普公司本地化团队主要采用了持续交付的方法应对挑战。在本地化项目中,每一个迭代周期(Sprint,冲刺)发布一个本地化版本。例如,在SprintN迭代周期内本地化SprintN-1迭代周期内开发的内容。而且,每一个迭代周期都要进行本地化测试并修正缺陷(HPACG.2010)。

图4. 惠普公司敏捷本地化解决方案流程图(HPACG2010)
此外,惠普公司本地化团队还采用了其他敏捷本地化方法。例如,设立本地化项目经理一职,与软件开发团队一同工作,以确保及时沟通和反馈;利用已有的翻译记忆库和术语库,对本地化内容进行预处理,提高翻译文本的重复利用率,减轻本地化工作量;在每一个迭代周期进行本地化集成测试,并与软件开发团队和测试团队沟通结果。在惠普公司本地化实践经验总结中,传统的瀑布式本地化模式具有预见性,能够严格遵循预先计划的需求,而敏捷本地化模式则侧重于可适应性,强调适应需求变更的能力。
表1. 惠普公司敏捷本地化模式特征
工作 |
特征 |
本地化版本发布 |
每一个迭代周期(Sprint)。在SprintN迭代周期内本地化SprintN-1迭代周期内开发的内容。 |
翻译工作量 |
翻译工作量取决于软件功能的数量,但不会过大。 |
测试 |
每一个迭代周期都要进行本地化测试和缺陷修正。 |
任务和职责 |
国际化:软件开发团队
伪本地化:软件开发团队
用户界面调整:软件开发团队
综合测试:本地化服务商+软件测试团队 |
惠普公司本地化团队采用敏捷软件本地化模式,取得了非常好的效果。在此本地化项目中,每个迭代周期缩短至2周,周转时间(Turn-AroundTime)缩短了60%;在系统集成阶段,软件国际化和软件本地化缺陷大大降低,意味着本地化质量提高;同时,软件产品收获了极高的用户评价,为今后的敏捷软件本地化模式应用提供了借鉴经验。
4. 结语
当今世界全球化软件设计技术快速发展,敏捷软件开发模式和敏捷软件本地化模式已经在大量的全球化软件开发项目中得到了应用。敏捷软件本地化模式通过迭代和持续交付等方法提高本地化团队适应需求变更的能力,具有模块化、结构化、重复利用三个特征。根据敏捷软件本地化模式的实践经验总结,需要采用语言资产管理及自动化、本地化人员全程参与软件开发过程、持续交付、及时沟通与反馈的实施策略。惠普公司应用敏捷软件本地化模式的实践案例,验证了敏捷软件本地化模式在实践中可以缩短开发时间,提高本地化质量,提高本地化团队适应需求变更的能力,为客户创造竞争优势。
[作者简介]
崔启亮,对外经济贸易大学副教授,中国翻译协会本地化服务委员会副主任。研究方向:本地化、计算机辅助翻译、语言服务。
李晓晴,中国建设银行股份有限公司。研究方向:商务口译。