The goal of our research is to enable programmers to automatically generate most of the code and deployment descriptors for simple and/or prototype J2EE applications. These files are embedded within a development environment, such as WebSphere or Rational Studio. There, the user can complete the application by performing a few simple "clean-up" steps and then test and debug it.
The J2EE system is generated from two XML files that describe 1) the application's semantic requirements -- the user types, data objects, and their interactions -- and 2) a layered implementation that can meet the application's functional and performance requirements -- e.g., an HTTP container, PhP, and a DBMS solution; a Web container solution with Java MVC layers and JDBC connection to DBMS; and a full Application Server solution including both Web and EJB containers. Both XML files are produced by tools within a project management system developed by our project. Application code and project structures are generated from plugins that we have developed for WebSphere Studio 5.2.1 and for Rational Application Developer 7.5. Using our resources, programmers should be able to develop prototype implementations that might normally take days or weeks in a matter of hours.
We are also extending our work theoretically. First, we are developing an algebra to formally describe applications. This algebra includes the following operators: addition, subtraction, multiplication, and division. Thus, it approximates a mathematical field. These resources will allow us to reason about compositions in a rigorous way. Second, we are implementing this notion of composition, including both definitions and compositional operators, with respect to our application and implementation XML schema. To do this, we are developing a concept of application patterns that can be applied to arbitrary applications to extend their function. Since our tools can generate a J2EE implementation from the (extended) application description, this will give us very light-weight "libraries" of J2EE functional components. To test our ideas and approach, we will try to define application patterns that correspond to well-known design patterns from the literature. Third, we are extending our project management tools to include a composition development component.
Thus, we are attempting to integrate theory and formality, with requirements and design patterns, with tools and implementation, to produce running systems.