A preliminary analysis of the source code shows that the textual elements follow two regular patterns. The first pattern corresponds to “emerging messages”. These are created with the statement “msgbox ()” (an abbreviation for message box); the text assigned to the emerging message is written within the parenthesis. As an illustration, a real emerging message informing of a file that is not found will have the following code:
msgbox(“Fichero no encontrado”) The second pattern corresponds to the text used in windows and buttons of the application, which have the general pattern:
component.text = ”Text associated to this component” Where the expression “component.text” is the convention in VB.NET to note that the string in double quotes is the text that will appear on that specific component. For example, to assign the text “Aceptar” (OK) to a given button, we write:
button.text =”Aceptar” Since we are going to restrict the I&L process to just linguistic issues, these textual elements will be the subject of the I&L processes.
Fourth International Conference I.TECH 2006 Strategy for I&L, Conceptual and Architectural Design Our specific problem is the need to adapt the environment into the English language. The most obvious and even quick solution is to search for all the text elements in Spanish and create a new version of the application with the interface in English. However, there are some requirements on the I&L adaptation, such as:
a) The localization process should be done by translators / final users.
b) Maintainability of the system and translations should be guaranteed.
c) It is desirable to produce a core application abstracted from the linguistic issues.
d) The pre-existing components must not be functionally modified.
Therefore, the architecture should be modified with the addition of a new component in charge of the internationalization functionalities; so that the textual contents of new languages are stored as a new resource (in the form of an external file, for example) which can be read and processed by the application itself.
The new component is in charge of reading the external files with the translations of the textual elements and imports them into the environment so that messages and interfaces can be shown in different languages. The result is new software architecture as illustrated in figure 2.
Thus, the global strategy promotes the creation of a new specific component that once integrated in the original architecture is responsible for all the internationalization tasks. The basic functionalities of this new component should be:
1. Identification and labelling of all the text strings written in Spanish language of any kind (emerging messages, buttons, windows, and any other textual elements) 2. Extraction of these strings and generation of a XML file according to a predefined structure 3. Capture of the new XML file, once all the identified strings have been translated into the new language in the XML file.
4. Insertion of the translated strings according to the labelling.
The detailed description of this process is shown in the next section.
The Practical Case The new component, called “Internationalization Manager”, serves a number of functions that guarantee that the required language changes are carried out over the existent environment, while intervening in the current software as less as possible. Figure 2 shows the new architecture of the environment and how the “Internationalization Manager”, together with its functional element the Text Management Module (TMM), is integrated in this new architecture. In the remaining, we will describe how the new component works and its main functionalities.
1. Text string identification and labelling.
This first functionality consists on identifying the textual elements in the original language (in our case, Spanish) following the two aforementioned search patterns, namely msgbox and the component.text. This function has been carried out by means of a script that identifies these text strings. The result of the script is a file where not only the text string is stored, but also additional information associated to the string, like its location, the component it belongs to, and other information that could be useful. All the information that the script gathers about a text string is labelled with a numeric identifier. The only modification that is done from this moment over the original software is the substitution of these strings by a function that calls for the identifier in the XML file of the required language and inserts the text string contained in the XML file. Let’s see an example of how it works.
Suppose the source code of the application in Spanish contains the following an emerging message:
Information Systems msgbox (“Error: Archivo no encontrado”) (English: “Error: File not found”) The Spanish text string is substituted by the following:
msgbox (InternationalizationManager.GetText(57)) Where InternationalizationManager is the function that calls to the corresponding component of the TMM that executes the instruction GetText(57). This instruction captures and temporally inserts the text string labelled with the identifier 57 in the language selected by the user in its place. Currently there are not text strings of a specific language in the environment anymore but functions like the aforementioned that allow for the incorporation of a new language in the environment without further changes over the original software.
Internationalization Process Current state Localization process Environment Internationalization Manager XML Translated files XML Template Original Language XML file Text Management Module Target Language XML file Figure 2. Global process 2. XML structure The information about the text should be structured according to an XML template that permits to save a unique structure but modifiable in the data (in our case the text translations) that guarantees their interchangeability and maintainability. This XML file can be imported by the environment since the programming language (VB.net) is provided with an XML parser. This XML file is delivered to the translators and looks like as shown in figure 3.
The first line of the XML file indicates the version of the XML standard being used and the type of codification of the file (UNICODE in this case). The second line has an empty attribute langID="" that will indicate the target language of the translation of the strings. The rest of the XML file is divided in three elements , and , each pertaining to the main components of the software. Each component is composed by a number of . An stores the following elements:
• The attribute “id” (in the example of figure 3, one “id” is 56) that uniquely identifies the linguistic text element and its presence in the software component.
• The “orig” attribute corresponds to the text string in the original language. One example is the Spanish string “Desea continuar”.
• The element which is empty and will have to be filled with the translations into the target language.
Fourth International Conference I.TECH 2006 ...
… Figure 3. Original Language XML file This file is distributed to translators so that they can perform the translations tasks in their corresponding working places, allowing for an absolute independence of the translation process and its integration in the software environment. The XML files in the target languages are delivered to the TMM and located in the corresponding directory so that they can serve as the different language options of the environment to be selected by the user.
An example of an XML file containing the translations for English is shown in figure 4. This file is the result of the localization process.
Do you want to continueError: File not found ...
... … Figure 4. English Language XML file Finally, the component “Internationalization Manager” is in charge of detecting XML files in the available languages and thus it offers them as options to the user of the environment. Once the user has select a language, the application dynamically imports the XML file that contains the text strings translated into the selected language and shows the environment in that language.
Information Systems Conclusion We have presented three approaches for software internationalization and subsequent localization. We have seen how the use of current programming languages which incorporate XML parsers allows the development of the third strategy, which the one that produces more flexible, adaptable and maintainable applications, in a convenient and easy and straightforward manner with a relatively low cost.
This approach also permits that the work of the developers can be initially kept apart from the linguistic questions and permits to maintain a single version of software. Major changes on the original software can be dealt with in the same way even if there appear new items.
Bibliography [FSF, 2002] Free Software Foundation (2002), "Online GNU gettext manual" http://www.gnu.org/software/gettext/manual/gettext.html Accedido: Marzo [Hogan, 2004] Hogan M. J., Ho-Stuart C. & Pham B. (2004), "Key challenges in software internationalisation" [Huang et al, 2001] Huang E., Hsu J. & Trainor H. (2001), "Unicode enabling for software internationalization" www.symbiogroup.com/doc/Symbio%20Whitepaper%20on%20Unicode%20Enabling.pdf Accedido: Marzo [Huang, 2000] Huang E., Haft R., & Hsu J. (2000), "Developing a Roadmap for Software Internationalization" www.symbiogroup.com/doc/Developing%20a%20Roadmap%20for%20Software%20Internationalization.pdf [LISA, 2002] LISA (2002), "TBX Specification" http://www.lisa.org/stantdards/tbx Accedido: Marzo [Lisa, 2004] The Localization Industry Standards Association (2004), "Lisa Industry Primer 2nd Edition".
[LISA, 2005] LISA (2005), "TMX Specification" http://www.lisa.org/standards/tmx/tmx.html Accedido: Marzo [Mahemoff et al, 1998] Mahemoff M. J. & Johnston L. J. (1998), "Software Internationalisation: Implications for Requirements Engineering" [Manemoff et al, 1999] Mahemoff M. J. & Johnston L. J. (1999), "The Planet pattern language for software internationalisation" [OASIS, 2003] OASIS (2003), "XLIFF 1.1 Specification" http://www.oasis-open.org/comitees/xliff/documents/xliffspecifications.htm Accedido: Marzo [Stearns, 2002] Stearns B. et al (2002), "e-business Globalization Solution Design Guide: Getting Started" http://www.redbooks.ibm.com/abstracts/sg246851.htmlOpen Accedido: Marzo de [Tykhomyrov, 2002] Tykhomyrov O. Y. (2002) "Introduction to internationalization programming" The Linux Journal, Diciembre de 2002 http://www.linuxjournal.com/article/6176 Accedido: Marzo [W3C, 2005] W3C, "Localization vs Internationalization".http://www.w3c.org/International/questions/qa-i18n. [Yeo, 2001] Yeo A. W (2001), "Global-software development lifecycle: an exploratory study" Conference on Human Factors in Computing Systems, Authors' Information Jesus Cardenosa – Department of Artificial Intelligence; Universidad Politcnica de Madrid; Madrid 28060, Spain; e-mail: firstname.lastname@example.org Carolina Gallardo – Department of Artificial Intelligence; Universidad Politcnica de Madrid; Madrid 28060, Spain; e-mail: email@example.com Alvaro Martin – Department of Artificial Intelligence; Universidad Politcnica de Madrid; Madrid 28060, Spain;
e-mail: firstname.lastname@example.org Fourth International Conference I.TECH 2006 EXPERIENCES OF SPANISH PUBLIC ADMINISTRATION IN REQUIREMENTS MANAGEMENT AND ACQUISITION MANAGEMENT PROCESSES Jose A. Calvo-Manzano, Gonzalo Cuevas, Ivan Garcia, Tomas San Feliu, Ariel Serrano, Magdalena Arcilla, Fernando Arboledas, Fernando Ruiz de Ojeda Abstract: This paper shows the main contributions of the 1st Symposium on Improvement Process Models and Software Quality of Public Administrations. The obtained results expose the need to promote the implementation of Software Maturity Models and show possible advantages of its application in software processes of Public Administrations. Specifically, it was analyzed the current status in two process areas: Requirements Management and Subcontracting Management.
ACM Classification Keywords: D.2.9 Management, K.6.3 Software Management Introduction In spite of the great advance in Information Technologies (IT) on the last years, we found that the majority of organizations, public or private, have the same problems in their software production process. These problems cause that:
• A software product is delivered, most of the time, with a 15% of defects.
• A fourth part of software projects are not finished or they are abandoned.
• A 30% or 45% of software resources are expensed in rewriting the software.
• Only the half of the times the plans and schedules established at the beginning are satisfied.
As an alternative to solve these problems, some of the research institutes of software engineering began the task to obtain and organize, in processes, the practices that are used to produce an maintain software and have demonstrated to be effective in some organizations.
For Software Engineering Institute (SEI) a process is a set of practices to perform and obtain a result, including tools, techniques, materials and people. This set of tools, techniques, materials and people is named “Software Process” . The SEI has grouped the effective practices in references models.