Abstract:
Enables a computer-assisted management of enterprise-network files of interest, and trouble-free migration of enterprise-wide business data and processes currently built and maintained in two popular tools, spreadsheets (commonly MICROSOFT® EXCEL®) and desktop/departmental databases (commonly MICROSOFT® ACCESS®). Includes:
       File-system repository that lists each file of interest and describes in detail design and intent information for each spreadsheet and desktop/departmental database;   Utilities that keep the file-system repository complete and up to date;   Simplified Enterprise Application Repository (SEAR) configured to store descriptions of simple “enterprise” applications;   Repository Application that manage both the file-system repository and SEAR;   Utilities that read enterprise database meta-data (such as table definitions) and store them in SEAR;   Utilities that analyze spreadsheets and desktop/departmental databases in the file repository and restate them as simple “enterprise” applications in SEAR;   Utilities that generate well-documented and well-programmed enterprise relational databases and applications from simple “enterprise” applications descriptions in SEAR.

Description:
[0001]    This application claims the benefit of U.S. Provisional Patent Application 61/101,141 filed 29 Sep. 2008, the specification of which is hereby incorporated herein by reference. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    One or more embodiments of the invention are related to the field of computer systems. More particularly, but not by way of limitation, one or more embodiments of the invention enable a system and method for management of common decentralized applications data and logic. 
         [0004]    2. Description of the Related Art 
         [0005]    There is currently no known system or method for computer-assisted management of common decentralized applications data and logic, for example enterprise-network files of interest which contain enterprise-wide business data, but which are housed in individual files spread across an organization. 
         [0006]    Specifically, enterprise-wide business data and processes are currently built and maintained in two popular tools, spreadsheets, most commonly MICROSOFT® EXCEL®), and desktop/departmental databases, most commonly MICROSOFT® ACCESS®. Files of these types litter business organization personal computers and yet should be coordinated to provide data integrity and centralized knowledge. This dispersed information topology limits the usefulness of the data. 
         [0007]    Enterprise Chief Information Officers (CIOs) and other IT-department managers often are held responsible for knowing how many files exist of certain file types (for example, MP3s and proprietary-software executables). This is a difficult job at best as the files could be in thousands of directories spread across thousands of personal computers in a large organization. 
         [0008]    In addition, both spreadsheets, such as MICROSOFT® EXCEL® and desktop/departmental databases such as MICROSOFT® ACCESS® offer daunting challenges to most enterprises&#39; CIOs or IT departments, as they are usually: 
         [0009]    Difficult to inventory and understand—Most spreadsheets and desktop/departmental databases are designed, built, and maintained by business (i.e., non-Information Technology) departments, with no IT involvement or guidance. Thus, most CIOs or IT managers cannot answer with any confidence any question about the number or purpose of the spreadsheets and desktop/departmental databases—even though these usually comprise a substantive percentage of overall enterprise “information.” 
         [0010]    Very difficult to migrate into enterprise applications—After business departments develop and use spreadsheets and desktop/departmental databases, business department management occasionally finds inherent spreadsheet and desktop/departmental database limitations (primarily to do with single-user limits or lack of integration with other enterprise databases) to be a problem, and ask their CIO or IT manager to “upgrade” it to support multiple users and, where appropriate, integrate it with other enterprise applications and data. This is often a troublesome request for a CIO or IT manager to receive, as most CIO&#39;s resources are stretched thin and the effort of migrating either a spreadsheet or desktop/departmental database to fit it into enterprise database and architectural standards (such application-development technology stacks such as .NET/SQL Server or J2EE/Oracle) often significantly exceeds the cost of designing and building the original spreadsheet or desktop/departmental database. 
         [0011]    For at least the limitations described above there is a need for a system and method for management of common decentralized applications data and logic. 
       BRIEF SUMMARY OF THE INVENTION 
       [0012]    One or more embodiments of the invention enable a new system and method for management of common decentralized applications data and logic. Specifically, embodiments of the invention enable a computer-assisted management of enterprise-network files of interest, and trouble-free migration of enterprise-wide business data and processes currently built and maintained in two popular tools, spreadsheets (most commonly MICROSOFT® EXCEL®) and desktop/departmental databases (most commonly MICROSOFT® ACCESS®). 
         [0013]    Embodiments of the invention solve the problems outlined in the description of the related art by a system and method that includes: 
         [0014]    A file-system repository that lists each file of interest and in addition describes in detail design and intent information for each spreadsheet and desktop/departmental database. 
         [0015]    Utilities that keep the file-system repository complete and up to date. 
         [0016]    A Simplified Enterprise Application Repository (SEAR), (also referred to herein as the Simplified Enterprise Application Meta-Model) configured to store descriptions of simple “enterprise” applications. 
         [0017]    A Repository Application that manage both the file-system repository and the SEAR. 
         [0018]    Utilities that read enterprise database meta-data (such as table definitions) and store them into the SEAR. 
         [0019]    Utilities that analyze spreadsheets and desktop/departmental databases, or files of any other type, for example as associated with given file-type extensions, in the file repository and restate them as simple “enterprise” applications in the SEAR. Other file types include MP3&#39;s, or files of any other extension. 
         [0020]    Utilities that generate well-documented and well-programmed enterprise relational databases and applications from simple “enterprise” applications descriptions in the SEAR. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0021]    The above and other aspects, features and advantages of the invention will be more apparent from the following more particular description thereof, presented in conjunction with the following drawings wherein: 
           [0022]      FIG. 1  illustrates the architecture of the system. 
           [0023]      FIG. 2  illustrates logic flow for the Crawler utility. 
           [0024]      FIG. 3  illustrates logic flow for the Spreadsheet Analyzer utility. 
           [0025]      FIG. 4  illustrates logic flow for the Desktop/Departmental Database Analyzer utility. 
           [0026]      FIGS. 5A-5G  illustrate comprehensive repository groups, tables, and key-table column designs (split into seven figures). 
           [0027]      FIG. 6  illustrates a sample screen for the Repository Application. 
           [0028]      FIG. 7  illustrates a sample e-mail generated by the Spreadsheet Analyzer utility. 
           [0029]      FIG. 8  illustrates logic flow for the Database Synthesis utility. 
           [0030]      FIG. 9  illustrates logic flow for the Enterprise Database Upload utility. 
           [0031]      FIG. 10  illustrates logic flow for the Spreadsheet Synthesis utility. 
           [0032]      FIG. 11  illustrates an example of the Spreadsheet Synthesis utility “synthesizing” a sample spreadsheet. 
           [0033]      FIG. 12  illustrates Sample Enterprise Simplified Enterprise Application Meta-Model content before and after running the Enterprise Database Upload utility. 
           [0034]      FIG. 13  illustrates logic flow for the Enterprise Applications Generator utility. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0035]    A system and method for management of common decentralized applications data and logic will now be described. In the following exemplary description numerous specific details are set forth in order to provide a more thorough understanding of embodiments of the invention. It will be apparent, however, to an artisan of ordinary skill that the present invention may be practiced without incorporating all aspects of the specific details described herein. In other instances, specific features, quantities, or measurements well known to those of ordinary skill in the art have not been described in detail so as not to obscure the invention. Readers should note that although examples of the invention are set forth herein, the claims, and the full scope of any equivalents, are what define the metes and bounds of the invention. 
         [0036]      FIG. 1  illustrates the architecture of the system which includes: 
         [0037]    Enterprise Network ( 100 ) that contains computers, e.g., mainframes ( 101 ), servers ( 102 ), desktops ( 103 ), laptops ( 104 ), and other file-containing computers ( 105 ), with various files of interest including spreadsheets and desktop/departmental databases, wherein the computers record basic file information such as date-time last modified, size, et cetera in the file-system repository ( 121 ). 
         [0038]    “Crawler” ( 110 ) utility periodically searches network directories and files for new, changed, or deleted/erased files of interest including, but not limited to, spreadsheets and desktop/departmental database files. Crawler ( 110 ) passes new, changed, or erased spreadsheets to Spreadsheet Analyzer ( 112 ) utility, which reads spreadsheet semantic details (such as worksheets, cell definitions, macros, et cetera), and stores changes into Spreadsheet Meta-Model ( 122 ) database (part of Comprehensive Repository ( 120 ) relational database). If the spreadsheet file is new, Crawler  110  sends e-mail ( 116 ) to the best-guess file owner asking for more information about the new spreadsheet/file&#39;s purpose, history, et cetera. 
         [0039]    The Crawler ( 110 ) utility passes new, changed, or erased desktop/departmental databases and optionally their database data to Database Analyzer ( 114 ) utility, which reads desktop/departmental database semantic details (such as tables, queries, forms, reports, et cetera), stores changes into Database Meta-Model ( 123 ) database (which also is part of Comprehensive Repository ( 120 ) relational database), and if the desktop/departmental database file is new, sends e-mail ( 116 ) to the best-guess file owner asking for more information about the new database/file&#39;s purpose, history, et cetera. 
         [0040]    A Repository Application ( 130 ) is used by the CIO and other authorized IT staff to manage the run frequency and network reach of the Crawler ( 110 ) utility; to read, analyze, report on, and add value to (“annotate”) information in the file-system repository ( 121 ), Spreadsheet Meta-Model ( 122 ) the Database Meta-Model ( 123 ), the Enterprise/Reference Model ( 124 ), and the Enterprise Simplified Enterprise Application Meta-Model ( 125 ) database. 
         [0041]    When an end-user opens an e-mail ( 116 ) generated by either the Spreadsheet Analyzer utility ( 112 ) or the Database Analyzer utility ( 114 ), the end-user clicks a link in the e-mail&#39;s body to add purpose and other “annotation” information, forward the request to another person who is the file&#39;s owner, or claim the file is private. In each case, clicking the link automatically invokes the Repository Application ( 130 ) for a purpose-specific on-line transaction to do the action requested. 
         [0042]    An Enterprise Database Upload ( 150 ) utility periodically searches the Enterprise Development Database ( 172 ) structure (part of the Centrally Managed Enterprise Architecture ( 170 )) for created, modified, or dropped tables and other relational-database objects, and stores changes into a Simplified Enterprise Simplified Enterprise Application Meta-Model ( 125 ) database, which also is part of the Comprehensive Repository ( 120 ) relational database. 
         [0043]    A Spreadsheet Synthesis ( 140 ) utility reads the Spreadsheet Meta-Model ( 122 ) database, determines (helped by Repository-Application ( 130 ) “annotations” as necessary) each spreadsheet&#39;s equivalent applications semantic (or meaning), and saves or updates that meaning (as an enhanced spreadsheet “applications” definition) in the Simplified Enterprise Simplified Enterprise Application Meta-Model ( 125 ) database. Where appropriate, the enhanced spreadsheet “application” definition reflects if it maintains its own data or, also, already existing enterprise data (i.e., that which has been analyzed and stored by the Enterprise Database Upload ( 150 ) utility). 
         [0044]    A Database Synthesis ( 142 ) utility reads the Database Meta-Model ( 123 ) database, determines (helped by Repository-Application ( 130 ) “annotations” as necessary) each desktop/departmental database&#39;s equivalent applications semantic (or meaning), and saves or updates that meaning (as an enhanced desktop/departmental database “applications” definition) in the Simplified Enterprise Simplified Enterprise Application Meta-Model ( 125 ) database. Where appropriate, the enhanced desktop/departmental database “application” definition reflects if it maintains its own data or, also, already existing enterprise data (i.e., that which has been analyzed and stored by the Enterprise Database Upload ( 150 ) utility). 
         [0045]    An Enterprise Applications Generator ( 160 ) utility reads the Simplified Enterprise Simplified Enterprise Application Meta-Model ( 125 ) database (including “annotations” where applicable) and generates RDBMS (Relational Database Management System) DDL (Data-Definition Language, used to create, alter, and drop tables, et cetera) and DML (Data-Manipulation Language, used to insert, modify, and erase applications data), in the enterprise&#39;s preferred RDBMS environment (such as Oracle or SQL Server) to extend the Enterprise Database ( 172 ). The Enterprise Applications Generator ( 160 ) utility also generates well-documented applications logic (“code”), compiles that code, and deploys appropriate applications modules into the enterprise&#39;s Applications Logic Files ( 174 ) and Development Applications Tools ( 176 ) (both part of the Centrally Managed Enterprise Architecture ( 170 )) in the enterprise&#39;s preferred applications technology (such as .NET and J2EE). 
         [0046]    The Repository Application ( 130 ) also is used by the CIO, file owners, line-of-business managers, and other authorized staff to read, analyze, report on, and add value to (“annotate”) information in the Simplified Enterprise Simplified Enterprise Application Meta-Model ( 125 ) database, and on demand to run the Spreadsheet Synthesis ( 140 ) utility, the Database Synthesis ( 142 ) utility, the Enterprise Database Upload ( 150 ) utility, and the Enterprise Applications Generator ( 160 ) utility. Crawler  110 , spreadsheet analyzer  112 , database analyzer  114 , spreadsheet synthesis utility  140 , database synthesis utility  142 , Enterprise database upload utility  150 , enterprise application generator  160 , repository application  130 , development application tools  176  can run on any computer  101 ,  102 ,  103 ,  104  and/or  105  in Enterprise Network  100 , or in any other computer that can couple with Enterprise Network  100  as long as the computer is configured with enough memory and with sufficient processing power and network bandwidth to run these computational entities. In one or more embodiments of the invention, these computational entities may run on a plurality of computers selected from Enterprise Network  100 , or from a plurality of computers that may be coupled with Enterprise Network  100 , or any combination thereof. In addition, all of the databases or data storage elements shown in  FIG. 1  including the file system repository  121 , enterprise data model  124 , spreadsheet meta model  122 , database meta model  123 , Simplified Enterprise Application Meta-Model  125 , Enterprise Development database  172 , and Enterprise Application Files  174  may be implemented with any memory element capable of storing and retrieving information, including but not limited to a file system or database or any other element so configured. One skilled in the art will recognize that memory storage elements that host these elements may be coupled with any computer in Enterprise Network  100 , or coupled with any computer that may itself be coupled with Enterprise Network  100  for example. 
         [0047]      FIG. 2  illustrates the logic flow of the Crawler utility: 
         [0048]    An Enterprise Network ( 100 ) contains computers with various files of interesting including spreadsheets and desktop/departmental databases, also see  FIG. 1  for more detail. 
         [0049]    The Crawler utility initiation module ( 200 ) reads from the file-system repository ( 121 ) the list of file extensions (such as .xls, .xlsx, et cetera) to find databases and spreadsheets of interest associated with these file extensions. 
         [0050]    The Crawler utility scope module ( 202 ) reads from the file-system repository ( 121 ) the list of domains, servers, disks, and directories (and their current known owners) to search and the list of already known files of interest with their previously found last-modify dates and times, sizes, checksums (CRCs), et cetera. 
         [0051]    The Crawler utility initial-match module ( 204 ) verifies continued existence of each to-be-searched domain, server, and disk ( 100 ), and flags in the file-system repository ( 121 ) any it cannot find or search. 
         [0052]    The Crawler utility directory-search module ( 206 ) finds all directories and sub-directories in in-scope domains, servers, and disks ( 100 ); compares it to previously found directories and sub-directories; adds new directory and subdirectory records to the file-system repository ( 121 ) (inheriting owner from parent directories, disks, et cetera); and marks in the file-system repository ( 121 ), as no longer there, any missing (but expected) directories and sub-directories. 
         [0053]    The Crawler utility file-search module ( 208 ) finds all files of interest in found directories and sub-directories ( 100 ); compares each to previously found directories files (including last-modify date and time, size, CRC, et cetera); adds new file records to the file-system repository ( 121 ) (inheriting owner from parent directory, disk, et cetera); updates the file-system repository ( 121 ) where last-modify date and time, size, or CRC do not match, and marks in the file-system repository ( 121 ), as no longer there, any missing (but expected) files of interest. If a file of interest is new or changed and is either a spreadsheet or desktop/departmental database, the file-search module ( 208 ) reads its content into memory for passing to the next step ( 210 ). 
         [0054]    If a new or changed file is a spreadsheet, the Crawler utility spreadsheet-file match module ( 210 ) passes it to the Spreadsheet Analyzer ( 112 ) utility (see  FIG. 3  for details). 
         [0055]    If a new or changed file is a desktop/departmental database, the Crawler utility database-file match module ( 214 ) passes it to the Database Analyzer ( 114 ) utility (see  FIG. 3  for details). 
         [0056]    The Crawler utility completion module ( 218 ) updates the file-system repository ( 121 ) with a record of its successful completion. 
         [0057]      FIG. 3  illustrates the logic flow of the Spreadsheet Analyzer utility: 
         [0058]    An Enterprise Network ( 100 ) contains computers with various files of interest including spreadsheets. 
         [0059]    The “Crawler” ( 110 ) utility periodically searches network directories and files for new, changed, or erased files of interest (in this case spreadsheets), and for new or changed spreadsheets (see  FIG. 2 ) calls the Spreadsheet Analyzer analysis module ( 310 ). 
         [0060]    The Spreadsheet Analyzer analysis module ( 310 ) calls standard, open spreadsheet APIs (for example, Microsoft Excel APIs) ( 320 ) to determine spreadsheet details for the spreadsheet&#39;s workbook, worksheets, rows, columns, cells, charts, et cetera; the analysis module ( 310 ) then adds Spreadsheet Meta-Data detail to the Spreadsheet Meta-Model database ( 122 ) (first erasing prior data for the spreadsheet if the spreadsheet is changed rather than new). When done, the analysis module ( 310 ) calls the Spreadsheet Analyzer notification module ( 330 ). 
         [0061]    The Spreadsheet Analyzer notification module ( 330 ) generates an e-mail ( 116 ) to the most-likely spreadsheet owner (see  FIG. 7 ); the e-mail offers the most-likely file owner (determined via the directory or sub-directory and history of other files found in that directory or sub-directory) the choice of clicking a link to provide more information about the spreadsheet (such as its purpose), suggest another person as the owner, or declare the spreadsheet “private.” 
         [0062]    If the e-mail ( 116 ) recipient clicks a link, doing so automatically starts the Repository Application ( 130 ) with the appropriate on-line transaction (see  FIG. 6 ) to add details, reassign ownership, or declare the spreadsheet private. 
         [0063]      FIG. 4  illustrates the logic flow of the Database Analyzer utility: 
         [0064]    An Enterprise Network ( 100 ) contains computers with various files of interesting including desktop/departmental databases. 
         [0065]    The “Crawler” ( 110 ) utility periodically searches network directories and files for new, changed, or erased files of interest (in this case desktop/departmental databases), and for new or changed desktop/departmental databases calls the Database Analyzer analysis module ( 410 ). 
         [0066]    The Database Analyzer analysis module ( 410 ) calls standard, open desktop/departmental database APIs (such as Microsoft Access APIs) ( 420 ) to determine desktop/departmental database details for that database&#39;s tables, columns, queries, update transactions, reports, et cetera; the analysis module ( 410 ) then adds Database Meta-Data detail to the Database Meta-Model database ( 123 ) (first erasing prior data for the desktop/departmental database if the desktop/departmental database is changed rather than new). When done, the analysis module ( 410 ) calls the Database Analyzer notification module ( 430 ). 
         [0067]    The Database Analyzer notification module ( 430 ) generates an e-mail ( 116 ) to the most-likely desktop/departmental database owner (see  FIG. 7 ); the e-mail offers the most-likely file owner (determined via the directory or sub-directory and history of other files found in that directory or sub-directory) the choice of clicking a link to provide more information about the desktop/departmental database (such as its purpose), suggest another person as the owner, or declare the spreadsheet “private.” 
         [0068]    If the e-mail ( 116 ) recipient clicks a link, doing so automatically starts the Repository Application ( 130 ) with the appropriate on-line transaction to add details, reassign ownership, or declare the desktop/departmental database private. 
         [0069]      FIGS. 5A-5G  list and define Comprehensive Repository (see  FIG. 1  ( 120 )) tables and key-table columns, and includes its own summary and narrative details. 
         [0070]    FIG.  5 A—Table groups (lists of groups of related tables in the Comprehensive Repository database (see  FIG. 1  ( 120 )), and FileSystem-group tables (tables that describe an Enterprise Network (see  FIG. 1  ( 100 )). 
         [0071]    FIG.  5 B—FileObject table shows column-level details of this key FileSystem-group table&#39;s design, (see  FIG. 5A ). This table describes a file of interest in an Enterprise Network (see  FIG. 1  ( 100 )). 
         [0072]    FIG.  5 C—Spreadsheet Meta-Model-group tables (tables that describe a spreadsheet (such as an Excel spreadsheet) found in an Enterprise Network (see  FIG. 1  ( 100 )). 
         [0073]    FIG.  5 D—Database Meta-Model-group tables (tables that describe a desktop/departmental application (such as an Access database) found in an Enterprise Network (see  FIG. 1  ( 100 )). 
         [0074]    FIG.  5 E—Database Meta-Model-group tables (continued from  FIG. 5D ). 
         [0075]    FIG.  5 F—Simplified Enterprise Applications Meta-Meta-Model-group tables (tables that describe: 
         [0076]    Enterprise Development Database (see  FIG. 1  ( 172 )) tables and other database objects. 
         [0077]    Simple applications synthesized by the Spreadsheet Synthesizer (see  FIG. 1  ( 140 )) from spreadsheets such as Excel spreadsheets. 
         [0078]    Simple applications synthesized by the Database Synthesizer (see  FIG. 1  ( 142 )) from desktop/departmental databases such as Access databases. 
         [0079]    FIG.  5 G—Enterprise Definition Model (see  FIG. 1  ( 124 )) table, describes the structure of one or more organizations, including for example relationships between organizations and staff members and responsibilities held by staff members. 
         [0080]      FIG. 6  is a sample screen-shot of a Repository Application transaction, AnnotateFile: 
         [0081]    The Repository Application ( 130 ) includes transactions and reports to view and maintain contents of the Comprehensive Repository ( 120 ). Once such transaction is the AnnotateFile on-line transaction ( 610 ). 
         [0082]    The AnnotateFile on-line transaction ( 610 ) lets a file owner (in this example, the author of a new spreadsheet) add details, reassign ownership, or declare a file private (i.e., for the use only of the owner). 
         [0083]    AnnotateFile ( 610 ) shows (and allows changes to) the file&#39;s name ( 620 ), directory or sub-directory tree ( 630 ), primary purpose ( 640 ), whether it&#39;s private ( 650 ), and who is the file&#39;s owner ( 660 ). In addition, the file&#39;s owner can list general-purpose notes ( 670 ) and add miscellaneous details ( 680 ). 
         [0084]      FIG. 7  is a sample e-mail generated by the Spreadsheet Analyzer utility: 
         [0085]    The Spreadsheet Analyzer utility ( 112 ) (see  FIG. 1 ) generates e-mails ( 116 ) notifying the most-likely owner of the spreadsheet that it analyzed. 
         [0086]    The Database Analyzer utility ( 114 ) (also see  FIG. 1 ) generates e-mails ( 116 ) notifying the most-likely owner of the desktop/departmental database that it analyzed. 
         [0087]    The e-mail&#39;s body text specifies the most-likely owner&#39;s first name ( 710 ), file name in question ( 720 ), and disk and directory/sub-directory tree ( 730 ). 
         [0088]    The e-mail includes a link ( 740 ) asking for details about this new spreadsheet; this link&#39;s HTML automatically invokes the Repository Application AnnotateFile transaction (see  FIG. 6 ) letting the owner add purpose, et cetera for the spreadsheet. 
         [0089]    The e-mail includes a link ( 750 ) asking for the recipient&#39;s best guess at to the correct owner of this new spreadsheet (i.e., the e-mail recipient turns out not to be the owner but knows who is); this link&#39;s HTML automatically invokes the Repository Application ReassignOwners transaction letting the recipient specify who is likely the spreadsheet&#39;s owner. 
         [0090]    The e-mail includes a link ( 760 ) asking for verification that this new spreadsheet is owned by the e-mail&#39;s recipient but is private; this link&#39;s HTML automatically invokes the Repository Application AnnotateFile transaction letting the owner explicitly state that the spreadsheet is private and add details if desired. 
         [0091]      FIG. 8  illustrates the logic flow of the Database Synthesis utility: 
         [0092]    An IT specialist uses the Repository Application ( 130 ) to find a desktop/departmental database in the Database Meta-Model database ( 123 ) and request running of the Database Synthesis utility ( 142 ). 
         [0093]    The Database Synthesis utility upload module ( 810 ) reads details, including owner-provided annotations and complete desktop/departmental database details (tables, columns, queries, reports, update transactions, et cetera), from the Database Meta-Model database ( 123 ), and reads existing applications database details (schemas, tables, columns, et cetera) from the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0094]    The Database Synthesis utility synthesis module ( 820 ) uses the data gathered by the upload module ( 810 ) to determine the most-likely combination of RDBMS tables (already existing and new), new on-line transactions, new reports, et cetera that would replace the original desktop/departmental database. Except for desktop/departmental database-versus-“production”-database transformations, most desktop/departmental database reports become “production” reports and most desktop/departmental database queries, update transactions, et cetera, become “production” on-line transactions capable of updates, queries, et cetera. 
         [0095]    The Database Synthesis utility database-design module ( 830 ) adds designs for new RDBMS tables, columns, et cetera to the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0096]    The Database Synthesis utility transaction-design module ( 840 ) adds designs for new transactions (screens, regions, fields, buttons, logic, et cetera) to the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0097]    The Database Synthesis utility report-design module ( 850 ) adds designs for new reports (titles, headers, footers, regions, fields, buttons, calculations, et cetera) to the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0098]    An IT specialist uses the Repository Application ( 130 ) to review, fine-tune, or erase the desktop/departmental database&#39;s newly created “production” components in the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0099]      FIG. 9  illustrates the logic flow of the Enterprise Database Upload utility: 
         [0100]    The Enterprise Database Upload utility ( 150 ) initiates and runs the Enterprise Database Upload startup module ( 910 ), which reads the list of supported and applicable development database instances and schemas from the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0101]    The Enterprise Database Upload analysis module ( 920 ) reads the list of known development database objects (such as tables and columns) from the Simplified Enterprise Application Meta-Model database ( 125 ); reads the active dictionary in the Enterprise Development Database ( 172 ) for actual enterprise-database tables, columns, et cetera; and creates a list of differences such as new tables and columns and changed column definitions. 
         [0102]    The Enterprise Database Upload differences module ( 930 ) reads domain information matching new and changed tables and columns from Simplified Enterprise Application Meta-Model database ( 125 ), determines best-guess new meta-meta-model content, updates (adds or modifies) corresponding content in the Simplified Enterprise Application Meta-Model database ( 125 ), and where needed generates informative e-mails ( 152 ) to responsible IT staff asking for additional information. 
         [0103]    When responsible IT staff open generated e-mails ( 152 ) and click their links, the Repository Application ( 130 ) automatically starts and displays the relevant content-update transaction (for example, TableDetails or ColumnDetails transactions) so that the IT staff member can add specialized information such as suggested column “help text” to display on generated transactions. 
         [0104]      FIG. 10  illustrates the logic flow of the Spreadsheet Synthesis utility ( 140 ): 
         [0105]    An IT specialist uses the Repository Application ( 130 ) to find a spreadsheet in the Spreadsheet Meta-Model database ( 122 ) and request running of the Spreadsheet Synthesis utility ( 140 ). 
         [0106]    The Spreadsheet Synthesis utility upload module ( 1010 ) reads details, including owner-provided annotations and complete spreadsheet details (workbook, worksheets, rows, columns, cells, charts, et cetera), from the Spreadsheet Meta-Model database ( 122 ), and reads existing applications database details (schemas, tables, columns, et cetera) from the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0107]    The Spreadsheet Synthesis utility synthesis module ( 1020 ) uses the data gathered by the upload module ( 1010 ) to determine the most-likely combination of RDBMS tables (already existing and new), new on-line transactions, and new reports that would perform the same business function as the original spreadsheet (see  FIG. 11 ). 
         [0108]    The Spreadsheet Synthesis utility database-design module ( 1030 ) adds designs for new RDBMS tables, columns, et cetera to the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0109]    The Spreadsheet Synthesis utility transaction-design module ( 1040 ) adds designs for new transactions (screens, regions, fields, buttons, logic, et cetera) to the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0110]    The Spreadsheet Synthesis utility report-design module ( 1050 ) adds designs for new reports (titles, headers, footers, regions, fields, buttons, calculations, et cetera) to the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0111]    An IT specialist uses the Repository Application ( 130 ) to review, fine-tune, or erase the spreadsheet&#39;s newly created “production” components in the Simplified Enterprise Application Meta-Model database ( 125 ). 
         [0112]      FIG. 11  shows a sample spreadsheet and illustrates how the Spreadsheet Synthesis utility “synthesizes” the spreadsheet&#39;s content into a meta-meta-model of applications database content, on-line transactions, and reports: 
         [0113]    A spreadsheet ( 1100 ) is analyzed by the Spreadsheet Analyzer utility and placed into the Spreadsheet Meta-Model  122  (see  FIG. 3 ). 
         [0114]    The spreadsheet ( 1100 ) has a table listing trades ( 1102 ); in this table in particular there is a Buy/Sell column ( 1104 ) with values of B for Buy and S for Sell, and a Market price column ( 1106 ) whose value is derived (copied) from the corresponding Market price value in the Equity table ( 1108 ). 
         [0115]    The spreadsheet ( 1100 ) has a table ( 1108 ) listing equities and their (current) market prices. 
         [0116]    The spreadsheet ( 1100 ) has a chart ( 1110 ) summarizing profit or loss by calendar month. 
         [0117]    The Spreadsheet Synthesizer ( 140 ) reviews complete analyzed spreadsheet content and already existing tables (including, in this case, an already-existing Equities table with columns EquityID and EquityCode) in the Enterprise Simplified Enterprise Application Meta-Model database ( 125 ) (see  FIG. 10 ). 
         [0118]    The Spreadsheet Synthesizer ( 140 ) defines in the Enterprise Simplified Enterprise Application Meta-Model database (see  FIG. 10 ) two new tables (MarketPrices ( 1120 ) with a foreign key to the already existing Equities table and Trades ( 1122 ) with foreign keys both to Equities and MarketPrices. 
         [0119]    The Spreadsheet Synthesizer ( 140 ) defines in the Enterprise Simplified Enterprise Application Meta-Model database (see  FIG. 10 ) two new on-line transactions (MaintainMarketPrices ( 1130 ) with fields Equity and Market price, and EnterTrades ( 1140 ) with fields Date, Equity, Buy/Sell, Shares, Price, and Commission). 
         [0120]    The Spreadsheet Synthesizer ( 140 ) defines in the Enterprise Simplified Enterprise Application Meta-Model database (see  FIG. 10 ) a charting report ( 1150 ) summarizing profit and loss by calendar month. In one or more embodiments, defining the above objects for example adds rows to the following tables (see  FIG. 5F ): DataObject, DataObjectRelationship, EnterpriseApplication, EnterpriseApplicationObject, EnterpriseApplicationObjectEvent, EnterpriseApplicationObjectMiscellaneousDetail, EnterpriseApplicationObjectNote, EnterpriseDomain, FunctionObject, FunctionObjectInvocation, FunctionObjectInvocationParameter, FunctionObjectParameter, InterfaceObject, InterfaceObjectRelationship, MenuObject, and MenuObjectDetail. Although these field names in the table are provided in an exemplary manner, one skilled in the art will recognize that variations of these names or fields are in keeping with the spirit of the invention so long as the spreadsheet synthesizer ( 140 ) can describe the information that it is supplied with in a manner that allows for the description of objects in the Enterprise Simplified Enterprise Application Meta-Model database. The same holds true with any synthesizer component implemented with embodiments of the invention including the database synthesizer for example. 
         [0121]      FIG. 12  shows sample Enterprise Simplified Enterprise Application Meta-Model (part of the Comprehensive Repository) content after running the Enterprise Database Upload utility: 
         [0122]    The Enterprise Development Database ( 172 ) shows a schema with three preexisting tables ( 1202 ,  1204 , and  1206 ). 
         [0123]    In one table ( 1206 ), a database administrator or developer has modified one column ( 1208 ) and added another column ( 1210 ). 
         [0124]    A database administrator or developer has added a new table ( 1212 ) with four columns. 
         [0125]    When the Enterprise Database Upload utility ( 150 ) next runs, it compares Enterprise Development Database ( 172 ) tables and columns with details in the Simplified Enterprise Application Meta-Model ( 125 ) DataObject table ( 1220 ). 
         [0126]    Since two development tables ( 1202  and  1204 ) are unchanged, the Enterprise Database Upload utility ( 150 ) leaves their corresponding data ( 1222  and  1224 ) in the DataObject table ( 1220 ) unchanged. 
         [0127]    Since one development table ( 1206 ) has a changed column ( 1208 ) and a new column ( 1210 ), the Enterprise Database Upload utility ( 150 ) updates the corresponding detail row ( 1228 ) in the DataObject table ( 1220 ) for the changed column ( 1208 ) and adds a new column-definition row ( 1230 ) for the new column ( 1210 ). 
         [0128]    Since one development table ( 1212 ) has been added with four columns, the Enterprise Database Upload utility ( 150 ) adds one new table-definition row ( 1234 ) and four new column-definition rows ( 1236 ) to corresponding data  1232  that corresponds to table  1212 . 
         [0129]      FIG. 13  illustrates the logic flow of the Enterprise Applications Generator utility: 
         [0130]    An IT specialist uses the Repository Application ( 130 ) to find an “application” (originating as either a spreadsheet or desktop/departmental database) in the Simplified Enterprise Application Meta-Model ( 125 ) and run the Enterprise Applications Generator utility ( 160 ). 
         [0131]    The Enterprise Applications Generator content module ( 1300 ) reads the Simplified Enterprise Application Meta-Model ( 125 ) for new and changed applications content (tables, columns, transactions, reports, et cetera). 
         [0132]    The Enterprise Applications Generator database module ( 1310 ) generates and runs DDL (SQL Data-Definition Language) and DML (SQL Data-Manipulation Language) to add new tables, add new columns to existing tables, and convert tables with changed columns as necessary, then runs that DDL and DML in the Development Database ( 172 ) in the Enterprise Development Run-Time Environment ( 170 ). One skilled in the art will recognize that any type of database language or commands associated with a given database language can be utilized so long as the desired tables and columns are created, modified or deleted as desired. 
         [0133]    The Enterprise Applications Generator transaction module ( 1320 ) generates (depending on site standards) enterprise business objects such as J2EE EJB&#39;s, .NET objects, et cetera programmatic/source code for all new transactions implied by the underlying spreadsheet or desktop/departmental database, and adds them into various source files ( 1330 ) in the Development File System ( 174 ) within the Enterprise Development Run-Time Environment ( 170 ). 
         [0134]    The Enterprise Applications Generator report module ( 1340 ) generates (depending on site standards) Crystal, Excel, et cetera programmatic/source code for all new reports implied by the underlying spreadsheet or desktop/departmental database, and adds them into various other source files ( 1350 ) in the Development File System ( 174 ) within the Enterprise Development Run-Time Environment ( 170 ). 
         [0135]    The Enterprise Applications Generator invocation module ( 1360 ) compiles transaction and report programmatic/source code for all new reports and transactions, creates run-time or executable files ( 1370 ), adds them into various files in the Development File System ( 174 ) within the Enterprise Development Run-Time Environment ( 170 ), then invokes or executes those run-time or executable files ( 1370 ) to run the resulting application ( 1380 ). 
         [0136]    While the invention herein disclosed has been described by means of specific embodiments and applications thereof, numerous modifications and variations could be made thereto by those skilled in the art without departing from the scope of the invention set forth in the claims.