Application programs constructed entirely from autonomous...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S152000, C717S152000

Reexamination Certificate

active

06230318

ABSTRACT:

BACKGROUND OF THE INVENTION
The present invention relates to electronic data processing, and more specifically concerns the construction of entire application programs solely from small reusable components that can be substituted and reconfigured easily and quickly.
Major application programs, such as word processors, spreadsheets, and computer-aided design programs, are conventionally written as complete, standalone packages. Although the code may actually consist of many smaller modules, each module is purpose-built for the particular application, and the modules are interconnected with each other according to specifications that vary with each project.
Conventional software design methods make it difficult to add new functions to application programs, to upgrade existing functions, and even to fix bugs. Highly trained programmers familiar with the design details of the application must tease out the code to be modified or replaced, and must take great care not to modify other functions inadvertently or to break any of the existing interconnections.
Recent advances in design methodology have alleviated these problems to some degree. Packaging functions used by many programs into dynamic link libraries (.dll) provides a degree of commonality for low-level functions shared among applications in a suite. However, these are purpose-built for specific sets of applications, and are rarely useful for other applications or even for other versions of the same application without at least some modification by expert programmers.
The current trend in application development involves the use of object-oriented or component-based technologies. In the ideal use of this approach, an application is a collection of components, each performing a different task. These components work together to provide the overall functionality of the application. Programmers might write the individual components specifically for the application, or may take them from a library of components provided by a third party. The functionality provided by a component ranges from a simple button in a user interface to an entire spreadsheet. Components can be built in available technologies such as Component Object Model, OpenDoc, and Java Beans.
A programmer constructs an application in these technologies by using a development tool such as Microsoft Visual Basic to choose components and wire up connections among them. The programmer must employ a great deal of skill in understanding the meanings of the different methods of each component and in selecting which methods of each component may call which other components. The resulting application is a network highly dependent upon the particular components chosen, and has an arbitrary and usually complex topology. There is no explicit definition of this topology; one can know how the components work together only by examining the details of the network itself.
Object-oriented languages such as C++ and Java allow the construction of program components and even entire applications by building up hierarchies of classes that incorporate or inherit functions (methods) from more primitive classes at lower levels. Such hierarchies, however, are by nature static and unchangeable. For example, adding one class into a superclass can only be done by a programmer at the source-code level. Removal of a class from its superclass causes unpredictable failures, because there is no way to know in advance which other classes might also use the methods of the removed class.
An emerging trend in application development involves the concept of plug-ins. For example, third-party providers develop programs that plug into internet browsers for performing certain kinds of multimedia files automatically whenever the browser encounters those file types. Plug-ins are relatively easily replaceable and upgradable separately from the main application. However, they provide only a very small portion of the overall function of any application, and they must still be built specially for each application.
Even with the many techniques currently available to the art, the design, coding, maintenance, and enhancement of major application programs involve long, expensive efforts. A change in one part of the program frequently propagates to other parts, requiring further changes, as well as further opportunities for errors. Applications cannot be subsetted for situations where only part of the application's total functionality is needed. Enhancing an application requires replacing substantially all of the original code in an upgrade package. Any of these tasks requires skilled programmers having experience in the software technologies and large amounts of time and effort. Certainly the concepts of allowing users to design or redesign an application to their own tastes, to replace or upgrade parts of an application with third-party components, or to install small fixes in large programs, remain a pipe dream.
SUMMARY OF THE INVENTION
The present invention provides an architecture for constructing application programs entirely from small components. The architecture allows the components to be assembled and reassembled in different configurations, greatly facilitating the addition, removal, and substitution of different components. The components can be reassembled every time the user invokes the application, so that installation of upgrades, fixes, and additional features requires only a short time and minimum effort. Upgrades and fixes can be sent online, even for very large applications, because only a few components need be transmitted. Third-party suppliers can provide inexpensive upgrades to individual functions of an application, and can market extended or specialized features without having to recreate all the basic functions of the application.
The invention constructs an application program entirely from plug-together components or tools arranged in a tree hierarchy specified by a configuration file that can be easily modified to change the configuration arbitrarily. The resources that each component requires, and that it provides to other components, are made explicit. All necessary user-interface constructs and layouts are described explicitly.
Another major advantage of the invention is to reduce the load on the tool writer so that effort can be concentrated on implementing tool functionality, rather than managing windows, buttons, and menu bars. In many cases, writing a tool is simply a matter of implementing the code that will be executed when the tool is invoked. The most common way for a user to invoke a tool is through the interface, by selecting a menu item or pressing a button. The invention manages the interface and calls the appropriate method of the appropriate tool as the user interacts with the application.
The tools work together to provide all of the application's functionality. The entire application becomes a tree of tools. At the root of the tree is a single base tool that is the parent of all other tools in the tree. The tree structure is stored in text format in a configuration file loaded every time a user invokes the application, so that the application can be modified every time it is started. This file also defines the appearance of the application's user interface, such as the layout of the menus and the buttons. A property store in each tool provides resources to itself and to other tools higher in the tree. A tool finds a resource whenever it is needed by hierarchically searching the property stores, starting with its own store.
Other aspects of the invention within the scope and spirit of the appended claims will become apparent to those skilled in the art from the following detailed description.


REFERENCES:
patent: 5170465 (1992-12-01), McKeeman et al.
patent: 5339435 (1994-08-01), Lubkin et al.
patent: 5361360 (1994-11-01), Ishigami et al.
patent: 5428792 (1995-06-01), Conner et al.
patent: 5544302 (1996-08-01), Nguyen
patent: 5613122 (1997-03-01), Burnard et al.
patent: 5659735 (1997-08-01), Parrish et al.
patent: 5701472 (1997-12-01), Koerbe

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Application programs constructed entirely from autonomous... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Application programs constructed entirely from autonomous..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Application programs constructed entirely from autonomous... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2566102

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.