code gear localization strategy cybercom automated build process

Download Code Gear  localization strategy CYBERCOM  automated build process

Post on 06-Jan-2016




2 download

Embed Size (px)


Code Gear localization strategy CYBERCOM automated build process Custom developed localization for Delphi. Cybercom in brief. Cybercom is a high-tech consultancy that offers software development and IT-strategy services. - PowerPoint PPT Presentation


  • CodeGear localization strategyCYBERCOM automated build processCustom developed localization for Delphi

  • Cybercom in briefCybercom is a high-tech consultancythat offers software development and IT-strategy services.our services mainly target the telecom, finance and industry sector and key customers in other sectors. Launched in 1995 and on the Nordic stock exchanges since 1999.Offices in Denmark, India, Sweden, Singapore and the UK, and operations world-wide.Together we employ about 500 people.Our largest customerSony Ericsson, Ericsson, Nokia, Tele2, Millicom, Teracom, ASSA ABLOY, Reuters, SEB, H&M, OMX

  • Jonas in briefJonas Rappjonas.rapp@cybercomgroup.comConsultant since 1996System development, dba, architectCybercom Group since 1998Small independent companies, stock market introduction, the Dark Ages, expansionOdd Delphi-developer1, 3, 5, 7, 2005, 2007

  • LocalizationThe Delphi approach

  • LocalizationThe Delphi approachResource managementIsolated resourcesSystem locale code / suffixResource precedenceCodeGear registry value overrideLocal system localeExecutable / DLL resourcesDelphi ITEresourcestringForm definitionsExternal Translation ManagerDistributed translationDoes not require complete Delphi IDE

  • LocalizationThe Delphi approach Pros and ConsProsCompletely integrated with the development platformTransparent to developers and usersETM for distributed translationSystem locale overrideSupport for repository

  • LocalizationThe Delphi approach Pros and ConsConsETM / ITE never passed the GUI guys...Shaky updating of form definitionsGenerally overkillComplex distribution of files to translatorsMaster of data uncertaintyNo batch supportNo standard deployment method for ETM - manual copying of files

  • Case studySoftware suite for an international customer developed by Cybercom since 2000

  • Case studyEnvironment and PrereqsAbout 10 marketsEurope, USA, Asia / Australasia3 application areasFactory~5 installationsRetailer~350 installationsEnd user~1000 installations10-15 languagesTranslated remotely by customer, compiled to resource librariesCommon codeSome code is shared between the applicationsBusiness logic variationsSome custom functionality based on market

  • HistoryThe wild wild west

  • History The wild wild west...Build processUnsynchronized builds and releasesSupplier - Customer culture too loose, unspecified request and requirement proceduresNo release managementSeparate modules built when neededSeparate modules delivered manually to marketUncontrolled build environmentNo standard developer tools kitBuilds performed on any developer PCSome modules only possible to build on specific PCs with correct tools and components

  • History The wild wild west...Language managementStrings declared as resourcestringStrings used in code extracted to resourcestrings for translationForm texts scanned by custom made toolGenerates .pas-file with texts in resourcestringsForm file parsing developed and expanded ad hocLanguages generated with Delphi Translation ManagerGenerates lots of overhead with duplicated form definitions for each languageDistributed asynchronous translation.rc-files updated by Delphi languages buildTranslations being performed on .rc-files with custom made tool.rc-files sent back to developers to be used in next build

  • History The wild wild west...Obvious problemsUncontrolled installation statusCustomers may have any combination of versions in different modulesArbitrary binariesBuilds performed in dirty environment on developer PCTranslation Manager problemsForm definitions duplicatedMaster of data problemsReadOnly attribute cascadedLanguage resources do not match exe/dllDistributed binaries with different structure than existing language resourcesMessy handling of .rc-filesMerging translated files into new Delphi-generated files, while a third version of the file is just distributed without latest translations...

  • TodayThe structured paradise

  • Today The structured paradiseDevelopment environmentClick-once-setup of Delphi environmentAll components and pre-reqs structured in VSSEnvironment variable defines local project rootAutomatic registration of componentsCommand file to copy and register dllsRegistry file to register Delphi componentsComponent update distributionNew versions of components updated from VSSRe-register using files above

  • Today The structured paradiseBuild environmentDedicated build machineNot infected by developer whims to try some new stuff...VPC with all prereqs installedSafe reproducable VPC environmentNot dependent on a specific PC, the VPC image can be used on any PC (actually even on a contaminated developer PC...)Complete process controlled from check-out to published updatesManual interaction minimized as FinalBuilder controls all steps in the process

  • Today The structured paradiseLocalizationStrings declared as resourcestringStrings used in code extracted to resourcestrings for translationForms scanned by custom toolGenerates .pas-file with texts in resourcestringsForm definition parser same as Delphi itself usesTranslation projects generated by custom toolComplete Delphi projects with references to base project form definitions and including .rc-files and collecting project group are generated from language database

  • TodayLanguage management

  • Language ManagementCentral databaseLanguage Management databaseAll translations stored in central databaseResource history maintained for non-chronological buildsNew builds update databaseThe Delphi .drc-file is parsed to update the database with information of resourcestrings in current versionWeb based UITranslations are updated in the database.Access control restricts who updates what

  • Language ManagementBuild flowDelphi Build.drcLangMan DBTranslationDEUFRAESPENG.bpg.exe / .dll.DEU.FRA.ESP.ENG

  • Language ManagementBuild flowLangMan DB.exe / .dll.DEU.FRA.ESP.ENGInstallation package

  • Language ManagementThe future of Cybercom application localizationRepositoryAutomatically translate single wordsTranslate all similar resourcestringsIntegration with other development platformsLangMan database may be updated from, and update to, other platforms e.g. Visual StudioLocal clientPublish webservices on LangMan serverLocal clients consuming webservices for data retreival and updateRadical GUI advantages to web based GUICheck in/out projects and languages etcTranslating binary resourcesImages, sounds etc

  • TodayAutomated build processwith FinalBuilder

  • FinalBuilderPreparing for buildSet version numberMajor, Minor and Release is set manuallyBuild number is controlled by the automated build processVersion number is set on all binaries compiled from FinalBuilderSend e-mail to project groupAlert team members that the build is startedLabel project tree in VSSIf this is a new build with latest available source, a label is set in VSS source structureGet labeled tree from VSSThe version to build is fetched from VSS

  • FinalBuilderBuild and Localization actionsExecute FormTextScanner toolForm texts parsed to resourcestringsMethod to set form properties at runtimeBuild Delphi-project modulesexe/dll generateddrc file generatedExecute Delphi drc -> LangMan updaterUpdates LangMan database with resources from current version

  • FinalBuilderBuild and Localization actionsTranslate languagesBuild process may be paused to allow translations of new and changed resource stringsExecute LangMan -> rc generatorrc-files for all included languagesDelphi projects for all languagesDelphi project group for language projects, used in a developer environmentBuild Delphi language projectsGenerate resource binaries

  • FinalBuilderDeployment generationUpdate databasesEach database is attachedGeneral and market specific scripts executed on databaseDatabase detachedExecute Wise installation generatorWise compiles installation executable

  • FinalBuilderDeployment distributionCopy files to internal serverInstallation files for test staff made available on in-house serverFTP installation to web based distribution siteInstallation files for customer tests transferred over FTP to public serverFiles for Automatic update transferred to web serverTranslation files distributed.rc files (where still used) transferred to web server for distributed translationBuild output archivedAll builds are archived on local serversBuild logs publishedLogs from all build activities are published as html documentBuild history is published as html document

  • FinalBuilderFuture enhancementsUpdate CM systemUpdate status of cases included in current buildSet Available from build on new completed cases included in build