The present disclosure relates to software development systems and methods and, more particularly, a system and method for automatically generating software instructions for a work machine controller.
Software instructions can be designed using a computer-generated design environment. A design environment may include a system design tool that facilitates a function-based approach to designing software, and a database that stores software blocks available to the design tool for generating the software instructions. Each software block stored in the database may perform a particular function and have particular properties.
In operation, a system design tool may present a graphical user interface (GUI) to a user, and through the GUI, the design tool may accept user input indicating a plurality of sub-functions that the system would have to perform in order to perform the overall function of the system. The user input may also indicate types of interaction between the sub-functions. The design tool may then identify from the database the software blocks that can perform the inputted sub-functions, and may conceptually build a graphical representation of the software instructions by connecting the identified software blocks according to the inputted interaction of the sub-functions. The database identifying the software blocks is often referred to as a catalog or library.
In a design environment where a system design tool assembles different existing software blocks identified in a catalog to build a software system, each software block is preferably configured to work with other software blocks in the catalog. Conventional software design methods, however, require a designer to specifically design a software block to work in a particular software system. Thus, the number and variety of software blocks available to a system design tool are limited because software blocks are generally designed for a particular system, and thus may not work in a new system designed using the system design tool.
At least one system is known for developing software instructions using previously developed software blocks. For example, U.S. Pat. No. 6,405,364 (“the '364 patent”) to Bowman-Amuah dated Jun. 11, 2002, describes a system for building software in a development architecture framework using software components or blocks. Particularly, the system of the '364 patent includes various tools for graphically depicting software instructions with various modeling tools. For example, a data modeling tool disclosed in the '364 patent depicts logical constructs such as entities, attributes, and relationships between entities and physical constructs such as database definitions and table indices. Other modeling tools contemplated in the '364 patent include process modeling tools, event modeling tools, performance modeling tools, application logic design tools, and database design tools.
While the system of the '364 patent may be effective for modeling software instructions with various different types of modeling tools, the system of the '364 patent includes several disadvantages. For example, the system does not permit combining or mixing of modeling methodologies associated with different modeling tools into one modeling tool. Moreover, the '364 patent requires familiarity with several different modeling tools in order to be maximally useful to a designer. For example, a designer who is familiar with one modeling tool may decide it is easier to use that particular modeling tool to design every aspect of a software system, rather than expend efforts learning a new modeling approach that may be better suited to particular aspects of the software system.
The present disclosure is directed to overcoming one or more of the problems or disadvantages existing in the prior art.
One disclosed embodiment includes a method for designing and generating instructions for a computing device. The method may include displaying, through a user interface, a menu of software blocks stored in a product library. The method may further include receiving user input for selecting software blocks from the menu and for connecting the selected blocks. Based on the received input, instructions may be automatically generated. The user interface may be adapted to permit a selection of graphical connections between the graphical representations. The selection of graphical connections may include an object reference connection and a signal flow connection.
A second disclosed embodiment includes a system for designing and generating instructions for a computing device. The system may include a library configured to store software blocks, and a console. The console may include a user interface for receiving user input and displaying graphical representations of software blocks selected from the library. The user interface may be adapted to permit a selection of graphical connections between the graphical representations of software blocks. The selection of graphical connections may include an object reference connection and a signal flow connection.
Console 102 may include a data interface 108 and a processor 110 for running a software design tool 112. Software design tool 112 may be used to design and automatically generate instructions for a computing device, such as a work machine controller 114 on board a work machine 116. Work machine controller 114 may be, for example, a processor for controlling an engine system, an on-board electrical or communications system, a hydraulic system, or various other systems associated with work machine 116.
Software design tool 112 may include a compiler 118. Compiler 118 may generate instructions based on a graphical representation of the instructions. The graphical representation may be composed of graphical representations of software blocks selected from a menu. After a user has designed a graphical representation of instructions, the instructions may be compiled for work machine controller 114 to execute. In an exemplary embodiment, the instructions may include a file, such as a distributed library, for storing the selected software blocks. The selected software blocks may be transferred from product library 104 into the file. The instructions, including the file of selected software blocks, may then be transferred from compiler 118 to a service tool 120 via data interface 108. A technician may use service tool 120 to transfer the instructions to work machine controller 114.
Data interface 108 may also be adapted to receive system parameters, such as a memory size, associated with work machine controller 114. Compiler 118 may generate instructions for work machine controller 114 based on the received system parameters. For example, compiler 118 may prevent compilation or request additional input from a user if a memory size associated with work machine controller 114 is too small.
The instructions may be periodically improved or changed and transferred as updates from service tool 118 to work machine controller 114. For example, if a user desires to modify the instructions, the user may load a graphical representation associated with the instructions and make any desired modifications or additions. A portion of or all of selected software blocks 210 may be retained in a new set of instructions.
Product library 104 may include various previously compiled and verified software blocks. A software block may include object references, which may enable calls to functions associated with the software block. The object references may be verified against a set of interface constraints to facilitate reuse in generating instructions to run on work machine controllers, such as work machine controller 114. Thus, if a new work machine controller is installed or work machine controller 114 is modified on work machine 116, a portion of the software blocks used in work machine controller 114 may be reused with little or no modification. For example, a software block may carry out a common function such as implementing a clutch algorithm. In addition, common functions may be designed, compiled, and verified once and used thereafter in multiple work machine controllers, thereby streamlining development and deployment of instructions.
Product library 104 may also include software blocks associated with hardware equipment, such as sensors, communications devices, clutches, engines, and other items that may be on board work machine 114. While
Product library menu 202 may permit a user to select software blocks 210 from product library 104. Thus, a user of software design tool 112 may select software blocks from product library menu 202 for use in designing and automatically generating instructions to run on work machine controller 114. Product library menu 202 may present a selection of software blocks organized by various categories. Categories may be, for example, parts of a work machine associated with particular functions. Product library menu 202 may also organize sub-functions under broader functions and may permit selection of a group of software blocks required for implementing one or more sub-functions.
Block connection menu 204 may present a selection of various connections or associations, including signal flow connections 212 and object reference connections 214, for connecting software blocks 210 in a desired arrangement.
Signal flow connections 212 may represent a directional data flow connection from one of software blocks 210 to another one of software blocks 210. For example, one of software blocks 210 may output data that feeds into another one of software blocks 210. Thus, a relationship of data flowing from an output of one of software blocks 210 to an input of another one of software blocks 210 may be represented by signal flow connection 212.
Object reference connections 214, also known in the art as “associations,” may differ from signal flow connections 212 in that object reference connections 214 may represent various types of relationships or connections between software blocks 210, including, for example, transmission of data, reception of data, performance of functional operations on a connected software block 210, or various combinations of each type, such as a bi-directional data flow connection. Signal flow connections 212, on the other hand, depict only one type of relationship between two software blocks 210, that is, a directional data flow relationship as described above.
The disclosed system and method for automatically generating instructions for a computing device may be used to develop software to run on any platform. In one exemplary disclosed embodiment, the system and method may be used to develop software to run on a work machine controller 114.
The presently disclosed system and method for automatically generating instructions for a computing device have several advantages. First, the disclosed system and method permit a combination of software modeling or design methodologies. For example, signal flow connections apply a control theory methodology, whereas object reference connections apply an object oriented methodology.
Moreover, because the disclosed system and method permit different software design methodologies, a designer may use the most effective methodology applicable to each aspect of a software system. For instance, one methodology may be most effective for designing network communications software. Another methodology may be most effective for designing a clutch control algorithm. If an overall software system includes a clutch control algorithm interacting with network communications software, then a design that combines both methodologies is maximally effective. Thus, a designer using the disclosed system and method need not balance the pros and cons of using one methodology over the other for designing the system. Rather, the designer using the disclosed system and method may use both methodologies to obtain advantages of each.
It will be apparent to those skilled in the art that various modifications and variations can be made in the disclosed system and method for software component design without departing from the scope of the disclosure. Additionally, other embodiments of the disclosed system will be apparent to those skilled in the art from consideration of the specification. It is intended that the specification and examples be considered as exemplary only, with a true scope of the disclosure being indicated by the following claims and their equivalents.
This application is a continuation-in-part of application Ser. No. ______, entitled “METHOD AND SYSTEM FOR SOFTWARE COMPONENT DESIGN,” filed Jul. 20, 2005.
Number | Date | Country | |
---|---|---|---|
Parent | 11184824 | Jul 2005 | US |
Child | 11187909 | Jul 2005 | US |