1. Field of the Invention
Embodiments of the invention are related to tools used to develop application software. More specifically, embodiments of the invention provide an intelligent integrated development environment (IDE) tool used for rapid application development of database-aware applications.
2. Description of the Related Art
Developing software applications is a complex task, and IDE tools are available to assist computer programmers with the development process. Currently, IDE tools are available to assist programmers developing applications in a variety of programming languages (e.g., Java®.net, C, C++, C#, etc.). These tools are typically configured with features such as auto-indenting, syntax highlighting, type checking, and a variety of other features that assist the development process. An IDE tool usually includes a text editor that visually displays errors as source code is typed, allowing a developer to correct errors before proceeding with the next line to code. Typically, IDE tools are optimized for different programming languages and errors are identified based on the programming language being used by the developer, often determined a suffix of a project file (e.g., .cpp for a c++ program or .java for a Java® program).
Although very useful, these IDE tools have a variety of limitations. For example, IDE tools provide little support for database statements embedded within the source code of an application. The database statements may retrieve data from, or update/insert data into, the database. In the program source code, database statements are usually specified as text strings in a database query language, such as SQL. The following source code fragment illustrates an embedded SQL query using the Java® programming language:
Because the actual database query is enclosed within double-quotes, conventional IDE's treat the database statement as a text string, with no restrictions on string content.
Database-aware software applications are typically built using an application programming interface (API) that provides a means to use native query languages (e.g., SQL used to access relational data sources) using API calls included within program source code. For example, the well known JDBC (Java Database Connectivity) API is a specification for connecting programs written in the Java® programming language to a variety of commercially-available databases.
The JDBC API allows developers to embed database statements as text strings that are passed to a program that manages the database. Although effective, this approach may require substantial development time, as the developer is required to write all of the necessary source code to create a connection to a particular database, to pass the text of a database query to the database, to receive query results, and to store the results in an object of the application program; none of which is likely to be part of the core functions of an application. That is, the application program typically retrieves information from the database to perform some other logic or processing. For example, in the code fragment listed above, only the final step of “process query results” is likely to be related to the intended function of the application. The rest is simply overhead the developer must incur for the database-aware application to access an external database. Similarly, the developer must write all of the necessary source code to test each element of the application that accesses an external data source (i.e., each database-statement embedded within the source code of the application). Thus, the developer spends significant time performing tasks that, while necessary, are unrelated to writing the source code that performs the intended functions of an application being developed.
Moreover, the total development experience for a quality application grows exponentially difficult as complexity of the database accesses increase. Further, as the IDE environment does not provide database connectivity or programming assistance for the database statements embedded within the source code of an application program, developers are forced to juggle between various tools, spending substantial time to even get a database-aware application up and running before writing the core of the application, resulting in added cost to the application development process.
Accordingly, there remains a need for an IDE tool that provides rapid application development support for database-aware applications.
Embodiments of the invention provide an intelligent integrated development environment (IDE) tool for database-aware application development. For example, embodiments of the invention may be used to generate a software component configured to access a specified database using an appropriate API. The generated component may include a collection of database queries and the appropriate API calls to create, retrieve, update, and delete records from a given database. Once the component is generated, the developer may invoke methods provided by the component to perform database operations without having to write the component from scratch. By doing so, the developer may focus on the key task of application development, instead of writing the incidental (but necessary) code used to access the database. Additionally, the IDE tool may be configured to generate unit tests used to evaluate the functioning of the generated component.
One embodiment of the invention includes a method for generating source code for a database-aware software application. The method generally includes receiving, from a user interacting with an IDE tool, a selection of a database element and generating at least one database statements to access the database element. The method also includes encapsulating the at least one database statements within source code of a programming language in which the database-aware software application is being written, storing the source code within a project file associated with the database-aware software application, and displaying the source code in an editing pane of the IDE tool.
Another embodiment of the invention includes a computer program product comprising a computer useable storage medium having a computer readable program, where the computer readable program when executed on a computer causes the computer to perform an operation. The operation may generally include receiving, from a user interacting with an integrated development environment (IDE) tool, a selection of a database element and generating at least one database statements to access the database element. The operation may also include encapsulating the at least one database statements within source code of a programming language in which the database-aware software application is being written. The operation may also include storing the source code within a project file associated with the database-aware software application and displaying the source code in an editing pane of the IDE tool.
Another embodiment of the invention includes a system having a processor and a memory containing an IDE tool configured to generate source code for a database-aware software application. The operation may generally include receiving, from a user interacting with an integrated development environment (IDE) tool, a selection of a database element and generating at least one database statements to access the database element. The operation may also include encapsulating the at least one database statements within source code of a programming language, wherein the user is writing the database-aware software application in the programming language, storing the source code within a project file associated with the database-aware software application, and displaying the source code in an editing pane of the IDE tool.
So that the manner in which the above recited features, advantages and objects of the present invention are attained and can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to the embodiments thereof which are illustrated in the appended drawings.
It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
Embodiments of the invention provide application development tools that allow developers to rapidly build database-aware applications and database unit tests. Embodiments of the invention support multiple scenarios for database-aware application development, including beginning from a database table and automatically creating application code to access the table, beginning from an existing database query, beginning from existing application code that accesses a database, and hybrids or variations of these approaches.
Advantageously, embodiments of the invention provide automatic code generation, query generation for multiple languages, and unit test automation, leaving the developer to spend more time focused on designing and writing code to perform the intended functions of a database-aware application. Further, the developer may make frequent use of unit-test programs executed during application development, providing seamless integration of database connectivity with the regular development process. Thus, embodiments of the invention may significantly reduce application development and testing overhead related cost.
In the following, reference is made to embodiments of the invention. However, it should be understood that the invention is not limited to specific described embodiments. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice the invention. Furthermore, in various embodiments the invention provides numerous advantages over the prior art. However, although embodiments of the invention may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the invention. Thus, the following aspects, features, embodiments and advantages are merely illustrative and are not considered elements or limitations of the appended claims except where explicitly recited in a claim(s). Likewise, reference to “the invention” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s).
One embodiment of the invention is implemented as a program product for use with a computer system. The program(s) of the program product defines functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive) on which information is permanently stored; (ii) writable storage media (e.g., writable DVDs, RW-CDs, and hard-disk drives) on which alterable information is stored. Such computer-readable storage media, when carrying computer-readable instructions that direct the functions of the present invention, are embodiments of the present invention. Other media include communications media through which information is conveyed to a computer, such as through a computer or telephone network, including wireless communications networks. The latter embodiment specifically includes transmitting information to/from the Internet and other networks. Such communications media, when carrying computer-readable instructions that direct the functions of the present invention, are embodiments of the present invention. Broadly, computer-readable storage media and communications media may be referred to herein as computer-readable media.
In general, the routines executed to implement the embodiments of the invention, may be part of an operating system or a specific application, component, program, module, object, or sequence of instructions. The computer program of the present invention typically is comprised of a multitude of instructions that will be translated by the native computer into a machine-readable format and hence executable instructions. Also, programs are comprised of variables and data structures that either reside locally to the program or are found in memory or on storage devices. In addition, various programs described hereinafter may be identified based upon the application for which they are implemented in a specific embodiment of the invention. However, it should be appreciated that any particular program nomenclature that follows is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature.
Additionally, an embodiment of the invention is described herein relative to an IDE tool used to develop a database-aware software application using the Java® programming language that includes embedded SQL statements. One of ordinary skill in the art will readily recognize, however, that embodiments of the invention may be adapted for use with a wide variety of programming languages used to develop database-aware applications. Similarly, embodiments of the invention may be adapted for use with other database query languages.
As shown, computer system 120 includes a processor (or processors) 122, a storage device 124, a networking device 125, and a memory 126, all connected by a bus 121. CPU 122 is a programmable logic device that executes user applications (e.g., an IDE tool 130). Computer system 120 may be connected to a display device 115 and at least one input devices 117. Typically, user input devices 117 include a mouse pointing device and a keyboard, and display device 115 is a CRT monitor or LCD display. The processing activity and hardware resources on computer system 120 may be managed by an operating system (not shown). Well known examples of operating systems include the Windows® operating system, distributions of the Linux® operating system, and IBM's i5/OS® operating system, among others. (Linux is a trademark of Linus Torvalds in the U.S., other countries, or both). Network device 125 may connect computer system 120 to any kind of data communications network, including both wired and wireless networks.
Storage device 126 stores application programs and data for use by computer system 120. Typical storage devices include hard-disk drives, flash memory devices, optical media, network and virtual storage devices, and the like. As shown, storage device 126 contains a database 140 and a development project 144. Database 140 may store a collection of data records organized according to a data model 142. For example, data model 142 may provide a relational schema of tables, columns, and keys for organizing data records stored in database 140 and accessed using SQL database statements. Development project 144 represents a collection of information used to build a software application. For example, development project 144 may include source code files, scripts, etc., along with resources such as fonts, images, build-instructions, and project documentation, etc.
As shown, memory 124 stores a number of software applications, including an IDE tool 130, a query parser 134, and a query tool 136. Also, memory 124 includes a project file 132. Query parser 134 may be a software application configured to evaluate a database statement for both syntactic and semantic correctness. And query tool 136 may be a software application configured to execute a valid database statement (e.g., an SQL query). In one embodiment, IDE tool 130 may be configured to pass database statements to query tool 136 for execution.
IDE tool 130 is a software application used to develop other software applications. Typically, IDE tool 130 combines an editor, a compiler and other useful tools in the same software package. In one embodiment, IDE tool 130 is configured to generate elements of source code for a database-aware software application. For example, in one embodiment, IDE tool 130 may generate the appropriate source code to connect to a database associated with development project 144 along with objects that encapsulate database statements used to create new records and to retrieve, update, and delete existing records from database 140. Further, IDE tool 130 may generate all of the necessary source code allowing the developer to invoke these operations from within application source code (e.g., a collection of Java® methods exposed through an interface provided by a Java® bean object).
Additionally, IDE tool 130 may be configured to generate and execute unit tests to test the functionality of the database-aware application as it is being developed. Thus, unlike conventional development methodologies where the database statements are only tested when the application is built and executed, embodiments of the present invention allow database testing to become an integrated part of the database software development process.
In another embodiment, IDE tool 130 may also be configured to generate database-aware application code around an existing query. Building an application for a known, often highly-customized and complex database query is a common requirement. The query itself can be a combination of various languages (e.g., SQL, xquery, java host variables). Writing a database-aware application around such a query requires the developer to have full knowledge of each language and the metadata and/or data model associated with the syntax of each database language (e.g., SQL, xquery, java) and the parser technologies. IDE tool 130 hides this complexity from the developer by generating an application around such an existing query.
Project file 132 represents a file included in development project 144 that is being edited by a developer using IDE tool 130, e.g., a source code file of a database aware software application. IDE tool 130 may display the text of the source code to the developer on display device 115 and provide an interface that allows the user to edit project file 132. In one embodiment, database-aware application source code generated by IDE tool 130 may be stored in project file 132.
Once the developer specifies the properties of a desired database connection, then at step 210, IDE tool 130 may establish a connection with the database specified at step 205. Additionally, IDE tool 130 may associate the parameters of the database connection with development project 144. IDE tool 130 provides ease of use so that information needed for executing such a test program such as a connection URL, user name and/or password does not need to be provided manually by the developer. Thus, the developer may save the development project and resume it at a later time without also having to recreate the database connection for a given project.
At step 215, IDE tool 130 may obtain a data model (e.g., data model 142) for the database associated with the database project. For example, a data model for a relational database includes a collection of tables, columns names, column data types, keys (i.e., table-to-table relationships) etc. Additionally, in one embodiment, the IDE tool need not maintain an active connection to a database. Instead, IDE tool 130 may cache the data model obtained at step 215, and update it either periodically or as specified by the developer. Thus, a developer may work offline or disconnected when building the database-aware application. This may be useful where the database-aware application being developed is associated with a “live” or “production” database and maintaining an open connection would be disruptive of the “production” use of the database.
At step 220, once the data model for a given database is obtained, IDE tool 130 may be configured to display elements of the data model as part of the development project. For example, IDE tool 130 may present a tree-like hierarchy beginning from a database name which when expanded lists each table present in the data model. In turn, each table may be expanded to show each of the columns present in a given table. Thus, the database connection may be used to integrate components of database structure as part of a given development project.
Further, as described in greater detail below, IDE tool 130 may be configured to generate application source code to access data records in the database. Returning to method 200 of
In this example, screenshot 400 shows the interface of IDE tool 130 being used to select a database table and have IDE tool 130 generate application source code used to access the selected table. Specifically, a user has right-clicked on table 410, and in response, IDE tool 130 has displayed menu 415. By selecting menu item 420, a user may cause IDE tool 130 to display a dialog box like dialog box 430. In this example, dialog box 430 allows a developer to specify a name 425 for a project file to be created along with other information related to the application source code to be generated. Additionally, in one embodiment, a user may specify additional options or parameters for the application code to be generated. For example,
As shown, a developer has used a radio button 505 to specify whether the fields of the Java® bean to be generated are “public” or “protected” and has used checkboxes 510 to specify which SQL queries IDE tool 130 should generate and encapsulate within the Java® bean to be generated. In this case, the developer has selected a global “generate all SQL statements” option. Thus, queries are created to create, retrieve, update, and delete records from the database. Further, queries for each of these operations are created at the table, parameter, and record level of the underlying database.
The example shown in
In one embodiment, IDE tool 130 may allow developer customizations to improve code readability and/or compliance to coding standards where applicable by providing developers with the ability to specify object names (a label used within application source code) from schema names (a label used within a relational database). A mapping may be generated to link two related labels. For example,
Returning to the method 200 of
Optionally, at step 235, IDE tool 130 may also generate unit test code that the developer may use to evaluate the application code generated at step 230. That is, developers can chose to generate sample programs and unit tests that exercise all or some parts of the code generated at step 230. Thus, developers do not have to write a single line of code to effectively test portions of a database aware application, and can instead test database access by an application with one click. The IDE tool 130 may generate unit tests to test each of the create, retrieve, update, and delete methods generated by the IDE tool 130. In one embodiment, the sample unit test program achieves this by executing first test query to retrieve all rows of table from the database. A second test query is then executed to retrieve first row in order to test a retrieve by parameter/object query. The unit test then updates the row with sample test values, deletes it and inserts it back, into the database which tests the application source code generated to perform the update, delete and create operations respectively in the application. Thus, the status of the underlying database remains intact at the end of a successful test execution. Further, in one embodiment, a rollback is called at the end in case of failure.
In one embodiment, IDE tool 130 provides ease of use so that information needed to execute such a test program (e.g., connection URL, user name, password) need not be provided manually by the user. IDE tool 130 may use this information from the connection associated with the project to automatically execute the unit test program. Thus the developer is provided with a one-click mechanism to run the sample program. Further, the unit test program may be integrated with a project save mechanism such that when the unit test is regenerated or manually changed, the save action compiles and runs it. IDE tool 130 may also provide execution time and other statistical information related to program and/or database query performance.
As stated, building a database-aware application for a known highly customized and complex query is a common requirement. Accordingly, in one embodiment, IDE tool 130 may be configured to use an existing database query and generate application source code around such an existing query.
As described above, the developer may have associated a database with a given development project. If not, at step 715 the IDE tool may create a connection with the database referenced by the query received at step 705. For example,
At step 720, the IDE tool may generate database access code for the database elements referenced in the query selection received at step 705. As described above, this may include generating application source code and database queries to create, retrieve, update, and delete records from an underlying database. At step 725, the code generated at step 720 may be added to the currently active development project. For example, as shown in
Advantageously, as described herein, embodiments of the invention provide an integrated development environment (IDE) tool used for rapid application development of database-aware applications. Currently, to create database-aware applications, developers are typically forced to write all of the database access layer code from scratch. That is, developers have to write application source code to create a connection to a given database, compose individual queries, and encapsulate the queries within API calls for a given programming language. Further, because IDE tools lack database integration, developers have to switch around using multiple, independent tools. Embodiments of the invention address this by integrating database connectivity within an IDE. Thus, a developer may select an existing database element (e.g., a table) and the IDE tool may generate all of the application source code, API calls and database queries needed for a functioning database-aware application. Alternatively, a developer may generate application source code from an existing database query, either part of application source code or otherwise. Therefore, development cycle time may be significantly reduced as the developer. In addition to these scenarios, one of skill in the art will readily recognize that the rapid application development tool described herein may be tailored to accommodate a variety of other scenarios. Thus, embodiments of the invention provide developers with the ability to easily generate source code for a database-aware application and to easily unit test scenarios.
Still further, by integrating database functionality within an integrated development environment, embodiments of the invention may be used to test database connectivity and functionality for a database-aware application using the same IDE interface used to create the software application. Thus, rather than having to switch between tools when developing a database-aware application, the development may rely on the single, database-aware IDE.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Number | Name | Date | Kind |
---|---|---|---|
5675801 | Lindsey | Oct 1997 | A |
5701400 | Amando | Dec 1997 | A |
5754858 | Broman et al. | May 1998 | A |
5897949 | Luhmann et al. | Apr 1999 | A |
6006224 | McComb et al. | Dec 1999 | A |
6097995 | Tipton et al. | Aug 2000 | A |
6240417 | Eastwick et al. | May 2001 | B1 |
6298342 | Graefe et al. | Oct 2001 | B1 |
6341288 | Yach et al. | Jan 2002 | B1 |
6353820 | Edwards et al. | Mar 2002 | B1 |
6446256 | Hyman et al. | Sep 2002 | B1 |
6473768 | Srivastava et al. | Oct 2002 | B1 |
6496833 | Goldberg et al. | Dec 2002 | B1 |
6507834 | Kabra et al. | Jan 2003 | B1 |
6591272 | Williams | Jul 2003 | B1 |
6594653 | Colby et al. | Jul 2003 | B2 |
6629094 | Colby et al. | Sep 2003 | B1 |
6658426 | Poskanzer | Dec 2003 | B1 |
6658646 | Hernandez, III | Dec 2003 | B1 |
6799184 | Bhatt et al. | Sep 2004 | B2 |
6799718 | Chan et al. | Oct 2004 | B2 |
7047518 | Little et al. | May 2006 | B2 |
7054924 | Harvey et al. | May 2006 | B1 |
7072983 | Kanai et al. | Jul 2006 | B1 |
7076772 | Zatloukal | Jul 2006 | B2 |
7086009 | Resnick et al. | Aug 2006 | B2 |
7107578 | Alpern | Sep 2006 | B1 |
7110936 | Hiew et al. | Sep 2006 | B2 |
7137100 | Iborra et al. | Nov 2006 | B2 |
7240340 | Vaidyanathan et al. | Jul 2007 | B2 |
7350192 | Seitz et al. | Mar 2008 | B2 |
7421680 | DeLine et al. | Sep 2008 | B2 |
7516128 | Colby et al. | Apr 2009 | B2 |
7539973 | Hodge | May 2009 | B2 |
7650592 | Eckels et al. | Jan 2010 | B2 |
7665058 | Vogel et al. | Feb 2010 | B2 |
7681176 | Wills et al. | Mar 2010 | B2 |
7685194 | Kabra et al. | Mar 2010 | B2 |
7689614 | de la Iglesia et al. | Mar 2010 | B2 |
7707550 | Resnick et al. | Apr 2010 | B2 |
7725460 | Seitz et al. | May 2010 | B2 |
7756850 | Keith, Jr. | Jul 2010 | B2 |
7761443 | Bhaghavan et al. | Jul 2010 | B2 |
7774333 | Colledge et al. | Aug 2010 | B2 |
7788085 | Brun et al. | Aug 2010 | B2 |
7792836 | Taswell | Sep 2010 | B2 |
7792851 | Berg et al. | Sep 2010 | B2 |
7797303 | Roulland et al. | Sep 2010 | B2 |
7801882 | Cunningham et al. | Sep 2010 | B2 |
8090735 | Bireley et al. | Jan 2012 | B2 |
8095823 | Griffith et al. | Jan 2012 | B2 |
20020016953 | Sollich | Feb 2002 | A1 |
20020059444 | Shinno | May 2002 | A1 |
20020156772 | Chau et al. | Oct 2002 | A1 |
20020178434 | Fox et al. | Nov 2002 | A1 |
20030004979 | Woodring | Jan 2003 | A1 |
20030041052 | Gajda et al. | Feb 2003 | A1 |
20030074358 | Sarbaz et al. | Apr 2003 | A1 |
20030172076 | Arnold et al. | Sep 2003 | A1 |
20030200212 | Benson et al. | Oct 2003 | A1 |
20030229885 | Gownder et al. | Dec 2003 | A1 |
20040003371 | Coulthard et al. | Jan 2004 | A1 |
20040044687 | Vachuska et al. | Mar 2004 | A1 |
20040064788 | Gownder et al. | Apr 2004 | A1 |
20040078470 | Baumeister et al. | Apr 2004 | A1 |
20040267690 | Bhogal et al. | Dec 2004 | A1 |
20050027702 | Jensen et al. | Feb 2005 | A1 |
20050091366 | Acharya | Apr 2005 | A1 |
20050114771 | Piehler et al. | May 2005 | A1 |
20050120014 | Deffler | Jun 2005 | A1 |
20050160104 | Meera et al. | Jul 2005 | A1 |
20050182758 | Seitz et al. | Aug 2005 | A1 |
20050210374 | Lander | Sep 2005 | A1 |
20050229154 | Hiew et al. | Oct 2005 | A1 |
20050256852 | McNall et al. | Nov 2005 | A1 |
20050256907 | Novik et al. | Nov 2005 | A1 |
20050262046 | Day et al. | Nov 2005 | A1 |
20050278270 | Carr et al. | Dec 2005 | A1 |
20060020619 | Netz et al. | Jan 2006 | A1 |
20060020933 | Pasumansky et al. | Jan 2006 | A1 |
20060041864 | Holloway et al. | Feb 2006 | A1 |
20060075120 | Smit | Apr 2006 | A1 |
20060085400 | Minore et al. | Apr 2006 | A1 |
20060112067 | Morris | May 2006 | A1 |
20060156286 | Morgan et al. | Jul 2006 | A1 |
20060179027 | Bechtel et al. | Aug 2006 | A1 |
20060236304 | Luo et al. | Oct 2006 | A1 |
20060242077 | Dettinger et al. | Oct 2006 | A1 |
20060248045 | Toledano et al. | Nov 2006 | A1 |
20060278270 | Jones | Dec 2006 | A1 |
20070011651 | Wagner | Jan 2007 | A1 |
20070044066 | Meijer et al. | Feb 2007 | A1 |
20070050348 | Aharoni et al. | Mar 2007 | A1 |
20080162445 | Ghazal | Jul 2008 | A1 |
20080172360 | Lim et al. | Jul 2008 | A1 |
20080189240 | Mullins et al. | Aug 2008 | A1 |
20080222129 | Komatsu et al. | Sep 2008 | A1 |
20080270343 | Brodsky et al. | Oct 2008 | A1 |
20080270983 | Ahadian et al. | Oct 2008 | A1 |
20080270989 | Ahadian et al. | Oct 2008 | A1 |
20080320013 | Bireley et al. | Dec 2008 | A1 |
20080320441 | Ahadian et al. | Dec 2008 | A1 |
Number | Date | Country |
---|---|---|
1251423 | Oct 2002 | EP |
1251423 | Oct 2002 | EP |
Entry |
---|
Robert A. Ballance et al., “The Pan Language-Based Editing System for Integrated Development Environments”, SIGSOFT'90 Proceedings of the Fourth ACM SIGSOFT Symposium on Software Development Environments, Dec. 3-5, 1990, pp. 77-93, vol. 15 No. 6, Irvine, California. |
Maarit Harsu et al., “A Language Implementation Framework in Java”, Object-Oriented Technology, ECOOP'97 Workshop Reader, Lecture Notes in Computer Science, Jun. 9-13, 1997, pp. 141-144, vol. 1357, Jyvaskyla, Finland. |
Azadeh Ahadian et al., “Extensible Rapid Application Development for Disparate Data Sources”, U.S. Appl. No. 11/767,497, filed Jun. 23, 2007. |
William R. Bireley et al., “Statement Generation Using Statement Patterns”, U.S. Appl. No. 11/767,454, filed Jun. 22, 2007. |
Charles Z. Mitchell, “Engineering VAX Ada for a Multi-Language Programming Environment”, ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments, 1987, pp. 49-58. |
Thomas C. Hartrum and Robert P. Graham, Jr., “The AFIT Wide Spectrum Object Modeling Environment: An Awsome Beginning”, Proceedings of the IEEE 2000 National Aerospace and Electronics Conference, pp. 35-42, Oct. 10-12, 2000. |
PCT International Search Report & Written Opinion for PCT/EP2008/053916, Dated Jan. 14, 2008. |
B. Kurnalawan, Safari Books Online, “Struts Design and Programming: A Tutorial,” Retrieved From http://proquest.safaribooksonline.com/0975212818?ocview=true. |
DB Solo: The Ultimate Database Tool, 26 Pages, Retrieved From http://dbsolo.com/. |
Azadeh Ahadian, “Understanding Purequery, Part 1: Purequery: IBM's New Paradigm for Writing Java Database Applications,” (Aug. 16, 2007). |
J. Liberty, “Safari Books Online,” Visual C#2005: A Developer's Notebook, Retreived From http://proquest.safaribooksonline.com/059600799X?tocview=true. |
“Eclipse Database Explorer—Database browser, SQL editor, ERD Specialized Oracle Connector, JDBC connection templates for all relational databases”, Eclipse Database Explorer Plugin :: MyEclipse, retrieved Aug. 22, 2012, <http://www.myeclipseide.com/htmlpages-func-display-pid-16.html>. |
Fitzpatrick, GP. et al.; “Source Code Critical Region Hyper-Data”; www.ip.com, 1993. |
Abramson, D. et al. “A Debugging and Testing Tool for Supporting Software Evolution”; Automated Software Engineering, 1996 (vol. 3, pp. 369-390). |
Brylow, D. et al.; “Deadline Analysis of Interrupt-driven Software”; Software Engineering Notes, 2003 (vol. 28, pp. 198-207). |
International Search Report and Written Opinion for PCT Patent Application Serial No. PCT/EP2008/053831 dated Aug. 5, 2008. |
Zhang et al., “Understanding Web Query Interfaces: Best-Effort Parsing with Hidden Syntax,” SIGMOD '04 Proceedings of the 2004 ACM SIGMOD International Conference on Management of Data, Jun. 2004: pp. 107-118. |
Cao et al., “Design and implementation for SQL parser based on ANTLR,” 2010 2nd International Conference on Computer Engineering and Technology (ICCET), Apr. 2010, vol. 4: pp. 276-279. |
Ghodke et al., “Fast Query for Large Treebanks,” HLT '10 Human Language Technologies: the 2010 Annual Conference of the North American Chapter of the Association of Computational Linguistics, Jun. 2010: pp. 267-275. |
Kats et al., “The Spoofax Language Workbench,” Spash '10 Proceedings of the ACM International Conference Companion on Object Oriented Programming Systems Languages and Applications Companion, 2010: pp. 444-463. |
Koch, “A Computational Semantic Approach Applied to Simple Database Queries,” IEEE 2003 International Conference on Natural Language Processing and Knowledge Engineering, Oct. 2003, pp. 388-393. |
Wu et al., “Integrating Diverse CIM Data Bases: The Role of Natural Language Interface,” IEEE Transactions on Systems, Man, and Cybernetics, Nov./Dec. 1992, vol. 22(6): pp. 1331-1347. |
Number | Date | Country | |
---|---|---|---|
20080270980 A1 | Oct 2008 | US |