US7480897B2 - Method and system for managing development objects for computer program code - Google Patents

Method and system for managing development objects for computer program code Download PDF

Info

Publication number
US7480897B2
US7480897B2 US10/906,872 US90687205A US7480897B2 US 7480897 B2 US7480897 B2 US 7480897B2 US 90687205 A US90687205 A US 90687205A US 7480897 B2 US7480897 B2 US 7480897B2
Authority
US
United States
Prior art keywords
objects
synchronizer
source code
model
dom
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US10/906,872
Other versions
US20060206865A1 (en
Inventor
Edmund H. Reinhardt
Stella Luk
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US10/906,872 priority Critical patent/US7480897B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LUK, STELLA, REINHARDT, EDMUND H.
Priority to CNB2006100582116A priority patent/CN100363892C/en
Priority to JP2006064548A priority patent/JP2006252557A/en
Publication of US20060206865A1 publication Critical patent/US20060206865A1/en
Application granted granted Critical
Publication of US7480897B2 publication Critical patent/US7480897B2/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Definitions

  • the invention relates generally to managing development objects for computer program code, and more particularly, to an improved solution for maintaining synchronization between source code written in a positional language and a corresponding document object model (DOM).
  • DOM document object model
  • a positional language defines the meaning of text by its character position within a line.
  • RPG Report Program Generator
  • Applications written in RPG read and write data from and to databases and devices such as displays and printers. The interface to these databases and devices is described by a series of lines that is called Data Description Specifications (DDS) which is another illustrative positional language.
  • DDS Data Description Specifications
  • positional languages comprise some of the earliest programming languages. More recently, token-based languages (e.g., Java, C++, etc.) have increased in popularity. In either case, the source code is traditionally modified using a text editor.
  • IDEs Integrated Development Environments
  • IDEs Integrated Development Environments
  • DOM document object model
  • a parser for a compiler included in the IDE can be used to translate source code in a particular programming language into the DOM.
  • the DOM comprises a representation of the source code that captures all of the semantic information included in the source code. When compiling, the DOM is used to generate the program product.
  • the IDE uses the DOM to provide various enhancements to the user.
  • the DOM can be used to generate one or more graphical views that enable the user to visualize aspects of the language.
  • the IDE can display an outline of a program product being developed, an accurate representation of a screen and/or report being developed, etc.
  • the IDE can provide one or more visual editors that are more user-friendly, such as a properties view, a graphical editor, or the like. In this case, it is desirable to allow the user to readily switch between the source code editor and the visual editor.
  • the visual editors modify data in the DOM.
  • the IDE must maintain synchronization between the source code and the DOM.
  • an incremental compiler is typically used.
  • the incremental compiler re-parses modified source code and updates the DOM and/or regenerates affected source code after the DOM is modified.
  • a token-based parsing of the source code is performed and the result is merged with the existing DOM. Since this operation can be complex, there may be performance problems, such as a user-perceptible delay between modifying the DOM/source code and seeing the change reflected in the corresponding source code/DOM. Further, the incremental compiler can be error-prone and expensive to maintain.
  • the invention provides a solution for managing development objects for computer program code.
  • the invention uses a set (one or more) of synchronizer objects to synchronize data for a development object that comprises source code written in a positional language with data for a development object that comprises a document object module (DOM) that corresponds to the source code.
  • the DOM includes a model object for each line in the source code, and each model object includes a set of attributes, each of which corresponds to a character range of the line that is defined by the positional language.
  • a synchronizer object can update the appropriate attribute of the corresponding model object based on the location of the modification.
  • the synchronizer object can update the appropriate line and character range in the source code based on the attribute's corresponding character range and the model object's corresponding line.
  • the synchronizer objects provide an efficient solution for synchronizing source code and a corresponding DOM.
  • the synchronizer objects can generate the DOM based on the source code and/or generate the source code based on the DOM.
  • the invention provides a solution for managing development objects for computer program code that takes advantage of various aspects of a positional language.
  • a first aspect of the invention provides a method of managing development objects for computer program code, the method comprising: obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtaining a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and using a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
  • DOM document object model
  • a second aspect of the invention provides a method of managing development objects for computer program code, the method comprising: obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtaining a second development object that comprises a document object model (DOM) that corresponds to the source code, wherein the DOM includes: a set of model objects, wherein each model object corresponds to a unique one of the set of lines; and a set of attributes for each model object, wherein each attribute in the set of attributes corresponds to a character range of the corresponding line; and using a set of synchronizer objects to synchronize the source code and the DOM, wherein each synchronizer object in the set of synchronizer objects corresponds to a unique model object in the set of model objects.
  • DOM document object model
  • a third aspect of the invention provides a system for managing development objects for computer program code, the system comprising: a system for obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; a system for obtaining a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and a system for using a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
  • a system for obtaining a first development object that comprises source code for the computer program code wherein the source code is written in a positional language and includes a set of lines
  • a system for using a set of synchronizer objects to synchronize the
  • a fourth aspect of the invention provides a program product stored on a computer-readable medium, which when executed, manages development objects for computer program code, the program product comprising: program code for obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; program code for obtaining a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and program code for using a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
  • a fifth aspect of the invention provides a method of deploying an application for managing development objects for computer program code, the method comprising: providing a computer infrastructure being operable to: obtain a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtain a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and use a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
  • a computer infrastructure being operable to: obtain a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtain a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and use a set of synchronizer objects to synchronize the source code and
  • a sixth aspect of the invention provides computer software embodied in a propagated signal for managing development objects for computer program code, the computer software comprising instructions to cause a computer system to perform the following functions: obtain a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtain a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and use a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
  • DOM document object model
  • a seventh aspect of the invention provides a computer-readable medium that includes computer program code to enable a computer infrastructure to manage development objects for computer program code.
  • An eighth aspect of the invention provides a business method for managing development objects for computer program code.
  • a ninth aspect of the invention provides a method of generating a system for managing development objects for computer program code.
  • FIG. 1 shows an illustrative system for managing development objects for computer program code
  • FIG. 2 shows an illustrative source code editor
  • FIG. 3 shows an illustrative structure for a document object model (DOM);
  • FIG. 4 shows an illustrative DOM having the structure shown in FIG. 3 ;
  • FIG. 5 shows an illustrative visual editor
  • FIG. 6 shows an illustrative data flow for synchronizing development objects that can be implemented by the various systems of FIG. 1 ;
  • FIG. 7 shows an alternative data flow for synchronizing development objects that can be implemented by the various systems of FIG. 1 .
  • the invention provides a solution for managing development objects for computer program code.
  • the invention uses a set (one or more) of synchronizer objects to synchronize data for a development object that comprises source code written in a positional language with data for a development object that comprises a document object module (DOM) that corresponds to the source code.
  • the DOM includes a model object for each line in the source code, and each model object includes a set of attributes, each of which corresponds to a character range of the line that is defined by the positional language.
  • a synchronizer object can update the appropriate attribute of the corresponding model object based on the location of the modification.
  • the synchronizer object can update the appropriate line and character range in the source code based on the attribute's corresponding character range and the model object's corresponding line.
  • the synchronizer objects provide an efficient solution for synchronizing source code and a corresponding DOM.
  • the synchronizer objects can generate the DOM based on the source code and/or generate the source code based on the DOM.
  • the invention provides a solution for managing development objects for computer program code that takes advantage of various aspects of a positional language.
  • development object includes source code that is used to generate the computer program code.
  • the source code is stored in one or more files in a file system.
  • each file could comprise a development object.
  • a development object can comprise one or more in-memory objects that are not stored as files.
  • a development object can comprise one or more in-memory objects that correspond to the source code.
  • a document object model DOM
  • a development object can comprise an object file that is generated based on source code and/or provided as a library/component, an executable file that comprises the computer program code, and/or the like.
  • FIG. 1 shows an illustrative system 10 for managing development objects for computer program code 54 .
  • system 10 includes a computer infrastructure 12 that can perform the various process steps described herein for managing the development objects.
  • computer infrastructure 12 is shown including a computing device 14 comprising a development system 30 that enables computing device 14 to manage the development objects by performing the process steps of the invention.
  • Computing device 14 is shown including a processor 20 , a memory 22 , an input/output (I/O) interface 24 , and a bus 26 . Further, computing device 14 is shown in communication with an external I/O device/resource 28 and a storage system 29 .
  • processor 20 executes computer program code, such as development system 30 , that is stored in memory 22 and/or storage system 29 . While executing computer program code, processor 20 can read and/or write data, such as source code 50 , to/from memory 22 , storage system 29 , and/or I/O interface 24 .
  • Bus 26 provides a communication link between each of the components in computing device 14 .
  • I/O device 28 can comprise any device that enables user 16 to interact with computing device 14 (e.g., keyboard, pointing device, display, etc.) or any device that enables computing device 14 to communicate with one or more other computing devices (e.g., network card, modem, wireless communications device, etc.).
  • computing device 14 e.g., keyboard, pointing device, display, etc.
  • computing devices e.g., network card, modem, wireless communications device, etc.
  • computing device 14 can comprise any general purpose computing article of manufacture capable of executing computer program code installed by a user 16 (e.g., a personal computer, server, handheld device, etc.).
  • computing device 14 and development system 30 are only representative of various possible computing devices that may perform the various process steps of the invention.
  • computing device 14 can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like.
  • the program code and hardware can be created using standard programming and engineering techniques, respectively.
  • computer infrastructure 12 is only illustrative of various types of computer infrastructures for implementing the invention.
  • computer infrastructure 12 comprises two or more computing devices (e.g., a server cluster) that communicate over a network, via a shared memory, or the like, to perform the various process steps of the invention.
  • the network can comprise one or more types of networks (e.g., the Internet, a wide area network, a local area network, a virtual private network, etc.), and communications between the computing devices may utilize various types of communications links and/or transmission techniques (e.g., wired, wireless, etc.).
  • development system 30 enables computing device 14 to manage development objects (e.g., source code 50 , DOM 52 , etc.) for computer program code 54 .
  • development system 30 is shown including a management system 32 that enables user 16 to manage (e.g., add, delete, etc.) various development objects associated with computer program code 54 , a text editor system 34 that generates a text editor that enables user 16 to modify source code 50 , a visual editor system 36 that generates a visual editor that enables user 16 to modify DOM 52 , a synchronization system 38 that maintains synchronization between source code 50 and the corresponding DOM 52 , and a translation system 40 that generates computer program code 54 .
  • a management system 32 that enables user 16 to manage (e.g., add, delete, etc.) various development objects associated with computer program code 54
  • a text editor system 34 that generates a text editor that enables user 16 to modify source code 50
  • a visual editor system 36 that generates a visual editor that enables user 16
  • FIG. 1 Operation of each of these systems is discussed further below. However, it is understood that some of the various systems shown in FIG. 1 can be implemented independently, combined, and/or stored in memory for one or more separate computing devices 14 that communicate over a network. Further, it is understood that some of the systems and/or functionality may not be implemented, or additional systems and/or functionality may be included as part of system 10 .
  • development system 30 is embodied as an integrated development environment (IDE) application for a positional language.
  • IDE integrated development environment
  • the IDE application provides a single user interface that allows user 16 to create and modify source code 50 , and generate computer program code 54 based on the positional language and source code 50 .
  • the IDE application typically includes one or more editors for editing source code 50 , a debugger that assists user 16 in locating and/or correcting any errors, and a compiler that applies the semantics of the positional language to source code 50 to generate computer program code 54 .
  • the compiler typically includes a parser that parses source code 50 to generate a DOM 52 , and a back-end that generates computer program code 54 based on DOM 52 .
  • management system 32 can obtain a set of development objects that comprise source code 50 that is written based on the rules defined by the programming language. Under the present invention, source code 50 is written in a positional language, e.g., Data Description Specifications (DDS). Regardless, management system 32 can generate and/or display a user interface that enables user 16 to add, remove, delete, and/or modify some or all of the set of development objects that comprise source code 50 . For example, management system 32 can define and subsequently manage a project that includes a set of files that comprise source code 50 . The set of files then can be used to generate computer program code 54 . Management system 32 can enable user 16 to define a new project, add and/or remove files from the set of files, and/or allow user 16 to select to view/edit one or more of the set of files as is known in the art.
  • DDS Data Description Specifications
  • Source code 50 which is written in a positional language, includes a set (one or more) of lines.
  • each line is defined by a carriage return and/or line feed included in the data stored in a file.
  • each line includes a number of characters, and the position of a particular character (e.g., the column in which the character appears) defines its meaning.
  • FIG. 2 shows an illustrative source code editor 60 .
  • text editor system 34 can generate source code editor 60 .
  • source code editor 60 can be displayed to user 16 by text editor system 34 and/or provided to another system (e.g., management system 32 ) for display as is known in the art.
  • source code editor 60 enables user 16 to view and/or modify data for the set of lines 64 included in source code 50 .
  • user 16 can change the data for one or more existing lines 64 , add one or more new lines 64 , delete one or more lines 64 , etc.
  • source code editor 60 When viewing and/or modifying data for the set of lines 64 using source code editor 60 , it is important that user 16 ( FIG. 1 ) know the character position of the data. To this extent, source code editor 60 is shown including a row of column indicators 62 that allows user 16 to readily determine the character position (e.g., column) of particular data. However, it is understood that various alternatives are possible. For example, source code editor 60 could display the current column position of a cursor in a status bar or the like. To further assist user 16 in aligning the data, source code editor 60 typically displays source code 50 using a font in which all characters have a uniform width (e.g., courier).
  • a font in which all characters have a uniform width (e.g., courier).
  • line 64 can comprise an illustrative line of data that is entered based on the DDS positional language.
  • DDS can define that the first character position is used to indicate the type of line.
  • the blank character in the seventeenth character position can identify line 64 as a defining a field within a record.
  • the nineteenth through twenty-eighth character positions can comprise a name for the field
  • the thirtieth through thirty-fourth character positions can comprise a data length for the field
  • the thirty-fifth character position can comprise a data type for the field
  • the thirty-sixth and thirty-seventh character positions can comprise a number of decimal positions for the field
  • the thirty-eighth character position can comprise the input/output (I/O) usage for the field, etc.
  • FIG. 3 shows an illustrative structure for a DOM 52 A.
  • DOM 52 A comprises a hierarchy of nodes that includes a set of model objects 70 A, 70 B.
  • the set of model objects 70 A-B can correspond to the set of lines 64 ( FIG. 2 ) in source code 50 ( FIG. 1 ).
  • each model object 70 A-B corresponds to a unique line 64 in a one-to-one relationship.
  • a model object 70 A-B could correspond to a plurality of lines 64
  • a line 64 could correspond to a plurality of model objects 70 A-B
  • a model object 70 A-B can comprise one or more model objects 70 A-B that are nested in a hierarchical manner as is known in the art.
  • a model object 70 A-B that corresponds to a record can contain a set of model objects 70 A-B that correspond to each field in the record.
  • each model object 70 A-B in DOM 52 A can include a set of attributes 72 A, 72 B. To this extent, model object 70 A is shown including attributes 72 A-B.
  • each attribute 72 A-B can correspond to a character range on the line 64 ( FIG. 2 ) that corresponds to model object 70 A.
  • the character range can comprise the entire character range that defines an attribute having a particular meaning in the positional language.
  • FIG. 4 shows an illustrative DOM 152 A that can be generated based on source code 50 .
  • DOM 152 A is shown including a model object 170 A that corresponds to line 64 ( FIG. 2 ).
  • model object 170 A corresponds to a particular type of line 64 , e.g., a named field.
  • model object 170 A can include a set of attributes 172 A-E.
  • Each attribute 172 A-E includes data for one of the attributes for the type of line 64 .
  • each attribute 172 A-E can identify the type of attribute (e.g., name, data length, data type, etc.), the character range that corresponds with the attribute, and the data that is stored on line 64 for the character range.
  • translation system 40 can generate computer program code 54 based on DOM 52 .
  • translation system 40 can include a back-end that traverses DOM 52 and generates computer program code 54 in a known manner.
  • DOM 52 can also be used to assist user 16 in developing source code 50 .
  • management system 32 can enable user 16 to select alternative display/editing formats based on DOM 52 .
  • management system 32 can enable user 16 to select one or more types of visual editors that enable user 16 to modify and/or view data stored in DOM 52 . When selected, management system 32 can request that visual editor system 36 generate the desired visual editor.
  • FIG. 5 shows an illustrative visual editor 80 that can be generated by visual editor system 36 ( FIG. 1 ). Subsequently, visual editor 80 can be displayed to user 16 ( FIG. 1 ) by visual editor system 36 and/or provided to another system (e.g., management system 32 of FIG. 1 ) for display as is known in the art. In any event, visual editor 80 can allow user 16 to modify data for attributes 172 A-E in DOM 152 A of FIG. 4 . As shown in FIG. 5 , visual editor 80 can include various attribute names and text boxes that enable user 16 ( FIG. 1 ) to view and/or modify data for attributes 172 A-E in a user-friendly manner. It is understood that visual editor 80 is only illustrative and various alternative editors/displays could be used as will be apparent to one knowledgeable in the art.
  • management system 32 can allow user 16 to view and/or modify data for both source code 50 (e.g., using source code editor 60 of FIG. 2 ) and DOM 52 (e.g., using visual editor 80 of FIG. 5 ), it is desirable that a modification to one development object be reflected in the other development object.
  • the invention provides an efficient solution for synchronizing source code 50 and DOM 52 .
  • synchronization system 38 uses a set of synchronizer objects that synchronize source code 50 and DOM 52 based on a character range in one of the set of lines in source code 60 and a corresponding one of the set of model objects in DOM 52 .
  • FIG. 6 shows an illustrative data flow for synchronizing source code 50 and DOM 52 that can be implemented by the various systems of FIG. 1 .
  • text editor system 34 can generate a source code editor 60 that enables user 16 to modify source code 50 .
  • visual editor system 36 can generate a visual editor 80 that enables user 16 modify DOM 52 .
  • Synchronization system 38 can generate a set of synchronizer objects 82 A-B that, upon a modification of either source code 50 or DOM 52 , update the other development object based on the modification.
  • each synchronizer object 82 A-B in the set of synchronizer objects corresponds to a unique model object 70 A-B in DOM 52 and a unique line 64 A-B in source code 50 .
  • synchronization system 38 can receive a modification of data for one of the set of lines 64 A-B in source code 50 , and provide the modification to the synchronizer object 82 A-B that corresponds to the modified line 64 A-B in source code 50 .
  • Synchronization system 38 can receive the modification using any of various solutions known in the art. For example, synchronization system 38 can monitor the interaction between user 16 and source code editor 60 , monitor messages generated by source code editor 60 that implement the modification in source code 50 , receive a message from text editor system 34 , and the like.
  • synchronizer object 82 A-B can select an appropriate attribute 72 A-B of the corresponding model object 70 A-B that requires updating. For example, synchronizer object 82 A-B can initially determine a character position of the modification to line 64 A-B. Subsequently, synchronizer object 82 can select the attribute 72 A-B that corresponds to a character range that includes the character position. Once selected, synchronizer object 82 A-B can update the data for the selected attribute 72 A-B with the modified data.
  • synchronization system 38 can receive a modification of data for one of the set of attributes 72 A-B, e.g., by monitoring interaction between user 16 and visual editor 80 , monitoring messages generated by visual editor 80 that implement the modification in DOM 52 , receive a message from visual editor system 36 , and the like. Regardless, once the modification is received, synchronization system 38 can obtain the model object 70 A-B that corresponds to the modified attribute 72 A-B, and provide the modification to the synchronizer object 82 A-B that corresponds to the model object 70 A-B. Based on the modification, synchronizer object 82 A-B can select an appropriate line 64 A-B in source code 50 that requires updating.
  • synchronizer object 82 A-B can update the data for the selected line 64 A-B with the modified data.
  • synchronization system 82 A-B can obtain the character range that corresponds to the modified attribute 72 A-B and update the character range on line 64 A-B with the modified data.
  • FIG. 7 shows an alternative data flow for synchronizing development objects that can be implemented by the various systems of FIG. 1 .
  • each synchronizer object 82 A can comprise a set of attribute entries 83 A-B, each of which comprises a mapping between a character range on a corresponding line 64 A and an attribute 72 A-B in a corresponding model object 70 A.
  • attributes 72 A-B of model object 70 A can be defined in generic terms (e.g., via a well-defined meta-model).
  • the source code for updating each attribute 72 A-B can also be generic. As a result, unique source code does not need to be written to implement each attribute 72 A-B.
  • any attribute 72 A-B of model object 70 A can be generically synchronized with a character range in line 64 A. Consequently, synchronizer object 82 A can simply become a set of generic attribute entries 83 A-B that have been initialized to point to a particular character range on line 64 A and a corresponding attribute 72 A-B.
  • a framework for model-driven architecture development such as the feature identifiers provided by the Eclipse Modeling Framework, can be used to implement this solution.
  • synchronization system 38 can use the set of synchronizer objects 82 A to generate DOM 52 based on source code 50 and/or generate source code 50 based on DOM 52 .
  • synchronization system 38 can receive the data for each line 64 A in source code 50 , generate a synchronizer object 82 A for each line 64 A, and provide the data for the line 64 A to the synchronizer object 82 A.
  • Synchronizer object 82 A then can generate a model object 70 A and its corresponding set of attributes 72 A-B based on the data for the line 64 A.
  • synchronization object 82 A can determine one of a plurality of types for the line 64 A (e.g., based on the data for the seventeenth character position as discussed above). Synchronization object 82 A then can select one of a set of model object types in which each model object type corresponds to a unique type of line, and create the new model object 70 A having the model object type. Synchronization object 82 A can also generate the set of attributes 72 A-B associated with the model object type of the new model object 70 A. Finally, synchronization object 82 A can obtain data for each attribute 72 A-B based on the data for the line 64 A and the character range for the attribute 72 A-B. In particular, synchronization object 82 A can determine the character range for an attribute 72 A-B, obtain the data for the character range from line 64 A, and store the data obtained as the data for the attribute 72 A-B.
  • synchronization system 38 can generate a new synchronizer object 82 A, which in turn can generate the new model object 70 A and corresponding attributes 72 A-B based on the type of the requested model object 70 A.
  • the new model object 70 A can include default data for each attribute 72 A-B.
  • synchronizer object 82 A can create a new line 64 A in source code 50 based on the new model object 70 A.
  • user 16 can modify the data for one or more attributes 72 A-B and synchronizer object 82 A can update the data for line 64 A based on the modifications.
  • the invention provides a computer-readable medium that includes computer program code to enable a computer infrastructure to manage the development objects.
  • the computer-readable medium includes program code, such as development system 30 ( FIG. 1 ), that implements each of the various process steps of the invention.
  • program code such as development system 30 ( FIG. 1 )
  • the term “computer-readable medium” comprises one or more of any type of physical embodiment of the program code.
  • the computer-readable medium can comprise program code embodied on one or more portable storage articles of manufacture (e.g., a compact disc, a magnetic disk, a tape, etc.), on one or more data storage portions of a computing device, such as memory 22 ( FIG. 1 ) and/or storage system 29 ( FIG. 1 ) (e.g., a fixed disk, a read-only memory, a random access memory, a cache memory, etc.), and/or as a data signal traveling over a network (e.g., during a wired/wireless electronic distribution of the program code).
  • portable storage articles of manufacture e.g., a compact disc, a magnetic disk, a tape, etc.
  • data storage portions of a computing device such as memory 22 ( FIG. 1 ) and/or storage system 29 ( FIG. 1 ) (e.g., a fixed disk, a read-only memory, a random access memory, a cache memory, etc.), and/or as a data signal traveling over a network (e.
  • the invention provides a business method that performs the process steps of the invention on a subscription, advertising, and/or fee basis.
  • a service provider such as an Internet Service Provider
  • the service provider can create, maintain, support, etc., a computer infrastructure, such as computer infrastructure 12 ( FIG. 1 ), that performs the process steps of the invention for one or more customers.
  • the service provider can receive payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising space to one or more third parties.
  • the invention provides a method of generating a system for managing development objects for computer program code.
  • a computer infrastructure such as computer infrastructure 12 ( FIG. 1 )
  • one or more systems for performing the process steps of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure.
  • the deployment of each system can comprise one or more of (1) installing program code on a computing device, such as computing device 14 ( FIG. 1 ), from a computer-readable medium; (2) adding one or more computing devices to the computer infrastructure; and (3) incorporating and/or modifying one or more existing systems of the computer infrastructure, to enable the computer infrastructure to perform the process steps of the invention.
  • program code and “computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions intended to cause a computing device having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
  • program code can be embodied as one or more types of program products, such as an application/software program (e.g., an IDE), component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like.

Abstract

Method and system for managing development objects for computer program code. One development object comprises source code written in a positional language while the other development object comprises a document object model (DOM) that corresponds to the source code. The two development objects are synchronized using a set of synchronizer objects. In particular, the various character ranges defined by the positional language are used to efficiently map a portion of the source code to a corresponding portion of the DOM. As a result, a synchronizer object can readily update a development object with a modification received for the other development object.

Description

The invention relates generally to managing development objects for computer program code, and more particularly, to an improved solution for maintaining synchronization between source code written in a positional language and a corresponding document object model (DOM).
BACKGROUND ART
A positional language defines the meaning of text by its character position within a line. For example, for the iSeries class of mid range servers offered by International Business Machines Corp. of Armonk, N.Y., an illustrative positional language is the Report Program Generator (RPG). Applications written in RPG read and write data from and to databases and devices such as displays and printers. The interface to these databases and devices is described by a series of lines that is called Data Description Specifications (DDS) which is another illustrative positional language.
In general, positional languages comprise some of the earliest programming languages. More recently, token-based languages (e.g., Java, C++, etc.) have increased in popularity. In either case, the source code is traditionally modified using a text editor. However, Integrated Development Environments (IDEs) for various programming languages have been enhanced to provide the user with a more productive, intuitive development environment. These enhancements rely on the generation of a document object model (DOM) that corresponds to the source code. In particular, a parser for a compiler included in the IDE can be used to translate source code in a particular programming language into the DOM. The DOM comprises a representation of the source code that captures all of the semantic information included in the source code. When compiling, the DOM is used to generate the program product.
The IDE uses the DOM to provide various enhancements to the user. For example, the DOM can be used to generate one or more graphical views that enable the user to visualize aspects of the language. To this extent, the IDE can display an outline of a program product being developed, an accurate representation of a screen and/or report being developed, etc. Further, the IDE can provide one or more visual editors that are more user-friendly, such as a properties view, a graphical editor, or the like. In this case, it is desirable to allow the user to readily switch between the source code editor and the visual editor.
The visual editors modify data in the DOM. As a result, the IDE must maintain synchronization between the source code and the DOM. To date, an incremental compiler is typically used. In particular, the incremental compiler re-parses modified source code and updates the DOM and/or regenerates affected source code after the DOM is modified. Typically, a token-based parsing of the source code is performed and the result is merged with the existing DOM. Since this operation can be complex, there may be performance problems, such as a user-perceptible delay between modifying the DOM/source code and seeing the change reflected in the corresponding source code/DOM. Further, the incremental compiler can be error-prone and expensive to maintain.
However, for a positional language, synchronization between the DOM and source code can be more efficiently maintained. To this extent, a need exists for an improved solution for maintaining synchronization between source code written in a positional language and a DOM that uses the character position of data in the source code to simplify the synchronization process.
SUMMARY OF THE INVENTION
The invention provides a solution for managing development objects for computer program code. In particular, the invention uses a set (one or more) of synchronizer objects to synchronize data for a development object that comprises source code written in a positional language with data for a development object that comprises a document object module (DOM) that corresponds to the source code. In one embodiment, the DOM includes a model object for each line in the source code, and each model object includes a set of attributes, each of which corresponds to a character range of the line that is defined by the positional language. When a modification to the source code is received, a synchronizer object can update the appropriate attribute of the corresponding model object based on the location of the modification. Similarly, when a modification to an attribute of a model object is received, the synchronizer object can update the appropriate line and character range in the source code based on the attribute's corresponding character range and the model object's corresponding line. To this extent, the synchronizer objects provide an efficient solution for synchronizing source code and a corresponding DOM. Additionally, the synchronizer objects can generate the DOM based on the source code and/or generate the source code based on the DOM. As a result, the invention provides a solution for managing development objects for computer program code that takes advantage of various aspects of a positional language.
A first aspect of the invention provides a method of managing development objects for computer program code, the method comprising: obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtaining a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and using a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
A second aspect of the invention provides a method of managing development objects for computer program code, the method comprising: obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtaining a second development object that comprises a document object model (DOM) that corresponds to the source code, wherein the DOM includes: a set of model objects, wherein each model object corresponds to a unique one of the set of lines; and a set of attributes for each model object, wherein each attribute in the set of attributes corresponds to a character range of the corresponding line; and using a set of synchronizer objects to synchronize the source code and the DOM, wherein each synchronizer object in the set of synchronizer objects corresponds to a unique model object in the set of model objects.
A third aspect of the invention provides a system for managing development objects for computer program code, the system comprising: a system for obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; a system for obtaining a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and a system for using a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
A fourth aspect of the invention provides a program product stored on a computer-readable medium, which when executed, manages development objects for computer program code, the program product comprising: program code for obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; program code for obtaining a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and program code for using a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
A fifth aspect of the invention provides a method of deploying an application for managing development objects for computer program code, the method comprising: providing a computer infrastructure being operable to: obtain a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtain a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and use a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
A sixth aspect of the invention provides computer software embodied in a propagated signal for managing development objects for computer program code, the computer software comprising instructions to cause a computer system to perform the following functions: obtain a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines; obtain a second development object that comprises a document object model (DOM), wherein the DOM includes a set of model objects that corresponds to the set of lines; and use a set of synchronizer objects to synchronize the source code and the DOM based on a set of character ranges defined by the positional language.
A seventh aspect of the invention provides a computer-readable medium that includes computer program code to enable a computer infrastructure to manage development objects for computer program code.
An eighth aspect of the invention provides a business method for managing development objects for computer program code.
A ninth aspect of the invention provides a method of generating a system for managing development objects for computer program code.
The illustrative aspects of the present invention are designed to solve the problems herein described and other problems not discussed, which are discoverable by a skilled artisan.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various embodiments of the invention, in which:
FIG. 1 shows an illustrative system for managing development objects for computer program code;
FIG. 2 shows an illustrative source code editor;
FIG. 3 shows an illustrative structure for a document object model (DOM);
FIG. 4 shows an illustrative DOM having the structure shown in FIG. 3;
FIG. 5 shows an illustrative visual editor;
FIG. 6 shows an illustrative data flow for synchronizing development objects that can be implemented by the various systems of FIG. 1; and
FIG. 7 shows an alternative data flow for synchronizing development objects that can be implemented by the various systems of FIG. 1.
It is noted that the drawings of the invention are not to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
DETAILED DESCRIPTION OF THE INVENTION
As indicated above, the invention provides a solution for managing development objects for computer program code. In particular, the invention uses a set (one or more) of synchronizer objects to synchronize data for a development object that comprises source code written in a positional language with data for a development object that comprises a document object module (DOM) that corresponds to the source code. In one embodiment, the DOM includes a model object for each line in the source code, and each model object includes a set of attributes, each of which corresponds to a character range of the line that is defined by the positional language. When a modification to the source code is received, a synchronizer object can update the appropriate attribute of the corresponding model object based on the location of the modification. Similarly, when a modification to an attribute of a model object is received, the synchronizer object can update the appropriate line and character range in the source code based on the attribute's corresponding character range and the model object's corresponding line. To this extent, the synchronizer objects provide an efficient solution for synchronizing source code and a corresponding DOM. Additionally, the synchronizer objects can generate the DOM based on the source code and/or generate the source code based on the DOM. As a result, the invention provides a solution for managing development objects for computer program code that takes advantage of various aspects of a positional language.
As used herein, the term “development object” includes source code that is used to generate the computer program code. In one embodiment, the source code is stored in one or more files in a file system. In this case, each file could comprise a development object. Additionally, a development object can comprise one or more in-memory objects that are not stored as files. For example, a development object can comprise one or more in-memory objects that correspond to the source code. To this extent, a document object model (DOM) comprises a development object. It is understood that various other objects can comprise development objects. For example, a development object can comprise an object file that is generated based on source code and/or provided as a library/component, an executable file that comprises the computer program code, and/or the like.
Turning to the drawings, FIG. 1 shows an illustrative system 10 for managing development objects for computer program code 54. To this extent, system 10 includes a computer infrastructure 12 that can perform the various process steps described herein for managing the development objects. In particular, computer infrastructure 12 is shown including a computing device 14 comprising a development system 30 that enables computing device 14 to manage the development objects by performing the process steps of the invention.
Computing device 14 is shown including a processor 20, a memory 22, an input/output (I/O) interface 24, and a bus 26. Further, computing device 14 is shown in communication with an external I/O device/resource 28 and a storage system 29. In general, processor 20 executes computer program code, such as development system 30, that is stored in memory 22 and/or storage system 29. While executing computer program code, processor 20 can read and/or write data, such as source code 50, to/from memory 22, storage system 29, and/or I/O interface 24. Bus 26 provides a communication link between each of the components in computing device 14. I/O device 28 can comprise any device that enables user 16 to interact with computing device 14 (e.g., keyboard, pointing device, display, etc.) or any device that enables computing device 14 to communicate with one or more other computing devices (e.g., network card, modem, wireless communications device, etc.).
In any event, computing device 14 can comprise any general purpose computing article of manufacture capable of executing computer program code installed by a user 16 (e.g., a personal computer, server, handheld device, etc.). However, it is understood that computing device 14 and development system 30 are only representative of various possible computing devices that may perform the various process steps of the invention. To this extent, in other embodiments, computing device 14 can comprise any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that comprises a combination of specific purpose and general purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively.
Similarly, computer infrastructure 12 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 12 comprises two or more computing devices (e.g., a server cluster) that communicate over a network, via a shared memory, or the like, to perform the various process steps of the invention. In the former case, the network can comprise one or more types of networks (e.g., the Internet, a wide area network, a local area network, a virtual private network, etc.), and communications between the computing devices may utilize various types of communications links and/or transmission techniques (e.g., wired, wireless, etc.).
As previously mentioned and discussed further below, development system 30 enables computing device 14 to manage development objects (e.g., source code 50, DOM 52, etc.) for computer program code 54. To this extent, development system 30 is shown including a management system 32 that enables user 16 to manage (e.g., add, delete, etc.) various development objects associated with computer program code 54, a text editor system 34 that generates a text editor that enables user 16 to modify source code 50, a visual editor system 36 that generates a visual editor that enables user 16 to modify DOM 52, a synchronization system 38 that maintains synchronization between source code 50 and the corresponding DOM 52, and a translation system 40 that generates computer program code 54. Operation of each of these systems is discussed further below. However, it is understood that some of the various systems shown in FIG. 1 can be implemented independently, combined, and/or stored in memory for one or more separate computing devices 14 that communicate over a network. Further, it is understood that some of the systems and/or functionality may not be implemented, or additional systems and/or functionality may be included as part of system 10.
In one embodiment, development system 30 is embodied as an integrated development environment (IDE) application for a positional language. The IDE application provides a single user interface that allows user 16 to create and modify source code 50, and generate computer program code 54 based on the positional language and source code 50. In particular, the IDE application typically includes one or more editors for editing source code 50, a debugger that assists user 16 in locating and/or correcting any errors, and a compiler that applies the semantics of the positional language to source code 50 to generate computer program code 54. The compiler typically includes a parser that parses source code 50 to generate a DOM 52, and a back-end that generates computer program code 54 based on DOM 52.
To this extent, management system 32 can obtain a set of development objects that comprise source code 50 that is written based on the rules defined by the programming language. Under the present invention, source code 50 is written in a positional language, e.g., Data Description Specifications (DDS). Regardless, management system 32 can generate and/or display a user interface that enables user 16 to add, remove, delete, and/or modify some or all of the set of development objects that comprise source code 50. For example, management system 32 can define and subsequently manage a project that includes a set of files that comprise source code 50. The set of files then can be used to generate computer program code 54. Management system 32 can enable user 16 to define a new project, add and/or remove files from the set of files, and/or allow user 16 to select to view/edit one or more of the set of files as is known in the art.
Source code 50, which is written in a positional language, includes a set (one or more) of lines. In one embodiment, each line is defined by a carriage return and/or line feed included in the data stored in a file. Regardless, each line includes a number of characters, and the position of a particular character (e.g., the column in which the character appears) defines its meaning. When user 16 selects to view/edit source code 50, management system 32 can request that text editor system 34 generate a source code editor for display to user 16.
For example, FIG. 2 shows an illustrative source code editor 60. Referring to FIGS. 1 and 2, text editor system 34 can generate source code editor 60. Subsequently, source code editor 60 can be displayed to user 16 by text editor system 34 and/or provided to another system (e.g., management system 32) for display as is known in the art. In any event, source code editor 60 enables user 16 to view and/or modify data for the set of lines 64 included in source code 50. To this extent, when modifying the data, user 16 can change the data for one or more existing lines 64, add one or more new lines 64, delete one or more lines 64, etc.
When viewing and/or modifying data for the set of lines 64 using source code editor 60, it is important that user 16 (FIG. 1) know the character position of the data. To this extent, source code editor 60 is shown including a row of column indicators 62 that allows user 16 to readily determine the character position (e.g., column) of particular data. However, it is understood that various alternatives are possible. For example, source code editor 60 could display the current column position of a cursor in a status bar or the like. To further assist user 16 in aligning the data, source code editor 60 typically displays source code 50 using a font in which all characters have a uniform width (e.g., courier).
As previously noted, in a positional language, the particular character position (e.g., column) in which data is located determines its meaning. To this extent, line 64 can comprise an illustrative line of data that is entered based on the DDS positional language. In this case, DDS can define that the first character position is used to indicate the type of line. For example, the blank character in the seventeenth character position can identify line 64 as a defining a field within a record. For the field, there can be several different attributes that define it. In particular, the nineteenth through twenty-eighth character positions can comprise a name for the field, the thirtieth through thirty-fourth character positions can comprise a data length for the field, the thirty-fifth character position can comprise a data type for the field, the thirty-sixth and thirty-seventh character positions can comprise a number of decimal positions for the field, the thirty-eighth character position can comprise the input/output (I/O) usage for the field, etc.
Returning to FIG. 1, a DOM 52 that is based on source code 50 can be obtained. In one embodiment, translation system 40 can comprise a parser or the like that generates DOM 52 based on source code 50. FIG. 3 shows an illustrative structure for a DOM 52A. In particular, DOM 52A comprises a hierarchy of nodes that includes a set of model objects 70A, 70B. The set of model objects 70A-B can correspond to the set of lines 64 (FIG. 2) in source code 50 (FIG. 1). In one embodiment, each model object 70A-B corresponds to a unique line 64 in a one-to-one relationship. However, it is understood that various alternatives are possible, for example, a model object 70A-B could correspond to a plurality of lines 64, a line 64 could correspond to a plurality of model objects 70A-B, and the like. Further, a model object 70A-B can comprise one or more model objects 70A-B that are nested in a hierarchical manner as is known in the art. For example, a model object 70A-B that corresponds to a record can contain a set of model objects 70A-B that correspond to each field in the record.
Further, each model object 70A-B in DOM 52A can include a set of attributes 72A, 72B. To this extent, model object 70A is shown including attributes 72A-B. In one embodiment, each attribute 72A-B can correspond to a character range on the line 64 (FIG. 2) that corresponds to model object 70A. In particular, the character range can comprise the entire character range that defines an attribute having a particular meaning in the positional language.
To this extent, FIG. 4 shows an illustrative DOM 152A that can be generated based on source code 50. In particular, DOM 152A is shown including a model object 170A that corresponds to line 64 (FIG. 2). As indicated, model object 170A corresponds to a particular type of line 64, e.g., a named field. To this extent, model object 170A can include a set of attributes 172A-E. Each attribute 172A-E includes data for one of the attributes for the type of line 64. For example, each attribute 172A-E can identify the type of attribute (e.g., name, data length, data type, etc.), the character range that corresponds with the attribute, and the data that is stored on line 64 for the character range.
Returning to FIG. 1, once DOM 52 is generated based on source code 50, translation system 40 can generate computer program code 54 based on DOM 52. In particular, translation system 40 can include a back-end that traverses DOM 52 and generates computer program code 54 in a known manner. However, DOM 52 can also be used to assist user 16 in developing source code 50. To this extent, management system 32 can enable user 16 to select alternative display/editing formats based on DOM 52. In particular, management system 32 can enable user 16 to select one or more types of visual editors that enable user 16 to modify and/or view data stored in DOM 52. When selected, management system 32 can request that visual editor system 36 generate the desired visual editor.
For example, FIG. 5 shows an illustrative visual editor 80 that can be generated by visual editor system 36 (FIG. 1). Subsequently, visual editor 80 can be displayed to user 16 (FIG. 1) by visual editor system 36 and/or provided to another system (e.g., management system 32 of FIG. 1) for display as is known in the art. In any event, visual editor 80 can allow user 16 to modify data for attributes 172A-E in DOM 152A of FIG. 4. As shown in FIG. 5, visual editor 80 can include various attribute names and text boxes that enable user 16 (FIG. 1) to view and/or modify data for attributes 172A-E in a user-friendly manner. It is understood that visual editor 80 is only illustrative and various alternative editors/displays could be used as will be apparent to one knowledgeable in the art.
Returning to FIG. 1, since management system 32 can allow user 16 to view and/or modify data for both source code 50 (e.g., using source code editor 60 of FIG. 2) and DOM 52 (e.g., using visual editor 80 of FIG. 5), it is desirable that a modification to one development object be reflected in the other development object. To this extent, the invention provides an efficient solution for synchronizing source code 50 and DOM 52. In particular, synchronization system 38 uses a set of synchronizer objects that synchronize source code 50 and DOM 52 based on a character range in one of the set of lines in source code 60 and a corresponding one of the set of model objects in DOM 52.
For example, FIG. 6 shows an illustrative data flow for synchronizing source code 50 and DOM 52 that can be implemented by the various systems of FIG. 1. In particular, as previously discussed, text editor system 34 can generate a source code editor 60 that enables user 16 to modify source code 50. Similarly, visual editor system 36 can generate a visual editor 80 that enables user 16 modify DOM 52. Synchronization system 38 can generate a set of synchronizer objects 82A-B that, upon a modification of either source code 50 or DOM 52, update the other development object based on the modification.
In one embodiment, each synchronizer object 82A-B in the set of synchronizer objects corresponds to a unique model object 70A-B in DOM 52 and a unique line 64A-B in source code 50. In this case, synchronization system 38 can receive a modification of data for one of the set of lines 64A-B in source code 50, and provide the modification to the synchronizer object 82A-B that corresponds to the modified line 64A-B in source code 50. Synchronization system 38 can receive the modification using any of various solutions known in the art. For example, synchronization system 38 can monitor the interaction between user 16 and source code editor 60, monitor messages generated by source code editor 60 that implement the modification in source code 50, receive a message from text editor system 34, and the like.
Based on the modification, synchronizer object 82A-B can select an appropriate attribute 72A-B of the corresponding model object 70A-B that requires updating. For example, synchronizer object 82A-B can initially determine a character position of the modification to line 64A-B. Subsequently, synchronizer object 82 can select the attribute 72A-B that corresponds to a character range that includes the character position. Once selected, synchronizer object 82A-B can update the data for the selected attribute 72A-B with the modified data.
Similarly, synchronization system 38 can receive a modification of data for one of the set of attributes 72A-B, e.g., by monitoring interaction between user 16 and visual editor 80, monitoring messages generated by visual editor 80 that implement the modification in DOM 52, receive a message from visual editor system 36, and the like. Regardless, once the modification is received, synchronization system 38 can obtain the model object 70A-B that corresponds to the modified attribute 72A-B, and provide the modification to the synchronizer object 82A-B that corresponds to the model object 70A-B. Based on the modification, synchronizer object 82A-B can select an appropriate line 64A-B in source code 50 that requires updating. Subsequently, synchronizer object 82A-B can update the data for the selected line 64A-B with the modified data. In particular, synchronization system 82A-B can obtain the character range that corresponds to the modified attribute 72A-B and update the character range on line 64A-B with the modified data.
FIG. 7 shows an alternative data flow for synchronizing development objects that can be implemented by the various systems of FIG. 1. In particular, each synchronizer object 82A can comprise a set of attribute entries 83A-B, each of which comprises a mapping between a character range on a corresponding line 64A and an attribute 72A-B in a corresponding model object 70A. In this case, attributes 72A-B of model object 70A can be defined in generic terms (e.g., via a well-defined meta-model). Further, the source code for updating each attribute 72A-B can also be generic. As a result, unique source code does not need to be written to implement each attribute 72A-B. Rather, given a generic attribute identifier, any attribute 72A-B of model object 70A can be generically synchronized with a character range in line 64A. Consequently, synchronizer object 82A can simply become a set of generic attribute entries 83A-B that have been initialized to point to a particular character range on line 64A and a corresponding attribute 72A-B. In one embodiment, a framework for model-driven architecture development, such as the feature identifiers provided by the Eclipse Modeling Framework, can be used to implement this solution.
In addition to maintaining synchronization between source code 50 and DOM 52, synchronization system 38 can use the set of synchronizer objects 82A to generate DOM 52 based on source code 50 and/or generate source code 50 based on DOM 52. For example, synchronization system 38 can receive the data for each line 64A in source code 50, generate a synchronizer object 82A for each line 64A, and provide the data for the line 64A to the synchronizer object 82A. Synchronizer object 82A then can generate a model object 70A and its corresponding set of attributes 72A-B based on the data for the line 64A.
To this extent, synchronization object 82A can determine one of a plurality of types for the line 64A (e.g., based on the data for the seventeenth character position as discussed above). Synchronization object 82A then can select one of a set of model object types in which each model object type corresponds to a unique type of line, and create the new model object 70A having the model object type. Synchronization object 82A can also generate the set of attributes 72A-B associated with the model object type of the new model object 70A. Finally, synchronization object 82A can obtain data for each attribute 72A-B based on the data for the line 64A and the character range for the attribute 72A-B. In particular, synchronization object 82A can determine the character range for an attribute 72A-B, obtain the data for the character range from line 64A, and store the data obtained as the data for the attribute 72A-B.
Additionally, user 16 can request that a new model object 70A be generated using visual editor 80. In this case, synchronization system 38 can generate a new synchronizer object 82A, which in turn can generate the new model object 70A and corresponding attributes 72A-B based on the type of the requested model object 70A. The new model object 70A can include default data for each attribute 72A-B. Further, synchronizer object 82A can create a new line 64A in source code 50 based on the new model object 70A. Subsequently, user 16 can modify the data for one or more attributes 72A-B and synchronizer object 82A can update the data for line 64A based on the modifications.
While shown and described herein as a method and system for managing development objects for computer program code, it is understood that the invention further provides various alternative embodiments. For example, in one embodiment, the invention provides a computer-readable medium that includes computer program code to enable a computer infrastructure to manage the development objects. To this extent, the computer-readable medium includes program code, such as development system 30 (FIG. 1), that implements each of the various process steps of the invention. It is understood that the term “computer-readable medium” comprises one or more of any type of physical embodiment of the program code. In particular, the computer-readable medium can comprise program code embodied on one or more portable storage articles of manufacture (e.g., a compact disc, a magnetic disk, a tape, etc.), on one or more data storage portions of a computing device, such as memory 22 (FIG. 1) and/or storage system 29 (FIG. 1) (e.g., a fixed disk, a read-only memory, a random access memory, a cache memory, etc.), and/or as a data signal traveling over a network (e.g., during a wired/wireless electronic distribution of the program code).
In another embodiment, the invention provides a business method that performs the process steps of the invention on a subscription, advertising, and/or fee basis. That is, a service provider, such as an Internet Service Provider, could offer to manage development objects for computer program code as described above. In this case, the service provider can create, maintain, support, etc., a computer infrastructure, such as computer infrastructure 12 (FIG. 1), that performs the process steps of the invention for one or more customers. In return, the service provider can receive payment from the customer(s) under a subscription and/or fee agreement and/or the service provider can receive payment from the sale of advertising space to one or more third parties.
In still another embodiment, the invention provides a method of generating a system for managing development objects for computer program code. In this case, a computer infrastructure, such as computer infrastructure 12 (FIG. 1), can be obtained (e.g., created, maintained, having made available to, etc.) and one or more systems for performing the process steps of the invention can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer infrastructure. To this extent, the deployment of each system can comprise one or more of (1) installing program code on a computing device, such as computing device 14 (FIG. 1), from a computer-readable medium; (2) adding one or more computing devices to the computer infrastructure; and (3) incorporating and/or modifying one or more existing systems of the computer infrastructure, to enable the computer infrastructure to perform the process steps of the invention.
As used herein, it is understood that the terms “program code” and “computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions intended to cause a computing device having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form. To this extent, program code can be embodied as one or more types of program products, such as an application/software program (e.g., an IDE), component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like.
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to a person skilled in the art are intended to be included within the scope of the invention as defined by the accompanying claims.

Claims (20)

1. A computer implemented method of managing development objects for computer program code, the method comprising:
obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines, and wherein a meaning of a set of characters in a line is defined by a position of the set of characters within the line;
obtaining a second development object that comprises a document object model (DOM), wherein the DOM includes;
a set of model objects that corresponds to the set of lines; and
a set of attributes associated with each model object in the set of model objects, and wherein each attribute in the set of attributes corresponds to a character position range of the corresponding line;
using a set of synchronizer objects to synchronize the source code and the DOM based on a set of character position ranges defined by the positional language;
generating a unique synchronizer object in the set of synchronizer objects for each line in the source code, wherein each synchronizer object in the set of synchronizer objects corresponds to a unique model object in the set of model objects.
2. The method of claim 1, wherein the obtaining a second development object step includes using the set of synchronizer objects to generate the DOM based on the source code.
3. The method of claim 1, further comprising generating the computer program code based on the DOM.
4. The method of claim 1, wherein the using step includes:
receiving a modification of data for one of the set of attributes at the corresponding one of the set of synchronizer objects; and
with the one of the set of synchronizer objects,
selecting one of the set of lines based on the corresponding model object; and
updating the data for the character range that corresponds to the one of the set of attributes on the selected line.
5. The method of claim 1, wherein the using step includes:
receiving a modification of data for one of the set of lines at the corresponding one of the set of synchronizer objects; and
with the one of the set of synchronizer objects,
selecting one of the set of attributes for the corresponding model object based on a character position for the modification and the character position range that corresponds to each of the set of attributes; and
updating the data for the selected one of the set of attributes.
6. A computer implemented method of managing development objects for computer program code, the method comprising:
obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines, and wherein a meaning of a set of characters in a line is defined by a position of the set of characters within the line;
obtaining a second development object that comprises a document object model (DOM) that corresponds to the source code, wherein the DOM includes:
a set of model objects, wherein each model object corresponds to a unique one of the set of lines; and
a set of attributes for each model object, wherein each attribute in the set of attributes corresponds to a character position range of the corresponding line; and
using a set of synchronizer objects to synchronize the source code and the DOM, wherein each synchronizer object in the set of synchronizer objects corresponds to a unique model object in the set of model objects.
7. The method of claim 6, wherein the using step includes:
receiving a modification of data for one of the set of lines at the corresponding one of the set of synchronizer objects; and
with the one of the set of synchronizer objects,
selecting one of the set of attributes for the corresponding model object based on a character position for the modification and the character position range that corresponds to each of the set of attributes; and
updating the data for the selected one of the set of attributes.
8. The method of claim 7, wherein the receiving step includes generating a source code editor for enabling a user to modify data for the set of lines.
9. The method of claim 6, wherein the using step includes:
receiving a modification of data for one of the set of attributes at the corresponding one of the set of synchronizer objects; and
with the one of the set of synchronizer objects,
selecting one of the set of lines based on the corresponding model object; and
updating the data for the character position range that corresponds to the one of the set of attributes on the selected line.
10. The method of claim 9, wherein the receiving step includes generating a visual editor for enabling a user to modify data for the set of attributes.
11. The method of claim 6, further comprising generating the computer program code based on the DOM.
12. The method of claim 6, wherein the obtaining a second development object step includes:
for each line in the set of lines,
generating a synchronizer object for the line;
providing data for the line to the synchronizer object; and
generating a model object and a set of attributes that correspond to the line using the synchronizer object.
13. The method of claim 12, wherein the generating a model object step includes:
selecting one of a set of model object types based on the data;
creating a new model object having the model object type; and
obtaining data for each attribute in the set of attributes for the new model object based on the data for the line and the character position range for the attribute.
14. A system for managing development objects for computer program code, the system including at least one computing device including hardware, the system further comprising:
a system embodied on the at least one computing device for obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines, and wherein a meaning of a set of characters in a line is defined by a position of the set of characters within the line;
a system embodied on the at least one computing device for obtaining a second development object that comprises a document object model (DOM) that corresponds to the source code, wherein the DOM includes;
a set of model objects wherein each model object corresponds to a unique one of the set of lines; and
a set of attributes for each model object, wherein each attribute in the set of attributes corresponds to a character position range of the corresponding line;
a system embodied on the at least one computing device for using a set of synchronizer objects to synchronize the source code and the DOM, wherein each synchronizer object in the set of synchronizer objects corresponds to a unique model object in the set of model objects.
15. The system of claim 14, the at least one computing device further comprising a system for generating a source code editor for enabling a user to modify data for the set of lines.
16. The system of claim 14 the at least one computing device further comprising a system for generating a visual editor for enabling a user to modify data for at least one of the set of model objects.
17. The system of claim 14, wherein the system for obtaining the second development object includes:
a system for generating a set of attributes associated with each model object in the set of model objects; and
a system for obtaining data for each attribute in the set of attributes based on data for a character position range on the corresponding line.
18. The system of claim 14 the at least one computing device further comprising a system for generating the computer program code based on the DOM.
19. A program product stored on one or more storage articles of manufacture, which when executed, manages development objects for computer program code, the program product comprising:
program code for obtaining a first development object that comprises source code for the computer program code, wherein the source code is written in a positional language and includes a set of lines, and wherein a meaning of a set of characters in a line is defined by a position of the set of characters within the line;
program code for obtaining a second development object that comprises a document object model (DOM) that corresponds to the source code, wherein the DOM includes;
a set of model objects wherein each model object corresponds to a unique one of the set of lines; and
a set of attributes for each model object, wherein each attribute in the set of attributes corresponds to a character position range of the corresponding line;
program code for using a set of synchronizer objects to synchronize the source code and the DOM, wherein each synchronizer object in the set of synchronizer objects corresponds to a unique model object in the set of model objects.
20. The program product of claim 19, wherein the program product is embodied as an integrated development environment application for generating computer program code based on the positional language and the source code.
US10/906,872 2005-03-10 2005-03-10 Method and system for managing development objects for computer program code Expired - Fee Related US7480897B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/906,872 US7480897B2 (en) 2005-03-10 2005-03-10 Method and system for managing development objects for computer program code
CNB2006100582116A CN100363892C (en) 2005-03-10 2006-02-24 Method and system for managing development objects for computer program code
JP2006064548A JP2006252557A (en) 2005-03-10 2006-03-09 Method and system for managing development object for computer program code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/906,872 US7480897B2 (en) 2005-03-10 2005-03-10 Method and system for managing development objects for computer program code

Publications (2)

Publication Number Publication Date
US20060206865A1 US20060206865A1 (en) 2006-09-14
US7480897B2 true US7480897B2 (en) 2009-01-20

Family

ID=36972489

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/906,872 Expired - Fee Related US7480897B2 (en) 2005-03-10 2005-03-10 Method and system for managing development objects for computer program code

Country Status (3)

Country Link
US (1) US7480897B2 (en)
JP (1) JP2006252557A (en)
CN (1) CN100363892C (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212843A1 (en) * 2005-03-18 2006-09-21 Essam Zaky Apparatus for analysing and organizing artifacts in a software application
US20070288508A1 (en) * 2006-05-19 2007-12-13 Frank Brunswig Computer software development methods and systems
US20090100405A1 (en) * 2007-10-11 2009-04-16 Microsoft Corporation Synchronizing an abstract model and source code
US20090187882A1 (en) * 2008-01-17 2009-07-23 Microsoft Corporation Live bidirectional synchronizing of a visual and a textual representation
US20100011342A1 (en) * 2008-07-09 2010-01-14 International Business Machines Corporation Service interface creation and modification for object-oriented services
US7681178B1 (en) * 2005-07-22 2010-03-16 Adobe Systems Incorporated Cascading style sheets (CSS) prototype pointer chaining in object-oriented environment
US20120324422A1 (en) * 2011-06-16 2012-12-20 Microsoft Corporation Live browser tooling in an integrated development environment
US8356277B1 (en) 2008-04-04 2013-01-15 Adobe Systems Incorporated System and method for freezing operation of dynamic code of a run-time web page
US8713520B2 (en) * 2008-04-04 2014-04-29 Adobe Systems Incorporated Web development environment that enables a developer to interact with run-time output presentation of a page
US9460224B2 (en) 2011-06-16 2016-10-04 Microsoft Technology Licensing Llc. Selection mapping between fetched files and source files
US9535692B2 (en) 2008-03-14 2017-01-03 Adobe Systems Incorporated Systems and methods for managing related files in a software development environment
US9563714B2 (en) 2011-06-16 2017-02-07 Microsoft Technology Licensing Llc. Mapping selections between a browser and the original file fetched from a web server

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775974B2 (en) * 2005-12-21 2014-07-08 International Business Machines Corporation Multi-contextual delta navigation in a compare view
US7966346B1 (en) * 2006-01-23 2011-06-21 Coverity, Inc. Updating groups of items
CA2564054A1 (en) 2006-10-16 2008-04-16 Research In Motion Limited System and method for updating reference to a data-source in a component-based application
US20080088877A1 (en) * 2006-10-16 2008-04-17 Michael Cacenco System and Method for Updating Reference to a Data-Source In a Component-Based Application
US7904418B2 (en) * 2006-11-14 2011-03-08 Microsoft Corporation On-demand incremental update of data structures using edit list
US7949949B2 (en) * 2006-11-20 2011-05-24 Intentional Software Corporation Domain transformation languages
US7926026B2 (en) * 2006-12-20 2011-04-12 Sap Ag Graphical analysis to detect process object anomalies
US8196100B2 (en) * 2007-04-06 2012-06-05 International Business Machines Corporation Content management system for computer software with dynamic traceability between code and design documents
JP4412674B2 (en) * 2007-04-18 2010-02-10 インターナショナル・ビジネス・マシーンズ・コーポレーション Apparatus and method for supporting model-driven development
JP4971096B2 (en) * 2007-10-12 2012-07-11 株式会社野村総合研究所 Coding support device
JP4971095B2 (en) * 2007-10-12 2012-07-11 株式会社野村総合研究所 Coding support device
US8365140B2 (en) * 2007-12-20 2013-01-29 Hsbc Technologies Inc. Automated methods and systems for developing and deploying projects in parallel
US8135690B2 (en) * 2009-01-05 2012-03-13 Microsoft Corporation Concurrency object classification
US20110173589A1 (en) * 2010-01-13 2011-07-14 Microsoft Corporation Cross-Browser Interactivity Testing
US9176937B2 (en) * 2012-04-05 2015-11-03 International Business Machines Corporation Ensuring user interface specification accurately describes user interface after updates to user interface
US9501263B2 (en) * 2014-12-18 2016-11-22 Oracle International Corporation Automated model derivation and alignment
CN113918427B (en) * 2021-12-14 2023-03-31 阿里云计算有限公司 Data change response method and device

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506580A (en) 1989-01-13 1996-04-09 Stac Electronics, Inc. Data compression apparatus and method
US6182281B1 (en) 1996-05-01 2001-01-30 International Business Machines Corporation Incremental compilation of C++ programs
US6367068B1 (en) 1998-11-13 2002-04-02 Microsoft Corporation Dynamic parsing
US20020181507A1 (en) 2001-06-01 2002-12-05 Jones Clifton T. System and method of incremental parsing
US20020184264A1 (en) * 2001-05-31 2002-12-05 Daniel Berg Method and apparatus for synchronizing an XML document with its object model
US20030023615A1 (en) 2001-07-25 2003-01-30 Gabriel Beged-Dov Hybrid parsing system and method
US20030074187A1 (en) 2001-10-10 2003-04-17 Xerox Corporation Natural language parser
US20040085228A1 (en) 2002-10-30 2004-05-06 International Business Machines Corporation Polynomial-time, sequential, adaptive system and method for lossy data compression
US20040153994A1 (en) 2003-01-31 2004-08-05 International Business Machines Corporation Tracking and maintaining related and derivative code
US20060069989A1 (en) * 2004-09-30 2006-03-30 Microsoft Corporation Method and apparatus for utilizing an object model for managing content regions in an electronic document
US20060080603A1 (en) * 2004-09-30 2006-04-13 Microsoft Corporation Method and apparatus for utilizing an object model to manage document parts for use in an electronic document

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675354B1 (en) * 1999-11-18 2004-01-06 International Business Machines Corporation Case-insensitive custom tag recognition and handling
US20040168124A1 (en) * 2001-06-07 2004-08-26 Michael Beisiegel System and method of mapping between software objects & structured language element-based documents

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5506580A (en) 1989-01-13 1996-04-09 Stac Electronics, Inc. Data compression apparatus and method
US6182281B1 (en) 1996-05-01 2001-01-30 International Business Machines Corporation Incremental compilation of C++ programs
US6367068B1 (en) 1998-11-13 2002-04-02 Microsoft Corporation Dynamic parsing
US20020184264A1 (en) * 2001-05-31 2002-12-05 Daniel Berg Method and apparatus for synchronizing an XML document with its object model
US20020181507A1 (en) 2001-06-01 2002-12-05 Jones Clifton T. System and method of incremental parsing
US20030023615A1 (en) 2001-07-25 2003-01-30 Gabriel Beged-Dov Hybrid parsing system and method
US20030074187A1 (en) 2001-10-10 2003-04-17 Xerox Corporation Natural language parser
US20040085228A1 (en) 2002-10-30 2004-05-06 International Business Machines Corporation Polynomial-time, sequential, adaptive system and method for lossy data compression
US20040153994A1 (en) 2003-01-31 2004-08-05 International Business Machines Corporation Tracking and maintaining related and derivative code
US20060069989A1 (en) * 2004-09-30 2006-03-30 Microsoft Corporation Method and apparatus for utilizing an object model for managing content regions in an electronic document
US20060080603A1 (en) * 2004-09-30 2006-04-13 Microsoft Corporation Method and apparatus for utilizing an object model to manage document parts for use in an electronic document

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212843A1 (en) * 2005-03-18 2006-09-21 Essam Zaky Apparatus for analysing and organizing artifacts in a software application
US8010946B2 (en) * 2005-03-18 2011-08-30 Oracle International Corporation Apparatus for analysing and organizing artifacts in a software application
US7681178B1 (en) * 2005-07-22 2010-03-16 Adobe Systems Incorporated Cascading style sheets (CSS) prototype pointer chaining in object-oriented environment
US20070288508A1 (en) * 2006-05-19 2007-12-13 Frank Brunswig Computer software development methods and systems
US7770146B2 (en) * 2006-05-19 2010-08-03 Sap Ag Computer software development incorporating core and compound services
US20090100405A1 (en) * 2007-10-11 2009-04-16 Microsoft Corporation Synchronizing an abstract model and source code
US8996349B2 (en) * 2007-10-11 2015-03-31 Microsoft Technology Licensing, Llc Synchronizing an abstract model and source code
US20090187882A1 (en) * 2008-01-17 2009-07-23 Microsoft Corporation Live bidirectional synchronizing of a visual and a textual representation
US8166449B2 (en) * 2008-01-17 2012-04-24 Microsoft Corporation Live bidirectional synchronizing of a visual and a textual representation
US9535692B2 (en) 2008-03-14 2017-01-03 Adobe Systems Incorporated Systems and methods for managing related files in a software development environment
US8356277B1 (en) 2008-04-04 2013-01-15 Adobe Systems Incorporated System and method for freezing operation of dynamic code of a run-time web page
US8713520B2 (en) * 2008-04-04 2014-04-29 Adobe Systems Incorporated Web development environment that enables a developer to interact with run-time output presentation of a page
US20100011342A1 (en) * 2008-07-09 2010-01-14 International Business Machines Corporation Service interface creation and modification for object-oriented services
US9639331B2 (en) * 2008-07-09 2017-05-02 International Business Machines Corporation Service interface creation and modification for object-oriented services
US11144307B2 (en) 2008-07-09 2021-10-12 International Business Machines Corporation Service interface creation and modification for object-oriented services
US20120324422A1 (en) * 2011-06-16 2012-12-20 Microsoft Corporation Live browser tooling in an integrated development environment
US9460224B2 (en) 2011-06-16 2016-10-04 Microsoft Technology Licensing Llc. Selection mapping between fetched files and source files
US9563714B2 (en) 2011-06-16 2017-02-07 Microsoft Technology Licensing Llc. Mapping selections between a browser and the original file fetched from a web server
US9753699B2 (en) * 2011-06-16 2017-09-05 Microsoft Technology Licensing, Llc Live browser tooling in an integrated development environment
US10447764B2 (en) 2011-06-16 2019-10-15 Microsoft Technology Licensing, Llc. Mapping selections between a browser and the original fetched file from a web server
US10594769B2 (en) 2011-06-16 2020-03-17 Microsoft Technology Licensing, Llc. Selection mapping between fetched files and source files

Also Published As

Publication number Publication date
CN100363892C (en) 2008-01-23
CN1831766A (en) 2006-09-13
JP2006252557A (en) 2006-09-21
US20060206865A1 (en) 2006-09-14

Similar Documents

Publication Publication Date Title
US7480897B2 (en) Method and system for managing development objects for computer program code
US8667456B1 (en) Cloud-based indexing for integrated development environments
US20080263101A1 (en) Data Processing Device and Data Processing Method
US8433687B1 (en) Off-line indexing for client-based software development tools
US7680823B2 (en) Custom report generation
US20070033518A1 (en) Computer-implemented method, system, and program product for hiding columns in an electronic table
US20150199318A1 (en) System and Method for Using a Third-Party Add-On in a Collaborative On-Line Software Development Environment
US20150199270A1 (en) System and Method for Performing Data Management in a Collaborative Development Environment
JP2003345717A (en) Method and device for reediting and redistributing web document
US20050114479A1 (en) System and method for hierarchically representing configuration items
US9229920B1 (en) Compound undo/redo manager for mixed model edits
US7703026B2 (en) Non-pattern based user interface in pattern based environment
US9817811B2 (en) Web server system, dictionary system, dictionary call method, screen control display method, and demonstration application generation method
US20080209572A1 (en) Data Processing System, Data Processing Method, and Management Server
EP1830275A1 (en) Information distribution system
US7805452B2 (en) Data processing device and data processing method
US20050289450A1 (en) User interface virtualization
CN115543282A (en) Page code generation method and device, storage medium and computer equipment
WO2007081017A1 (en) Document processor
JPWO2005098658A1 (en) Document processing apparatus and document processing method
US7480673B2 (en) Optimized computer diagramming method
US20080005136A1 (en) Data Processing Device, Document Processing Device, and Document Processing Method
US7716653B2 (en) Configurable importers and resource writers for converting data into another format
CA2255020A1 (en) Multiple language support for component-based systems
US20080147957A1 (en) Archiver Device, Data Acquisition Device, and Data Acquisition Method

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:REINHARDT, EDMUND H.;LUK, STELLA;REEL/FRAME:015755/0659;SIGNING DATES FROM 20050303 TO 20050309

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 4

SULP Surcharge for late payment
REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20170120