Patent Publication Number: US-6701517-B1

Title: Method for synchronizing JAVA with UML in a version configuration management system

Description:
CROSS REFERENCE TO RELATED PATENT APPLICATIONS 
     This application relates to the following co-pending application, assigned to the same assignee hereof, which is incorporated herein by reference. 
     {1114} U.S. Ser. No. 09/676,286, entitled A COMPUTER-IMPLEMENTED METHOD FOR REPRESENTING JAVA USING UML COMPLIANT TOOLS; 
     {1119} U.S. Ser. No. 09/676,288 entitled A COMPUTER-IMPLEMENTED METHOD FOR GENERATING JAVA FROM A UML REPRESENTATION; and, 
     {1120} U.S. Ser. No. 09/676,284, entitled A METHOD FOR SYNCHRONIZING UML WITH JAVA IN A VERSION CONFIGURATION MANAGEMENT SYSTEM 
    
    
     A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. 
     FIELD OF THE INVENTION 
     The present invention generally relates to computer-implemented processes and in particular to a process that synchronizes JAVA with UML in a version configuration management system. 
     BACKGROUND OF THE INVENTION 
     A problem arises when using the method disclosed in the above-referenced co-pending patent application, which allows for the translation and generation of JAVA files into UML, and vice-versa. JAVA is a programming language, which was developed by Sun Microsystems, Inc. of Mountain View, Calif. 
     When JAVA files are translated to form XMI representations of UML at the class, package, and project levels, the user must deal with multiple file representations of the same object. For instance, a project containing five packages, where each package contains five class files adds to a total of thirty-one files (one project, five package, and twenty-five class files). 
     As JAVA files generate UML representations, and UML Models are transformed into JAVA files, there is a need to synchronize all of the associations between the files. 
     Traceability for application assembly is another problem to be solved. Application assembly allows various projects to share assets with one another. Hence, the ability to track down how projects share files with one another is critical. 
     SUMMARY OF THE INVENTION 
     The product addresses this need by using versioning. First, the product implements the Unisys Version and Configuration System (VCS) to version both JAVA code and XMI. 
     Next, the product implements a JAVA parser/generator and XMI parser/generator to provide forward and reverse engineering between JAVA code and XMI. 
     The product then associates JAVA code and XMI at the class, package, and project levels using VCS. A soft-link association is created between each JAVA and UML file pair. 
     In order to support tracing for application assembly, link associations are also created between various projects. These links are used for versioning and allow for traceability between the projects. 
     A feature of the present invention resides in the ability to perform round trip engineering between UML and JAVA. 
     Another feature of the present invention resides in the ability to synchronize JAVA and UML with finer granularity, by creating links between JAVA files and UML objects at the class, package, and project levels. 
     Still another feature of the present invention resides in traceability between projects. 
     An advantage of the present invention is the use of versioning to provide traceability. 
     These and other objects, which will become apparent as the invention is described in detail below, are provided by a computer-implemented method for synchronizing JAVA with UML in a computer system executing a repository program. The method comprises the steps of determining if a previous revision of JAVA source exist, and if not; creating a new revision of the JAVA source. Next, the new revision is put in a “created” state and the new JAVA source is stored in the new revision. After this, the new revision is put in a “ready” state. A determination is next made if a previous revision of UML representation exist, and if not; a new revision of the UML representation is created. 
     The new revision of the UML is then put in a “created” state; and, a UML representation of the JAVA source is created. 
    
    
     Still other objects, features and advantages of the present invention will become readily apparent to those skilled in the art from the following detailed description, wherein is shown and described only the preferred embodiment of the invention, simply by way of illustration of the best mode contemplated of carrying out the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various obvious respects, all without departing from the invention. Accordingly, the drawings and description are to be regarded as illustrative in nature, and not as restrictive, and what is intended to be protected by Letters Patent is set forth in the appended claims. The present invention will become apparent when taken in conjunction with the following description and attached drawings, wherein like characters indicate like parts, and which drawings form a part of this application. 
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a system that may execute the method of the present invention. 
     FIG. 2 is a diagram illustrating the links made between JAVA and UML by the method of the present invention. 
     FIG. 3 is a diagram illustrating the internal relationships between the JAVA objects and the UML diagrams 
     FIGS. 4A and 4B combined form a flow chart of the process for synchronizing JAVA to UML in accordance with the present invention. 
    
    
     DETAILED DESCRIPTION OF ONE EMBODIMENT 
     Referring now to the drawings and FIG. 1 in particular, a block diagram of a system that may implement the process of the present invention is shown. Either a single computer  10  or a combination of the computer  10  and a server  11 , which is shown coupled to the computer  10  by means of a TCP/IP or proprietary protocol  12 , would be satisfactory for executing the process of the present invention. In the illustrated embodiment shown in FIG. 1, the computer  10  would typically be executing a variety of software  13 , including Rational Rose, Unisys Integrated Component Framework (ICF) and JAVA development software. The server  11  in the illustrated embodiment is a server, which is capable of executing the NT operating system available from Microsoft Corporation of Redmond, Wash. The server  11  also executes a variety of software programs  14 , including ICF, which is a framework that integrates third-party tools to provide full life-cycle model to deployment operation and management of components and a repository program  14 A. 
     The repository  14 A further includes tools for cataloging, browsing, and managing components that make up an application. Methods to support these services are disclosed in several patents and patent applications assigned to the assignee of this application, including U.S. Pat. No. 5,671,398 for METHOD FOR COLLAPSING A VERSION TREE WHICH DEPICTS A HISTORY OF SYSTEM DATA AND PROCESSES FOR AN ENTERPRISE; U.S. Pat. No. 5,644,764 for METHOD FOR SUPPORTING OBJECT MODELING IN A REPOSITORY; U.S. Pat. No. 5,581,755 for METHOD FOR MAINTAINING A HISTORY OF SYSTEM DATA AND PROCESSES FOR AN ENTERPRISE; U.S. Pat. No. 5,557,793 for IN AN OBJECT ORIENTED REPOSITORY, A METHOD FOR TREATING A GROUP OF OBJECTS AS A SINGLE OBJECT DURING EXECUTION OF AN OPERATION; U. S. Pat. No. 5,889,992 for A METHOD FOR MAPPING TYPES IN A MODEL IN AN OBJECT-ORIENTED REPOSITORY TO LANGUAGE CONSTRUCTS FOR A C BINDING FOR THE REPOSITORY; U.S. Pat. No. 5,721,925, for METHOD FOR GENERICALLY INVOKING OPERATIONS IN AN OBJECT ORIENTED REPOSITORY; U.S. Pat. No. 5,848,273 for A METHOD FOR GENERATING OLE AUTOMATION AND IDL INTERFACES FROM METADATA INFORMATION; U.S. Pat. No. 5,765,039 for A METHOD FOR PROVIDING OBJECT DATABASE INDEPENDENCE IN A PROGRAM WRITTEN USING THE C++PROGRAMMING LANGUAGE; U.S. Pat. No. 5,758,348, for A METHOD FOR GENERICALLY MANIPULATING PROPERTIES OF OBJECTS IN AN OBJECT ORIENTED REPOSITORY; U.S. Pat. No. 5,701,472, for A METHOD FOR LOCATING A VERSIONED OBJECT WITHIN A VERSION TREE DEPICTING A HISTORY OF SYSTEM DATA AND PROCESSES FOR AN ENTERPRISE; and U.S. Pat. No. 6,105,073, for A METHOD FOR PACKING/UNPACKING C OPERATIONS TO/FROM RPC COMPATIBLE FORMAT USING THE RPC PROTOCOL TO OPERATE REMOTELY WITH AN OBJECT-ORIENTED REPOSITORY, each of which are hereby incorporated by reference as if set forth in full herein. 
     The XMI protocol is further described in co-pending applications Ser. No. 09/282,345, filed Mar. 31, 1999, for A METHOD AND SYSTEM FOR GENERATING A SIMPLE DOCUMENT TYPE DEFINITION FOR DATA INTERCHANGE AMONG SOFTWARE TOOLS; Ser. No. 09/282,102, filed Mar. 31, 1999, for A METHOD AND SYSTEM FOR GENERATING A COMPACT DOCUMENT TYPE DEFINITION FOR DATA INTERCHANGE AMONG SOFTWARE TOOLS; Ser. No. 09/282,230, filed Mar. 31, 1999 for A METHOD AND SYSTEM FOR GENERATING A HIERARCHIAL DOCUMENT TYPE DEFINITION FOR DATA INTERCHANGE AMONG SOFTWARE TOOLS; Ser. No. 09/345,289, filed Jun. 30, 1999, for A METADATA DRIVEN SYSTEM AND METHOD FOR EFFECTING DATA INTERCHANGE AMONG SOFTWARE TOOLS IN A DISTRIBUTED ENVIRONMENT; Ser. No. 09/345,290, filed Jun. 30, 1999, for METHOD FOR IDENTIFYING UML OBJECTS IN A REPOSITORY WITH OBJECTS IN XML CONTENT; Ser. No. 09/322,137, filed May 28, 1999, for A SYSTEM AND METHOD FOR CONVERTING FROM ONE MODELING LANGUAGE TO ANOTHER; Ser. No. 09/345,291, filed Jun. 30, 1999, for A METHOD FOR VERSIONING A UML MODEL IN A REPOSITORY IN ACCORDANCE WITH AN UPDATED XML REPRESENTATION OF THE UML MODEL. 
     Referring now to FIG. 2, a diagram illustrating the traceability feature obtained by using the method of the present invention is shown. A first JAVA development environment  18  is shown containing only two exemplary files  19  and  20 . In the illustrated example file  19 , which is a UML representation J1.XML, is linked by means of a Link  21 , which link is established by use of the method of the present invention, to the file  20 , which is a JAVA representation J1.JAVA. In a second JAVA development environment  22 , a UML file  23  (J2.XML) is linked to a JAVA file  24  (J2.JAVA) by means of a link  25 ; and, in a similar manner, a UML file  26  (J3.XML) is linked to a JAVA file  27  (J3.JAVA) by means of a link  28 . It is pointed out that the JAVA development environment  18  may be run on one PC coupled to the server  11  in the same manner as PC  10  (FIG. 1) and the JAVA development environment  22  may be run at the same time on a separate PC, also coupled to the server  11  in a similar manner. 
     It is important to establish the links between the UML objects and the JAVA files, which is performed by the method of the present invention, in order to synchronize UML and JAVA and to allow traceability. During the life cycle of development of a model to the final deployment, it is desirable for a developer to have the capability to trace the history of a model. This is accomplished by synchronizing between each stage of the life cycle of development. For example, from the model to code generation, a synchronization is established. Next, from the code generation to publication a similar synchronization is established. And, between the publication and deployment another synchronization is established. By doing this, then a developer may trace from the deployment stage all the way back to the model stage and vice versa. 
     Referring now to FIG. 3, a diagram illustrating the internal relationships between the JAVA objects (e.g., object  30 ) and the UML diagrams is shown. A JAVA code version  1  of a class A (reference number  30 ) is moved through the server  11  and converted by the method of the present invention to a UML representation, version diamonds  37  or  38  is no, then the process ends (bubble  40 ). 
     If the answer to the inquiry depicted by the diamond  36  is no, then a new revision of the JAVA source is created (block  41 ). Next, the new revision is put in a “created” state (block  42 ). Upon completion of this previous step or the step depicted by the block  39 , then the new JAVA source is stored in a new revision (block  43 ) and this new revision is put in a “ready” state (block  44 ). The process illustration continues in FIG. 4B as depicted by a bubble A. 
     With reference to FIG. 4B at the connector A, an inquiry is made as to whether or not a previous revision of UML representation exists (diamond  45 ). If the answer to this inquiry is yes, then another inquiry is made as to whether or not the previous revision is in a “ready” state (diamond  46 ). If the answer to this inquiry is no, then the process ends (bubble  47 ). On the other hand, if the answer to this inquiry is yes, then the previous revision of UML representation is put in a “pending” sate (block  47 ). 
     If the answer to the inquiry depicted by the diamond  45  is no, then a new revision of UML representation is created (block  48 ). Next, this new revision is put in a “created” state (block  49 ). Upon completion of either the step depicted by the block  47  or the block  49 , a UML representation of the JAVA source is created (block  50 ). Next, unique ID&#39;s are stored for the new revision and UML revision in UML representation  1  (reference number  31 ). Details of this process flow are shown in FIG.  4  and described further hereinafter. 
     In a similar manner, a second version of the JAVA code class A (reference number  32 ) is converted by the method of the present invention operating in the server  11  to a UML representation  33 , which is still version  2  of the class A. 
     In this example, JAVA code class A is revised from version  1  (reference number  30 ) to version  2  (reference number  32 ). The second version of the JAVA code class A (reference  32 ) contains the additional class member INT Y. Because a difference in the JAVA source code exists, a new UML representation  33  is created by the present invention, thus synchronizing associations between JAVA and UML. This process is further detailed in FIG.  4 . 
     Referring now to FIGS. 4A and 4B wherein a flow chart of the process to synchronize JAVA to UML is shown. The process begins with a start bubble  35  followed by an inquiry as to whether or not a previous revision of the JAVA source exist (diamond  36 ). If the answer to this inquiry is yes, then another inquiry is made as to whether or not the JAVA source is different than the previous revision (bubble  37 ). If the answer to this inquiry is yes, then yet another inquiry is made as to whether or not the prevision revision is in “ready” state (diamond  38 ). If the answer to this inquiry is yes, then the previous revision is put in a pending state (block  39 ). If the answer to either inquiry depicted by the (block  51 ). After this, the new UML representation is stored in the new revision (block  52 ) and the new revision is put in a “ready” state (block  53 ) and the process ends (bubble  54 ). 
     The methods and apparatus of the present invention, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMS, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. The methods and apparatus of the present invention may also be embodied in the form of program code that is transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via any other form of transmission, wherein, when the program code is received and loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. When implemented on a general purpose processor, the program code combines with the processor to provide a unique apparatus that operates analogously to specific logic circuits. 
     Although the invention has been described with reference to a specific embodiment, this description is not meant to be construed in a limiting sense. Various modifications of the disclosed embodiment as well as alternative embodiments of the invention will become apparent to one skilled in the art upon reference to the description of the invention. It is therefore contemplated that the appended claims will cover any such modifications of embodiments that fall within the true scope of the invention.