Abstract:
A platform- and browser-independent project tracking tool is described for tracking projects of interest to a large number of organizations connected via a wide area network. This project tracking tool includes a database server for managing project information and data, and a graphical user interface server for interacting with users in the interested organization. The graphical user interfaces are created such that they can be accessed over the wide area network using web browsers.

Description:
CROSS REFERENCE TO APPENDIX INCLUDING A COMPUTER PROGRAM LISTING  
         [0001]    Appendix A, which is an integral part of the present disclosure, is an appendix including listings of computer programs and related data in one embodiment of this invention. These listings of computer programs contain material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the present disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.  
         BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    The present invention relates to an automatic project management tool. In particular, the present invention relates to an enterprise-wide browser- and platform-independent project management tool which can be accessed over a wide-area network in a non-procedural manner.  
           [0004]    2. Discussion of the Related Art  
           [0005]    In a large corporation, a development project typically involves a number of organizations with varied interests. For example, a software development project may involve one or more programming groups performing development tasks, a customer service group interested in monitoring the project&#39;s progress, and a marketing group interested in coordinating the project&#39;s progress with release and promotional activities. As these groups and their diverse environments may be located over a large geographical area, the costs of coordinating activities and communicating the relevant information among these groups can be very high.  
           [0006]    In recent years, many tools have been developed for resource-sharing on a wide area computer network. In particular, the development of the “World Wide Web” on the Internet led to the development of resource-providing tools (“web server”) and resource-accessing tools (“web browsers”). Typically, an information provider creates a web server with an address known throughout the network. Each web server oversees one or more resources, such as a hypertext file, that users on the wide area network can access using a web browser. A web browser is often a generic client program for communicating with web servers, using a standard protocol such as the “http”—the HyperText Transfer Protocol.  
           [0007]    In the state of the art, a web server is also often a generic server program making its resources available through such mechanisms as “CGI 1  scripts” and “applets.” A CGI script, which can be written in any programming language, is a platform-specific component that performs resource-specific applications. For example, a web browser can access a search engine by supplying the web server a list of search parameters and the name of the executable program. In this example, the name of the search program can be embedded in a hypertext file, or “web page”. By convention, the executable program is typically stored in a “cgi-bin” directory, and is invoked by the server with an expected list of parameter values.  
           [0008]    An applet is an encapsulated program segment which can be executed as a CGI script on the web server, as described above. Alternatively, an applet can also be designed to be transferred from the web server to the web browser to be run in the web browser&#39;s environment. One example of a programming language designed for applet applications is the Java programming language, designed and made available by Sun Microsystems, Inc. A Java applet is platform-independent and can be run on the web server or be downloaded from the web server to be run by a Java interpreter residing in the web browser. Thus, using CGI scripts and applets, resources can be shared among participants over a wide area network.  
           [0009]    The tools developed for the Internet are now applicable to be used in other wide area computer networks, including those private enterprise-wide computer networks popularly referred to as “intranets”. In such an environment, a tool for tracking development projects accessible by members of geographically diverse organizations are particularly valuable.  
         SUMMARY OF THE INVENTION  
         [0010]    The present invention provides an object-oriented, platform-independent data management tool, for an application such as project management, which can be accessed through a web browser capable of receiving applets from a web server. Such a project management tool is useful, for example, for enforcing an enterprise-wide uniform framework for building, acquiring, deploying and supporting software.  
           [0011]    In one embodiment, the project management tool includes (i) a database for holding the project data; (ii) a database server, having read and write access to the database, for receiving read and write access requests for the project database over the wide area data network; and (iii) a graphical user interface server providing graphical user interfaces, which interact with users via web browsers. In that embodiment, the project data base tracks geographically diverse projects. The graphical user interface server generates the graphical user interfaces using java applets.  
           [0012]    The present invention includes also the method of tracking projects over diverse geographical areas connected by a wide area data network. The steps in this method includes: (i) providing a project database for including therein data pertinent to the projects; (ii) providing a database server, having read and write access to the database, for receiving read and write access requests for the database over the wide area data network; and (iv) providing a graphical user interface server to generate graphical user interfaces which interact with users via web browsers.  
           [0013]    In one embodiment, the method of the present invention stores, for each project in the project database, a record indicating a scope of the project, and according to this scope, a number of documentation and review requirements to be met. The project database is updated as each of the documentation and review requirements is met. The status of the documentation and review requirements can be reported in text form.  
           [0014]    The present invention is better understood upon consideration of the detailed description below and the accompanying drawings. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0015]    [0015]FIG. 1 is a block diagram  100  in an embodiment of the present invention.  
         [0016]    [0016]FIG. 2 is a schematic diagram of the records of the SDRA database.  
         [0017]    [0017]FIG. 3 is a state diagram  300 , which illustrates the executable states of new_sybServer.  
         [0018]    [0018]FIG. 4 is the screen image of the web page generated by CGI script genSplash.sh.  
         [0019]    [0019]FIG. 5 is the screen image of the graphical user interface created by java applet sdra.  
         [0020]    [0020]FIG. 6 is a graphical image showing the SDRA process.  
         [0021]    [0021]FIG. 7 is a screen image of the pop-up window “Edit Existing Project”.  
         [0022]    [0022]FIG. 8 is a screen image of an example detailed report is shown in FIG. 8.  
         [0023]    [0023]FIG. 9 shows the screen image created by the applet sdra_pop_one.  
         [0024]    [0024]FIG. 10 shows the screen image created by the applet sdra_pop_two.  
         [0025]    [0025]FIG. 11 shows the screen image created by the applet sdra_pop_three.  
         [0026]    [0026]FIG. 12 shows the screen image created by the applet sdra_pop_four.  
         [0027]    [0027]FIG. 13 shows the screen image created by the applet sdra_pop_five.  
         [0028]    [0028]FIG. 14 shows the screen image created by the applet sdra_pop_six.  
         [0029]    [0029]FIG. 15 shows the screen image created by the applet sdra_pop_seven.  
         [0030]    [0030]FIG. 16 shows the screen image created by the applet sdra_pop_eight.  
         [0031]    [0031]FIG. 17 shows the screen image created by the applet sdra_criter. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0032]    The present invention provides a development project tracking tool accessible by a large number of users on a distributed network. One implementation of this development tracking tool is the “SDRA 2  Plus: Online Tool” (“SPOT”) of Sun Microsystems, Inc., Mountain View, Calif., which is the Assignee of the present application. FIG. 1 is a block diagram  100  of an embodiment of the present invention.  
         [0033]    As shown in FIG. 1, a database server  103  on a data network  104  provides access to a database of project information (the “SDRA database”) tracked by the project management tool of the present invention. In SPOT, access to the SDRA database is provided by an interface to a Sybase database system (the “Sybase Interface”), available from Sybase Corporation. An example of such an interface is one created by Mr. James Todd and can be obtained from Sun Microsystems, Inc. A database server  103 , interfaced to the Sybase Interface, accepts queries from a number of SPOT servers  102 - 1  to  102 - n . Queries are typically framed in a database query language, e.g. SQL. Sybase server  103  is described in further detail below. Of course, more than one Sybase server can be used to provide access to the SDRA database. In addition, the SDRA database can be duplicated at multiple nodes on the wide area network, so as to provide additional access efficiency and robustness.  
         [0034]    SPOT servers  102 - 1  to  102 - n , which are provided at various sites of data network  104 , are accessed by any of the industry standard client “web browsers”, such as the Netscape Navigator available from Netscape Corporation. In FIG. 1, web browsers are represented in FIG. 1 by client programs  101 - 1  to  101 - m.    
         [0035]    [0035]FIG. 2 is a schematic diagram of the SDRA database. As shown in FIG. 2, the SDRA database includes the following records: (i) “sdra_projects” ( 201 ), which are the records of the projects tracked by SPOT; (ii) “sdra_counter” ( 202 ), which is a non-decreasing counter used to provide a unique project identification code (“pid”) for each project; (iii) “sdra_status” ( 203 ), which maintains, for each project, a set of status flags for indicating accomplished milestones of the project; (iv) “sdra_prob” ( 204 ), “sdra_opportunity” ( 205 ), “sdra_exposure” ( 206 ), “sdra_depend” ( 207 ), “sdra_alternatives” ( 208 ), and “sdra_descript” ( 209 ), which maintain for each project a problem statement, a business opportunity statement risk exposure statement, a dependency statement, a statement of alternatives for problem solution, and a brief description of the project, respectively; (v) “sdra_diags” ( 210 ), which indicates whether diagrams of the project have been included; and (vi) “sdra_patent” ( 211 ), which indicates whether patent applications have been filed for the project. In FIG. 2, circle  212  represents the query processor of SDRA database, which interfaces with database server  103 .  
         [0036]    The “sdra_project” record includes the following fields: (i) “sp_pid”, for providing a project identification code; (ii) “sp_name”, for providing a project name; (iii) “sp_lead”, for providing the project leader&#39;s name; (iv) “sp_ba”, for providing the name of a business analyst for the project; (v) “sp_sponsor”, for providing a project sponsor&#39;s name; (vi) “sp_eco”, for providing a reference number; (vii) “sp_url”, for providing a URL address for the project; (viii) “sp_geo”, for indicating a geographical location for the project; (ix) “sp_level”, for indicating a size or scope of the project; (x) “sp_zone”, for indicating a DNS zone of the project; and (xi) “sp_date” for maintaining a date indicating the last modification date of the record.  
         [0037]    The “sdra_counter” record includes a single field “sc_idcounter” which is an integer that is incremented as each new project is created. The “sdra_status” record includes the fields: (i) “ss_pid”, which provides the “pid” of the project; (ii) “ss_half_pager”, which indicates whether a half-page information sheet for the project has been created; (iii) “ss_one_pager”, which indicates whether a one-page information sheet for the project has been created; (iv) “ss_prelim”, which indicates whether a preliminary specification has been created for the project; (v) “ss_functional”, which indicates whether a functional specification has been created for the project; (vi) “ss_technical”, which indicates whether a technical specification has been created for the project; (vii) “ss_proj_plan”, which indicates whether a project has been created; (viii) “ss_arc”, which indicates whether an architectural specification has been created for the project; (ix) “ss_acceptance”, which indicates whether or not project acceptance has been completed; and (x) “ss_post”, which indicates whether or not “post-acceptance” procedures have been completed.  
         [0038]    The “sdra_prob”, “sdra_opportunity”, “sdra_exposure”, “sdra_depend”, “sdra_alternatives”, and “sdra_dcscript” records each include a “pid” field and a “text” field. The “text” field includes the statement associated with each of the project records. The “sdra_diags” and “sdra_patent” records each include the following fields: (i) a “pid” field for providing a project identification code; (ii) a “flag” for field indicating whether one or more diagrams are available or whether one or more patent applications are filed; and (iii) a “text” field for attaching a text description of the diagrams or patent applications.  
         [0039]    The Sybase server includes an object of the class new_sybserver, which is an extension of the class Thread of the Java language. FIG. 3 is a state diagram  300 , which illustrates the executable states of new_sybServer. The code for new_sybserver is included in section “svr.jav” of Appendix A. As shown in FIG. 3, the new_sybserver object is created as a new thread at state  301 . At state  301 , a socket for the server is opened with a default socket number  4444 . The new_sybServer object creates via its run method a Connection object, which calls the Sybase Interface. The Connection object then listens for data access requests arriving at the socket. In this instance, database access requests originate from SPOT servers  102 - 1  to  102 - n . The constructor of the Connection object creates (i) an input stream and an output stream for communicating with the Sybase Interface; (ii) initializes an interface “syb” ( 310 ) to the SDRA database; and (iii) runs the Connection object as a separate thread from the new_sybServer object (state  303 ). In this embodiment, the Connection object handles six request types: (i) retrieve project name, serviced by method “getProjectInfo” ( 304 ), which retrieves project names from sdra_project records; (ii) retrieve project identification information, serviced by method “getPid” ( 306 ), which retrieves a list of “pids” of projects tracked by SPOT; (iii) generate a summary report, serviced by method “genSummaryRpt” ( 307 ), which retrieves Pids, project names, project leads and dates from the sdra_project records; (iv) retrieve project detailed information, serviced by method “getProjDet” ( 308 ), which retrieves project names, project leads, business analysts, project sponsors, urls, eco reference numbers and geographical areas; (v) retrieve status information, serviced by method “getStat” ( 309 ), which retrieves project status flags, i.e. the “ss_half_pager”, “ss_one_pager”, “ss_prelim”, “ss_functional”, “ss_technical”, “ss_proj_plan”, “ss_arc”, “ss_acceptance”, and “ss_post” flags. The Connection object retrieves the relevant information by passing the query to the Sybase Interface, which executes the SQL procedure get_db_info, shown in the listing “info.sql” in Appendix A.  
         [0040]    The SPOT server is implemented by a number of java applets including: sdra, sdra_pop_one, sdra_pop_two, sdra_pop_three, sdra_pop_four, sdra_pop_five, sdra_pop_six, sdra_pop_seven, sdra_pop_eight, sdra_rep_win, sdra_dial, sdra_edit and sdra_criter. Applet sdra implements the main graphical user interface (“sdra GUI”). Applets sdra_pop_one, sdra_pop_two, sdra pop_three, sdra_pop_four, sdra_pop_five, sdra_pop_six, sdra_pop_seven, sdra_pop_eight, sdra_dial, sdra_edit and sdra_criter implement, respectively, the “Problem Statement”, “Business Opportunity”, “Exposure”, “Dependencies”, “Alternatives”, “Description”, “Diagrams”, “Patents”, “SDRA Message”, “Edit Existing Project” and “Status Criteria” pages of the graphical user interface (GUI). Applets sdra_rep_win and sdra_rep_stage invokes a report generator for displaying in a window and a report generator for a hard copy device, respectively. Listings of the applets sdra, sdra_pop_one, sdra_pop_two, sdra_pop_three, sdra_pop_four, sdra_pop_five, sdra_pop_six, sdra_pop_seven, sdra_pop_eight, sdra_rep_win, sdra_dial, sdra_edit and sdra_criter are provided in Appendix A as sdra.java, sdra_pop_one.java, sdra_pop_two.java, sdra_pop_three.java, sdra_pop_four.java, sdra_pop_five.java, sdra_pop_six.java, sdra_pop_seven.java, sdra_pop_eight.java, sdra_rep win.java, sdra_dial.java, sdra_edit.java and sdra_criter.java respectively. The applets communicate through a conmonBuf object. Java applet commonBuf, which creates the shared commonBuf object is included in Appendix A as commonBuf.java.  
         [0041]    To access the SPOT server, a user points his/her web browser to the SPOT server&#39;s published web page. A listing of this web page in HTML format for this implementation is included in Appendix A as splash.html. Web page splash.html invokes a CGI script genSplash.sh which generates another hypertext file to the web browser. The screen image of this hypertext file is shown in FIG. 3. CGI script genSplash.sh accesses the SDRA database to retrieve a list of projects tracked by SPOT, using an SQL program segment included in CGI script genSplash.sh. As shown in FIG. 3, CGI script genSplash.sh lists each project by their project identification code (sp_id), and displays the name (sp_name), leader (sp_leader) and the URL of the project, if a web page exists for that project.  
         [0042]    CGI script genSplash.sh is also included in Appendix A. By clicking in the web page generated by genSplash.sh, the java applet sdra is invoked. Java applet sdra, as in the other applets, is written using a resource tool kit called SpecJava, which provides a GUI as a work space for laying out the user&#39;s GUI, and generates the user&#39;s GUI from the work space and user-supplied methods. The user-supplied methods are separately written java code placed in an input file for inclusion in the java applet. In SpecTcl, the GUI designer places in the work space “frames”, “checkboxes”, “labels”, “buttons”, “radio buttons”, “text boxes” and other familiar GUI objects. As these objects are placed, where appropriate, the user associates these objects with action methods for handling events. For example, as shown in the listing sdra.java of java applet sdra in Appendix A, the GUI designer assigns in method handleEvent an action method “getURL” with a radio button  18 , which is in the checkbox group “geo”, along with other radio buttons  19 - 22 . Radio buttons  18 - 22  are assigned labels “Global”, “US”, “EMEA”, “ALA”, “Japan”, respectively. The screen image of the GUI created by applet sdra is shown in FIG. 5. When radio button  18  is selected, a user-supplied method genURL is invoked. User-supplied method genURL (i) retrieves from the checkbox group geo the currently depressed radio button (i.e. radio button  18 ) within the checkbox group, (ii) returns the label associated with the currently depressed radio button, (iii) retrieves the name of the current project from a text box entry — 1 3 , (iv) creates a new URL address from the retrieved project and the label associated with radio button  18 , and (v) writes the newly created URL address into text box entry — 4, which is the text box next to button  9  (i.e. the button labelled “OPEN”).  
         [0043]    When applet sdra is invoked from CGI script sdra.sh, the main method in the sdra object is executed (i) to create a new frame (i.e. a new window), (ii) to create and initialize an sdra object, (iii) to place the sdra object thus created into the new frame, and (iv) to show the frame. In the process of creating and initializing the sdra object, instances of sdra_pop_one, sdra_pop_two, sdra_pop_three, sdra_pop_four, sdra_pop_five, sdra_pop_six, sdra_pop_seven, sdra_pop_eight, sdra_rep_win, sdra_dial, sdra_edit and sdra_criter are created and placed into a commonBuf object (“common buffer”), which is also created and initialized at this time. When the frame is shown, method handleEvent of the sdra object handles user manipulations upon the sdra GUI objects.  
         [0044]    As shown in FIG. 5, the user can edit any information in the text boxes of the sdra GUI and updates the project record in the SDRA database. Upon the user selecting the button labelled “submit”, method handleEvent calls method submitData, which sends to the Sybase server (i) a command submit_new_data to update project information (i.e., project name, project lead, reference number, business advisor, sponsor, the URL of the project, the level of the project, the sponsor status, the geographical zone location and the operational organization of the project), and (ii) a command “insert” to insert a “half-page” information statement, for each of eight categories (i.e. “Problem Statement”, “Opportunity”, “Exposure”, “Dependencies”, “Alternatives”, “Description”, “Diagrams” and “Patents) half-page statements. If any of the half-page information statement already exists, an additional command “delete” is sent to the Sybase server to delete the existing information statement. Command submit_new_data is a SQL script, which is included in Appendix A as submit_new_data.sql.  
         [0045]    The user can also select the button reset, which cause the method resetSdra to clear all text fields in the sdra GUI and the pop-up windows, and resets states of the radio buttons. If the user selects the “More Info” button, the method showInfo is called, which shows a graphical image providing further information about the SDRA process. This graphical image is shown in FIG. 6.  
         [0046]    The user can select any of the radio buttons in the “LEVEL OF PROJECT” group, the “GEO” group, the and the “HALF/ONE-PAGER INFORMATION” group. If a button in the “LEVEL OF PROJECT” group is selected, the corresponding one of the methods setMinorOpts, setMajorOpts, and setIntOpts is executed, and the appropriate radio buttons in the “STATUS” group are activated depending upon whether the project is a major opportunity, intermediate opportunity, or a minor opportunity. In general, each radio button in the STATUS group represents a documentation or review requirement, which may or may not be required for the project depending on whether the project is a major opportunity, intermediate opportunity, or a minor opportunity.  
         [0047]    If the user selects the “QUERY” button, the method popEdit is executed, which brings up a pop-up window “Edit Existing Project” to allow an editing existing project. The screen image of this pop-up window is shown in FIG. 7. Pop-up window “Edit Existing Project” is managed by the java applet sdra_edit. The user can choose from the list box in the “Edit Existing Project” window a project he/she wishes to edit. Upon selecting the “SELECT” button, the project the method showData is executed, which retrieves from the SDRA data base, through the Sybase server, the record of the project selected in the list box, using the method getDbInfo. Method getDbInfo executes a SQL script get_db_info, which is included in Appendix A as get_db_info.sql. The retrieved project information is shown in a sdra GUI. In the “Edit Existing Project” window, if the user selects the “REFRESH” button, the method loadEdit is executed, which retrieves from the SDRA database, through the Sybase server, the list of projects in the SDRA database. When the “DONE” button is selected, the user returns to the sdra GUI using the method exitEdit, which disposes of the sdra_edit object.  
         [0048]    In the sdra GUI, if the user selects any of the radio button in the “GEO” group, the geographical zone of the project is reselected, sdra calls the method genUrl which re-generates the URL in the “URL:” text field. If the user selects the “OPEN” button, the method linkToUrl is executed, which sets the web browser to the web page pointed to by the URL: text field. If the user selects the “SUMMARY REPORT” button, the method genReport is called, which executes a CGI script summaryRpt.sh to provide a summary report of the project. If the button “DETAILED REPORT” is selected, the method genDetail is executed, which executes a CGI script genRpt.sh to create a detailed report of the project. This detailed report is provided as a hypertext document. The web browser is then set to the URL of this detailed report for display. A screen image of an example detailed report is shown in FIG. 8.  
         [0049]    If the “CRITERIA” button is selected, the method showCrit is executed, which brings up a pop-up window including a text area for displaying textual information about the documentation and review requirements of a project in the SDRA database. When the user finishes reviewing the text, the user returns to the sdra GUI using the “OK” button.  
         [0050]    If any of the radio buttons in the “HALF/ONE-PAGER INFORMATION” group is selected, the corresponding one of applets sdra pop_one, sdra_pop_two, sdra_pop_three, sdra_pop_four, sdra_pop_five, sdra_pop_six, sdra_pop_seven, and sdra_pop_eight is executed. Each applet brings up a pop-up window including the buttons “NEXT”, “RESET”, “SUBMIT” and “DONE”. The screen images of sdra_pop_one, sdra_pop_two, sdra_pop_three, sdra_pop_four, sdra_pop_five, sdra_pop_six, sdra_pop_seven, and sdra_pop_eight are provided in FIGS.  9 - 16 , respectively. Each pop-up window also includes a text area for displaying half/one page text associated with the corresponding one of the categories “Problem Statement”, “Opportunity”, “Exposure”, “Dependencies”, “Alternatives”, “Description”, “Diagrams” and “Patents”.  
         [0051]    In each of the applets sdra_pop_one, sdra_pop_two, sdra_pop_three, sdra_pop_four, sdra_pop_five, sdra_pop_six, sdra_pop_seven, and sdra_pop_eight, selecting the “NEXT” button executes the next applet. For example, in applet sdra_pop_one, if the user selects the “NEXT” button, the applet sdra_pop_two is executed. If the “RESET” button is selected, the corresponding statement displayed in the text area is cleared. The text area can be edited. If the “SUBMIT” button is selected, the statement in the text window is written by method submitData to the commonBuf buffer. Changes to the SDRA database is made when the user selects the “SUBMIT” button in the sdra GUI. If the user selects the “DONE” button, the user is returned to the sdra GUI.  
         [0052]    The above detailed description are provided to illustrate the specific embodiments of the present invention and is not intended to be limiting. Numerous modifications and variations within the scope of the present invention are possible. The present invention is defined by the appended claims.