This paper presents a application generator based on UML specification. The tool is capable of generating the source code in various programming languages from the same specification. The main characteristics of the existent tools are explained in brief. Main generator capabilities and merits are presented as well as an example of usage based on a relatively simple scenario. The tool extensibility is described as a mean of making the tool to suit a wide range of needs. application generator, CASE, source code templates, UML, XML/XSL transformations I. INTRODUCTION At present and in the future, the technology development is accompanied by an increase in applications’ complexity. Code generators are used to increase code quality and decrease development time, since their goal is to generate repetitive source code while maintaining a high consistency level of the generated program code. Code generation assumes the mission of writing repetitive code parts, leaving to programmers more time to concentrate on specific code. The generators provide more productivity; generate great volumes of code, which would take much longer if coded manually. Consistent code quality is preserved throughout the entire generated part of a project. Required coding conventions are consistently applied, unlike handwritten code, where the quality is subject to variation. In case of finding errors in generated code, the errors can be corrected in short time through revising of templates and re. running the process of code generation [1]. Code generators are delivered with limited set of solutions for common problems in a target domain and allow only limited possibility for extension [5]. Some tools generate only parts of applications while the others generate whole applications. Code generators are especially suited for database.based applications where large number of forms with similar functionality is needed. This work was supported by grants # 036.0361983.3137 and # 036. 0361983.2022 by the Croatian Ministry of science, education and sports. K. Fertalj is with the Department of Applied Computing at the Faculty of Electrical Engineering and Computing, University of Zagreb, Croatia (phone: 385.1.6129918; fax: 385.1.6129915; e.mail: kresimir.fertalj@fer.hr). M. Brcic just graduated from Computer Science at the Department of Applied Computing, Faculty of Electrical Engineering and Computing, University of Zagreb, Croatia (e.mail: mario.brcic@fer.hr). Generators usually have their own Integrated Development Environments (IDE) because, for instance, a professional Web application development today is not possible without a good HTML designer, a code editor, a Web page preview and often a debugger [18]. The developers need tools that will be able to generate code for most common and most repetitive functions. As every developer has his own method of development, it is up to her/him to choose the product he will be able to work with. In an ideal situation the produced code would be the code the developer would himself make manually knowing the best practices in solving particular problems, having a good knowledge and experience in the area, and having a reasonable amount of time for development. It is nearly impossible to imagine that an existing generator will produce such code, which the developer will never have to modify or customize. Sometimes, the effort of learning how to use the generator and to think in its terms is not justified considering the size/scope of a project. If that is the case, then using a combination of proprietary custom.built framework and third party solutions to specific problems might be a better way to proceed. A couple application generators have resulted from the authors’ research and development [6], [23]. The experience gathered was used as a foundation when modeling a new tool. The old tool [7], [8] was used in several projects, with the generated code rate ranging from 10%.90%. Higher percentage was achieved in projects with a large number of straightforward data processing forms. The usage of the generator would be more frequent if the generator had been capable of generating custom code fragments in an easy way. Later, another tool was built and has been used in building Web.based applications [24]. The generated systems consisted of many different applications, Web pages, and forms which were rather unique in nature. Despite their uniqueness, fractions of code were isolated and converted into XML/XSL templates. Generally, templates could contain code in any programming language. The tool included the support for code generation based on database structure, and generation of documentation. It was expandable with user defined parameter types and dependencies. The generator overcame some problems found in various commercial tools [23], [25], [26]. It was suitable for programmers who wanted complete control of the code generation process, but was still missing modeling capabilities. A Source Code Generator Based on UML Specification Kresimir Fertalj, Mario Brcic INTERNATIONAL JOURNAL OF COMPUTERS AND COMMUNICATIONS Issue 1, Volume 2, 2008 10