1. Technical Field
The present invention relates to data processing systems. In particular, it relates to software development tools for code generation.
2. Description of the Related Art
The development of software application code and related application content has long been the province of experts. A systems development expert must analyze the business problem, select the appropriate software tools to solve the business problem and then develop the software code necessary to implement the selected solution. The software created includes executable software programs and related software and materials. Related software may include web page layouts and content while related materials may include documentation or reports.
The field of software engineering developed in an attempt to standardize and simplify the creation of software. Software engineering defines standard processes and procedures that are applied to develop software code. Standardization is intended to promote use of effective solutions and to promote the reuse of previously developed solution components.
Process standardization still leaves the significant task of preparing the software code to implement a solution. Software code may be source code written in one of a number of programming languages such as JAVA®, C++, C#, Pascal or others. In addition, software code may include web pages coded in HTML, database access code in SQL, and written documentation in text form or portable document format (PDF.) Although many of the object oriented languages have stressed code reuse, this has often proved difficult in practice.
Code generation has been attempted using a number of code generators. These code generators use as input a description of the business problem to be solved expressed in some form of modeling language. This language is then interpreted and source code in a selected programming language generated. Many code generators implement what is known as a Model Driven Architecture. A Model Driven Architecture is a structure in which a business model, expressed in a modeling language drives the generation of the resulting software content. One example of a Model Driven Architecture is the Object Management Group (OMG) Model Driven Architecture.
One problem with existing code generators is the inflexibility of the modeling language or the code generation capability. For example, the OMG Model Driven Architecture requires that models be expressed in a well defined notation such as Unified Modeling Language (UML.) UML is a structured language that requires specific content and keywords to describe the business problem. The structure allows code generation to be accomplished by recognizing structural components, and generating software content based on those components. Unfortunately, many business problems are not readily expressed in UML compliant models, eliminating the ability to use generators relying on UML as the model.
Other model architectures provide fixed output generators. That is, the developer has no control over the form or format of the outputs generated base on a model input.
A problem therefore exists in providing a Model Driven approach to software content generation that is flexible in the expression of the business model as well as the content generation options.
The present invention is therefore directed at providing a software content generation system that is flexible in terms of the business model expression, the content generation expression and the transformation of model to application or software content.
The present invention provides a system for building application or software content using an open model driven architecture. The system includes: a processor, a memory and logic for specifying one or more view templates, each view template having static or dynamic content sections or both; specifying a controller element for transforming an application definition presented in a first grammar into output content, the controller specifying one or more transformations that apply the one or more view templates; and creating an application definition using the first grammar, the application definition containing a description of the application logic of the output content desired; and generating the output application content by transforming the application definition as specified by the controller element using the one or more view templates.
This summary is not intended as a comprehensive description of the claimed subject matter but, rather, is intended to provide a brief overview of some of the functionality associated therewith. Other systems, methods, functionality, features and advantages of the claimed subject matter will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description.
A better understanding of the claimed subject matter can be obtained when the following detailed description of the disclosed embodiments is considered in conjunction with the following figures, in which:
The preferred embodiment of the present invention implements a model driven architecture that maintains flexibility of expression in each of the descriptive components.
Allowing flexibility in expressing the application model reduces the barriers to development for the application developer. The flexible expression structure enables use of the presently claimed invention to develop a large variety of application content. Model descriptions are not limited to a set of problems that can be expressed in a rigid model language.
View templates or content patterns 20 are developed or accessed by the content developer. In an on-going development organization, libraries of view templates will be assembled as a result of development projects. If a template for a particular problem does not exist, the developer creates an appropriate template using exemplar analysis or a similar technique to abstract a view template to solve a particular class of problems. A template may have the form shown in the table below.
The controller description 30 specifies how the application definition 10 will use the patterns 20 to create content output 50. The controller analyzes the application definition and acts based on identified keywords in the grammar. Controller actions can be divided into flow control actions and pattern application actions. These actions comprise a scripting language that is used by the application developer to specify application generation in a flexible manner. The preferred embodiment of the present invention uses a scripting language specifically developed for content generation. A controller according the present invention could, however, use other languages to control code generation. For example, the controller could be expressed in the JAVA® programming language. JAVASCRIPT® scripting language, or Visual Basic language. The scripting language of the present invention permits specification of particular application definition grammars. Since the application grammar is flexible, the controller must similarly be flexible to parse and interpret the application definition. The controller and application definition must therefore be developed together for a particular application to ensure that application definition expressions have the necessary output transformation support.
Flow control actions include conditional actions that apply a particular pattern only if certain conditions exist or repetitive actions such as applying a pattern multiple times. Pattern application actions include generating content output based on variable data specified in the application definition and content output data specified in a pattern. The controller specifies which pattern is to be selected and which variable data is applied to that pattern. The controller specifies how many different output files are to be generated and specifies the structure for the names of those files. An example of a controller element or controller description is shown below.
The content generation process is managed by a transformation engine 40. Transformation engine 40 accesses the controller description 30, application definition 10 and patterns 20. The application definition 10 is read by the transformation engine 40 and parsed to locate keywords and variable data. This parsing occurs using well known techniques of XML analysis or other lexical analysis of a textual file. Keywords are used to locate actions specified in the controller description 30. When a match is found, the matched action is applied. This causes a pattern 20 to be accessed and content to be generated. Content generation involves writing out specified static information and replacing dynamic information with application instance specific information passed to the transformation engine. The result is application content that solves the business problem modeled in the application definition.
The preferred embodiment of the present invention implements an open model driven architecture. The architecture is “open” because of the ability to flexibly specify the application definition (model), the controller, and the view templates. The modeling and generation process is not restricted to a certain class of models or models expressed in a fixed format or language.
The present invention implements a Model-View-Controller (MVC) model of a system. MVC models were originally developed to reduce the complexity of software systems that provide graphical user output using a graphical user interface (GUI.) In such a system the user view of data is kept separate from the rules for accessing the data to be displayed. The application logic for accessing and processing the data is specified in the model. Finally, the controller specifies how data acquired by the model is mapped to the GUI display (the view.)
A system designed using MVC modeling principles provides independence between the model and the view. This reduces implementation complexity because the view designer can concentrate solely on user interface issues while the model designer can concentrate on application logic and data access issues. This independence permits independent design changes to the user interface or the application logic. The user interface could be changed from a web browser display to a workstation client display or a portable device display without modifying the model specification.
In the present invention, the component independence of the MVC model is used to give the designer flexibility in application definition and content creation. For example, a particular application definition can be used to generate content output in different programming languages through the use of different views for each of the languages. Thus, an application definition may specify certain business requirements. The controller will map these to certain patterns. If matched to C language patterns, C program source code can be generated to implement the business solution. Use of a different controller that maps to JAVA® language patterns will result in a JAVA® solution.
The preferred embodiment generates content output. Content output can be any of a plurality of textual data or binary data. This output may be programming code for a particular programming language such as C, JAVA®, or C++. Output also can include descriptive materials such as solution documentation or descriptions. The output may also include web pages or other web components. Binary data may include bitmapped images, graphics or sound output.
The present invention is preferably employed in conjunction with a computer system such as that shown generally in
Random access memory 204 manages the program instructions and data for the computer system. In a typical computer system, an operating system 232 will manage the processing of tasks on the computer and the interface between particular programs and the hardware subsystems.
Application programs 236 execute on the system to perform particular tasks. The number of application programs running at one lime is limited only by the resources of the system including the operating system limitations. Finally, a variety of middleware 234 may be provided for certain tasks. Middleware 234 are programs that provide generally used facilities used by application programs or directly by users. Middleware can include software such as database management systems such as IBM DB2, MICROSOFT SQLSERVER®, MYSQL®. It may also include web servers and web application servers such as IBM WEBSPHERE® Application Server or MICROSOFT® IIS. Middleware provides generalized services that link together programs and systems to achieve the desired business goals.
Examples of computer systems that can be used in the preferred embodiment include the IBM THINKCENTER® series of personal computers, IBM THINKPAD® notebook computers. IBM XSERIES® workstations, and other machines based on INTEL® or AMD® central processing units (CPUs). These computer systems may operate under an operating system such as MICROSOFT WINDOWS XP®, Linux, or AIX®. The present invention is not limited to a particular hardware or software structure except as claimed.
The invention also may be embodied in a computer program product, such as a diskette, optical ROM, or other recording medium, for use with a data processing system. Embodiments of a computer program product may be implemented by use of any recording medium for machine-readable information, including magnetic media, optical media, or other suitable media. Persons skilled in the art will immediately recognize that any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a program product. Persons skilled in the art will recognize immediately that, although most of the exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present invention.
The preferred embodiment of the present invention is preferably used in conjunction with an integrated development environment (IDE.) An IDE provides a number of facilities to assist the software developer. The IDE may include project, library and file management features, editors for editing and validating program source code, and compilers for creating compiled executable versions of the desired programs. An example of an IDE is the IBM WEBSPHERE® Application Studio Developer (WASD). Another example is the Eclipse development system managed by the Eclipse Foundation.
A system according to the present invention is preferably embodied as an addition to the IDE system. In WASD and Eclipse IDEs such an addition is termed a “plug-in.” As shown in
The IDE also provides editors that can be used to construct application definition files and controller definitions. Editor features such as find or find and replace can also be used by the application developer and the transformation engine. The use of an IDE, however, is not required to practice the present invention because the functions performed by the IDE can be performed directly by the preferred embodiment.
A view template includes static and dynamic content. For example, if programming language code is being generated, the template may include static program language keywords. Particular program variables will be represented as dynamic code. The template is used to generate code by replacing the dynamic code with information extracted from the application definition as specified by the controller definition. The controller definition provides the mapping between information provided in the application definition 416 and the dynamic portions of the output. Dynamic portions may represent “variables” in a programming language, but may also represent other changeable information. Thus, the chapter titles in a document could be represented as having static and dynamic parts. Program code may include dynamic names for classes and methods as well. A standardized naming convention is used in one embodiment to control the types and formats of names used throughout the resulting system.
The analysis of the business problem 410 results in an application definition 416. The term “business problem” is used to describe the problem scope the content is desired to solve. It need not be “business” related and can include analysis of games, non-profit organization issues, entertainment or recreational problems, in each case the problem is analyzed and the results expressed as an application definition. The analytical results are also used to specify the controller 412. The controller definition is developed based on the application analysis and the available patterns 408. The controller definition is stored as a controller definition 414.
Finally, content is generated 418 using a transformation engine. Content generation is performed by accessing the application definition 416 under the control of controller 414. The generator applies the application definition variables to the patterns 408 to create generated content 420.
It will be understood from the foregoing description that modifications and changes may be made in various embodiments of the present invention without departing from its true spirit. The descriptions in this specification are for purposes of illustration only and are not to be construed in a limiting sense. The scope of the present invention is limited only by the language of the following claims.
The present application is a continuation of an application entitled “System and Method for Creating Application Content Using an Open Model Driven Architecture,” Ser. No. 10/904,107, now U.S. Pat. No. 7,376,933, filed Oct. 22, 2004, assigned to the assignee of the present application, and herein incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5974252 | Lin et al. | Oct 1999 | A |
6199195 | Goodwin et al. | Mar 2001 | B1 |
6253367 | Tran et al. | Jun 2001 | B1 |
6665685 | Bialic | Dec 2003 | B1 |
6701517 | Moore et al. | Mar 2004 | B1 |
6775680 | Ehrman et al. | Aug 2004 | B2 |
6981212 | Claussen et al. | Dec 2005 | B1 |
7120897 | Ebbo et al. | Oct 2006 | B2 |
20030023413 | Srinivasa | Jan 2003 | A1 |
20030074648 | Brassard et al. | Apr 2003 | A1 |
20030106042 | Lynch et al. | Jun 2003 | A1 |
20030134677 | Obied et al. | Jul 2003 | A1 |
20030192027 | Porter | Oct 2003 | A1 |
20030212904 | Randle et al. | Nov 2003 | A1 |
20030233365 | Schmit et al. | Dec 2003 | A1 |
20040002883 | Andrews et al. | Jan 2004 | A1 |
20040034846 | Ortal et al. | Feb 2004 | A1 |
20040107124 | Sharpe et al. | Jun 2004 | A1 |
20040107125 | Guheen et al. | Jun 2004 | A1 |
20040111702 | Chan | Jun 2004 | A1 |
20040268303 | Abe et al. | Dec 2004 | A1 |
20050155016 | Bender | Jul 2005 | A1 |
20050223355 | Forstmann et al. | Oct 2005 | A1 |
20050262481 | Coulson | Nov 2005 | A1 |
20060048096 | Jiang et al. | Mar 2006 | A1 |
20060156278 | Reager | Jul 2006 | A1 |
20070089103 | Iborra et al. | Apr 2007 | A1 |
Number | Date | Country |
---|---|---|
WO 03038682 | May 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20080196003 A1 | Aug 2008 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10904107 | Oct 2004 | US |
Child | 12107436 | US |