US20040181780A1 - System for configuation programming - Google Patents
System for configuation programming Download PDFInfo
- Publication number
- US20040181780A1 US20040181780A1 US10/471,207 US47120704A US2004181780A1 US 20040181780 A1 US20040181780 A1 US 20040181780A1 US 47120704 A US47120704 A US 47120704A US 2004181780 A1 US2004181780 A1 US 2004181780A1
- Authority
- US
- United States
- Prior art keywords
- data
- model
- service
- application
- models
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Definitions
- the invention relates to application software and systems for creating software applications. More particularly, it relates to a data model oriented system, which allows rapid creation of software applications based upon modules for handling a finite set of data patterns.
- FIG. 1 illustrates a traditional approach to application programming which incorporates specific programming with third party resources and tools 130 .
- Tools and resources 130 may include other programs, communication capabilities and/or specific hardware to be utilized with the application.
- application programming is functionality driven. The programmer seeks to create certain functions to be performed by the application. The functions depend upon the hardware and software resources which are to be utilized by the application. In this regard, the application is platform dependent because it is developed for a specific programming environment. The functions then need to be coordinated with the data of the application. The coordination is typically done by creating and initializing specific data structures within the programming of the application.
- FIG. 1 illustrates a data centric understanding of traditional application programming.
- the data to be created, modified or utilized by the application is represented as various application data models 110 .
- the functionality of the application requires a set of interfaces 120 between the application data models 110 and resources and tools 130 that provide the functionality.
- database interface programming is required to interface with each database
- Graphic User Interface (GUI) programming is required to interface with each GUI
- transport interface programming is required to interface with each transport tool
- the resources and tools 130 utilized in the application come in various forms and choices and require the interface programming 120 to be specific to those forms or choices.
- the application model may use one or more popular transport tools such as Java Messaging Service (JMS), e-mail, fax, and File Transfer Protocol (FTP).
- JMS Java Messaging Service
- FTP File Transfer Protocol
- Each transport tool has a specific Application Program Interface (API).
- API Application Program Interface
- the interface programming 120 needs to be specific to the application data models 110 .
- the data definitions are part of the application code, any changes have to be made with lines of code, which must be compiled and debugged before it can be used.
- additional programming is required to convert data in an old format to a new format required by the changed application program.
- a programmer usually needs to understand the operating and programming environment of the resources and tools to interface with them. This typically requires a highly specialized and skilled programmer(s) to perform the various tasks of programming. Highly skilled programmers are difficult to train and retain. In addition, the various but disparate programs need to operate homogeneously for the application model to operate smoothly with the various resources and tools. However, such integration is difficult to achieve and exemplifies the development complexity of interfacing one or more application models to the various resources and tools.
- the deficiencies of the prior art are substantially overcome by the present invention which provides a data model based system for programming.
- the system of the present invention is based upon a fixed set of data patterns or objects: primitive, class and object array.
- the data patterns can also be recursively defined.
- a set of service modules is created for performing various functions with respect to different data patterns.
- the service modules are organized to provide program flow from one module to another.
- a data model is created which represents all of the data of the application as corresponding data patterns.
- the service modules are then selected and organized to provide desired functionality in conjunction with the data model. In this manner, applications can be created quickly from preexisting modules.
- the modules provide the interaction between data and resources.
- the application is resource independent.
- a change in a resource such as a hardware platform, merely requires selection of an appropriate module for interfacing with that resource.
- the system of the present invention further uses a hierarchical approach for organizing modules to allow enhanced use for rapid software creation. Thus, many functions can be performed without limitations from the specific resources of the system.
- FIG. 1 is a schematic diagram illustrating a conventional approach to interfacing application models having data models to various third party resources and tools;
- FIG. 2 is a schematic diagram of a development platform for application creation in accordance with an embodiment of the invention.
- FIG. 3 is a schematic diagram of a module for creating a data model in accordance with an embodiment of the invention.
- FIG. 4 is a schematic diagram of an object API module in accordance with an embodiment of the invention.
- FIG. 5 illustrates an example of an event driven flow in accordance with an embodiment of the invention.
- the present invention is a data-oriented system for rapid creation of application programs.
- the system is based upon the principle that all data can be modeled by a finite set of data patterns.
- Stored service object modules provide desired functionality based upon the known data patterns.
- the service objects maintain the interfaces to desired resources and provide a unified interface.
- the creator only needs to create a data model of the application data based upon the finite set of data patterns, select appropriate service object modules for providing desired functionality, and determine the flow or order of operation of the service objects. If specific functionality is required beyond that provided by exiting service object, new service objects can be created. The new service objects become part of the system and can be utilized for future programming.
- service objects defining functions to be performed on the object models of the data model
- the data model describes data structures representing the application data based upon basic data patterns.
- the service objects which are software components, provide the functional or business processes of the application. These software components are linked into a flow to invoke services and/or to operate on the data and interface with resources.
- the manner in which the software components are linked is the flow logic of the application model.
- Results of the functional or business processes performed on the data model can be presented in a form compatible to a physical device (such as a computer monitor or a printer) or in a form compatible to an application software in memory.
- the components and operation of an application program according to the present invention can be better understood in relation to the process for creating the application program.
- a classifier defines a data model as a specific set of object models corresponding to application data based upon a finite number of basic data patterns.
- the object models define all application data within the limitations of the basic data patterns.
- the object models can be defined recursively to create complex data structures using the basic data patterns.
- the development platform has a set of selectable service objects that perform various functions/services on object models. At run time, the service objects recognize the basic data patterns within an object model and selectively operate in accordance with the defined the basic data patterns. Since the operation of the service objects is independent of the application data, changes in application data does not require changes to the service objects.
- the service objects usually represent functions/services that provide for the interfacing with the various third party resources and tools.
- the bridge between the development platform and the Application Programming Interfaces (APIs) of the third party resources and tools can be performed by storing and implementing service objects that are compatible with the third party APIs and are also compatible with the defined object model of the data model.
- FIG. 2 illustrates a development platform 200 according to an embodiment of the present invention.
- the development platform 200 can be used to create application software in accordance with an embodiment of the present invention.
- the development platform 200 has two principal components, an object development module 210 and an object application programs interface (API) module 220 .
- the development platform 200 may be implemented as software/firmware embedded in a processor executable medium such as Read Only Memory (ROM), Random Access Memory (RAM), Flash memory, magnetic and optical disk and disk drives and the like.
- the development platform 200 may also be implemented in hardware such as application specific integrated circuit (ASIC) and the like.
- the processor executable medium also includes carrier signals containing processor executable instructions therein.
- the object development module 210 translates the data of an application model 110 in a manner that is generic to the development platform 200 .
- the data model of the application model is defined as a set of object models based upon basic data patterns. The classification method will be described with reference to FIG. 3. This allows various functions of the object API module 220 to be applied to the object models based on the basic patterns.
- the object development module 210 creates a data dictionary 230 which defines the object models.
- FIG. 3 illustrates a process for creation of the data dictionary 230 .
- the process includes a classifier 232 , a data dictionary database 234 and a data dictionary manager 236 .
- the data dictionary 230 is developed to represent the data for specified application data.
- a data model 310 can be defined from a potentially infinite number of possible data formats. However, in accordance with the invention, these possible data formats can be classified as object models 330 .
- the object models are based upon a finite number of basic data patterns recognized in the development platform 200 .
- the classifier 232 performs this task by classifying a data model 310 into a set of object models 330 having the following basic data patterns:
- a primitive represents a basic element. It can be data such as Boolean, Short, Integer, Long, Float, Double, Date, Time, Date & Time, Currency, Business Calendar, Alphanumeric Characters, Big Integer and so forth.
- a class represents structured data. It is composed of multiple attributes, each of which is also one of the basic data patterns.
- An object array is an array with a set of objects, all having the same basic data pattern, as its child elements. It should be noted that a characteristic of the class and object array types is their recursive nature.
- An attribute of a class or element of an object array can be another class or object array. This recursiveness of certain object types provide for creation of a complex data model from a finite set of basic data patterns.
- the classifier 232 can operate in various ways. It can be a program which receives information regarding the data model 310 corresponding to the application model 110 and automatically map the data model 310 to an appropriate set of object models 330 . Alternatively, a programmer could simply use a text editor program to enter information defining the object models 330 in a format recognized by the system.
- the development platform 200 includes an interactive program to aid a user in creating appropriate object models 330 for a data model 310 .
- the object models 330 are stored in the data dictionary database 234 .
- the data dictionary database may take many forms.
- An example of the data dictionary database 234 with definitions for different object models 330 is provided in the appendix hereto.
- the object models 330 in the data dictionary database 234 must be uniquely identified so that they can be properly accessed. The unique identification can be done with a unique name or a unique identification number (ID) in the data dictionary database 234 .
- ID unique identification number
- the object API module 220 can now be utilized to select and organize the various functions to be performed on the data of the object models 330 .
- FIG. 4 illustrates service objects within the object API module 220 .
- the service objects comprise device manager sub-modules 410 1 - 410 N that are functional/business blocks to perform a function or a process on data of the object models 330 .
- the service objects of the object API module 220 are a collection of device managers 410 1 - 410 N that have adopted many system functions and third party APIs to build a layer of service objects 420 1 - 420 M that performs functions/services on the object models 330 .
- a finite number of services is identified for each resource or tool (e.g., graphic user interface (GUI), database, transport, transaction and etc.) and a service object 420 1 - 420 M is created for each service that a device manager 410 1 - 410 N is to provide.
- GUI graphic user interface
- Each service object 420 1 - 420 M is designed to perform a particular service one of the object models 330 .
- One feature of the service object 420 1 - 420 M is that it performs a function/service on one or more object models 330 based on the pattern information of the object models 330 from the data dictionary database 234 .
- the object API module 220 calls the data dictionary manager 236 , which manages all the object models 330 that are stored in the data dictionary database 234 .
- the object API module 220 accesses the object models 330 in the data dictionary database 234 which are relevant to the operation of the service object to determine the data patterns of those object model 330 . Once the determination is made, the object API module 220 passes the data patterns to the pertinent service object that is to perform the functional/service process.
- a service object 420 1 - 420 M having a finite set of functions/services can be designed to address each possible data pattern of the object models 330 . Therefore, once the data pattern of an object model 330 has been identified, a dispatching takes place within the service object 420 1 - 420 M to perform an appropriate function/service process for the data pattern of a particular object model 330 . Since object models 330 can be defined recursively, the appropriate function/service process could also be recursive.
- the object model 330 is processed based on the identified pattern, a change in the object model 330 will be recognized by the object API module 220 at runtime when it interrogates the data dictionary database 234 via the data dictionary manager 236 and this information is passed to the service object 420 1 - 420 M prior to the service object's 420 1 - 420 M performance.
- the service object 420 1 - 420 M being informed of the changed pattern processes the object model 330 in accordance with the changed pattern. This feature is advantageous in that it allows the data model 310 (and thus, the separate object models 330 ) to be dynamically altered, which will be detected and the object models 330 are processed accordingly.
- the service object 420 1 - 420 M performing processes on an object model 330 will recognize the current data patterns and dynamically alter its process to adapt to the modified object model 330 .
- the features described above allows for the runtime re-configuration of the data model 310 of the application model 110 , which is advantageous over a previously known method that requires the program codes to be re-programmed, linked, compiled and debugged whenever the data model 310 is modified.
- Another aspect of the invention is the event driven approach between the application model 110 and the service objects 420 1 - 420 M , or program flow.
- the data model 310 in object model 330 form
- associated service objects 420 1 - 420 M are configured based on flow to link services, where various utility functions (business functions) that are performed on the object model 330 are event driven by data change and/or event and not code driven as in previously known programming approaches.
- the object models 330 and service objects 420 1 - 420 M are linked such that one or more data changes in an object model 330 causes specified service objects 420 1 - 420 M to be notified of the data changes.
- the object model 530 may include a data change registry 532 that provides for any service object (such as service object A) to register for notification on various data changes.
- service object A service object A
- the service object determines if the data change is a change that requires processing. If the service object so determines then the service object performs a process based on the data change.
- the object model notifies the relevant service objects of the data change but does not actively cause the service objects to perform a process due to the data change. Instead, the service object makes that determination upon receiving notification.
- a process performed by the service object may also cause a data change that affects other service objects (such as service object B).
- the service object may be configured to trigger a notification to other service objects upon execution or completion.
- a flow process of an event driven approach is illustrated in accordance with the invention.
- a data change has occurred in the object model 530 .
- the object model 530 accesses the data change registry 532 to determine which service objects should be notified of the data change (the service objects have previously registered for notification of the various data changes). Once the determination is made, the object model 530 notifies the pertinent service objects of the data change.
- service object A receives notification that a data change has occurred. The service object A determines whether the data change requires performance of a process and if so, service object A performs the process.
- the service object A outputs the result of the process which may have caused further data change in the object model and may affect other service objects.
- the object model A reviews its data change registry to determine if the data change requires notification to other service objects.
- the service object A determines that service object B requires notification and notifies service object B of the data change.
- the service object B receives a notification from service object A and determines whether the data change is of the type that requires processing. If so, the function B block performs the required process and outputs the result of the process. This flow process may be repeated for other service objects until the flow process triggered by the data change has been satisfied.
- the object API Module 220 interface bridges with the specific APIs of the resources and tools of the third party.
- the classification method e.g., primitive, class, object array
- the classification method is iterated against the third party APIs to determine which object models are recognized by the third party APIs.
- the classification method is iterated against a transport tool JMS, wherein a list of object models that are recognized by the JMS is compiled and device drivers based on the object models are built and stored within the object API module.
- the object API module determines which device driver can be used to allow the object model to be interfaced.
- the object models that allow for the interface with JMS may be stored in the object API module and when an object model of a data model is to be interfaced with JMS, the classifier begins an iteration process on the object model that transforms the object model pattern into one recognized by the JMS. The transformed model is then interfaced with JMS.
- a fixed pattern of input and output parameters can be defined so that all the service objects have uniform APIs, thereby significantly simplifying the programming logic.
- a programming tool may take a data model of the application model and perform an iterative process using classification of primitive, class and object array to define a pattern that describes the data model, which is stored in the data dictionary as an object model.
- a complete change in the data model may require the re-use of the programming tool to define an object model; however certain alterations and modifications may be performed by a data dictionary Editor that implements the changes during the runtime.
- the service objects may be displayed in templates of a GUI that are dragged and dropped into programs during creation of the application module.
- the language that is used to construct an application model may be Extensible Markup Language (XML) but other languages may be used to construct the application model.
- the present invention is not limited to a development platform which operates as described above. Rather, any development process can be used within the meaning of the present invention which creates a set of object models for representing data and a set of service objects for performing functions with respect to the object models.
- Embodiments of the invention provides various benefits such as reduced programming time, reduced programming code size and programming may be performed by less specialized programmers. Having thus far described at least one illustrative embodiment of the invention, various alterations, modifications and improvements will readily occur to those skilled in the art. Such alterations, modifications and improvements are intended to be within the scope and spirit of the invention. Accordingly, the foregoing description is by way of example only and is not intended as limiting. Accordingly, the invention is defined by the following claims and equivalents thereof.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
In a development platform, a classifier for a given application defines a data model of an aplication model as a pattern (an object model) from a finite number of patterns (object models) that represent the possible permutations of data models. In addition, the development platform has a finite number of service objects that perform various functions/services on the object model from which the application model adopts one or more service objects. The object models and the service objects are generic to the development platform and usually a set of finite number of object models and a set of finite number of service objects can interface the application model with the various third party resources and tools.
Description
- 1. Field of the Invention
- The invention relates to application software and systems for creating software applications. More particularly, it relates to a data model oriented system, which allows rapid creation of software applications based upon modules for handling a finite set of data patterns.
- 2. Discussion of the Related Art
- Generally, systems for creating software applications require extensive time from highly experienced programmers. Each part or feature of a software application has to be designed, coded, compiled, and debugged. Then, the parts have to be tested to ensure that they operate together. Since most applications included may different parts, the procedure is very complex. Many applications also need to operate with existing third party resources and tools. In creating a software application, interfaces must be created for each third party resource or tool. Furthermore, a software application is dependent upon a specific platform or operating environment. In order to transfer the application to another platform requires complete reprogramming.
- FIG. 1 illustrates a traditional approach to application programming which incorporates specific programming with third party resources and
tools 130. Tools andresources 130 may include other programs, communication capabilities and/or specific hardware to be utilized with the application. Typically, application programming is functionality driven. The programmer seeks to create certain functions to be performed by the application. The functions depend upon the hardware and software resources which are to be utilized by the application. In this regard, the application is platform dependent because it is developed for a specific programming environment. The functions then need to be coordinated with the data of the application. The coordination is typically done by creating and initializing specific data structures within the programming of the application. - FIG. 1 illustrates a data centric understanding of traditional application programming. In this
known system 100, the data to be created, modified or utilized by the application is represented as variousapplication data models 110. The functionality of the application requires a set ofinterfaces 120 between theapplication data models 110 and resources andtools 130 that provide the functionality. For example, database interface programming is required to interface with each database; Graphic User Interface (GUI) programming is required to interface with each GUI; transport interface programming is required to interface with each transport tool; and so forth. The resources andtools 130 utilized in the application come in various forms and choices and require theinterface programming 120 to be specific to those forms or choices. For example, in choosing a transport, the application model may use one or more popular transport tools such as Java Messaging Service (JMS), e-mail, fax, and File Transfer Protocol (FTP). Each transport tool has a specific Application Program Interface (API). Furthermore, theinterface programming 120 needs to be specific to theapplication data models 110. Thus, if changes are made to theapplication data models 110, then corresponding changes are required for all of theinterface programming 120 for that application. Since the data definitions are part of the application code, any changes have to be made with lines of code, which must be compiled and debugged before it can be used. Also, additional programming is required to convert data in an old format to a new format required by the changed application program. - A programmer usually needs to understand the operating and programming environment of the resources and tools to interface with them. This typically requires a highly specialized and skilled programmer(s) to perform the various tasks of programming. Highly skilled programmers are difficult to train and retain. In addition, the various but disparate programs need to operate homogeneously for the application model to operate smoothly with the various resources and tools. However, such integration is difficult to achieve and exemplifies the development complexity of interfacing one or more application models to the various resources and tools.
- Therefore, a need exists for a data independent, application programming system which does not require reprogramming based upon data changes. A need exists for a system which simplifies the programming process to allow reuse of previously created code. A need further exists for a system which is platform independent. A need exists for a system which allows common interfaces with third party resources.
- The deficiencies of the prior art are substantially overcome by the present invention which provides a data model based system for programming. The system of the present invention is based upon a fixed set of data patterns or objects: primitive, class and object array. The data patterns can also be recursively defined. A set of service modules is created for performing various functions with respect to different data patterns. The service modules are organized to provide program flow from one module to another. In order to create an application within the system of the present invention, a data model is created which represents all of the data of the application as corresponding data patterns. The service modules are then selected and organized to provide desired functionality in conjunction with the data model. In this manner, applications can be created quickly from preexisting modules.
- Furthermore, in the system of the present invention, the modules provide the interaction between data and resources. In this manner, the application is resource independent. A change in a resource, such as a hardware platform, merely requires selection of an appropriate module for interfacing with that resource. The system of the present invention further uses a hierarchical approach for organizing modules to allow enhanced use for rapid software creation. Thus, many functions can be performed without limitations from the specific resources of the system.
- For better understanding of the invention, reference is made to the drawings which are incorporated herein by reference and in which:
- FIG. 1 is a schematic diagram illustrating a conventional approach to interfacing application models having data models to various third party resources and tools;
- FIG. 2 is a schematic diagram of a development platform for application creation in accordance with an embodiment of the invention;
- FIG. 3 is a schematic diagram of a module for creating a data model in accordance with an embodiment of the invention;
- FIG. 4 is a schematic diagram of an object API module in accordance with an embodiment of the invention; and
- FIG. 5 illustrates an example of an event driven flow in accordance with an embodiment of the invention.
- The present invention is a data-oriented system for rapid creation of application programs. The system is based upon the principle that all data can be modeled by a finite set of data patterns. Stored service object modules provide desired functionality based upon the known data patterns. The service objects maintain the interfaces to desired resources and provide a unified interface. In order to create an application in accordance with the present invention, the creator only needs to create a data model of the application data based upon the finite set of data patterns, select appropriate service object modules for providing desired functionality, and determine the flow or order of operation of the service objects. If specific functionality is required beyond that provided by exiting service object, new service objects can be created. The new service objects become part of the system and can be utilized for future programming.
- In general, the components that comprise an application program according to the present invention are:
- a data model;
- service objects defining functions to be performed on the object models of the data model; and
- flow logic linking the service objects and object models to perform utility functions (or business functions).
- The data model describes data structures representing the application data based upon basic data patterns. The service objects, which are software components, provide the functional or business processes of the application. These software components are linked into a flow to invoke services and/or to operate on the data and interface with resources. The manner in which the software components are linked is the flow logic of the application model. Results of the functional or business processes performed on the data model can be presented in a form compatible to a physical device (such as a computer monitor or a printer) or in a form compatible to an application software in memory. The components and operation of an application program according to the present invention can be better understood in relation to the process for creating the application program.
- In a development platform of the present invention, a classifier defines a data model as a specific set of object models corresponding to application data based upon a finite number of basic data patterns. The object models define all application data within the limitations of the basic data patterns. Furthermore, the object models can be defined recursively to create complex data structures using the basic data patterns. In addition, the development platform has a set of selectable service objects that perform various functions/services on object models. At run time, the service objects recognize the basic data patterns within an object model and selectively operate in accordance with the defined the basic data patterns. Since the operation of the service objects is independent of the application data, changes in application data does not require changes to the service objects. The service objects usually represent functions/services that provide for the interfacing with the various third party resources and tools. The bridge between the development platform and the Application Programming Interfaces (APIs) of the third party resources and tools can be performed by storing and implementing service objects that are compatible with the third party APIs and are also compatible with the defined object model of the data model.
- FIG. 2 illustrates a
development platform 200 according to an embodiment of the present invention. Thedevelopment platform 200 can be used to create application software in accordance with an embodiment of the present invention. As shown in FIG. 2, thedevelopment platform 200 has two principal components, anobject development module 210 and an object application programs interface (API)module 220. Thedevelopment platform 200 may be implemented as software/firmware embedded in a processor executable medium such as Read Only Memory (ROM), Random Access Memory (RAM), Flash memory, magnetic and optical disk and disk drives and the like. Thedevelopment platform 200 may also be implemented in hardware such as application specific integrated circuit (ASIC) and the like. The processor executable medium also includes carrier signals containing processor executable instructions therein. - The
object development module 210 translates the data of anapplication model 110 in a manner that is generic to thedevelopment platform 200. In particular, the data model of the application model is defined as a set of object models based upon basic data patterns. The classification method will be described with reference to FIG. 3. This allows various functions of theobject API module 220 to be applied to the object models based on the basic patterns. - With reference to FIG. 3 in conjunction with FIG. 2, the
object development module 210 creates adata dictionary 230 which defines the object models. FIG. 3 illustrates a process for creation of thedata dictionary 230. The process includes aclassifier 232, adata dictionary database 234 and adata dictionary manager 236. Thedata dictionary 230 is developed to represent the data for specified application data. Turning to theclassifier 232, generally adata model 310 can be defined from a potentially infinite number of possible data formats. However, in accordance with the invention, these possible data formats can be classified asobject models 330. The object models are based upon a finite number of basic data patterns recognized in thedevelopment platform 200. Theclassifier 232 performs this task by classifying adata model 310 into a set ofobject models 330 having the following basic data patterns: - primitive;
- class; and
- object array.
- A primitive represents a basic element. It can be data such as Boolean, Short, Integer, Long, Float, Double, Date, Time, Date & Time, Currency, Business Calendar, Alphanumeric Characters, Big Integer and so forth. A class represents structured data. It is composed of multiple attributes, each of which is also one of the basic data patterns. An object array is an array with a set of objects, all having the same basic data pattern, as its child elements. It should be noted that a characteristic of the class and object array types is their recursive nature. An attribute of a class or element of an object array can be another class or object array. This recursiveness of certain object types provide for creation of a complex data model from a finite set of basic data patterns.
- Using the classification method described above, a finite number of possible data patterns used to define a
data model 310 that can have a potentially infinite number of possible variations. Thus, only a finite number of data patterns in theobject models 330 need to be interpreted. Theclassifier 232 can operate in various ways. It can be a program which receives information regarding thedata model 310 corresponding to theapplication model 110 and automatically map thedata model 310 to an appropriate set ofobject models 330. Alternatively, a programmer could simply use a text editor program to enter information defining theobject models 330 in a format recognized by the system. Preferably, thedevelopment platform 200 includes an interactive program to aid a user in creatingappropriate object models 330 for adata model 310. - Once properly classified, the
object models 330 are stored in thedata dictionary database 234. Again, the data dictionary database may take many forms. An example of thedata dictionary database 234 with definitions fordifferent object models 330 is provided in the appendix hereto. Theobject models 330 in thedata dictionary database 234 must be uniquely identified so that they can be properly accessed. The unique identification can be done with a unique name or a unique identification number (ID) in thedata dictionary database 234. - With the
object models 330 stored in thedata dictionary database 234, theobject API module 220 can now be utilized to select and organize the various functions to be performed on the data of theobject models 330. - FIG. 4 illustrates service objects within the
object API module 220. The service objects comprise device manager sub-modules 410 1-410 N that are functional/business blocks to perform a function or a process on data of theobject models 330. Generally, the service objects of theobject API module 220 are a collection of device managers 410 1-410 N that have adopted many system functions and third party APIs to build a layer of service objects 420 1-420 M that performs functions/services on theobject models 330. Specifically, a finite number of services is identified for each resource or tool (e.g., graphic user interface (GUI), database, transport, transaction and etc.) and a service object 420 1-420 M is created for each service that a device manager 410 1-410 N is to provide. Each service object 420 1-420 M is designed to perform a particular service one of theobject models 330. - One feature of the service object420 1-420 M is that it performs a function/service on one or
more object models 330 based on the pattern information of theobject models 330 from thedata dictionary database 234. During operation, prior to the performance of a service object, theobject API module 220 calls thedata dictionary manager 236, which manages all theobject models 330 that are stored in thedata dictionary database 234. Theobject API module 220 accesses theobject models 330 in thedata dictionary database 234 which are relevant to the operation of the service object to determine the data patterns of thoseobject model 330. Once the determination is made, theobject API module 220 passes the data patterns to the pertinent service object that is to perform the functional/service process. Because there are only a finite number of data patterns with which anobject model 330 can be represented, a service object 420 1-420 M having a finite set of functions/services can be designed to address each possible data pattern of theobject models 330. Therefore, once the data pattern of anobject model 330 has been identified, a dispatching takes place within the service object 420 1-420 M to perform an appropriate function/service process for the data pattern of aparticular object model 330. Sinceobject models 330 can be defined recursively, the appropriate function/service process could also be recursive. - It should be noted that because the
object model 330 is processed based on the identified pattern, a change in theobject model 330 will be recognized by theobject API module 220 at runtime when it interrogates thedata dictionary database 234 via thedata dictionary manager 236 and this information is passed to the service object 420 1-420 M prior to the service object's 420 1-420 M performance. The service object 420 1-420 M being informed of the changed pattern processes theobject model 330 in accordance with the changed pattern. This feature is advantageous in that it allows the data model 310 (and thus, the separate object models 330) to be dynamically altered, which will be detected and theobject models 330 are processed accordingly. Specifically, the service object 420 1-420 M performing processes on anobject model 330 will recognize the current data patterns and dynamically alter its process to adapt to the modifiedobject model 330. The features described above allows for the runtime re-configuration of thedata model 310 of theapplication model 110, which is advantageous over a previously known method that requires the program codes to be re-programmed, linked, compiled and debugged whenever thedata model 310 is modified. - Another aspect of the invention is the event driven approach between the
application model 110 and the service objects 420 1-420 M, or program flow. Specifically, the data model 310 (inobject model 330 form) and associated service objects 420 1-420 M are configured based on flow to link services, where various utility functions (business functions) that are performed on theobject model 330 are event driven by data change and/or event and not code driven as in previously known programming approaches. According to one aspect of the invention, theobject models 330 and service objects 420 1-420 M are linked such that one or more data changes in anobject model 330 causes specified service objects 420 1-420 M to be notified of the data changes. With reference to FIG. 5, theobject model 530 may include adata change registry 532 that provides for any service object (such as service object A) to register for notification on various data changes. When a data change occurs at theobject model 530, the registered service object (service object A) is notified and the service object determines if the data change is a change that requires processing. If the service object so determines then the service object performs a process based on the data change. According to the aspect of the invention, the object model notifies the relevant service objects of the data change but does not actively cause the service objects to perform a process due to the data change. Instead, the service object makes that determination upon receiving notification. Additionally, a process performed by the service object may also cause a data change that affects other service objects (such as service object B). In this instance, the service object may be configured to trigger a notification to other service objects upon execution or completion. - Continuing with FIG. 5, a flow process of an event driven approach is illustrated in accordance with the invention. At stage 1, a data change has occurred in the
object model 530. Theobject model 530 accesses thedata change registry 532 to determine which service objects should be notified of the data change (the service objects have previously registered for notification of the various data changes). Once the determination is made, theobject model 530 notifies the pertinent service objects of the data change. Atstage 2, service object A receives notification that a data change has occurred. The service object A determines whether the data change requires performance of a process and if so, service object A performs the process. Atstage 3, the service object A outputs the result of the process which may have caused further data change in the object model and may affect other service objects. In one embodiment, the object model A reviews its data change registry to determine if the data change requires notification to other service objects. In this instance, the service object A determines that service object B requires notification and notifies service object B of the data change. Atstage 4, the service object B receives a notification from service object A and determines whether the data change is of the type that requires processing. If so, the function B block performs the required process and outputs the result of the process. This flow process may be repeated for other service objects until the flow process triggered by the data change has been satisfied. - Turning back to FIG. 2, the
object API Module 220 interface bridges with the specific APIs of the resources and tools of the third party. In accordance with one embodiment, the classification method (e.g., primitive, class, object array) that sets the finite set of object models of data models is iterated against the third party APIs to determine which object models are recognized by the third party APIs. For instance, the classification method is iterated against a transport tool JMS, wherein a list of object models that are recognized by the JMS is compiled and device drivers based on the object models are built and stored within the object API module. Thus, when an object model of a data model is to be interfaced with JMS, the object API module determines which device driver can be used to allow the object model to be interfaced. Alternatively, the object models that allow for the interface with JMS, for example, may be stored in the object API module and when an object model of a data model is to be interfaced with JMS, the classifier begins an iteration process on the object model that transforms the object model pattern into one recognized by the JMS. The transformed model is then interfaced with JMS. - According to one aspect of the invention, for each service object, a fixed pattern of input and output parameters can be defined so that all the service objects have uniform APIs, thereby significantly simplifying the programming logic.
- According to various aspects of the invention, a programming tool may take a data model of the application model and perform an iterative process using classification of primitive, class and object array to define a pattern that describes the data model, which is stored in the data dictionary as an object model. A complete change in the data model may require the re-use of the programming tool to define an object model; however certain alterations and modifications may be performed by a data dictionary Editor that implements the changes during the runtime. Because there are finite services available in the object API module, the service objects may be displayed in templates of a GUI that are dragged and dropped into programs during creation of the application module. In one embodiment, the language that is used to construct an application model may be Extensible Markup Language (XML) but other languages may be used to construct the application model.
- The present invention is not limited to a development platform which operates as described above. Rather, any development process can be used within the meaning of the present invention which creates a set of object models for representing data and a set of service objects for performing functions with respect to the object models.
- Embodiments of the invention provides various benefits such as reduced programming time, reduced programming code size and programming may be performed by less specialized programmers. Having thus far described at least one illustrative embodiment of the invention, various alterations, modifications and improvements will readily occur to those skilled in the art. Such alterations, modifications and improvements are intended to be within the scope and spirit of the invention. Accordingly, the foregoing description is by way of example only and is not intended as limiting. Accordingly, the invention is defined by the following claims and equivalents thereof.
-
Claims (11)
1. A method for creating application software comprising the steps of:
storing a first set of object models representing data of an application, each object model corresponding to a basic object type;
selecting a subset of service objects from a stored set of service objects each of which can perform a function with respect to data in at least one of the object models; and
defining a flow process representing an order for operation of the subset of service objects.
2. The method according to claim 1 , wherein the basic object types include:
a primitive,
a class, and
an object array.
3. The method according to claim 2 , wherein the class object type includes a plurality of attributes, each of which is a basic object type.
4. The method according to claim 2 , wherein the object array object type includes a plurality of elements, each of the plurality of elements being of a single basic object type.
5. The method according to claim 1 , wherein at least one of the service objects provides functions with respect to an identified device driver for a resource.
6. The method according to claim 1 , further comprising the step of creating and storing a set of service objects.
7. The method according to claim 6 , wherein the creating and storing step includes creating at least one service object which performs different functions depending upon a basic data type of at least one of the object models.
8. A system for creating application software comprising:
means for storing a first set of object models representing data of an application, each object model corresponding to a basic object type;
a stored set of service objects each of which can perform a function with respect to data in at least one of the object models; and
means for selecting a subset of the stored set of service objects; and
means for defining a flow process representing an order for operation of the subset of service objects.
9. The system according to claim 8 , wherein the means for storing includes:
means for receiving a application model representing data in the application software;
means for classifying each data element in the application model as an object model; and
means for storing each object model from the classifying means.
10. The system according to claim 8 , wherein at least one of the service models can an interface function with at least one resource.
11. A system for executing an application program comprising:
a stored set of object models representing data of the application, each object model corresponding to a basic object type;
a stored set of service objects each of which can perform a function with respect to data in at least one of the object models, wherein the function of a service object is based upon a basic object type of a corresponding object model;
means for determining a basic object type of a corresponding object model upon execution of each of the stored service objects; and
means for executing a function of each service object based upon the determined basic object type of a corresponding object model.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/471,207 US20040181780A1 (en) | 2001-03-08 | 2002-03-08 | System for configuation programming |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US27433301P | 2001-03-08 | 2001-03-08 | |
US10/471,207 US20040181780A1 (en) | 2001-03-08 | 2002-03-08 | System for configuation programming |
PCT/US2002/007267 WO2002073355A2 (en) | 2001-03-08 | 2002-03-08 | System for configuration programming |
Publications (1)
Publication Number | Publication Date |
---|---|
US20040181780A1 true US20040181780A1 (en) | 2004-09-16 |
Family
ID=32965242
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/003,737 Expired - Fee Related US6925632B2 (en) | 2001-03-08 | 2001-11-02 | System for configuration programming |
US10/471,207 Abandoned US20040181780A1 (en) | 2001-03-08 | 2002-03-08 | System for configuation programming |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/003,737 Expired - Fee Related US6925632B2 (en) | 2001-03-08 | 2001-11-02 | System for configuration programming |
Country Status (5)
Country | Link |
---|---|
US (2) | US6925632B2 (en) |
EP (1) | EP1388034A2 (en) |
AU (1) | AU2002309497A1 (en) |
CA (1) | CA2440329A1 (en) |
WO (1) | WO2002073355A2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030212956A1 (en) * | 2002-05-10 | 2003-11-13 | Fujitsu Limited | Program generating apparatus, program generating method and program generator |
US20050259115A1 (en) * | 2004-05-19 | 2005-11-24 | Microsoft Corporation | System and method for generating unified image output |
US20100162207A1 (en) * | 2008-12-18 | 2010-06-24 | Microsoft Corporation | Behavior-first event programming model |
WO2011013116A1 (en) * | 2009-07-25 | 2011-02-03 | Irina Kleingon | Methods for software mass production |
US8122350B2 (en) | 2004-04-30 | 2012-02-21 | Microsoft Corporation | Packages that contain pre-paginated documents |
US20120278787A1 (en) * | 2008-04-16 | 2012-11-01 | Modria, Inc. | Collaborative realtime planning using a model driven architecture and iterative planning tools |
US8661332B2 (en) | 2004-04-30 | 2014-02-25 | Microsoft Corporation | Method and apparatus for document processing |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7441229B2 (en) * | 2004-02-10 | 2008-10-21 | International Business Machines Corporations | Model driven portlet development method, system and program product |
US8171499B2 (en) * | 2005-07-22 | 2012-05-01 | International Business Machines Corporation | Apparatus, system, and method for object clone event notification |
US20070079299A1 (en) * | 2005-10-03 | 2007-04-05 | International Business Machines Corporation | Method, apparatus and program storage device for representing eclipse modeling framework (EMF) ecore models in textual form |
US8266579B2 (en) * | 2005-10-14 | 2012-09-11 | International Business Machines Corporation | System and method for developing and deploying a model-driven editor |
US8132093B2 (en) * | 2006-08-14 | 2012-03-06 | Microsoft Corporation | Instance annotation in object-oriented programming |
US8578350B2 (en) * | 2006-11-30 | 2013-11-05 | Ncr Corporation | System and method for interpreting a specification language file to implement a business system |
US8930890B2 (en) * | 2006-12-05 | 2015-01-06 | International Business Machines Corporation | Software model skinning |
US8756561B2 (en) * | 2006-12-05 | 2014-06-17 | International Business Machines Corporation | Software model normalization and mediation |
US20090064196A1 (en) * | 2007-08-31 | 2009-03-05 | Microsoft Corporation | Model based device driver code generation |
US8438533B2 (en) * | 2010-04-26 | 2013-05-07 | Sag Ag | Performance-related decision support for compositions of process modeling environments |
US9442700B2 (en) | 2013-09-30 | 2016-09-13 | MuleSoft, Inc. | API notebook tool |
JP6070641B2 (en) * | 2014-06-18 | 2017-02-01 | コニカミノルタ株式会社 | Driver program generation device, driver program generation method, driver program generation program, and driver program |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325533A (en) * | 1993-06-28 | 1994-06-28 | Taligent, Inc. | Engineering system for modeling computer programs |
US5386568A (en) * | 1992-12-01 | 1995-01-31 | Yamaha Corporation | Apparatus and method for linking software modules |
US5517645A (en) * | 1993-11-05 | 1996-05-14 | Microsoft Corporation | Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager |
US5680619A (en) * | 1995-04-03 | 1997-10-21 | Mfactory, Inc. | Hierarchical encapsulation of instantiated objects in a multimedia authoring system |
US5751962A (en) * | 1995-12-13 | 1998-05-12 | Ncr Corporation | Object-based systems management of computer networks |
US5787283A (en) * | 1995-10-27 | 1998-07-28 | International Business Machines Corporation | Framework for manufacturing logistics decision support |
US5862325A (en) * | 1996-02-29 | 1999-01-19 | Intermind Corporation | Computer-based communication system and method using metadata defining a control structure |
US5960200A (en) * | 1996-05-03 | 1999-09-28 | I-Cube | System to transition an enterprise to a distributed infrastructure |
US5995753A (en) * | 1996-11-14 | 1999-11-30 | Alcatel Usa Sourcing, L.P. | System and method of constructing dynamic objects for an application program |
US6226692B1 (en) * | 1995-12-15 | 2001-05-01 | Object Dynamics Corporation | Method and system for constructing software components and systems as assemblies of independent parts |
US6578191B1 (en) * | 1999-05-17 | 2003-06-10 | International Business Machines Corporation | Method and apparatus for dynamic generation of adapters |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226161A (en) * | 1987-08-21 | 1993-07-06 | Wang Laboratories, Inc. | Integration of data between typed data structures by mutual direct invocation between data managers corresponding to data types |
US6272672B1 (en) * | 1995-09-06 | 2001-08-07 | Melvin E. Conway | Dataflow processing with events |
US5889992A (en) * | 1996-03-28 | 1999-03-30 | Unisys Corp. | Method for mapping types stored in a model in an object-oriented repository to language constructs for A C binding for the repository |
US6104874A (en) * | 1996-10-15 | 2000-08-15 | International Business Machines Corporation | Object oriented framework mechanism for order processing including pre-defined extensible classes for defining an order processing environment |
US5970498A (en) * | 1996-12-06 | 1999-10-19 | International Business Machines Corporation | Object oriented framework mechanism for metering objects |
US5920718A (en) * | 1997-03-21 | 1999-07-06 | The Boeing Company | Method and apparatus for creating executable code for object-oriented objects having finite state machine |
US6106569A (en) * | 1997-08-14 | 2000-08-22 | International Business Machines Corporation | Method of developing a software system using object oriented technology |
US6463442B1 (en) * | 1998-06-30 | 2002-10-08 | Microsoft Corporation | Container independent data binding system |
US6266672B1 (en) * | 1998-10-07 | 2001-07-24 | Millennium Pharmaceuticals, Inc. | Persistence storage architecture |
US6427230B1 (en) * | 1998-11-09 | 2002-07-30 | Unisys Corporation | System and method for defining and managing reusable groups software constructs within an object management system |
US6631513B1 (en) * | 1999-10-22 | 2003-10-07 | International Business Machines Corporation | Methods for laying out memories bidirectionally for object oriented applications |
US6701513B1 (en) * | 2000-01-14 | 2004-03-02 | Measurement Computing Corporation | Program-development environment for use in generating application programs |
-
2001
- 2001-11-02 US US10/003,737 patent/US6925632B2/en not_active Expired - Fee Related
-
2002
- 2002-03-08 US US10/471,207 patent/US20040181780A1/en not_active Abandoned
- 2002-03-08 EP EP02736495A patent/EP1388034A2/en not_active Withdrawn
- 2002-03-08 AU AU2002309497A patent/AU2002309497A1/en not_active Abandoned
- 2002-03-08 WO PCT/US2002/007267 patent/WO2002073355A2/en not_active Application Discontinuation
- 2002-03-08 CA CA002440329A patent/CA2440329A1/en not_active Abandoned
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5386568A (en) * | 1992-12-01 | 1995-01-31 | Yamaha Corporation | Apparatus and method for linking software modules |
US5325533A (en) * | 1993-06-28 | 1994-06-28 | Taligent, Inc. | Engineering system for modeling computer programs |
US5517645A (en) * | 1993-11-05 | 1996-05-14 | Microsoft Corporation | Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager |
US5680619A (en) * | 1995-04-03 | 1997-10-21 | Mfactory, Inc. | Hierarchical encapsulation of instantiated objects in a multimedia authoring system |
US5787283A (en) * | 1995-10-27 | 1998-07-28 | International Business Machines Corporation | Framework for manufacturing logistics decision support |
US5751962A (en) * | 1995-12-13 | 1998-05-12 | Ncr Corporation | Object-based systems management of computer networks |
US6226692B1 (en) * | 1995-12-15 | 2001-05-01 | Object Dynamics Corporation | Method and system for constructing software components and systems as assemblies of independent parts |
US5862325A (en) * | 1996-02-29 | 1999-01-19 | Intermind Corporation | Computer-based communication system and method using metadata defining a control structure |
US5960200A (en) * | 1996-05-03 | 1999-09-28 | I-Cube | System to transition an enterprise to a distributed infrastructure |
US5995753A (en) * | 1996-11-14 | 1999-11-30 | Alcatel Usa Sourcing, L.P. | System and method of constructing dynamic objects for an application program |
US6578191B1 (en) * | 1999-05-17 | 2003-06-10 | International Business Machines Corporation | Method and apparatus for dynamic generation of adapters |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030212956A1 (en) * | 2002-05-10 | 2003-11-13 | Fujitsu Limited | Program generating apparatus, program generating method and program generator |
US7308677B2 (en) * | 2002-05-10 | 2007-12-11 | Fujitsu Limited | Program generating apparatus, program generating method and program generator |
US8122350B2 (en) | 2004-04-30 | 2012-02-21 | Microsoft Corporation | Packages that contain pre-paginated documents |
US8661332B2 (en) | 2004-04-30 | 2014-02-25 | Microsoft Corporation | Method and apparatus for document processing |
US20050259115A1 (en) * | 2004-05-19 | 2005-11-24 | Microsoft Corporation | System and method for generating unified image output |
US7880918B2 (en) * | 2004-05-19 | 2011-02-01 | Microsoft Corporation | System and method for generating unified image output |
US20120278787A1 (en) * | 2008-04-16 | 2012-11-01 | Modria, Inc. | Collaborative realtime planning using a model driven architecture and iterative planning tools |
US20100162207A1 (en) * | 2008-12-18 | 2010-06-24 | Microsoft Corporation | Behavior-first event programming model |
US8543975B2 (en) * | 2008-12-18 | 2013-09-24 | Microsoft Corporation | Behavior-first event programming model |
WO2011013116A1 (en) * | 2009-07-25 | 2011-02-03 | Irina Kleingon | Methods for software mass production |
US8966435B2 (en) | 2009-07-25 | 2015-02-24 | Irina Kleingon | Methods for software mass production |
Also Published As
Publication number | Publication date |
---|---|
WO2002073355A3 (en) | 2002-12-19 |
US6925632B2 (en) | 2005-08-02 |
AU2002309497A1 (en) | 2002-09-24 |
WO2002073355A2 (en) | 2002-09-19 |
CA2440329A1 (en) | 2002-09-19 |
US20020129330A1 (en) | 2002-09-12 |
EP1388034A2 (en) | 2004-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6925632B2 (en) | System for configuration programming | |
Czarnecki et al. | Cool features and tough decisions: a comparison of variability modeling approaches | |
JP5710852B2 (en) | A framework for seamless authoring and editing of workflows at design and runtime | |
JP5049280B2 (en) | Extensible XML format and object model for localization data | |
JP5173128B2 (en) | A unified model for authoring and executing flow-based and constraint-based workflows | |
US8392873B2 (en) | Methods and apparatus for implementing model-based software solution development and integrated change management | |
US7089256B2 (en) | Universal data editor | |
US6353897B1 (en) | Object oriented apparatus and method for testing object oriented software | |
Reddy et al. | Model composition-a signature-based approach | |
US20060074737A1 (en) | Interactive composition of workflow activities | |
US20030200533A1 (en) | Method and apparatus for creating software objects | |
JP2006107479A (en) | Framework for modeling cross-cutting behavioral concerns inside work flow region | |
EP1139216A2 (en) | Web application development system | |
EP1643427A1 (en) | Declarative representation for an extensible workflow model | |
EP1643435A1 (en) | An extensible framework for designing workflows | |
Lanusse et al. | Real-time modeling with UML: The ACCORD approach | |
US7921138B2 (en) | Comment processing | |
US8074200B2 (en) | Method and system for providing tooling instructions through parameterization as an aid for software application development | |
US20090024552A1 (en) | Unified development guidelines | |
Mani et al. | Using user interface design to enhance service identification | |
US20040205669A1 (en) | Arrangement to perform object-oriented programming | |
CN107765655B (en) | Method, system and readable medium for extending MES function by message routing system | |
Soltenborn | Analysis of uml Workflow diagrams with dynamic Meta Modeling Techniques | |
Kiniry | The specification of dynamic distributed component systems | |
US20070101254A1 (en) | Systems and methods for providing an allowed input range in a user interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |