US20030005407A1 - System and method for coordination-centric design of software systems - Google Patents
System and method for coordination-centric design of software systems Download PDFInfo
- Publication number
- US20030005407A1 US20030005407A1 US09/881,391 US88139101A US2003005407A1 US 20030005407 A1 US20030005407 A1 US 20030005407A1 US 88139101 A US88139101 A US 88139101A US 2003005407 A1 US2003005407 A1 US 2003005407A1
- Authority
- US
- United States
- Prior art keywords
- port
- coordination
- component
- coordinator
- coordination interface
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3632—Software debugging of specific synchronisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Definitions
- the present invention relates to a system and method for designing software systems using reusable software elements and communication protocols.
- a system design and programming methodology is most effective when it is closely integrated and coheres tightly with its corresponding debugging techniques.
- the relationship between debugging approaches and design methodologies has traditionally been one-sided in favor of the design and programming methodologies.
- Design and programming methodologies are typically developed without any consideration for the debugging techniques that will later be applied to software systems designed using that design and programming methodology. While these typical debugging approaches attempt to exploit features provided by the design and programming methodologies, the debugging techniques will normally have little or no impact on what the design and programming features are in the first place.
- This lack of input from debugging approaches to design and programming methodologies serves to maintain the role of debugging as an afterthought, even though in a typical system design, debugging consumes a majority of the design time.
- the need remains for a design and programming methodology that reflects input from, and consideration of, potential debugging approaches in order to enhance the design and reduce the implementation time of software systems.
- Packaging refers to the set of interfaces a software element presents to other elements in a system.
- Software packaging has many forms in modern methodologies. Some examples are programming language procedure call interfaces (as with libraries), TCP/IP socket interfaces with scripting languages (as with mail and Web servers), and file formats.
- One common packaging style is based on object-oriented programming languages and provides procedure-based (method-based) packaging for software elements (objects within this framework). These procedure-based packages allow polymorphism (in which several types of objects can have identical interfaces) through subtyping, and code sharing through inheritance (deriving a new class of objects from an already existing class of objects).
- procedure-based packages allow polymorphism (in which several types of objects can have identical interfaces) through subtyping, and code sharing through inheritance (deriving a new class of objects from an already existing class of objects).
- an object's interface is defined by the object's methods.
- Object-oriented approaches are useful in designing concurrent systems (systems with task level parallelism and multiple processing resources?) because of the availability of active objects (objects with a thread of control). Some common, concurrent object-oriented approaches are shown in actor languages and in concurrent Eiffel.
- CORBA common object request broker architecture
- IDL interface description language
- RPC remote procedure call
- an element's package is implemented as a set of co-routines that can be adapted for use with applications through use of adapters with interfaces complementary to the interface for the software element. These adapters can be application-specific—used only when the elements are composed into a system.
- co-routines lets a designer specify transactions or sequences of events as part of an interface, rather than just as atomic events.
- co-routines must be executed in lock-step, meaning a transition in one routine corresponds to a transition in the other co-routine. If there is an error in one or if an expected event is lost, the interface will fail because its context will be incorrect to recover from the lost event and the co-routines will be out of sync.
- Coordination within the context of this application, means the predetermined ways through which software components interact. In a broader sense, coordination refers to a methodology for composing concurrent components into a complete system. This use of the term coordination differs slightly from the use of the term in the parallelizing compiler literature, in which coordination refers to a technique for maintaining programwide semantics for a sequential program decomposed into parallel subprograms.
- Coordination languages are usually a class of tuple-space programming languages, such as Linda.
- a tuple is a data object containing two or more types of data that are identified by their tags and parameter lists.
- coordination occurs through the use of tuple spaces, which are global multisets of tagged tuples stored in shared memory.
- Tuple-space languages extend existing programming languages by adding six operators: out, in, read, eval, inp, and readp. The out, in, and read operators place, fetch and remove, and fetch without removing tuples from tuple space. Each of these three operators blocks until its operation is complete. The out operator creates tuples containing a tag and several arguments. Procedure calls can be included in the arguments, but since out blocks, the calls must be performed and the results stored in the tuple before the operator can return.
- eval, inp, and readp are nonblocking versions of out, in, and read, respectively. They increase the expressive power of tuple-space languages.
- eval the nonblocking version of out. Instead of evaluating all arguments of the tuple before returning, it spawns a thread to evaluate them, creating, in effect, an active tuple (whereas tuples created by out are passive).
- the results are stored in a passive tuple and left in tuple space.
- the eval call returns immediately, so that several active tuples can be left outstanding.
- Tuple-space coordination can be used in concise implementations of many common interaction protocols. Unfortunately, tuple-space languages do not separate coordination issues from programming issues.
- rpcCall args
- Listing 1 Linda Used to Emulate RPC
- a tuple space can require large quantities of dynamically allocated memory.
- most systems, and especially embedded systems must operate within predictable and sometimes small memory requirements.
- Tuple-space systems are usually not suitable for coordination in systems that must operate within small predictable memory requirements because once a tuple has been generated, it remains in tuple space until it is explicitly removed or the software element that created it terminates. Maintaining a global tuple space can be very expensive in terms of overall system performance. Although much work has gone into improving the efficiency of tuple-space languages, system performance remains worse with tuple-space languages than with message-passing techniques.
- This type of formalism can be provided by fixed coordination models in which the coordination style is embodied in an entity and separated from computational concerns. Synchronous coordination models coordinate activity through relative schedules. Typically, these approaches require the coordination protocol to be manually constructed in advance. In addition, computational elements must be tailored to the coordination style used for a particular system (which may require intrusive modification of the software elements).
- the present invention provides a coordination-centric design and programming methodology to facilitate both the design and the debugging of software systems.
- This approach includes an encapsulating formalism for coordination.
- coordination protocols are embodied in coordinators.
- Coordinators serve to expose the workings of a coordination protocol and organize relevant system information in a meaningful manner. This facilitates coordination-based debugging by letting designers focus on coordination as an entity separate from computation and by showing designers what is happening internally within a software system.
- ком ⁇ онентs contain modes that define behaviors, actions that perform these behaviors, and coordination interfaces that connect components to other components through coordinators.
- Packaging software elements in this fashion provides more modularity for the components than prior art design and programming methodologies.
- Coordination interfaces make both the data and control aspects of intercomponent interactions explicit, so that the control and data interactions can be adapted to a variety of interaction protocols without needing internal modifications to the components.
- the same coordination interface type can be used by a variety of components. Any component in a software system can be replaced by a new component having completely different functionality without any other components within the system needing to know that a change has been made, as long as the new component has a coordination interface appropriate for the coordinator in the software system.
- Both components and coordinators can be composed hierarchically to form higher-order functionality and interaction protocols. This facilitates design complexity management. All pieces of the coordination-centric design methodology work together to provide both the software designers and the debugging tools with information about the software system's behavior and the behavior of the software system's components. This information serves to simplify software system design and software system debugging.
- the coordination interfaces expose control state and message traffic to scrutiny by software designers and debugging tools. Meanwhile, coordinators expose interaction protocols to scrutiny by software designers and debugging tools.
- the coordination-centric design methodology treats design and debugging as interrelated issues and, as a result, makes complex embedded software more debuggable and more easily designable. Debugging in fact dominates embedded system software development time, and the debugging approach of the present invention facilitates the debugging of complex embedded systems and makes other aspects of the design flow, such as managing design complexity and reusing software, easier than in prior art design and programming methodologies.
- FIG. 1 is a component in accordance with the present invention.
- FIG. 2 is the component of FIG. 1 further having a set of coordination interfaces.
- FIG. 3A is a prior art round-robin resource allocation protocol with a centralized controller.
- FIG. 3B is a prior art round-robin resource allocation protocol implementing a token passing scheme.
- FIG. 4A is a detailed view of a component and a coordination interface connected to the component for use in round-robin resource allocation in accordance with the present invention.
- FIG. 4B depicts a round-robin coordinator in accordance with the present invention.
- FIG. 5 shows several typical ports for use in a coordination interface in accordance with the present invention.
- FIG. 6A is a unidirectional data transfer coordinator in accordance with the present invention.
- FIG. 6B is a bidirectional data transfer coordinator in accordance with the present invention.
- FIG. 6C is a state unification coordinator in accordance with the present invention.
- FIG. 6D is a control state mutex coordinator in accordance with the present invention.
- FIG. 7 is a system for implementing subsumption resource allocation having components, a shared resource, and a subsumption coordinator.
- FIG. 8 is a barrier synchronization coordinator in accordance with the present invention.
- FIG. 9 is a rendezvous coordinator in accordance with the present invention.
- FIG. 10 depicts a dedicated RPC system having a client, a server, and a dedicated RPC coordinator coordinating the activities of the client and the server.
- FIG. 11 is a compound coordinator with both preemption and round-robin coordination for controlling the access of a set of components to a shared resource.
- FIG. 12A is software system with two data transfer coordinators, each having constant message consumption and generation rules and each connected to a separate data-generating component and connected to the same data-receiving component.
- FIG. 12B is the software system of FIG. 12A in which the two data transfer coordinators have been replaced with a merged data transfer coordinator.
- FIG. 13 is a system implementing a first come, first served resource allocation protocol in accordance with the present invention.
- FIG. 14 is a system implementing a multiclient RPC coordination protocol formed by combining the first come, first served protocol of FIG. 13 with the dedicated RPC coordinator of FIG. 10.
- FIG. 15 depicts a large system in which the coordination-centric design methodology can be employed having a wireless device interacting with a cellular network.
- FIG. 16 shows a top-level view of the behavior and components for a system for a cell phone.
- FIG. 17A is a detailed view of a GUI component of the cell phone of FIG. 16.
- FIG. 17B is a detailed view of a call log component of the cell phone of FIG. 16.
- FIG. 18A is a detailed view of a voice subsystem component of the cell phone of FIG. 16.
- FIG. 18B is a detailed view of a connection component of the cell phone of FIG. 16.
- FIG. 19 depicts the coordination layers between a wireless device and a base station, and between the base station and a switching center, of FIG. 15.
- FIG. 20 depicts a cell phone call management component, a master switching center call management component, and a call management coordinator connecting the respective call management components.
- FIG. 21A is a detailed view of a transport component of the connection component of FIG. 18B.
- FIG. 21B is a CDMA data modulator of the transport component of FIG. 18B.
- FIG. 22 is a detailed view of a typical TDMA and a typical CDMA signal for the cell phone of FIG. 16.
- FIG. 23A is a LCD touch screen component for a Web browser GUI for a wireless device.
- FIG. 23B is a Web page formatter component for the Web browser GUI for the wireless device.
- FIG. 24A is a completed GUI system for a handheld Web browser.
- FIG. 24B shows the GUI system for the handheld Web browser combined with the connection subsystem of FIG. 18B in order to access the cellular network of FIG. 15.
- FIG. 1 is an example of a component 100 , which is the basic software element within the coordination-centric design framework, in accordance with the present invention.
- component 100 contains a set of modes 102 .
- Each mode 102 corresponds to a specific behavior associated with component 100 .
- Each mode 102 can either be active or inactive, respectively enabling or disabling the behavior corresponding to that mode 102 .
- Modes 102 can make the conditional aspects of the behavior of component 100 explicit.
- the behavior of component 100 is encapsulated in a set of actions 104 , which are discrete, event-triggered behavioral elements within the coordination-centric design methodology.
- Component 100 can be copied and the copies of component 100 can be modified, providing the code-sharing benefits of inheritance.
- Actions 104 are enabled and disabled by modes 102 , and hence can be thought of as effectively being properties of modes 102 .
- An event (not shown) is an instantaneous condition, such as a timer tick, a data departure or arrival, or a mode change.
- Actions 104 can activate and deactivate modes 102 , thereby selecting the future behavior of component 100 . This is similar to actor languages, in which methods are allowed to replace an object's behavior.
- FIG. 2 is component 100 further including a first coordination interface 200 , a second coordination interface 202 , and a third coordination interface 204 .
- Coordination-centric design's components 100 provide the code-sharing capability of object-oriented inheritance through copying. Another aspect of object-oriented inheritance is polymorphism through shared interfaces. In object-oriented languages, an object's interface is defined by its methods. Although coordination-centric design's actions 104 are similar to methods in object-oriented languages, they do not define the interface for component 100 . Components interact through explicit and separate coordination interfaces, in this figure coordination interfaces 200 , 202 , and 204 .
- the shape of coordination interfaces 200 , 202 , and 204 determines the ways in which component 100 may be connected within a software system.
- the way coordination interfaces 200 , 202 , and 204 are connected to modes 102 and actions 104 within component 100 determines how the behavior of component 100 can be managed within a system. Systemwide behavior is managed through coordinators (see FIG. 4B and subsequent).
- coordination refers to the predetermined ways by which components interact.
- resource allocation One simple protocol for this is round-robin: participants are lined up, and the resource is given to each participant in turn. After the last participant is served, the resource is given back to the first. There is a resource-scheduling period during which each participant gets the resource exactly once, whether or not it is needed.
- FIG. 3A is prior art round-robin resource allocation protocol with a centralized controller 300 , which keeps track of and distributes the shared resource (not shown) to each of software elements 302 , 304 , 306 , 308 , and 310 in turn.
- controller 300 alone determines which software element 302 , 304 , 306 , 308 , or 310 is currently allowed to use the resource and which has it next.
- This implementation of a round-robin protocol permits software elements 302 , 304 , 306 , 308 , and 310 to be modular, because only controller 300 keeps track of the software elements.
- controller 300 when this implementation is implemented on a distributed architecture (not shown), controller 300 must typically be placed on a single processing element (not shown). As a result, all coordination requests must go through that processing element, which can cause a communication performance bottleneck. For example, consider the situation in which software elements 304 and 306 are implemented on a first processing element (not shown) and controller 300 is implemented on a second processing element. Software element 304 releases the shared resource and must send a message indicating this to controller 300 . Controller 300 must then send a message to software element 306 to inform software element 306 that it now has the right to the shared resource.
- the shared resource must remain idle, even though both the current resource holder and the next resource holder (software elements 304 and 306 respectively) are implemented on the first processing element (not shown).
- the shared resource must typically remain idle until communication can take place and controller 300 can respond. This is an inefficient way to control access to a shared resource.
- FIG. 3B is a prior art round-robin resource allocation protocol implementing a token passing scheme.
- this system consists of a shared resource 311 and a set of software elements 312 , 314 , 316 , 318 , 320 , and 322 .
- a logical token 324 symbolizes the right to access resource 311 , i.e., when a software element holds token 324 , it has the right to access resource 311 .
- one of software elements 312 , 314 , 316 , 318 , 320 , or 322 finishes with resource 311 , it passes token 324 , and with token 324 the access right, to a successor.
- This implementation can be distributed without a centralized controller, but as shown in FIG. v 3 B, this is less modular, because it requires each software element in the set to keep track of a successor.
- the coordination-centric design methodology provides an encapsulating formalism for coordination.
- Components such as component 100 interact using coordination interfaces, such as first, second, and third coordination interfaces 200 , 202 , and 204 , respectively.
- Coordination interfaces preserve component modularity while exposing any parts of a component that participate in coordination. This technique of connecting components provides polymorphism in a similar fashion to subtyping in object-oriented languages.
- FIG. 4A is a detailed view of a component 400 and a resource access coordination interface 402 connected to component 400 for use in a round-robin coordination protocol in accordance with the present invention.
- resource access coordination interface 402 facilitates implementation of a round-robin protocol that is similar to the token-passing round-robin protocol described above.
- Resource access coordination interface 402 has a single bit of control state, called access, which is shown as an arbitrated control port 404 that indicates whether or not component 400 is holding a virtual token (not shown).
- Component 400 can only use a send message port 406 on access coordination interface 402 when arbitrated control port 404 is true.
- Access coordination interface 402 further has a receive message port 408 .
- FIG. 4B show a round-robin coordinator 410 in accordance with the present invention.
- round-robin coordinator 410 has a set of coordinator coordination interfaces 412 for connecting to a set of components 400 .
- Each component 400 includes a resource access coordination interface 402 .
- Each coordinator coordination interface 412 has a coordinator arbitrated control port 414 , an incoming send message port 416 and an outgoing receive message port 418 .
- Coordinator coordination interface 412 in complimentary to resource access coordination interface 402 , and vice versa, because the ports on the two interfaces are compatible and can function to transfer information between the two interfaces.
- the round-robin protocol requires round-robin coordinator 410 to manage the coordination topology.
- Round-robin coordinator 410 is an instance of more general abstractions called coordination classes, in which coordination classes define specific coordination protocols and a coordinator is a specific implementation of the coordination class.
- Round-robin coordinator 410 contains all information about how components 400 are supposed to coordinate. Although round-robin coordinator 410 can have a distributed implementation, no component 400 is required to keep references to any other component 400 (unlike the distributed round-robin implementation shown in FIG. 3B). All required references are maintained by round-robin coordinator 410 itself, and components 400 do not even need to know that they are coordinating through round-robin.
- Resource access coordination interface 402 can be used with any coordinator that provides the appropriate complementary interface.
- a coordinator's design is independent of whether it is implemented on a distributed platform or on a monolithic single processor platform.
- Coordination interfaces are used to connect components to coordinators. They are also the principle key to a variety of useful runtime debugging techniques. Coordination interfaces support component modularity by exposing all parts of the component that participate in the coordination protocol. Ports are elements of coordination interfaces, as are guarantees and requirements, each of which will be described in turn.
- a port is a primitive connection point for interconnecting components.
- Each port is a five-tuple (T; A; Q; D; R) in which:
- T represents the data type of the port.
- T can be one of int, boolean, char, byte, float, double, or cluster, in which cluster represents a cluster of data types (e.g., an int followed by a float followed by two bytes).
- A is a boolean value that is true if the port is arbitrated and false otherwise.
- Q is an integer greater than zero that represents logical queue depth for a port.
- D is one of in, out, inout, or custom and represents the direction data flows with respect to the port.
- R is one of discard-on-read, discard-on-transfer, or hold and represents the policy for data removal on the port.
- Discard-on-read indicates that data is removed immediately after it is read (and any data in the logical queue are shifted)
- discard-on-transfer indicates that data is removed from a port immediately after being transferred to another port
- hold indicates that data should be held until it is overwritten by another value. Hold is subject to arbitration.
- Custom directionality allows designers to specify ports that accept or generate only certain specific values. For example, a designer may want a port that allows other components to activate, but not deactivate, a mode. While many combinations of port attributes are possible, we normally encounter only a few. The three most common are message ports (output or input), state ports (output, input, or both; sometimes arbitrated), and control ports (a type of state port).
- FIG. 5 illustrates the visual syntax used for several common ports throughout this application. With reference to FIG. 5, this figure depicts an exported state port 502 , an imported state port 504 , an arbitrated state port 506 , an output data port 508 , and an input data port 510 .
- Message ports (output and input) data ports 508 and 510 respectively) are either send (T; false; 1 ; out; discard-on-transfer) or receive (T; false; Q; in; discard-on-read). Their function is to transfer data between components. Data passed to a send port is transferred immediately to the corresponding receive port, thus it cannot be retrieved from the send port later. Receive data ports can have queues of various depths. Data arrivals on these ports are frequently used to trigger and pass data parameters into actions. Values remain on receive ports until they are read.
- State ports such as exported state port 502 , imported state port 504 , and arbitrated state port 506 , hold persistent values, and the value assigned to a state port may be arbitrated. This means that, unlike message ports, values remain on the state ports until changed.
- arbitration coordinator not shown.
- Control ports are similar to state ports, but a control port is limited to having the boolean data type. Control ports are typically bound to modes. Actions interact with a control port indirectly, by setting and responding to the values of a mode that is bound to the control port.
- arbitrated control port 404 shown in FIG. 4A is a control port that can be bound to a mode (not shown) containing all actions that send data on a shared channel.
- the mode is inactive, disabling all actions that send data on the channel.
- Guarantees are formal declarations of invariant properties of a coordination interface. There can be several types of guarantees, such as timing guarantees between events, guarantees between control state (e.g., state A and state B are guaranteed to be mutually exclusive), etc.
- a coordination interface's guarantees reflect properties of the component to which the coordination interface is connected, the guarantees are not physically bound to any internal portions of the component. Guarantees can often be certified through static analysis of the software system. Guarantees are meant to cache various properties that are inherent in a component or a coordinator in order to simplify static analysis of the software system.
- a guarantee is a promise provided by a coordination interface.
- the guarantee takes the form of a predicate promised to be invariant.
- guarantees can include any type of predicate (e.g., x>3, in which x is an integer valued state port, or t ea ⁇ t eb ⁇ 2 ms).
- guarantees will be only event-ordering guarantees (guarantees that specify acceptable orders of events) or control-relationship guarantees (guarantees pertaining to acceptable relative component behaviors).
- a requirement is a formal declaration of the properties necessary for correct software system functionality.
- An example of a requirement is a required response time for a coordination interface-the number of messages that must have arrived at the coordination interface before the coordination interface can transmit, or fire, the messages.
- the requirements of the first coordination interface must be conservatively matched by the guarantees of the second coordination interface (e.g., x ⁇ 7 as a guarantee conservatively matches x ⁇ 8 as a requirement).
- guarantees are not physically bound to anything within the component itself. Guarantees can often be verified to be sufficient for the correct operation of the software system in which the component is used.
- a requirement is a predicate on a first coordination interface that must be conservatively matched with a guarantee on a complementary second coordination interface.
- a coordination interface is a four-tuple (P; G; R; I) in which:
- P is a set of named ports.
- G is a set of named guarantees provided by the interface.
- R is a set of named requirements that must be matched by guarantees of connected interfaces.
- I is a set of named coordination interfaces.
- Coordinator coordination interface 412 shown in FIG. 4B, used for round-robin coordination is called AccessInterface and is defined in Table 1.
- a recursive coordination interface descriptor which is a five-tuple (P a ; G a ; R a ; I d ; N d ) in which:
- P a is a set of abstract ports, which are ports that may be incomplete in their attributes (i.e., they do not yet have a datatype).
- G a is a set of abstract guarantees, which are guarantees between abstract ports.
- R a is a set of abstract requirements, which are requirements between abstract ports.
- I d is a set of coordination interface descriptors.
- Allowing coordination interfaces to contain other coordination interfaces is a powerful feature. It lets designers use common coordination interfaces as complex ports within other coordination interfaces. For example, the basic message ports described above are nonblocking, but we can build a blocking coordination interface (not shown) that serves as a blocking port by combining a wait state port with a message port.
- a coordinator provides the concrete representations of intercomponent aspects of a coordination protocol. Coordinators allow a variety of static analysis debugging methodologies for software systems created with the coordination-centric design methodology.
- a coordinator contains a set of coordination interfaces and defines the relationships the coordination interfaces. The coordination interfaces complement the component coordination interfaces provided by components operating within the protocol. Through matched interface pairs, coordinators effectively describe connections between message ports, correlations between control states, and transactions between components.
- round-robin coordinator 410 shown in FIG. 4B, must ensure that only one component 400 has its component control port 404 's value, or its access bit, set to true. Round-robin coordinator 410 must further ensure that the correct component 400 has its component control port 404 set to true for the chosen sequence.
- This section presents formal definitions of the parts that comprise coordinators: modes, actions, bindings, action triples, and constraints. These definitions culminate in a formal definition of coordinators.
- a mode is a boolean value that can be used as a guard on an action.
- the mode is most often bound to a control port in a coordination interface for the coordinator.
- the modes of concern are bound to a coordinator control port 414 of each coordinator coordination interface 412 .
- An action is a primitive behavioral element that can:
- Actions can range in complexity from simple operations up to complicated pieces of source code.
- An action in a coordinator is called a transparent action because the effects of the action can be precomputed and the internals of the action are completely exposed to the coordination-centric design tools.
- Bindings connect input ports to output ports, control ports to modes, state ports to variables, and message ports to events. Bindings are transparent and passive. Bindings are simply conduits for event notification and data transfer. When used for event notification, bindings are called triggers.
- an action must be enabled by a mode and triggered by an event.
- the combination of a mode, trigger, and action is referred to as an action triple, which is a triple (m; t; a) in which:
- m is a mode.
- t is a trigger.
- a is an action.
- the trigger is a reference to an event type, but it can be used to pass data into the action.
- Action triples are written: mode: trigger: action
- a coordinator's actions are usually either pure control, in which both the trigger and action performed affect only control state, or pure data, in which both the trigger and action performed occur in the data domain.
- pure control in which both the trigger and action performed affect only control state
- pure data in which both the trigger and action performed occur in the data domain.
- constraints are boolean relationships between control ports. They take the form:
- a constraint differs from a guarantee in that the guarantee is limited to communicating in-variant relationships between components without providing a way to enforce the in-variant relationship.
- the constraint is a set of instructions to the runtime system dealing with how to enforce certain relationships between components.
- two corrective actions are available to the system: (1) modify the values on the left-hand side to make the left-hand expression evaluate as false (an effect termed backpressure in [ 27 ]) or (2) alter the right-hand side to make it true.
- LHM left-hand modify
- RHM right-hand modify
- Round-robin coordinator 410 has a set of safety constraints to ensure that there is never more than one token in the system:
- coordinators can be hierarchically composed.
- a coordinator is a six-tuple (I; M; B; N; A; X) in which:
- I is a set of coordination interfaces.
- M is a set of modes.
- B is a set of bindings between interface elements (e.g., control ports and message ports) and internal elements (e.g., modes and triggers).
- interface elements e.g., control ports and message ports
- internal elements e.g., modes and triggers
- N is a set of constraints between interface elements.
- A is a set of action triples for the coordinator.
- X is a set of subcoordinators.
- FIGS. 6A, 6B, 6 C, and 6 D show a few simple coordinators highlighting the bindings and constraints of the respective coordinators.
- a unidirectional data transfer coordinator 600 transfers data in one direction between two components (not shown) by connecting incoming receive message port 408 to outgoing receive message port 418 with a binding 602 .
- bidirectional data transfer coordinator 604 transfers data back and forth between two components (not shown) by connecting incoming receive message port 408 to outgoing receive message port 418 with binding 602 and connecting send message port 406 to incoming send message port 416 with a second binding 602 .
- Unidirectional data transfer coordinator 600 and bidirectional data transfer coordinator 604 simply move data from one message port to another. Thus each coordinator consists of bindings between corresponding ports on separate coordination interfaces.
- state unification coordinator 606 ensures that a state port a 608 and a state port b 610 are always set to the same value. State unification coordinator 606 connects state port a 608 to state port b 610 with binding 602 .
- control state mutex coordinator 612 has a first constraint 618 and a second constraint 620 as follows:
- Constraints 618 and 620 can be restated as follows:
- a state port c 614 having a true value implies that a state port d 616 has a false value
- State port d 616 having a true value implies that state port c 614 has a false value.
- a coordinator has two types of coordination interfaces: up interfaces that connect the coordinator to a second coordinator, which is at a higher level of design hierarchy and down interfaces that connect the coordinator either to a component or to a third coordinator, which is at a lower level of design hierarchy. Down interfaces have names preceded with “ ⁇ ” .
- Round-robin coordinator 410 has six down coordination interfaces (previously referred to as coordinator coordination interface 412 ), with constraints that make the turning off of any coordinator control port 414 (also referred to as access control port) turn on the coordinator control port 414 of the next coordinator coordination interface 412 in line. Table 2 presents all constituents of the round-robin coordinator.
- This tuple describes an implementation of a round-robin coordination protocol for a particular system with six components, as shown in round-robin coordinator 410 .
- the coordination class is a six-tuple (Ic; Mc; Bc; Nc; Ac; Xc) in which:
- Ic is a set of coordination interface descriptors in which each descriptor provides a type of coordination interface and specifies the number of such interfaces allowed within the coordination class.
- Mc is a set of abstract modes that supplies appropriate modes when a coordination class is instantiated with a fixed number of coordinator coordination interfaces.
- Bc is a set of abstract bindings that forms appropriate bindings between elements when the coordination class is instantiated.
- Nc is a set of abstract constraints that ensures appropriate constraints between coordination interface elements are in place as specified at instantiation.
- Ac is a set of abstract action triples for the coordinator.
- Xc is a set of coordination classes (hierarchy).
- a coordinator describes coordination protocol for a particular application, it requires many aspects, such as the number of coordination interfaces and datatypes, to be fixed.
- Coordination classes describe protocols across many applications.
- the use of the coordination interface descriptors instead of coordination interfaces lets coordination classes keep the number of interfaces and datatypes undetermined until a particular coordinator is instantiated.
- a round-robin coordinator contains a fixed number of coordinator coordination interfaces with specific bindings and constraints between the message and state ports on the fixed number of coordinator coordination interfaces.
- a round-robin coordination class contains descriptors for the coordinator coordination interface type, without stating how many coordinator coordination interfaces, and instructions for building bindings and constraints between ports on the coordinator coordination interfaces when a particular round-robin coordinator is created.
- a component is a six-tuple (I; A; M; V; S; X) in which:
- I is a set of coordination interfaces.
- A is a set of action triples.
- M is a set of modes.
- V is a set of typed variables.
- S is a set of subcomponents.
- X is a set of coordinators used to connect the subcomponents to each other and to the coordination interfaces.
- Actions within a coordinator are fairly regular, and hence a large number of actions can be described with a few simple expressions. However, actions within a component are frequently diverse and can require distinct definitions for each individual action. Typically a component's action triples are represented with a table that has three columns: one for the mode, one for the trigger, and one for the action code. Table 3 shows some example actions from a component that can use round-robin coordination.
- Mode Trigger Action access tick AccessInterface.s.send(“Test message”); ⁇ access ⁇ access tick waitCount ++;
- a component resembles a coordinator in several ways (for example, the modes and coordination interfaces in each are virtually the same).
- Components can have internal coordinators, and because of the internal coordinators, components do not always require either bindings or constraints.
- aspects of components are described in greater detail. Theses aspects of components include variable scope, action transparency, and execution semantics for systems of actions.
- An action within a component can be either a transparent action or an opaque action.
- Transparent and opaque actions each have different invocation semantics.
- the internal properties, i.e. control structures, variable, changes in state, operators, etc., of transparent actions are visible to all coordination-centric design tools.
- the design tools can separate, observe, and analyze all the internal properties of opaque actions.
- Opaque actions are source code. Opaque actions must be executed directly, and looking at the internal properties of opaque actions can be accomplished only through traditional, source-level debugging techniques.
- An opaque action must explicitly declare any mode changes and coordination interfaces that the opaque action may directly affect.
- An action is triggered by an event, such as data arriving or departing a message port, or changes in value being applied to a state port.
- An action can change the value of a state port, generate an event, and provide a way for the software system to interact with low-level device drivers. Since actions typically produce events, a single trigger can be propagated through a sequence of actions.
- a subsumption protocol is a priority-based, preemptive resource allocation protocol commonly used in building small, autonomous robots, in which the shared resource is the robot itself.
- FIG. 7 shows a set of coordination interfaces and a coordinator for implementing the subsumption protocol.
- a subsumption coordinator 700 has a set of subsumption coordinator coordination interfaces 702 , which have a subsume arbitrated coordinator control port 704 and an incoming subsume message port 706 .
- Each subsume component 708 has a subsume component coordination interface 710 .
- Subsume component coordination interface 710 has a subsume arbitrated component control port 712 and an outgoing subsume message port 714 .
- Subsumption coordinator 700 and each subsume component 708 are connected by their respective coordination interfaces, 702 and 710 .
- Each subsumption coordinator coordination interface 702 in subsumption coordinator 700 is associated with a priority.
- Each subsume component 708 has a behavior that can be applied to a robot (not shown). At any time, any subsume component 708 can attempt to assert its behavior on the robot. The asserted behavior coming from the subsume component 708 connected to the subsumption coordinator coordination interface 702 with the highest priority is the asserted behavior that will actually be performed by the robot.
- Subsume components 708 need not know anything about other components in the system. In fact, each subsume component 708 is designed to perform independently of whether their asserted behavior is performed or ignored.
- Subsumption coordinator 700 further has a slave coordinator coordination interface 716 , which has an outgoing slave message port 718 .
- Outgoing slave message port 718 is connected to an incoming slave message port 720 .
- Incoming slave message port 720 is part of a slave coordination interface 722 , which is connected to a slave 730 .
- slave 730 which typically controls the robot
- a lower-priority subsume component 708 already using the resource must surrender the resource whenever a higher-priority subsume component 708 tries to access the resource.
- Subsumption coordination uses preemptive release semantics, whereby each subsume component 708 must always be prepared to relinquish the resource.
- Table 4 presents the complete tuple for the subsumption coordinator.
- B ⁇ 1 ⁇ i ⁇ n (Subsume t. subsume, subsume t ) ⁇ constraints
- N ⁇ 1 ⁇ i ⁇ n ( ⁇ (1 ⁇ j ⁇ i) subsume l ⁇ subsume j ) actions
- FIG. 8 depicts a barrier synchronization coordinator 800 .
- barrier synchronization coordinator 800 has a set of barrier synchronization coordination interfaces 802 , each of which has a coordinator arbitrated state port 804 , named wait.
- Coordinator arbitrated state port 804 is connected to a component arbitrated state port 806 , which is part of a component coordination interface 808 .
- Component coordination interface 808 is connected to a component 810 . When all components 810 reach their respective synchronization points, they are all released from waiting.
- the actions for a barrier synchronization coordinator with n interfaces are: ⁇ 0 ⁇ i ⁇ n ⁇ wait i : ⁇ : ⁇ 0 ⁇ j ⁇ n ⁇ - wait j
- FIG. 9 depicts a rendezvous coordinator 900 in accordance with the present invention.
- rendezvous coordinator 900 has a rendezvous coordination interface 902 , which has a rendezvous arbitrated state port 904 .
- a set of rendezvous components 906 each of which may perform different functions or have vastly different actions and modes, has a rendezvous component coordination interface 908 , which includes a component arbitrated state port 910 .
- Rendezvous components 906 connect to rendezvous coordinator 900 through their respective coordination interfaces, 908 and 902 .
- Rendezvous coordinator 900 further has a rendezvous resource coordination interface 912 , which has a rendezvous resource arbitrated state port 914 , also called available.
- a resource 916 has a resource coordination interface 918 , which has a resource arbitrated state port 920 .
- Resource 916 is connected to rendezvous coordinator 900 by their complementary coordination interfaces, 918 and 912 respectively.
- rendezvous-style coordination there are two types of participants: resource 916 and several resource users, here rendezvous components 916 .
- resource 916 When resource 916 is available, it activates its resource arbitrated state port 920 , also referred to as its available control port. If there are any waiting rendezvous components 916 , one will be matched with the resource; both participants are then released. This differs from subsumption and round-robin in that resource 916 plays an active role in the protocol by activating its available control port 920 .
- rendezvous coordinator 900 The actions for rendezvous coordinator 900 are:
- FIG. 10 depicts a dedicated RPC system.
- a dedicated RPC coordinator 1000 has an RPC server coordination interface 1002 , which includes an RPC server imported state port 1004 , an RPC server output message port 1006 , and an RPC server input message port 1008 .
- Dedicated RPC coordinator 1000 is connected to a server 1010 .
- Server 1010 has a server coordination interface 1012 , which has a server exported state port 1014 , a server input data port 1016 , and a server output data port 1018 .
- Dedicated RPC coordinator 1000 is connected to server 1010 through their complementary coordination interfaces, 1002 and 1012 respectively.
- Dedicated RPC coordinator 1000 further has an RPC client coordination interface 1020 , which includes an RPC client imported state port 1022 , an RPC client input message port 1024 , and an RPC client output message port 1026 .
- Dedicated RPC coordinator 1000 is connected to a client 1028 by connecting RPC client coordination interface 1020 to a complementary client coordination interface 1030 .
- Client coordination interface 1030 has a client exported state port 1032 , a client output message port 1034 , and a client input message port 1036 .
- the dedicated RPC protocol has a client/server protocol in which server 1010 is dedicated to a single client, in this case client 1028 .
- server 1010 is dedicated to a single client, in this case client 1028 .
- client 1028 the temporal behavior of this protocol is the most important factor in defining it.
- the following transaction listing describes this temporal behavior:
- Client 1028 enters blocked mode by changing the value stored at client exported state port 1032 to true.
- Client 1028 transmits an argument data message to server 1010 via client output message port 1034 .
- Server 1010 receives the argument (labeled “a”) data message via server input data port 1016 and enters serving mode by changing the value stored in server exported state port 1014 to true.
- Server 1010 computes return value.
- Server 1010 transmits a return (labeled “r”) message to client 1020 via server output data port 1018 and exits serving mode by changing the value stored in server exported state port 1014 to false.
- Client 1028 receives the return data message via client input message port 1036 and exits blocked mode by changing the value stored at client exported state port 1032 to false.
- T RPC ⁇ + client . blocked ⁇ client . transmits ⁇ ⁇ + server . serving ⁇ server . transmits ⁇ ⁇ ( - server . serving
- the r in server.r.output refers to the server output data port 1018 , also labeled as the r event port on the server, and the a in serving.a.input refers to server input data port 1016 , also labeled as the a port on the server (see FIG. 10).
- client 1028 must be in blocked mode whenever it sends an argument message.
- the first predicate takes the same form as a constraint; however, since dedicated RPC coordinator 1000 only imports the client:blocked and server:serving modes (i.e., through RPC client imported state port 1022 and RPC server imported state port 1004 respectively), dedicated RPC coordinator 1000 is not allowed to alter these values to comply. In fact, none of these predicates is explicitly enforced by a runtime system. However, the last two can be used as requirements and guarantees for interface type-checking.
- Coordination-centric design methodology lets system specifications be executed directly, according to the semantics described above. When components and coordinators are composed into higher-order structures, however, it becomes essential to consider hazards that can affect system behavior. Examples include conflicting constraints, in which local resolution semantics may either leave the system in an inconsistent state or make it cycle forever, and conflicting actions that undo one another's behavior. In the remainder of this section, the effect of composition issues on system-level executions is explained.
- a configuration is the combined control state of a system-basically, the set of active modes at a point in time.
- a configuration in coordination-centric design is a bit vector containing one bit for each mode in the system. The bit representing a control state is true when the control state is active and false when the control state is inactive. Configurations representing the complete system control state facilitate reasoning on system properties and enable several forms of static analysis of system behavior.
- Triggers are formal parameters for events. As mentioned earlier, there are two types of triggers: (1) control triggers, invoked by control events such as mode change requests, and (2) data flow triggers, invoked by data events such as message arrivals or departures. Components and coordinators can both request mode changes (on the modes visible to them) and generate new messages (on the message ports visible to them). Using actions, these events can be propagated through the components and coordinators in the system, causing a cascade of data transmissions and mode change requests, some of which can cancel other requests. When the requests, and secondary requests implied by them, are all propagated through the system, any requests that have not been canceled are confirmed and made part of the system's new configuration.
- Triggers can be immediately propagated through their respective actions or delayed by a scheduling step. Recall that component actions can be either transparent or opaque. Transparent actions typically propagate their triggers immediately, although it is not absolutely necessary that they do so. Opaque actions typically must always delay propagation.
- Some triggers must be immediately propagated through actions, but only on certain types of transparent actions. Immediate propagation can often involve static precomputation of the effect of changes, which means that certain actions may never actually be performed. For example, consider a system with a coordinator that has an action that activates mode A and a coordinator with an action that deactivates mode B whenever A is activated. Static analysis can be used to determine in advance that any event that activates A will also deactivate B; therefore, this effect can be executed immediately without actually propagating it through A.
- Trigger propagation through opaque actions must typically be delayed, since the system cannot look into opaque actions to precompute their results. Propagation may be delayed for other reasons, such as system efficiency. For example, immediate propagation requires tight synchronization among software components. If functionality is spread among a number of architectural components, immediate propagation is impractical.
- FIG. 11 shows a combined coordinator 1100 with both preemption and round-robin coordination for controlling access to a resource, as discussed above.
- components 1102 , 1104 , 1106 , 1108 , and 1110 primarily use round-robin coordination, and each includes a component coordination interface 1112 , which has a component arbitrated control port 1114 and a component output message port 1116 .
- preemptor component 1120 is allowed to grab the resource immediately.
- Preemptor component 1120 has a preemptor component coordination interface 1122 .
- Preemptor component coordination interface 1122 has a preemptor arbitrated state port 1124 , a preemptor output message port 1126 , and a preemptor input message port 1128 .
- All component coordination interfaces 1112 and preemptor component coordination interface 1122 are connected to a complementary combined coordinator coordination interface 1130 , which has a coordinator arbitrated state port 1132 , a coordinator input message port 1134 , and a coordinator output message port 1136 .
- Combined coordinator 1100 is a hierarchical coordinator and internally has a round-robin coordinator (not shown) and a preemption coordinator (not shown).
- Combined coordinator coordination interface 1130 is connected to a coordination interface to round-robin 1138 and a coordination interface to preempt 1140 .
- Coordinator arbitrated state port 1132 is bound to both a token arbitrated control port 1142 , which is part of coordination interface to round-robin 1138 , and to a preempt arbitrated control port 1144 , which is part of coordination interface to preempt 1140 .
- Coordinator input message port 1134 is bound to an interface to a round-robin output message port 1146
- coordinator output message port 1136 is bound to an interface to round-robin input message port 1148 .
- preemption interferes with the normal round-robin ordering of access to the resource.
- the resource moves to the component that in round-robin-ordered access would be the successor to preemptor component 1120 . If the resource is preempted too frequently, some components may starve.
- triggers can be control-based, data-based, or both, and actions can produce both control and data events, control and dataflow aspects of a system are coupled through actions. Through combinations of actions, designers can effectively employ modal data flow, in which relative schedules are switched on and off based on the system configuration.
- Relative scheduling is a form of coordination. Recognizing this and understanding how it affects a design can allow a powerful class of optimizations. Many data-centric systems (or subsystems) use conjunctive firing, which means that a component buffers messages until a firing rule is matched. When matching occurs, the component fires, consuming the messages in its buffer that caused it to fire and generating a message or messages of its own. Synchronous data flow systems are those in which all components have only firing rules with constant message consumption and generation.
- FIG. 12A shows a system in which a component N 1 1200 is connected to a component N 3 1202 by a data transfer coordinator 1204 and a component N 2 1206 is connected to component N 3 1202 by a second data transfer coordinator 1208 .
- Component N 3 1202 fires when it accumulates three messages on a port c 1210 and two messages on a port d 1212 .
- component N 3 1202 produces two messages on a port o 1214 .
- Coordination control state tracks the logical buffer depth for these components. This is shown with numbers representing the logical queue depth of each port in FIG. 12.
- FIG. 12B shows the system of FIG. 12A in which data transfer coordinator 1204 and second data transfer coordinator 1208 have been merged to form a merged data transfer coordinator 1216 .
- Merging the coordinators in this example provides an efficient static schedule for component firing.
- Merged data transfer coordinator 1216 fires component N 1 1200 three times and component N 2 1206 twice.
- Merged data transfer coordinator 1216 then fires component N 3 1202 twice (to consume all messages produced by component N 1 1200 and component N 2 1206 ).
- Message rates can vary based on mode. For example, a component may consume two messages each time it fires in one mode and four each time it fires in a second mode. For a component like this, it is often possible to merge schedules on a configuration basis, in which each configuration has static consumption and production rates for all affected components.
- control and communication synthesis can be employed to automatically transform user-specified coordination to a selected set of standard protocols.
- Designers may have to manually produce transformations for nonstandard protocols.
- RPC-style coordination often has multiple clients for individual servers. Here, there is no apparent connection between client and server until one is forged for a transaction. After the connection is forged, however, the coordination proceeds in the same fashion as dedicated RPC.
- FCFS First Come/First Serve Protocol
- FIG. 13 illustrates a first come/first serve (FCFS) resource allocation protocol, which is a protocol that allocates a shared resource to the requester that has waited longest.
- FCFS first come/first serve
- a FCFS component interface 1300 for this protocol has a request control port 1302 , an access control port 1304 and a component outgoing message port 1306 .
- a FCFS coordinator 1308 for this protocol has a set of FCFS interfaces 1310 that are complementary to FCFS component interfaces 1300 , having a FCFS coordinator request control port 1312 , a FCFS coordinator access port 1314 , and a FCFS coordinator input message port 1316 .
- FCFS coordinator 1308 asserts the appropriate FCFS coordinator access port 1314 , releasing FCFS coordinator request control port 1312 .
- FCFS coordinator 1308 uses a rendezvous coordinator and two round-robin coordinators. One round-robin coordinator maintains a list of empty slots in which a component may be enqueued, and the other round-robin coordinator maintains a list showing the next component to be granted access.
- FCFS coordinator request control port 1312 becomes active
- FCFS coordinator 1308 begins a rendezvous access to a binder action. When activated, this action maps the appropriate component 1318 to a position in the round-robin queues. A separate action cycles through one of the queues and selects the next component to access the server.
- FCFS coordinator 1308 attempts to grant access to resource 1320 to the earliest component 1318 having requested resource 1320 , with concurrent requests determined based on the order in the rendezvous coordinator of the respective components 1318 .
- FIG. 14 depicts a multiclient RPC coordinator 1400 formed by combining FCFS coordinator 1308 with dedicated RPC coordinator 1000 .
- a set of clients 1402 have a set of client coordination interfaces 1030 , as shown in FIG. 10.
- multiclient RPC coordinator 1400 has a set of RPC client coordination interfaces 1020 , as shown in FIG. 10.
- RPC client input message port 1024 of RPC client coordination interface 1020
- Message transfer action 1403 serves to transfer messages between RPC client input message port 1024 and component outgoing message port 1306 .
- multiclient RPC coordinator 1400 must negotiate accesses to a server 1404 and keep track of the values returned by server 1404 .
- Monitor modes are modes that exclude all but a selected set of actions called continuations, which are actions that continue a behavior started by another action.
- Monitor mode entry must be immediate (at least locally), so that no unexpected actions can execute before they are blocked by such a mode.
- Each monitor mode has a list of actions that cannot be executed when it is entered.
- the allowed (unlisted) actions are either irrelevant or are continuations of the action that caused entry into this mode. There are other conditions, as well.
- This mode requires an exception action if forced to exit. However, this exception action is not executed if the monitor mode is turned off locally.
- Exception actions are a type of continuation. When in a monitor mode, exception actions respond to unexpected events or events that signal error conditions. For example, multiclient RPC coordinator 1400 can bind client.blocked to a monitor mode and set an exception action on+server.serving. This will signal an error whenever the server begins to work when the client is not blocked for a response.
- FIG. 15 depicts a large-scale example system under the coordination-centric design methodology.
- the large scale system is a bimodal digital cellular network 1500 .
- Network 1500 is for the most part a simplified version of a GSM (global system for mobile communications) cellular network. This example shows in greater detail how the parts of coordination-centric design work together and demonstrates a practical application of the methodology.
- Network 1500 has two different types of cells, a surface cell 1502 (also referred to as a base station 1502 ) and a satellite cell 1504 . These cells are not only differentiated by physical position, but by the technologies they use to share network 1500 .
- Satellite cells 1504 use a code division multiple access (CDMA) technology, and surface cells 1502 use a time division multiple access (TDMA) technology.
- CDMA code division multiple access
- TDMA time division multiple access
- Mobile units 1506 or wireless devices, can move between surface cells 1502 , requiring horizontal handoffs between surface cells 1502 .
- Several surface cells 1502 are typically connected to a switching center 1508 .
- Switching center 1508 is typically connected to a telephone network or the Internet 1512 .
- the network In addition to handoffs between surface cells 1502 , the network must be able to hand off between switching centers 1508 .
- mobile units 1506 leave the TDMA region, they remain covered by satellite cells 1504 via vertical handoffs between cells. Since vertical handoffs require changing protocols as well as changing base stations and switching centers, they can be complicated in terms of control.
- Numerous embedded systems comprise the overall system.
- switching center 1508 and base stations, surface cells 1502 are required as part of the network infrastructure, but cellular phones, handheld Web browsers, and other mobile units 1506 may be supported for access through network 1500 .
- This section concentrates on the software systems for two particular mobile units 1506 : a simple digital cellular phone (shown in FIG. 16) and a handheld Web browser (shown in FIG. 24).
- These examples require a wide variety of coordinators and reusable components.
- Layered coordination is a feature in each system, because a function of many subsystems is to perform a layered protocol.
- this example displays how the hierarchically constructed components can be applied in a realistic system to help manage the complexity of the overall design.
- FIG. 16 shows a top-level coordination diagram of the behavior of a cell phone 1600 .
- cell phone 1600 supports digital encoding of voice streams. Before it can be used, it must be authenticated with a home master switching center (not shown). This authentication occurs through a registered master switch for each phone and an authentication number from the phone itself. There are various authentication statuses, such as full access, grey-listed, or blacklisted. For cell phone 1600 , real-time performance is more important than reliability. A dropped packet is not retransmitted, and a late packet is dropped since its omission degrades the signal less than its late incorporation.
- Each component of cell phone 1600 is hierarchical.
- a GUI 1602 lets users enter phone numbers while displaying them and query an address book 1604 and a logs component 1606 .
- Address book 1604 is a database that can map names to phone numbers and vice versa.
- GUI 1602 uses address book 1604 to help identify callers and to look up phone numbers to be dialed.
- Logs 1606 track both incoming and outgoing calls as they are dialed.
- a voice component 1608 digitally encodes and decodes, and compresses and decompresses, an audio signal.
- a connection component 1610 multiplexes, transmits, receives, and demultiplexes the radio signal and separates out the voice stream and caller identification information.
- connection component 1610 and a clock 1612 and between logs 1606 and connection component 1610 , are unidirectional data transfer coordinators 600 as described with reference to FIG. 6A.
- voice component 1608 and connection component 1610 and between GUI 1602 and connection component 1610 , are bidirectional data transfer coordinators 604 , as described with reference to FIG. 6B.
- state unification coordinator 606 is between clock 1612 and GUI 1602 .
- GUI 1602 and address book 1604 is a dedicated RPC coordinator 1000 as described with reference to FIG. 10, in which address book 1604 has client 1028 and GUI 1602 has server 1010 .
- GUI/log coordinator 1614 There is also a custom GUI/log coordinator 1614 between logs 1606 and GUI 1602 .
- GUI/log coordinator 1614 lets GUI 1602 transfer new logged information through an r output message port 1616 on a GUI coordination interface 1618 to an r input message port 1620 on a log coordination interface 1622 .
- GUI/log coordinator 1614 also lets GUI 1602 choose current log entries through a pair of c output message ports 1624 on GUI coordination interface 1618 and a pair of c input message ports 1626 on log coordination interface 1622 .
- Logs 1606 continuously display one entry each for incoming and outgoing calls.
- FIG. 17A is a detailed view of GUI component 1602 , of FIG. 16.
- GUI component 1602 has two inner components, a keypad 1700 and a text-based liquid crystal display 1702 , as well as several functions of its own (not shown). Each time a key press occurs, it triggers an action that interprets the press, depending on the mode of the system. Numeric presses enter values into a shared dialing buffer. When a complete number is entered, the contents of this buffer are used to establish a new connection through connection component 1610 . Table 5 shows the action triples for GUI 1602 .
- Mode Trigger Action Idle numBuffer.append(keypress.val) Send radio.send(numBuffer.val) +outgoingCall Disconnect Nil Leftarrow AddressBook.forward() +lookupMode Rightarrow log.lastcall() +outlog LookupMode Leftarrow AddressBook.forward() Rightarrow AddressBook.backward()
- An “Addr Coord” coordinator 1704 includes an address book mode (not shown) in which arrow key presses are transformed into RPC calls.
- FIG. 17B is a detailed view of logs component 1606 , which tracks all incoming and outgoing calls.
- both GUI component 1602 and connection component 1610 must communicate with logs component 1606 through specific message ports.
- Those specific message ports include a transmitted number message port 1720 , a received number message port 1722 , a change current received message port 1724 , a change current transmitted message port 1726 , and two state ports 1728 and 1729 for presenting the current received and current transmitted values, respectively.
- Logs component 1606 contains two identical single-log components: a send log 1730 for outgoing calls and a receive log 1740 for incoming calls.
- the interface of logs component 1606 is connected to the individual log components by a pair of adapter coordinators, Adapl 1750 and Adap 2 1752 .
- Adap 1 1750 has an adapter receive interface 1754 , which has a receive imported state port 1756 and a receive output message port 1758 .
- Adap 1 1750 further has an adapter send interface 1760 , which has a send imported state port 1762 and a send output message port 1764 .
- state port 1728 is bound to receive imported state port 1756
- change current received message port 1724 is bound to receive output message port 1758
- received number message port 1722 is bound to a received interface output message port 1766 on a received number coordination interface 1768
- change current transmitted message port 1726 is bound to send output message port 1764
- state port 1729 is bound to Up.rc is bound to send imported state port 1762 .
- FIG. 18A is a detailed view of voice component 1608 of FIG. 16.
- Voice component 1608 has a compression component 1800 for compressing digitized voice signals before transmission, a decompression component 1802 for decompressing received digitized voice signals, and interfaces 1804 and 1806 to analog transducers (not shown) for digitizing sound to be transmitted and for converting received transmissions into sound.
- Voice component 1608 is a pure data flow component containing sound generator 1808 which functions as a white-noise generator, a ring tone generator, and which has a separate port for each on sound generator interface 1810 , and voice compression functionality in the form of compression component 1800 and decompression component 1802 .
- FIG. 18B is a detailed view of connection component 1610 of FIG. 16.
- connection component 1610 coordinates with voice component 1608 , logs component 1606 , clock 1612 , and GUI 1602 .
- connection component 1610 is responsible for coordinating the behavior of cell phone 1600 with a base station that owns the surface cell 1502 (shown in FIG. 15), a switching center 1508 (shown in FIG. 15), and all other phones (not shown) within surface cell 1502 .
- Connection component 1610 must authenticate users, establish connections, and perform handoffs as needed-including appropriate changes in any low-level protocols (such as a switch from TDMA to CDMA).
- FIG. 19 depicts a set of communication layers between connection component 1610 of cell phone 1600 and base station 1502 or switching center 1508 .
- connection component 1610 has several subcomponents, or lower-level components, each of which coordinates with an equivalent, or peer, layer on either base station 1502 or switching center 1508 .
- the subcomponents of connection component 1610 include a cell phone call manager 1900 , a cell phone mobility manager 1902 , a cell phone radio resource manager 1904 , a cell phone link protocol manager 1906 , and a cell phone transport manager 1908 which is responsible for coordinating access to and transferring data through the shared airwaves TDMA and CDMA coordination.
- Each subcomponent will be described in detail including how each fits into the complete system.
- Base station 1502 has a call management coordinator 1910 , a mobility management coordinator 1912 , a radio resource coordinator 1914 (BSSMAP 1915 ), a link protocol coordinator 1916 (SCCO 1917 ), and a transport coordinator 1918 (MTP 1919 ).
- Switching center 1508 has a switching center call manager 1920 , a switching center mobility manager 1922 , (a BSSMAP 1924 , a SCCP 1926 , and an MTP 1928 ).
- FIG. 20 is a detailed view of a call management layer 2000 consisting of cell phone call manager 1900 , which is connected to switching center call manager 1920 by call management coordinator 1910 .
- call management layer 2000 coordinates the connection between cell phone 1600 and switching center 1508 .
- Call management layer 2000 is responsible for dialing, paging, and talking.
- Call management layer 2000 is always present in cell phone 1600 , though not necessarily in Internet appliances (discussed later).
- Cell phone call manager 1900 includes a set of modes (not shown) for call management coordination that consists of the following modes:
- Cell phone call manager 1900 has a cell phone call manager interface 2002 .
- Cell phone call manager interface 2002 has a port corresponding to each of the above modes.
- the standby mode is bound to a standby exported state port 2010 .
- the dialing mode is bound to a dialing exported state port 2012 .
- the RingingRemote mode is bound to a RingingRemote imported state port 2014 .
- the Ringing mode is bound to a ringing imported state port 2016 .
- the CallInProgress mode is bound to a CallInProgress arbitrated state port 2018 .
- Switching center call manager 1920 includes the following modes (not shown) for call management coordination at the switching center:
- Switching center call manager 1920 has a switching center call manager coordination interface 2040 , which includes a port for each of the above modes within switching center call manager 1920 .
- switching center 1508 creates a new switching center call manager and establishes a call management coordinator 1910 between cell phone 1600 and switching center call manager 1920 .
- a mobility management layer authenticates mobile unit 1506 or cell phone 1600 .
- mobility manager 1902 contacts the switching center 1508 for surface cell 1502 and transfers a mobile unit identifier (not shown) for mobile unit 1506 to switching center 1508 .
- Switching center 1508 looks up a home motor switching center for mobile unit 1506 and establishes a set of permissions assigned to mobile unit 1506 .
- This layer also acts as a conduit for the call management layer.
- the mobility management layer performs handoffs between base stations 1502 and switching centers 1508 based on information received from the radio resource layer.
- radio resource manager 1904 chooses the target base station 1502 and tracks changes in frequencies, time slices, and CDMA codes. Cell phones may negotiate with up to 16 base stations simultaneously. This layer also identifies when handoffs are necessary.
- the link layer manages a connection between cell phone 1600 and base station 1502 .
- link protocol manager 1906 packages data for transfer to base station 1502 from cell phone 1600 .
- FIG. 21A is a detailed view of transport component 1908 of connection component 1610 .
- Transport component 1908 has two subcomponents, a receive component 2100 for receiving data and a transmit component 2102 for transmitting data.
- Each of these subcomponents has two parallel data paths a CDMA path 2104 and a TDMA/FDMA path 2106 for communicating in the respective network protocols.
- FIG. 21B is a detailed view of a CDMA modulator 2150 , which implements a synchronous data flow data path.
- CDMA modulator 2150 takes the dot-product of an incoming data signal along path 2152 and a stored modulation code for cell phone 1600 along path 2154 , which is a sequence of chips, which are measured time signals having a value of ⁇ 1 or +1.
- Transport component 1908 uses CDMA and TDMA technologies to coordinate access to a resource shared among several cell phones 1600 , i.e., the airwaves.
- Transport components 1908 supersede the FDMA technologies (e.g., AM and FM) used for analog cellular phones and for radio and television broadcasts.
- FDMA a signal is encoded for transmission by modulating it with a carrier frequency.
- a signal is decoded by demodulation after being passed through a band pass filter to remove other carrier frequencies.
- Each base station 1502 has a set of frequencies—chosen to minimize interference between adjacent cells. (The area covered by a cell may be much smaller than the net range of the transmitters within it.)
- TDMA coordinates access to the airwaves through time slicing.
- Cell phone 1600 on the network is assigned a small time slice, during which it has exclusive access to the media. Outside of the small time slice, cell phone 1600 must remain silent. Decoding is performed by filtering out all signals outside of the small time slice. The control for this access must be distributed. As such, each component involved must be synchronized to observe the start and end of the small time slice at the same instant.
- TDMA Time Division Multiple Access
- Most TDMA systems also employ FDMA, so that instead of sharing a single frequency channel, cell phones 1600 share several channels.
- the band allocated to TDMA is broken into frequency channels, each with a carrier frequency and a reasonable separation between channels.
- user channels for the most common implementations of TDMA can be represented as a two-dimensional array, in which the rows represent frequency channels and the columns represent time slices.
- CDMA is based on vector arithmetic. In a sense, CDMA performs inter-cell-phone coordination using data flow. Instead of breaking up the band into frequency channels and time slicing these, CDMA regards the entire band as an n-dimensional vector space. Each channel is a code that represents a basis vector in this space. Bits in the signal are represented as either 1 or ⁇ 1, and the modulation is the inner product of this signal and a basis vector of mobile unit 1506 or cell phone 1600 . This process is called spreading, since it effectively takes a narrowband signal and converts it into a broadband signal.
- Demultiplexing is simply a matter of taking the dot-product of the received signal with the appropriate basis vector, obtaining the original 1 or ⁇ 1. With fast computation and the appropriate codes or basis vectors, the signal can be modulated without a carrier frequency. If this is not the case, a carrier and analog techniques can be used to fill in where computation fails. If a carrier is used, however, all units use the same carrier in all cells.
- FIG. 22 shows TDMA and CDMA signals for four cell phones 1600 .
- each cell phone 1600 is assigned a time slice during which it can transmit.
- Cell phone 1 is assigned time slice t 0
- cell phone 2 is assigned time slice t 1
- cell phone 3 is assigned time slice t 2
- cell phone 4 is assigned time slice t 3 .
- each cell phone 1600 is assigned a basis vector that it multiplies with its signal.
- Cell phone 1 is assigned the vector: ( - 1 1 - 1 1 )
- Cell phone 2 is assigned the vector: ( 1 - 1 1 - 1 )
- Cell phone 3 is assigned the vector: ( 1 1 - 1 - 1 )
- Cell phone 4 is assigned the vector: ( - 1 - 1 1 1 )
- FIG. 23A is a LCD touch screen component 2300 for a Web browser GUI (shown in FIG. 24A) for a wireless device 1506 .
- a LCD touch screen component 2300 has an LCD screen 2302 and a touch pad 2304 .
- FIG. 23B is a Web page access component 2350 for fetching and formatting web pages.
- web access component 2350 has a page fetch subcomponent 2352 and a page format subcomponent 2354 .
- Web access component 2350 reads hypertext markup language (HTML) from a connection interface 2356 , sends word placement requests to a display interface 2358 , and sends image requests to the connection interface 2356 .
- Web access component 2350 also has a character input interface to allow users to enter page requests directly and to fill out forms on pages that have forms.
- HTML hypertext markup language
- FIG. 24A shows a completed handheld Web browser GUI 2400 .
- handheld Web browser GUI 2400 has LCD touch screen component 2300 , web access component 2350 , and a pen stroke recognition component 2402 that translates pen strokes entered on touch pad 2304 into characters.
- FIG. 24B shows the complete component view of a handheld Web browser 2450 .
- handheld Web browser 2450 is formed by connecting handheld Web browser GUI 2400 to connection component 1610 of cell phone 1600 (described with reference to FIG. 16) with bidirectional data transfer coordinator 604 (described with reference to FIG. 6B).
- Handheld Web browser 2450 is an example of mobile unit 1506 , and connects to the Internet through the cellular infrastructure described above.
- handheld Web browser 2450 has different access requirements than does cell phone 1600 .
- reliability is more important than real-time delivery. Dropped packets usually require retransmission, so it is better to deliver a packet late than to drop it. Real-time issues primarily affect download time and are therefore secondary.
- handheld Web browser 2450 must coordinate media access with cell phones 1600 , and so it must use the same protocol as cell phones 1600 to connect to the network. For that reason, handheld Web browser 2450 can reuse connection component 1610 from cell phone 1600 .
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
- Devices For Executing Special Programs (AREA)
- Hardware Redundancy (AREA)
Abstract
Coordination-centric design methodology facilitates the design and the debugging of software systems. Software systems comprise the following elements: components, coordinators and coordination interfaces. Components are function blocks. Coordinators manage all control and dataflow interactions between components based on a predetermined protocol. Coordination interfaces connect components to coordinators and allow control and dataflow information to be passed between components and coordinators.
Description
- This application is a continuation of U.S. Provisional Application No. 60/213,496 filed Jun. 23, 2000, incorporated herein by reference.
- The present invention relates to a system and method for designing software systems using reusable software elements and communication protocols.
- A system design and programming methodology is most effective when it is closely integrated and coheres tightly with its corresponding debugging techniques. In distributed and embedded system methodologies, the relationship between debugging approaches and design methodologies has traditionally been one-sided in favor of the design and programming methodologies. Design and programming methodologies are typically developed without any consideration for the debugging techniques that will later be applied to software systems designed using that design and programming methodology. While these typical debugging approaches attempt to exploit features provided by the design and programming methodologies, the debugging techniques will normally have little or no impact on what the design and programming features are in the first place. This lack of input from debugging approaches to design and programming methodologies serves to maintain the role of debugging as an afterthought, even though in a typical system design, debugging consumes a majority of the design time. The need remains for a design and programming methodology that reflects input from, and consideration of, potential debugging approaches in order to enhance the design and reduce the implementation time of software systems.
- 1. Packaging of Software Elements
- Packaging refers to the set of interfaces a software element presents to other elements in a system. Software packaging has many forms in modern methodologies. Some examples are programming language procedure call interfaces (as with libraries), TCP/IP socket interfaces with scripting languages (as with mail and Web servers), and file formats. Several typical prior art packaging styles are described below, beginning with packaging techniques used in object-oriented programming languages and continuing with a description of more generalized approaches to packaging.
- A. Object-Oriented Approaches to Packaging
- One common packaging style is based on object-oriented programming languages and provides procedure-based (method-based) packaging for software elements (objects within this framework). These procedure-based packages allow polymorphism (in which several types of objects can have identical interfaces) through subtyping, and code sharing through inheritance (deriving a new class of objects from an already existing class of objects). In a typical object-oriented programming language, an object's interface is defined by the object's methods.
- Object-oriented approaches are useful in designing concurrent systems (systems with task level parallelism and multiple processing resources?) because of the availability of active objects (objects with a thread of control). Some common, concurrent object-oriented approaches are shown in actor languages and in concurrent Eiffel.
- Early object-oriented approaches featured anonymity of objects through dynamic typechecking. This anonymity of objects meant that a first object did not need to know anything about a second object in order to send a message to the second object. One unfortunate result of this anonymity of objects was that the second object could unexpectedly respond to the first object that the sent message was not understood, resulting in a lack of predictability, due to this disruption of system executions, for systems designed with this object-oriented approach.
- Most modern object-oriented approaches opt to sacrifice the benefits flowing from anonymity of objects in order to facilitate stronger static typing (checking to ensure that objects will properly communicate with one another before actually executing the software system). The main result of stronger static typing is improved system predictability. However, an unfortunate result of sacrificing the anonymity of objects is a tighter coupling between those objects, whereby each object must explicitly classify, and include knowledge about, other objects to which it sends messages. In modern object-oriented approaches the package (interface) has become indistinguishable from the object and the system in which the object is a part.
- The need remains for a design and programming methodology that combines the benefits of anonymity for the software elements with the benefits derived from strong static typing of system designs.
- B. Other Approaches to Packaging
- Other packaging approaches provide higher degrees of separation between software elements and their respective packages than does the packaging in object-oriented systems. For example, the packages in event-based frameworks are interfaces with ports for transmitting and receiving events. These provide loose coupling for interelement communication. However, in an event-based framework, a software designer must explicitly implement interelement state coherence between software elements as communication between those software elements. This means that a programmer must perform the error-prone task of designing, optimizing, implementing, and debugging a specialized communication protocol for each state coherence requirement in a particular software system.
- The common object request broker architecture (CORBA) provides an interface description language (IDL) for building packages around software elements written in a variety of languages. These packages are remote procedure call (RPC) based and provide no support for coordinating state between elements. With flexible packaging, an element's package is implemented as a set of co-routines that can be adapted for use with applications through use of adapters with interfaces complementary to the interface for the software element. These adapters can be application-specific—used only when the elements are composed into a system.
- The use of co-routines lets a designer specify transactions or sequences of events as part of an interface, rather than just as atomic events. Unfortunately, co-routines must be executed in lock-step, meaning a transition in one routine corresponds to a transition in the other co-routine. If there is an error in one or if an expected event is lost, the interface will fail because its context will be incorrect to recover from the lost event and the co-routines will be out of sync.
- The need remains for a design and programming methodology that provides software packaging that supports the implementation of state coherence in distributed concurrent systems without packaging or interface failure when an error or an unexpected event occurs.
- 2. Approaches to Coordination
- Coordination, within the context of this application, means the predetermined ways through which software components interact. In a broader sense, coordination refers to a methodology for composing concurrent components into a complete system. This use of the term coordination differs slightly from the use of the term in the parallelizing compiler literature, in which coordination refers to a technique for maintaining programwide semantics for a sequential program decomposed into parallel subprograms.
- A. Coordination Languages
- Coordination languages are usually a class of tuple-space programming languages, such as Linda. A tuple is a data object containing two or more types of data that are identified by their tags and parameter lists. In tuple-space languages, coordination occurs through the use of tuple spaces, which are global multisets of tagged tuples stored in shared memory. Tuple-space languages extend existing programming languages by adding six operators: out, in, read, eval, inp, and readp. The out, in, and read operators place, fetch and remove, and fetch without removing tuples from tuple space. Each of these three operators blocks until its operation is complete. The out operator creates tuples containing a tag and several arguments. Procedure calls can be included in the arguments, but since out blocks, the calls must be performed and the results stored in the tuple before the operator can return.
- The operators eval, inp, and readp are nonblocking versions of out, in, and read, respectively. They increase the expressive power of tuple-space languages. Consider the case of eval, the nonblocking version of out. Instead of evaluating all arguments of the tuple before returning, it spawns a thread to evaluate them, creating, in effect, an active tuple (whereas tuples created by out are passive). As with out, when the computation is finished, the results are stored in a passive tuple and left in tuple space. Unlike out, however, the eval call returns immediately, so that several active tuples can be left outstanding.
- Tuple-space coordination can be used in concise implementations of many common interaction protocols. Unfortunately, tuple-space languages do not separate coordination issues from programming issues. Consider the annotated Linda implementation of RPC in
Listing 1.rpcCall (args) { /* C */ out (″RPCToServer″, ″Client″, args . . . in (″Client, ″ReturnFromServer″, &returnValue); return returnValue; /* C */ } /* C */ Server: . . . while (true) { /* C */ in(″RPCToServer″, &returnAddress, args . . . ); returnValue = functionCall (args); /* C */ out (returnAddress, ″ReturnFromServer″, returnValue); /* C */ - Listing 1: Linda Used to Emulate RPC
- Although the implementation depicted in
Listing 1 is a compact representation of an RPC protocol, the implementation still depends heavily on an accompanying programming language (in this case, C). This dependency prevents designers from creating a new Linda RPC operator for arbitrary applications of RPC. Therefore, every time a designer uses Linda for RPC, they must copy the source code for RPC or make a C-macro. This causes tight coupling, because the client must know the name of the RPC server. If the server name is passed in as a parameter, flexibility increases; however, this requires a binding phase in which the name is obtained and applied outside of the Linda framework. - The need remains for a design and programming methodology that allows implementation of communication protocols without tight coupling between the protocol implementation and the software elements with which the protocol implementation works.
- A tuple space can require large quantities of dynamically allocated memory. However, most systems, and especially embedded systems, must operate within predictable and sometimes small memory requirements. Tuple-space systems are usually not suitable for coordination in systems that must operate within small predictable memory requirements because once a tuple has been generated, it remains in tuple space until it is explicitly removed or the software element that created it terminates. Maintaining a global tuple space can be very expensive in terms of overall system performance. Although much work has gone into improving the efficiency of tuple-space languages, system performance remains worse with tuple-space languages than with message-passing techniques.
- The need remains for a design and programming methodology that can effectively coordinate between software elements while respecting performance and predictable memory requirements.
- B. Fixed Coordination Models
- In tuple-space languages, much of the complexity of coordination remains entangled with the functionality of computational elements. An encapsulating coordination formalism decouples intercomponent interactions from the computational elements.
- This type of formalism can be provided by fixed coordination models in which the coordination style is embodied in an entity and separated from computational concerns. Synchronous coordination models coordinate activity through relative schedules. Typically, these approaches require the coordination protocol to be manually constructed in advance. In addition, computational elements must be tailored to the coordination style used for a particular system (which may require intrusive modification of the software elements).
- The need remains for a design and programming methodology that allows for coordination between software elements without tailoring the software elements to the specific coordination style used in a particular software system.
- The present invention provides a coordination-centric design and programming methodology to facilitate both the design and the debugging of software systems. This approach includes an encapsulating formalism for coordination. In accordance with the present invention, coordination protocols are embodied in coordinators. Coordinators serve to expose the workings of a coordination protocol and organize relevant system information in a meaningful manner. This facilitates coordination-based debugging by letting designers focus on coordination as an entity separate from computation and by showing designers what is happening internally within a software system.
- In accordance with the present invention, functional blocks, or software elements, are represented as components. Components contain modes that define behaviors, actions that perform these behaviors, and coordination interfaces that connect components to other components through coordinators. Packaging software elements in this fashion provides more modularity for the components than prior art design and programming methodologies. Coordination interfaces make both the data and control aspects of intercomponent interactions explicit, so that the control and data interactions can be adapted to a variety of interaction protocols without needing internal modifications to the components. The same coordination interface type can be used by a variety of components. Any component in a software system can be replaced by a new component having completely different functionality without any other components within the system needing to know that a change has been made, as long as the new component has a coordination interface appropriate for the coordinator in the software system.
- Both components and coordinators can be composed hierarchically to form higher-order functionality and interaction protocols. This facilitates design complexity management. All pieces of the coordination-centric design methodology work together to provide both the software designers and the debugging tools with information about the software system's behavior and the behavior of the software system's components. This information serves to simplify software system design and software system debugging. The coordination interfaces expose control state and message traffic to scrutiny by software designers and debugging tools. Meanwhile, coordinators expose interaction protocols to scrutiny by software designers and debugging tools.
- In accordance with the present invention, the coordination-centric design methodology treats design and debugging as interrelated issues and, as a result, makes complex embedded software more debuggable and more easily designable. Debugging in fact dominates embedded system software development time, and the debugging approach of the present invention facilitates the debugging of complex embedded systems and makes other aspects of the design flow, such as managing design complexity and reusing software, easier than in prior art design and programming methodologies.
- Additional aspects and advantages of this invention will be apparent from the following detailed description of preferred embodiments thereof, which proceeds with reference to the accompanying drawings.
- FIG. 1 is a component in accordance with the present invention.
- FIG. 2 is the component of FIG. 1 further having a set of coordination interfaces.
- FIG. 3A is a prior art round-robin resource allocation protocol with a centralized controller.
- FIG. 3B is a prior art round-robin resource allocation protocol implementing a token passing scheme.
- FIG. 4A is a detailed view of a component and a coordination interface connected to the component for use in round-robin resource allocation in accordance with the present invention.
- FIG. 4B depicts a round-robin coordinator in accordance with the present invention.
- FIG. 5 shows several typical ports for use in a coordination interface in accordance with the present invention.
- FIG. 6A is a unidirectional data transfer coordinator in accordance with the present invention.
- FIG. 6B is a bidirectional data transfer coordinator in accordance with the present invention.
- FIG. 6C is a state unification coordinator in accordance with the present invention.
- FIG. 6D is a control state mutex coordinator in accordance with the present invention.
- FIG. 7 is a system for implementing subsumption resource allocation having components, a shared resource, and a subsumption coordinator.
- FIG. 8 is a barrier synchronization coordinator in accordance with the present invention.
- FIG. 9 is a rendezvous coordinator in accordance with the present invention.
- FIG. 10 depicts a dedicated RPC system having a client, a server, and a dedicated RPC coordinator coordinating the activities of the client and the server.
- FIG. 11 is a compound coordinator with both preemption and round-robin coordination for controlling the access of a set of components to a shared resource.
- FIG. 12A is software system with two data transfer coordinators, each having constant message consumption and generation rules and each connected to a separate data-generating component and connected to the same data-receiving component.
- FIG. 12B is the software system of FIG. 12A in which the two data transfer coordinators have been replaced with a merged data transfer coordinator.
- FIG. 13 is a system implementing a first come, first served resource allocation protocol in accordance with the present invention.
- FIG. 14 is a system implementing a multiclient RPC coordination protocol formed by combining the first come, first served protocol of FIG. 13 with the dedicated RPC coordinator of FIG. 10.
- FIG. 15 depicts a large system in which the coordination-centric design methodology can be employed having a wireless device interacting with a cellular network.
- FIG. 16 shows a top-level view of the behavior and components for a system for a cell phone.
- FIG. 17A is a detailed view of a GUI component of the cell phone of FIG. 16.
- FIG. 17B is a detailed view of a call log component of the cell phone of FIG. 16.
- FIG. 18A is a detailed view of a voice subsystem component of the cell phone of FIG. 16.
- FIG. 18B is a detailed view of a connection component of the cell phone of FIG. 16.
- FIG. 19 depicts the coordination layers between a wireless device and a base station, and between the base station and a switching center, of FIG. 15.
- FIG. 20 depicts a cell phone call management component, a master switching center call management component, and a call management coordinator connecting the respective call management components.
- FIG. 21A is a detailed view of a transport component of the connection component of FIG. 18B.
- FIG. 21B is a CDMA data modulator of the transport component of FIG. 18B.
- FIG. 22 is a detailed view of a typical TDMA and a typical CDMA signal for the cell phone of FIG. 16.
- FIG. 23A is a LCD touch screen component for a Web browser GUI for a wireless device.
- FIG. 23B is a Web page formatter component for the Web browser GUI for the wireless device.
- FIG. 24A is a completed GUI system for a handheld Web browser.
- FIG. 24B shows the GUI system for the handheld Web browser combined with the connection subsystem of FIG. 18B in order to access the cellular network of FIG. 15.
- FIG. 1 is an example of a
component 100, which is the basic software element within the coordination-centric design framework, in accordance with the present invention. With reference to FIG. 1,component 100 contains a set ofmodes 102. Eachmode 102 corresponds to a specific behavior associated withcomponent 100. Eachmode 102 can either be active or inactive, respectively enabling or disabling the behavior corresponding to thatmode 102.Modes 102 can make the conditional aspects of the behavior ofcomponent 100 explicit. The behavior ofcomponent 100 is encapsulated in a set ofactions 104, which are discrete, event-triggered behavioral elements within the coordination-centric design methodology.Component 100 can be copied and the copies ofcomponent 100 can be modified, providing the code-sharing benefits of inheritance. -
Actions 104 are enabled and disabled bymodes 102, and hence can be thought of as effectively being properties ofmodes 102. An event (not shown) is an instantaneous condition, such as a timer tick, a data departure or arrival, or a mode change.Actions 104 can activate and deactivatemodes 102, thereby selecting the future behavior ofcomponent 100. This is similar to actor languages, in which methods are allowed to replace an object's behavior. - In coordination-centric design, however, all possible behaviors must be identified and encapsulated before runtime. For example, a designer building a user interface component for a cell phone might define one mode for looking up numbers in an address book (in which the user interface behavior is to display complete address book entries in formatted text) and another mode for displaying the status of the phone (in which the user interface behavior is to graphically display the signal power and the battery levels of the phone). The designer must define both the modes and the actions for the given behaviors well before the component can be executed.
- FIG. 2 is
component 100 further including afirst coordination interface 200, asecond coordination interface 202, and a third coordination interface 204. Coordination-centric design'scomponents 100 provide the code-sharing capability of object-oriented inheritance through copying. Another aspect of object-oriented inheritance is polymorphism through shared interfaces. In object-oriented languages, an object's interface is defined by its methods. Although coordination-centric design'sactions 104 are similar to methods in object-oriented languages, they do not define the interface forcomponent 100. Components interact through explicit and separate coordination interfaces, in thisfigure coordination interfaces coordination interfaces component 100 may be connected within a software system. The way coordination interfaces 200, 202, and 204 are connected tomodes 102 andactions 104 withincomponent 100 determines how the behavior ofcomponent 100 can be managed within a system. Systemwide behavior is managed through coordinators (see FIG. 4B and subsequent). - For our approach to be effective, several factors in the design of software elements must coincide: packaging, internal organization, and how elements coordinate their behavior. Although these are often treated as independent issues, conflicts among them can exacerbate debugging. We handle them in a unified framework that separates the internal activity from the external relationship of
component 100. This lets designers build more modular components and encourages them to specify distributable versions of coordination protocols. Components can be reused in a variety of contexts, both distributed, andsingle processor 1. - 1. Introduction to Coordination
- Within this application, coordination refers to the predetermined ways by which components interact. Consider a common coordination activity: resource allocation. One simple protocol for this is round-robin: participants are lined up, and the resource is given to each participant in turn. After the last participant is served, the resource is given back to the first. There is a resource-scheduling period during which each participant gets the resource exactly once, whether or not it is needed.
- FIG. 3A is prior art round-robin resource allocation protocol with a
centralized controller 300, which keeps track of and distributes the shared resource (not shown) to each ofsoftware elements controller 300 alone determines whichsoftware element permits software elements only controller 300 keeps track of the software elements. Unfortunately, when this implementation is implemented on a distributed architecture (not shown),controller 300 must typically be placed on a single processing element (not shown). As a result, all coordination requests must go through that processing element, which can cause a communication performance bottleneck. For example, consider the situation in whichsoftware elements controller 300 is implemented on a second processing element.Software element 304 releases the shared resource and must send a message indicating this tocontroller 300.Controller 300 must then send a message tosoftware element 306 to informsoftware element 306 that it now has the right to the shared resource. If the communication channel between the first processing resource and the second processing resource is in use or the second processing element is busy, then the shared resource must remain idle, even though both the current resource holder and the next resource holder (software elements controller 300 can respond. This is an inefficient way to control access to a shared resource. - FIG. 3B is a prior art round-robin resource allocation protocol implementing a token passing scheme. With reference to FIG. 3B, this system consists of a shared resource311 and a set of
software elements logical token 324 symbolizes the right to access resource 311, i.e., when a software element holds token 324, it has the right to access resource 311. When one ofsoftware elements token 324 the access right, to a successor. This implementation can be distributed without a centralized controller, but as shown in FIG. v3B, this is less modular, because it requires each software element in the set to keep track of a successor. - Not only must
software elements multiple tokens 324. Since there is no formal connection between the physical system and complete topology maps (diagrams that show how each software element is connected to others within the system), some software elements might erroneously be serviced more than once per cycle, while others are completely neglected. However, these bugs can be extremely difficult to track after the system is completed. The protocol is entangled with the functionality of each software element, and it is difficult to separate the two for debugging purposes. Furthermore, if a few of the software elements are located on the same machine, performance of the implementation can be poor. The entangling of computation and coordination requires intrusive modification to optimize the system. - 2. Coordination-Centric Design's Approach to Coordination
- The coordination-centric design methodology provides an encapsulating formalism for coordination. Components such as
component 100 interact using coordination interfaces, such as first, second, and third coordination interfaces 200, 202, and 204, respectively. Coordination interfaces preserve component modularity while exposing any parts of a component that participate in coordination. This technique of connecting components provides polymorphism in a similar fashion to subtyping in object-oriented languages. - FIG. 4A is a detailed view of a
component 400 and a resourceaccess coordination interface 402 connected tocomponent 400 for use in a round-robin coordination protocol in accordance with the present invention. With reference to FIG. 4A, resourceaccess coordination interface 402 facilitates implementation of a round-robin protocol that is similar to the token-passing round-robin protocol described above. Resourceaccess coordination interface 402 has a single bit of control state, called access, which is shown as an arbitratedcontrol port 404 that indicates whether or notcomponent 400 is holding a virtual token (not shown).Component 400 can only use asend message port 406 onaccess coordination interface 402 when arbitratedcontrol port 404 is true.Access coordination interface 402 further has a receivemessage port 408. - FIG. 4B show a round-
robin coordinator 410 in accordance with the present invention. With reference to FIG. 4B, round-robin coordinator 410 has a set of coordinator coordination interfaces 412 for connecting to a set ofcomponents 400. Eachcomponent 400 includes a resourceaccess coordination interface 402. Eachcoordinator coordination interface 412 has a coordinator arbitratedcontrol port 414, an incomingsend message port 416 and an outgoing receivemessage port 418.Coordinator coordination interface 412 in complimentary to resourceaccess coordination interface 402, and vice versa, because the ports on the two interfaces are compatible and can function to transfer information between the two interfaces. - The round-robin protocol requires round-
robin coordinator 410 to manage the coordination topology. Round-robin coordinator 410 is an instance of more general abstractions called coordination classes, in which coordination classes define specific coordination protocols and a coordinator is a specific implementation of the coordination class. Round-robin coordinator 410 contains all information about howcomponents 400 are supposed to coordinate. Although round-robin coordinator 410 can have a distributed implementation, nocomponent 400 is required to keep references to any other component 400 (unlike the distributed round-robin implementation shown in FIG. 3B). All required references are maintained by round-robin coordinator 410 itself, andcomponents 400 do not even need to know that they are coordinating through round-robin. Resourceaccess coordination interface 402 can be used with any coordinator that provides the appropriate complementary interface. A coordinator's design is independent of whether it is implemented on a distributed platform or on a monolithic single processor platform. - 3. Coordination Interfaces
- Coordination interfaces are used to connect components to coordinators. They are also the principle key to a variety of useful runtime debugging techniques. Coordination interfaces support component modularity by exposing all parts of the component that participate in the coordination protocol. Ports are elements of coordination interfaces, as are guarantees and requirements, each of which will be described in turn.
- A. Ports
- A port is a primitive connection point for interconnecting components. Each port is a five-tuple (T; A; Q; D; R) in which:
- T represents the data type of the port. T can be one of int, boolean, char, byte, float, double, or cluster, in which cluster represents a cluster of data types (e.g., an int followed by a float followed by two bytes).
- A is a boolean value that is true if the port is arbitrated and false otherwise.
- Q is an integer greater than zero that represents logical queue depth for a port.
- D is one of in, out, inout, or custom and represents the direction data flows with respect to the port.
- R is one of discard-on-read, discard-on-transfer, or hold and represents the policy for data removal on the port. Discard-on-read indicates that data is removed immediately after it is read (and any data in the logical queue are shifted), discard-on-transfer indicates that data is removed from a port immediately after being transferred to another port, and hold indicates that data should be held until it is overwritten by another value. Hold is subject to arbitration.
- Custom directionality allows designers to specify ports that accept or generate only certain specific values. For example, a designer may want a port that allows other components to activate, but not deactivate, a mode. While many combinations of port attributes are possible, we normally encounter only a few. The three most common are message ports (output or input), state ports (output, input, or both; sometimes arbitrated), and control ports (a type of state port). FIG. 5 illustrates the visual syntax used for several common ports throughout this application. With reference to FIG. 5, this figure depicts an exported
state port 502, an importedstate port 504, an arbitratedstate port 506, an output data port 508, and aninput data port 510. - 1. Message Ports
- Message ports (output and input)
data ports 508 and 510 respectively) are either send (T; false; 1; out; discard-on-transfer) or receive (T; false; Q; in; discard-on-read). Their function is to transfer data between components. Data passed to a send port is transferred immediately to the corresponding receive port, thus it cannot be retrieved from the send port later. Receive data ports can have queues of various depths. Data arrivals on these ports are frequently used to trigger and pass data parameters into actions. Values remain on receive ports until they are read. - 2. State Ports
- State ports take one of three forms:
- 1. (T; false;1; out; hold)
- 2. (T; false;1; in; hold)
- 3. (T; true;1; inout; hold)
- State ports, such as exported
state port 502, importedstate port 504, and arbitratedstate port 506, hold persistent values, and the value assigned to a state port may be arbitrated. This means that, unlike message ports, values remain on the state ports until changed. When multiple software elements simultaneously attempt to alter the value of arbitratedstate port 506, the final value is determined based on arbitration rules provided by the designer through an arbitration coordinator (not shown). - State ports transfer variable values between scopes, as explained below. In coordination-centric design, all variables referenced by a component are local to that component, and these variables must be explicitly declared in the component's scope. Variables can, however, be bound to state ports that are connected to other components. In this way a variable value can be transferred between components and the variable value achieves the system-level effect of a multivariable.
- 3. Control Ports
- Control ports are similar to state ports, but a control port is limited to having the boolean data type. Control ports are typically bound to modes. Actions interact with a control port indirectly, by setting and responding to the values of a mode that is bound to the control port.
- For example, arbitrated
control port 404 shown in FIG. 4A is a control port that can be bound to a mode (not shown) containing all actions that send data on a shared channel. When arbitratedcontrol port 404 is false, the mode is inactive, disabling all actions that send data on the channel. - B. Guarantees
- Guarantees are formal declarations of invariant properties of a coordination interface. There can be several types of guarantees, such as timing guarantees between events, guarantees between control state (e.g., state A and state B are guaranteed to be mutually exclusive), etc. Although a coordination interface's guarantees reflect properties of the component to which the coordination interface is connected, the guarantees are not physically bound to any internal portions of the component. Guarantees can often be certified through static analysis of the software system. Guarantees are meant to cache various properties that are inherent in a component or a coordinator in order to simplify static analysis of the software system.
- A guarantee is a promise provided by a coordination interface. The guarantee takes the form of a predicate promised to be invariant. In principle, guarantees can include any type of predicate (e.g., x>3, in which x is an integer valued state port, or tea−teb<2 ms). Throughout the remainder of this application, guarantees will be only event-ordering guarantees (guarantees that specify acceptable orders of events) or control-relationship guarantees (guarantees pertaining to acceptable relative component behaviors).
- C. Requirements
- A requirement is a formal declaration of the properties necessary for correct software system functionality. An example of a requirement is a required response time for a coordination interface-the number of messages that must have arrived at the coordination interface before the coordination interface can transmit, or fire, the messages. When two coordination interfaces are bound together, the requirements of the first coordination interface must be conservatively matched by the guarantees of the second coordination interface (e.g., x<7 as a guarantee conservatively matches x<8 as a requirement). As with guarantees, requirements are not physically bound to anything within the component itself. Guarantees can often be verified to be sufficient for the correct operation of the software system in which the component is used. In sum, a requirement is a predicate on a first coordination interface that must be conservatively matched with a guarantee on a complementary second coordination interface.
- D. Conclusion Regarding Coordination Interfaces
- A coordination interface is a four-tuple (P; G; R; I) in which:
- P is a set of named ports.
- G is a set of named guarantees provided by the interface.
- R is a set of named requirements that must be matched by guarantees of connected interfaces.
- I is a set of named coordination interfaces.
- As this definition shows, coordination interfaces are recursive.
Coordinator coordination interface 412, shown in FIG. 4B, used for round-robin coordination is called AccessInterface and is defined in Table 1.Constituent Value ports P = {access:StatePort, s:outMessagePort, r:inMessagePort} guarantees G = {┐ access ┐ s.gen } requirements R = interfaces I = - Related to coordination interfaces is a recursive coordination interface descriptor, which is a five-tuple (Pa; Ga; Ra; Id; Nd) in which:
- Pa is a set of abstract ports, which are ports that may be incomplete in their attributes (i.e., they do not yet have a datatype).
- Ga is a set of abstract guarantees, which are guarantees between abstract ports.
- Ra is a set of abstract requirements, which are requirements between abstract ports.
- Id is a set of coordination interface descriptors.
- Nd is an element of Q×Q, where Q={∞}U Z+and Z+denotes the set of positive integers. Nd indicates the number or range of numbers of permissible interfaces (e.g., [2], [2, 30], etc.).
- Allowing coordination interfaces to contain other coordination interfaces is a powerful feature. It lets designers use common coordination interfaces as complex ports within other coordination interfaces. For example, the basic message ports described above are nonblocking, but we can build a blocking coordination interface (not shown) that serves as a blocking port by combining a wait state port with a message port.
- 4. Coordinators
- A coordinator provides the concrete representations of intercomponent aspects of a coordination protocol. Coordinators allow a variety of static analysis debugging methodologies for software systems created with the coordination-centric design methodology. A coordinator contains a set of coordination interfaces and defines the relationships the coordination interfaces. The coordination interfaces complement the component coordination interfaces provided by components operating within the protocol. Through matched interface pairs, coordinators effectively describe connections between message ports, correlations between control states, and transactions between components.
- For example, round-
robin coordinator 410, shown in FIG. 4B, must ensure that only onecomponent 400 has itscomponent control port 404's value, or its access bit, set to true. Round-robin coordinator 410 must further ensure that thecorrect component 400 has itscomponent control port 404 set to true for the chosen sequence. This section presents formal definitions of the parts that comprise coordinators: modes, actions, bindings, action triples, and constraints. These definitions culminate in a formal definition of coordinators. - A. Modes
- A mode is a boolean value that can be used as a guard on an action. In a coordinator, the mode is most often bound to a control port in a coordination interface for the coordinator. For example, in round-
robin coordinator 410, the modes of concern are bound to acoordinator control port 414 of eachcoordinator coordination interface 412. - B. Actions
- An action is a primitive behavioral element that can:
- Respond to events.
- Generate events.
- Change modes.
- Actions can range in complexity from simple operations up to complicated pieces of source code. An action in a coordinator is called a transparent action because the effects of the action can be precomputed and the internals of the action are completely exposed to the coordination-centric design tools.
- C. Bindings
- Bindings connect input ports to output ports, control ports to modes, state ports to variables, and message ports to events. Bindings are transparent and passive. Bindings are simply conduits for event notification and data transfer. When used for event notification, bindings are called triggers.
- D. Action Triples
- To be executed, an action must be enabled by a mode and triggered by an event. The combination of a mode, trigger, and action is referred to as an action triple, which is a triple (m; t; a) in which:
- m is a mode.
- t is a trigger.
- a is an action.
- The trigger is a reference to an event type, but it can be used to pass data into the action. Action triples are written: mode: trigger: action
- A coordinator's actions are usually either pure control, in which both the trigger and action performed affect only control state, or pure data, in which both the trigger and action performed occur in the data domain. In the case of round-
robin coordinator 410, the following set of actions is responsible for maintaining the appropriate state: - accessi :−accessi :+access(i+1)modn
- The symbol “+” signifies a mode's activation edge (i.e., the event associated with the mode becoming true), and the symbol “−” signifies its deactivation edge. When any
coordinator coordination interface 412 deactivates its arbitratedcontrol port 404's, access bit, the access bit of the nextcoordinator coordination interface 412 is automatically activated. - E. Constraints
- In this dissertation, constraints are boolean relationships between control ports. They take the form:
-
- This essentially means that the Condition (on the left side of the arrow) being true implies that Effect (on the right side of the arrow) is also true. In other words, if Condition is true, then Effect should also be true.
- A constraint differs from a guarantee in that the guarantee is limited to communicating in-variant relationships between components without providing a way to enforce the in-variant relationship. The constraint, on the other hand, is a set of instructions to the runtime system dealing with how to enforce certain relationships between components. When a constraint is violated, two corrective actions are available to the system: (1) modify the values on the left-hand side to make the left-hand expression evaluate as false (an effect termed backpressure in [ y and the value x^ y, with RHM semantics the runtime system must respond by disabling y or setting y to false. Thus the value of y is set to true.27]) or (2) alter the right-hand side to make it true. We refer to these techniques as LHM (left-hand modify) and RHM (right-hand modify). For example, given the constraint x
- The decision of whether to use LHM, to use RHM, or even to suspend enforcement of a constraint in certain situations can dramatically affect the efficiency and predictability of the software system. Coordination-centric design does not attempt to solve simultaneous constraints at runtime. Rather, runtime algorithms use local ordered constraint solutions. This, however, can result in some constraints being violated and is discussed further below.
- Round-
robin coordinator 410 has a set of safety constraints to ensure that there is never more than one token in the system: -
- The above equation translates roughly as access1 implies not accessj for the set of all accessj where j is not equal to i. Even this simple constraint system can cause problems with local resolution semantics (as are LHM and RHM). If the runtime system attempted to fix all constraints simultaneously, all access modes would be shut down. If they were fixed one at a time, however, any duplicate tokens would be erased on the first pass, satisfying all other constraints and leaving a single token in the system.
- Since high-level protocols can be built from combinations of lower-level protocols, coordinators can be hierarchically composed. A coordinator is a six-tuple (I; M; B; N; A; X) in which:
- I is a set of coordination interfaces.
- M is a set of modes.
- B is a set of bindings between interface elements (e.g., control ports and message ports) and internal elements (e.g., modes and triggers).
- N is a set of constraints between interface elements.
- A is a set of action triples for the coordinator.
- X is a set of subcoordinators.
- FIGS. 6A, 6B,6C, and 6D show a few simple coordinators highlighting the bindings and constraints of the respective coordinators. With reference to FIG. 6A, a unidirectional
data transfer coordinator 600 transfers data in one direction between two components (not shown) by connecting incoming receivemessage port 408 to outgoing receivemessage port 418 with a binding 602. With reference to FIG. 6B, bidirectionaldata transfer coordinator 604 transfers data back and forth between two components (not shown) by connecting incoming receivemessage port 408 to outgoing receivemessage port 418 with binding 602 and connecting sendmessage port 406 to incomingsend message port 416 with a second binding 602. Unidirectionaldata transfer coordinator 600 and bidirectionaldata transfer coordinator 604 simply move data from one message port to another. Thus each coordinator consists of bindings between corresponding ports on separate coordination interfaces. - With reference to FIG. 6C,
state unification coordinator 606 ensures that a state port a 608 and astate port b 610 are always set to the same value.State unification coordinator 606 connects state port a 608 tostate port b 610 with binding 602. With reference to FIG. 6D, controlstate mutex coordinator 612 has afirst constraint 618 and asecond constraint 620 as follows: -
-
-
Constraints - (1) A
state port c 614 having a true value implies that astate port d 616 has a false value, and - (2)
State port d 616 having a true value implies thatstate port c 614 has a false value. - A coordinator has two types of coordination interfaces: up interfaces that connect the coordinator to a second coordinator, which is at a higher level of design hierarchy and down interfaces that connect the coordinator either to a component or to a third coordinator, which is at a lower level of design hierarchy. Down interfaces have names preceded with“˜”. Round-
robin coordinator 410 has six down coordination interfaces (previously referred to as coordinator coordination interface 412), with constraints that make the turning off of any coordinator control port 414 (also referred to as access control port) turn on thecoordinator control port 414 of the nextcoordinator coordination interface 412 in line. Table 2 presents all constituents of the round-robin coordinator.Constituent Value coordination interfaces I = AccessInterface1-6 modes M = access1-6 bindings B = ∀1≦i≦6(˜AccessInterfacel.access, accessi) ∪ constraints N = ∀1≦l≦6(∀(1≦j≦6)(i≠j) accesst ┐accessj) actions A = ∀1≦i≦6 accessi:−accesst: +access(t + 1) mod 6 subcoordinators X = - This tuple describes an implementation of a round-robin coordination protocol for a particular system with six components, as shown in round-
robin coordinator 410. We use a coordination class to describe a general coordination protocol that may not have a fixed number of coordinator coordination interfaces. The coordination class is a six-tuple (Ic; Mc; Bc; Nc; Ac; Xc) in which: - Ic is a set of coordination interface descriptors in which each descriptor provides a type of coordination interface and specifies the number of such interfaces allowed within the coordination class.
- Mc is a set of abstract modes that supplies appropriate modes when a coordination class is instantiated with a fixed number of coordinator coordination interfaces.
- Bc is a set of abstract bindings that forms appropriate bindings between elements when the coordination class is instantiated.
- Nc is a set of abstract constraints that ensures appropriate constraints between coordination interface elements are in place as specified at instantiation.
- Ac is a set of abstract action triples for the coordinator.
- Xc is a set of coordination classes (hierarchy).
- While a coordinator describes coordination protocol for a particular application, it requires many aspects, such as the number of coordination interfaces and datatypes, to be fixed. Coordination classes describe protocols across many applications. The use of the coordination interface descriptors instead of coordination interfaces lets coordination classes keep the number of interfaces and datatypes undetermined until a particular coordinator is instantiated. For example, a round-robin coordinator contains a fixed number of coordinator coordination interfaces with specific bindings and constraints between the message and state ports on the fixed number of coordinator coordination interfaces. A round-robin coordination class contains descriptors for the coordinator coordination interface type, without stating how many coordinator coordination interfaces, and instructions for building bindings and constraints between ports on the coordinator coordination interfaces when a particular round-robin coordinator is created.
- 5. Components
- A component is a six-tuple (I; A; M; V; S; X) in which:
- I is a set of coordination interfaces.
- A is a set of action triples.
- M is a set of modes.
- V is a set of typed variables.
- S is a set of subcomponents.
- X is a set of coordinators used to connect the subcomponents to each other and to the coordination interfaces.
- Actions within a coordinator are fairly regular, and hence a large number of actions can be described with a few simple expressions. However, actions within a component are frequently diverse and can require distinct definitions for each individual action. Typically a component's action triples are represented with a table that has three columns: one for the mode, one for the trigger, and one for the action code. Table 3 shows some example actions from a component that can use round-robin coordination.
Mode Trigger Action access tick AccessInterface.s.send(“Test message”); −access ┐ access tick waitCount ++; - A component resembles a coordinator in several ways (for example, the modes and coordination interfaces in each are virtually the same). Components can have internal coordinators, and because of the internal coordinators, components do not always require either bindings or constraints. In the following subsections, various aspects of components are described in greater detail. Theses aspects of components include variable scope, action transparency, and execution semantics for systems of actions.
- A. Variable Scope
- To enhance a component's modularity, all variables accessed by an action within the component are either local to the action, local to the immediate parent component of the action, or accessed by the immediate parent component of the action via state ports in one of the parent component's coordination interfaces. For a component's variables to be available to a hierarchical child component, they must be exported by the component and then imported by the child of the component.
- B. Action Transparency
- An action within a component can be either a transparent action or an opaque action. Transparent and opaque actions each have different invocation semantics. The internal properties, i.e. control structures, variable, changes in state, operators, etc., of transparent actions are visible to all coordination-centric design tools. The design tools can separate, observe, and analyze all the internal properties of opaque actions. Opaque actions are source code. Opaque actions must be executed directly, and looking at the internal properties of opaque actions can be accomplished only through traditional, source-level debugging techniques. An opaque action must explicitly declare any mode changes and coordination interfaces that the opaque action may directly affect.
- C. Action Execution
- An action is triggered by an event, such as data arriving or departing a message port, or changes in value being applied to a state port. An action can change the value of a state port, generate an event, and provide a way for the software system to interact with low-level device drivers. Since actions typically produce events, a single trigger can be propagated through a sequence of actions.
- 6. Protocols Implemented with Coordination Classes
- In this section, we describe several coordinators that individually implement some common protocols: subsumption, barrier synchronization, rendezvous, and dedicated RPC.
- A. Subsumption Protocol
- A subsumption protocol is a priority-based, preemptive resource allocation protocol commonly used in building small, autonomous robots, in which the shared resource is the robot itself.
- FIG. 7 shows a set of coordination interfaces and a coordinator for implementing the subsumption protocol. With reference to FIG. 7, a
subsumption coordinator 700 has a set of subsumption coordinator coordination interfaces 702, which have a subsume arbitratedcoordinator control port 704 and an incomingsubsume message port 706. Eachsubsume component 708 has a subsumecomponent coordination interface 710. Subsumecomponent coordination interface 710 has a subsume arbitratedcomponent control port 712 and an outgoingsubsume message port 714.Subsumption coordinator 700 and eachsubsume component 708 are connected by their respective coordination interfaces, 702 and 710. Each subsumptioncoordinator coordination interface 702 insubsumption coordinator 700 is associated with a priority. Eachsubsume component 708 has a behavior that can be applied to a robot (not shown). At any time, anysubsume component 708 can attempt to assert its behavior on the robot. The asserted behavior coming from thesubsume component 708 connected to the subsumptioncoordinator coordination interface 702 with the highest priority is the asserted behavior that will actually be performed by the robot.Subsume components 708 need not know anything about other components in the system. In fact, eachsubsume component 708 is designed to perform independently of whether their asserted behavior is performed or ignored. -
Subsumption coordinator 700 further has a slavecoordinator coordination interface 716, which has an outgoingslave message port 718. Outgoingslave message port 718 is connected to an incomingslave message port 720. Incomingslave message port 720 is part of aslave coordination interface 722, which is connected to aslave 730. When asubsume component 708 asserts a behavior and that component has the highest priority,subsumption coordinator 700 will control slave 730 (which typically controls the robot) based on the asserted behavior. -
- This means that if any
subsume component 708 has a subsume arbitratedcomponent control port 712 that has a value of true, then all lower-priority subsume arbitratedcomponent control ports 712 are set to false. An important difference between round-robin and subsumption is that in round-robin, the resource access right is transferred only when surrendered. Therefore, round-robin coordination has cooperative release semantics. However, in subsumption coordination, asubsume component 708 tries to obtain the resource whenever it needs to and succeeds only when it has higher priority than anyother subsume component 708 that needs the resource at the same time. A lower-priority subsume component 708 already using the resource must surrender the resource whenever a higher-priority subsume component 708 tries to access the resource. Subsumption coordination uses preemptive release semantics, whereby eachsubsume component 708 must always be prepared to relinquish the resource. -
- B. Barrier Synchronization Protocol
- Other simple types of coordination that components might engage in enforce synchronization of activities. An example is barrier synchronization, in which each component reaches a synchronization point independently and waits. FIG. 8 depicts a barrier synchronization coordinator800. With reference to FIG. 8, barrier synchronization coordinator 800 has a set of barrier
synchronization coordination interfaces 802, each of which has a coordinator arbitratedstate port 804, named wait. Coordinator arbitratedstate port 804 is connected to a component arbitratedstate port 806, which is part of acomponent coordination interface 808.Component coordination interface 808 is connected to acomponent 810. When allcomponents 810 reach their respective synchronization points, they are all released from waiting. The actions for a barrier synchronization coordinator with n interfaces are: - In other words, when all wait modes (not shown) become active, each one is released. The blank between the two colons indicates that the trigger event is the guard condition becoming true.
- C. Rendezvous Protocol
- A resource allocation protocol similar to barrier synchronization is called rendezvous. FIG. 9 depicts a
rendezvous coordinator 900 in accordance with the present invention. With reference to FIG. 9,rendezvous coordinator 900 has arendezvous coordination interface 902, which has a rendezvous arbitratedstate port 904. A set ofrendezvous components 906, each of which may perform different functions or have vastly different actions and modes, has a rendezvouscomponent coordination interface 908, which includes a component arbitrated state port 910.Rendezvous components 906 connect to rendezvouscoordinator 900 through their respective coordination interfaces, 908 and 902.Rendezvous coordinator 900 further has a rendezvousresource coordination interface 912, which has a rendezvous resource arbitratedstate port 914, also called available. Aresource 916 has aresource coordination interface 918, which has a resource arbitratedstate port 920.Resource 916 is connected to rendezvouscoordinator 900 by their complementary coordination interfaces, 918 and 912 respectively. - With rendezvous-style coordination, there are two types of participants:
resource 916 and several resource users, here rendezvouscomponents 916. Whenresource 916 is available, it activates its resource arbitratedstate port 920, also referred to as its available control port. If there are any waitingrendezvous components 916, one will be matched with the resource; both participants are then released. This differs from subsumption and round-robin in thatresource 916 plays an active role in the protocol by activating itsavailable control port 920. - The actions for
rendezvous coordinator 900 are: - available1^ waitj : :−available1, −waitj
- This could also be accompanied by other modes that indicate the status after the rendezvous. With rendezvous coordination, it is important that only one component at a time be released from wait mode.
- D. Dedicated RPC Protocol
- A coordination class that differs from those described above is dedicated RPC. FIG. 10 depicts a dedicated RPC system. With reference to FIG. 10, a
dedicated RPC coordinator 1000 has an RPCserver coordination interface 1002, which includes an RPC server importedstate port 1004, an RPC server output message port 1006, and an RPC serverinput message port 1008.Dedicated RPC coordinator 1000 is connected to aserver 1010.Server 1010 has aserver coordination interface 1012, which has a server exportedstate port 1014, a server input data port 1016, and a serveroutput data port 1018.Dedicated RPC coordinator 1000 is connected toserver 1010 through their complementary coordination interfaces, 1002 and 1012 respectively.Dedicated RPC coordinator 1000 further has an RPCclient coordination interface 1020, which includes an RPC client importedstate port 1022, an RPC clientinput message port 1024, and an RPC clientoutput message port 1026.Dedicated RPC coordinator 1000 is connected to aclient 1028 by connecting RPCclient coordination interface 1020 to a complementaryclient coordination interface 1030.Client coordination interface 1030 has a client exportedstate port 1032, a client output message port 1034, and a clientinput message port 1036. - The dedicated RPC protocol has a client/server protocol in which
server 1010 is dedicated to a single client, in thiscase client 1028. Unlike the resource allocation protocol examples, the temporal behavior of this protocol is the most important factor in defining it. The following transaction listing describes this temporal behavior: -
Client 1028 enters blocked mode by changing the value stored at client exportedstate port 1032 to true. -
Client 1028 transmits an argument data message toserver 1010 via client output message port 1034. -
Server 1010 receives the argument (labeled “a”) data message via server input data port 1016 and enters serving mode by changing the value stored in server exportedstate port 1014 to true. -
Server 1010 computes return value. -
Server 1010 transmits a return (labeled “r”) message toclient 1020 via serveroutput data port 1018 and exits serving mode by changing the value stored in server exportedstate port 1014 to false. -
Client 1028 receives the return data message via clientinput message port 1036 and exits blocked mode by changing the value stored at client exportedstate port 1032 to false. -
- The transactions above describe what is supposed to happen. Other properties of this protocol must be described with temporal logic predicates.
-
-
-
- The r in server.r.output refers to the server
output data port 1018, also labeled as the r event port on the server, and the a in serving.a.input refers to server input data port 1016, also labeled as the a port on the server (see FIG. 10). - Together, these predicates indicate that (1) it is an error for
server 1010 to be in serving mode ifclient 1028 is not blocked; (2) afterserver 1010 enters serving mode, a response message is sent or else an error occurs; and (3)server 1010 receiving a message means thatserver 1010 must enter serving mode. Relationships between control state and data paths must also be considered, such as: -
- In other words,
client 1028 must be in blocked mode whenever it sends an argument message. - The first predicate takes the same form as a constraint; however, since
dedicated RPC coordinator 1000 only imports the client:blocked and server:serving modes (i.e., through RPC client importedstate port 1022 and RPC server importedstate port 1004 respectively),dedicated RPC coordinator 1000 is not allowed to alter these values to comply. In fact, none of these predicates is explicitly enforced by a runtime system. However, the last two can be used as requirements and guarantees for interface type-checking. - 7. System-Level Execution
- Coordination-centric design methodology lets system specifications be executed directly, according to the semantics described above. When components and coordinators are composed into higher-order structures, however, it becomes essential to consider hazards that can affect system behavior. Examples include conflicting constraints, in which local resolution semantics may either leave the system in an inconsistent state or make it cycle forever, and conflicting actions that undo one another's behavior. In the remainder of this section, the effect of composition issues on system-level executions is explained.
- A. System Control Configurations
- A configuration is the combined control state of a system-basically, the set of active modes at a point in time. In other words, a configuration in coordination-centric design is a bit vector containing one bit for each mode in the system. The bit representing a control state is true when the control state is active and false when the control state is inactive. Configurations representing the complete system control state facilitate reasoning on system properties and enable several forms of static analysis of system behavior.
- B. Action-Trigger Propagation
- Triggers are formal parameters for events. As mentioned earlier, there are two types of triggers: (1) control triggers, invoked by control events such as mode change requests, and (2) data flow triggers, invoked by data events such as message arrivals or departures. Components and coordinators can both request mode changes (on the modes visible to them) and generate new messages (on the message ports visible to them). Using actions, these events can be propagated through the components and coordinators in the system, causing a cascade of data transmissions and mode change requests, some of which can cancel other requests. When the requests, and secondary requests implied by them, are all propagated through the system, any requests that have not been canceled are confirmed and made part of the system's new configuration.
- Triggers can be immediately propagated through their respective actions or delayed by a scheduling step. Recall that component actions can be either transparent or opaque. Transparent actions typically propagate their triggers immediately, although it is not absolutely necessary that they do so. Opaque actions typically must always delay propagation.
- 1. Immediate Propagation
- Some triggers must be immediately propagated through actions, but only on certain types of transparent actions. Immediate propagation can often involve static precomputation of the effect of changes, which means that certain actions may never actually be performed. For example, consider a system with a coordinator that has an action that activates mode A and a coordinator with an action that deactivates mode B whenever A is activated. Static analysis can be used to determine in advance that any event that activates A will also deactivate B; therefore, this effect can be executed immediately without actually propagating it through A.
- 2. Delayed Propagation
- Trigger propagation through opaque actions must typically be delayed, since the system cannot look into opaque actions to precompute their results. Propagation may be delayed for other reasons, such as system efficiency. For example, immediate propagation requires tight synchronization among software components. If functionality is spread among a number of architectural components, immediate propagation is impractical.
- C. A Protocol Implemented with a Compound Coordinator
- Multiple coordinators are typically needed in the design of a system. The multiple coordinators can be used together for a single, unified behavior. Unfortunately, one coordinator may interfere with another's behavior.
- FIG. 11 shows a combined
coordinator 1100 with both preemption and round-robin coordination for controlling access to a resource, as discussed above. With reference to FIG. 11,components component coordination interface 1112, which has a component arbitrated control port 1114 and a componentoutput message port 1116. However, when apreemptor component 1120 needs the resource,preemptor component 1120 is allowed to grab the resource immediately.Preemptor component 1120 has a preemptorcomponent coordination interface 1122. Preemptorcomponent coordination interface 1122 has a preemptor arbitratedstate port 1124, a preemptoroutput message port 1126, and a preemptorinput message port 1128. - All
component coordination interfaces 1112 and preemptorcomponent coordination interface 1122 are connected to a complementary combinedcoordinator coordination interface 1130, which has a coordinator arbitratedstate port 1132, a coordinatorinput message port 1134, and a coordinatoroutput message port 1136. Combinedcoordinator 1100 is a hierarchical coordinator and internally has a round-robin coordinator (not shown) and a preemption coordinator (not shown). Combinedcoordinator coordination interface 1130 is connected to a coordination interface to round-robin 1138 and a coordination interface to preempt 1140. Coordinator arbitratedstate port 1132 is bound to both a token arbitrated control port 1142, which is part of coordination interface to round-robin 1138, and to a preempt arbitrated control port 1144, which is part of coordination interface to preempt 1140. Coordinatorinput message port 1134 is bound to an interface to a round-robinoutput message port 1146, and coordinatoroutput message port 1136 is bound to an interface to round-robininput message port 1148. - Thus preemption interferes with the normal round-robin ordering of access to the resource. After a preemption-based access, the resource moves to the component that in round-robin-ordered access would be the successor to
preemptor component 1120. If the resource is preempted too frequently, some components may starve. - D. Mixing Control and Data in Coordinators
- Since triggers can be control-based, data-based, or both, and actions can produce both control and data events, control and dataflow aspects of a system are coupled through actions. Through combinations of actions, designers can effectively employ modal data flow, in which relative schedules are switched on and off based on the system configuration.
- Relative scheduling is a form of coordination. Recognizing this and understanding how it affects a design can allow a powerful class of optimizations. Many data-centric systems (or subsystems) use conjunctive firing, which means that a component buffers messages until a firing rule is matched. When matching occurs, the component fires, consuming the messages in its buffer that caused it to fire and generating a message or messages of its own. Synchronous data flow systems are those in which all components have only firing rules with constant message consumption and generation.
- FIG. 12A shows a system in which a
component N1 1200 is connected to acomponent N3 1202 by adata transfer coordinator 1204 and acomponent N2 1206 is connected tocomponent N3 1202 by a seconddata transfer coordinator 1208.Component N3 1202 fires when it accumulates three messages on aport c 1210 and two messages on aport d 1212. On firing,component N3 1202 produces two messages on aport o 1214. Coordination control state tracks the logical buffer depth for these components. This is shown with numbers representing the logical queue depth of each port in FIG. 12. - FIG. 12B shows the system of FIG. 12A in which
data transfer coordinator 1204 and seconddata transfer coordinator 1208 have been merged to form a merged data transfer coordinator 1216. Merging the coordinators in this example provides an efficient static schedule for component firing. Merged data transfer coordinator 1216fires component N1 1200 three times andcomponent N2 1206 twice. Merged data transfer coordinator 1216 then firescomponent N3 1202 twice (to consume all messages produced bycomponent N1 1200 and component N2 1206). - Message rates can vary based on mode. For example, a component may consume two messages each time it fires in one mode and four each time it fires in a second mode. For a component like this, it is often possible to merge schedules on a configuration basis, in which each configuration has static consumption and production rates for all affected components.
- E. Coordination Transformations
- In specifying complete systems, designers must often specify not only the coordination between two objects, but also the intermediate mechanism they must use to implement this coordination. While this intermediate mechanism can be as simple as shared memory, it can also be another coordinator; hence coordination may be, and often is, layered. For example, RPC coordination often sits on top of a TCP/IP stack or on an IrDA stack, in which each layer coordinates with peer layers on other processing elements using unique coordination protocols. Here, each layer provides certain capabilities to the layer directly above it, and the upper layer must be implemented in terms of them.
- In many cases, control and communication synthesis can be employed to automatically transform user-specified coordination to a selected set of standard protocols. Designers may have to manually produce transformations for nonstandard protocols.
- F. Dynamic Behavior with Compound Coordinators
- Even in statically bound systems, components may need to interact in a fashion that appears dynamic. For example, RPC-style coordination often has multiple clients for individual servers. Here, there is no apparent connection between client and server until one is forged for a transaction. After the connection is forged, however, the coordination proceeds in the same fashion as dedicated RPC.
- Our approach to this is to treat the RPC server as a shared resource, requiring resource allocation protocols to control access. However, none of the resource allocation protocols described thus far would work efficiently under these circumstances. In the following subsections, an appropriate protocol for treating the RPC as a shared resource will be described and how that protocol should be used as part of a complete multiclient RPC coordination class—one that uses the same RPC coordination interfaces described earlier-will be discussed.
- 1. First Come/First Serve Protocol (FCFS)
- FIG. 13 illustrates a first come/first serve (FCFS) resource allocation protocol, which is a protocol that allocates a shared resource to the requester that has waited longest. With reference to FIG. 13, a
FCFS component interface 1300 for this protocol has arequest control port 1302, anaccess control port 1304 and a componentoutgoing message port 1306. AFCFS coordinator 1308 for this protocol has a set ofFCFS interfaces 1310 that are complementary toFCFS component interfaces 1300, having a FCFS coordinatorrequest control port 1312, a FCFScoordinator access port 1314, and a FCFS coordinatorinput message port 1316. When acomponent 1318 needs to access aresource 1320, it assertsrequest control port 1302. When granted access,FCFS coordinator 1308 asserts the appropriate FCFScoordinator access port 1314, releasing FCFS coordinatorrequest control port 1312. - To do this,
FCFS coordinator 1308 uses a rendezvous coordinator and two round-robin coordinators. One round-robin coordinator maintains a list of empty slots in which a component may be enqueued, and the other round-robin coordinator maintains a list showing the next component to be granted access. When an FCFS coordinatorrequest control port 1312 becomes active,FCFS coordinator 1308 begins a rendezvous access to a binder action. When activated, this action maps theappropriate component 1318 to a position in the round-robin queues. A separate action cycles through one of the queues and selects the next component to access the server. As much as possible,FCFS coordinator 1308 attempts to grant access toresource 1320 to theearliest component 1318 having requestedresource 1320, with concurrent requests determined based on the order in the rendezvous coordinator of therespective components 1318. - 2. Multiclient RPC
- FIG. 14 depicts a
multiclient RPC coordinator 1400 formed by combiningFCFS coordinator 1308 withdedicated RPC coordinator 1000. With reference to FIG. 14, a set ofclients 1402 have a set ofclient coordination interfaces 1030, as shown in FIG. 10. In addition,multiclient RPC coordinator 1400 has a set of RPCclient coordination interfaces 1020, as shown in FIG. 10. For each RPCclient coordination interface 1020, RPC clientinput message port 1024, of RPCclient coordination interface 1020, is bound to the componentoutgoing message port 1306 ofFCFS coordinator 1308.Message transfer action 1403 serves to transfer messages between RPC clientinput message port 1024 and componentoutgoing message port 1306. For coordinating the actions ofmultiple clients 1402,multiclient RPC coordinator 1400 must negotiate accesses to a server 1404 and keep track of the values returned by server 1404. - F. Monitor Modes and Continuations
- Features such as blocking behavior and exceptions can be implemented in the coordination-centric design methodology with the aid of monitor modes. Monitor modes are modes that exclude all but a selected set of actions called continuations, which are actions that continue a behavior started by another action.
- 1. Blocking Behavior
- With blocking behavior, one action releases control while entering a monitor mode, and a continuation resumes execution after the anticipated response event. Monitor mode entry must be immediate (at least locally), so that no unexpected actions can execute before they are blocked by such a mode.
- Each monitor mode has a list of actions that cannot be executed when it is entered. The allowed (unlisted) actions are either irrelevant or are continuations of the action that caused entry into this mode. There are other conditions, as well. This mode requires an exception action if forced to exit. However, this exception action is not executed if the monitor mode is turned off locally.
- When components are distributed over a number of processing elements, it is not practical to assume complete synchronization of the control state. In fact, there are a number of synchronization options available as detailed in Chou, P “Control Composition and Synthesis of Distributed Real-Time Embedded Systems”, Ph.D. dissertation, University of Washington, 1998.
- 2. Exception Handling
- Exception actions are a type of continuation. When in a monitor mode, exception actions respond to unexpected events or events that signal error conditions. For example,
multiclient RPC coordinator 1400 can bind client.blocked to a monitor mode and set an exception action on+server.serving. This will signal an error whenever the server begins to work when the client is not blocked for a response. - 8. A Complete System Example
- FIG. 15 depicts a large-scale example system under the coordination-centric design methodology. With reference to FIG. 15, the large scale system is a bimodal digital
cellular network 1500.Network 1500 is for the most part a simplified version of a GSM (global system for mobile communications) cellular network. This example shows in greater detail how the parts of coordination-centric design work together and demonstrates a practical application of the methodology.Network 1500 has two different types of cells, a surface cell 1502 (also referred to as a base station 1502) and asatellite cell 1504. These cells are not only differentiated by physical position, but by the technologies they use to sharenetwork 1500.Satellite cells 1504 use a code division multiple access (CDMA) technology, andsurface cells 1502 use a time division multiple access (TDMA) technology. Typically, there are seven frequency bands reserved for TDMA and one band reserved for CDMA. The goal is for as much communication as possible to be conducted through the smaller TDMA cells, here surfacecells 1502, because power requirements for a CDMA cells, heresatellite cell 1504, increase with the number of users in the CDMA cell.Mobile units 1506, or wireless devices, can move betweensurface cells 1502, requiring horizontal handoffs betweensurface cells 1502.Several surface cells 1502 are typically connected to aswitching center 1508.Switching center 1508 is typically connected to a telephone network or theInternet 1512. In addition to handoffs betweensurface cells 1502, the network must be able to hand off between switching centers 1508. Whenmobile units 1506 leave the TDMA region, they remain covered bysatellite cells 1504 via vertical handoffs between cells. Since vertical handoffs require changing protocols as well as changing base stations and switching centers, they can be complicated in terms of control. - Numerous embedded systems comprise the overall system. For example,
switching center 1508 and base stations,surface cells 1502, are required as part of the network infrastructure, but cellular phones, handheld Web browsers, and othermobile units 1506 may be supported for access throughnetwork 1500. This section concentrates on the software systems for two particular mobile units 1506: a simple digital cellular phone (shown in FIG. 16) and a handheld Web browser (shown in FIG. 24). These examples require a wide variety of coordinators and reusable components. Layered coordination is a feature in each system, because a function of many subsystems is to perform a layered protocol. Furthermore, this example displays how the hierarchically constructed components can be applied in a realistic system to help manage the complexity of the overall design. - To begin this discussion, we describe the cellular phone in detail, focusing on its functional components and the formalization of their interaction protocols. We then discuss the handheld Web browser in less detail but highlight the main ways in which its functionality and coordination differ from those of the cellular phone. In describing the cellular phone, we use a top-down approach to show how a coherent system organization is preserved, even at a high level. In describing the handheld Web browser, we use a bottom-up approach to illustrate component reuse and bottom-up design.
- A. Cellular Phone
- FIG. 16 shows a top-level coordination diagram of the behavior of a
cell phone 1600. Rather than using a single coordinator that integrates the components under a single protocol, we use several coordinators in concert. Interactions between coordinators occur mainly within the components to which they connect. - With reference to FIG. 16,
cell phone 1600 supports digital encoding of voice streams. Before it can be used, it must be authenticated with a home master switching center (not shown). This authentication occurs through a registered master switch for each phone and an authentication number from the phone itself. There are various authentication statuses, such as full access, grey-listed, or blacklisted. Forcell phone 1600, real-time performance is more important than reliability. A dropped packet is not retransmitted, and a late packet is dropped since its omission degrades the signal less than its late incorporation. - Each component of
cell phone 1600 is hierarchical. AGUI 1602 lets users enter phone numbers while displaying them and query anaddress book 1604 and alogs component 1606.Address book 1604 is a database that can map names to phone numbers and vice versa.GUI 1602 usesaddress book 1604 to help identify callers and to look up phone numbers to be dialed.Logs 1606 track both incoming and outgoing calls as they are dialed. Avoice component 1608 digitally encodes and decodes, and compresses and decompresses, an audio signal. Aconnection component 1610 multiplexes, transmits, receives, and demultiplexes the radio signal and separates out the voice stream and caller identification information. - Coordination among the above components makes use of several of the coordinators discussed above. Between
connection component 1610 and aclock 1612, and betweenlogs 1606 andconnection component 1610, are unidirectional data transfercoordinators 600 as described with reference to FIG. 6A. Betweenvoice component 1608 andconnection component 1610, and betweenGUI 1602 andconnection component 1610, are bidirectional data transfercoordinators 604, as described with reference to FIG. 6B. Betweenclock 1612 andGUI 1602 is astate unification coordinator 606, as described with reference to FIG. 6C. BetweenGUI 1602 andaddress book 1604 is adedicated RPC coordinator 1000 as described with reference to FIG. 10, in whichaddress book 1604 hasclient 1028 andGUI 1602 hasserver 1010. - There is also a custom GUI/
log coordinator 1614 betweenlogs 1606 andGUI 1602. GUI/log coordinator 1614 letsGUI 1602 transfer new logged information through an routput message port 1616 on a GUI coordination interface 1618 to an rinput message port 1620 on alog coordination interface 1622. GUI/log coordinator 1614 also letsGUI 1602 choose current log entries through a pair of coutput message ports 1624 on GUI coordination interface 1618 and a pair of cinput message ports 1626 onlog coordination interface 1622.Logs 1606 continuously display one entry each for incoming and outgoing calls. - 1. GUI Component
- FIG. 17A is a detailed view of
GUI component 1602, of FIG. 16. With reference to FIG. 17A,GUI component 1602 has two inner components, akeypad 1700 and a text-basedliquid crystal display 1702, as well as several functions of its own (not shown). Each time a key press occurs, it triggers an action that interprets the press, depending on the mode of the system. Numeric presses enter values into a shared dialing buffer. When a complete number is entered, the contents of this buffer are used to establish a new connection throughconnection component 1610. Table 5 shows the action triples forGUI 1602.Mode Trigger Action Idle numBuffer.append(keypress.val) Send radio.send(numBuffer.val) +outgoingCall Disconnect Nil Leftarrow AddressBook.forward() +lookupMode Rightarrow log.lastcall() +outlog LookupMode Leftarrow AddressBook.forward() Rightarrow AddressBook.backward() - An “Addr Coord”
coordinator 1704 includes an address book mode (not shown) in which arrow key presses are transformed into RPC calls. - 2. Logs Component
- FIG. 17B is a detailed view of
logs component 1606, which tracks all incoming and outgoing calls. With reference to FIG. 17B, bothGUI component 1602 andconnection component 1610 must communicate withlogs component 1606 through specific message ports. Those specific message ports include a transmittednumber message port 1720, a receivednumber message port 1722, a change current receivedmessage port 1724, a change currenttransmitted message port 1726, and twostate ports -
Logs component 1606 contains two identical single-log components: asend log 1730 for outgoing calls and a receive log 1740 for incoming calls. The interface oflogs component 1606 is connected to the individual log components by a pair of adapter coordinators,Adapl 1750 andAdap 2 1752.Adap1 1750 has an adapter receiveinterface 1754, which has a receive importedstate port 1756 and a receiveoutput message port 1758.Adap1 1750 further has anadapter send interface 1760, which has a send importedstate port 1762 and a sendoutput message port 1764. Within Adap1,state port 1728 is bound to receive importedstate port 1756, change currentreceived message port 1724 is bound to receiveoutput message port 1758, receivednumber message port 1722 is bound to a received interfaceoutput message port 1766 on a receivednumber coordination interface 1768, change currenttransmitted message port 1726 is bound to sendoutput message port 1764, andstate port 1729 is bound to Up.rc is bound to send importedstate port 1762. - 3. Voice Component
- FIG. 18A is a detailed view of
voice component 1608 of FIG. 16.Voice component 1608 has acompression component 1800 for compressing digitized voice signals before transmission, adecompression component 1802 for decompressing received digitized voice signals, andinterfaces Voice component 1608 is a pure data flow component containingsound generator 1808 which functions as a white-noise generator, a ring tone generator, and which has a separate port for each onsound generator interface 1810, and voice compression functionality in the form ofcompression component 1800 anddecompression component 1802. - 4. Connection Component
- FIG. 18B is a detailed view of
connection component 1610 of FIG. 16. With reference to FIG. 18B,connection component 1610 coordinates withvoice component 1608, logscomponent 1606,clock 1612, andGUI 1602. In addition,connection component 1610 is responsible for coordinating the behavior ofcell phone 1600 with a base station that owns the surface cell 1502 (shown in FIG. 15), a switching center 1508 (shown in FIG. 15), and all other phones (not shown) withinsurface cell 1502.Connection component 1610 must authenticate users, establish connections, and perform handoffs as needed-including appropriate changes in any low-level protocols (such as a switch from TDMA to CDMA). - FIG. 19 depicts a set of communication layers between
connection component 1610 ofcell phone 1600 andbase station 1502 or switchingcenter 1508. With reference to FIG. 19, has several subcomponents, or lower-level components, each of which coordinates with an equivalent, or peer, layer on eitherbase station 1502 or switchingcenter 1508. The subcomponents ofconnection component 1610 include a cellphone call manager 1900, a cellphone mobility manager 1902, a cell phoneradio resource manager 1904, a cell phonelink protocol manager 1906, and a cellphone transport manager 1908 which is responsible for coordinating access to and transferring data through the shared airwaves TDMA and CDMA coordination. Each subcomponent will be described in detail including how each fits into the complete system. -
Base station 1502 has acall management coordinator 1910, a mobility management coordinator 1912, a radio resource coordinator 1914 (BSSMAP 1915), a link protocol coordinator 1916 (SCCO 1917), and a transport coordinator 1918 (MTP 1919).Switching center 1508 has a switchingcenter call manager 1920, a switchingcenter mobility manager 1922, (aBSSMAP 1924, aSCCP 1926, and an MTP 1928). - a. Call Management
- FIG. 20 is a detailed view of a
call management layer 2000 consisting of cellphone call manager 1900, which is connected to switchingcenter call manager 1920 bycall management coordinator 1910. With reference to FIG. 20,call management layer 2000 coordinates the connection betweencell phone 1600 and switchingcenter 1508.Call management layer 2000 is responsible for dialing, paging, and talking.Call management layer 2000 is always present incell phone 1600, though not necessarily in Internet appliances (discussed later). Cellphone call manager 1900 includes a set of modes (not shown) for call management coordination that consists of the following modes: - Standby
- Dialing
- RingingRemote
- Ringing
- CallInProgress
- Cell
phone call manager 1900 has a cell phone call manager interface 2002. Cell phone call manager interface 2002 has a port corresponding to each of the above modes. The standby mode is bound to a standby exportedstate port 2010. The dialing mode is bound to a dialing exportedstate port 2012. The RingingRemote mode is bound to a RingingRemote importedstate port 2014. The Ringing mode is bound to a ringing importedstate port 2016. The CallInProgress mode is bound to a CallInProgress arbitratedstate port 2018. - Switching
center call manager 1920 includes the following modes (not shown) for call management coordination at the switching center: - Dialing
- RingingRemote
- Paging
- CallInProgress
- Switching
center call manager 1920 has a switching center callmanager coordination interface 2040, which includes a port for each of the above modes within switchingcenter call manager 1920. - When
cell phone 1600 requests a connection,switching center 1508 creates a new switching center call manager and establishes acall management coordinator 1910 betweencell phone 1600 and switchingcenter call manager 1920. - b. Mobility Management
- A mobility management layer authenticates
mobile unit 1506 orcell phone 1600. When there is asurface cell 1502 available,mobility manager 1902 contacts theswitching center 1508 forsurface cell 1502 and transfers a mobile unit identifier (not shown) formobile unit 1506 to switchingcenter 1508.Switching center 1508 then looks up a home motor switching center formobile unit 1506 and establishes a set of permissions assigned tomobile unit 1506. This layer also acts as a conduit for the call management layer. In addition, the mobility management layer performs handoffs betweenbase stations 1502 and switchingcenters 1508 based on information received from the radio resource layer. - C. Radio Resource
- In the radio resource layer,
radio resource manager 1904, chooses thetarget base station 1502 and tracks changes in frequencies, time slices, and CDMA codes. Cell phones may negotiate with up to 16 base stations simultaneously. This layer also identifies when handoffs are necessary. - d. Link Protocol
- The link layer manages a connection between
cell phone 1600 andbase station 1502. In this layer,link protocol manager 1906 packages data for transfer tobase station 1502 fromcell phone 1600. - e. Transport
- FIG. 21A is a detailed view of
transport component 1908 ofconnection component 1610.Transport component 1908 has two subcomponents, a receivecomponent 2100 for receiving data and a transmitcomponent 2102 for transmitting data. Each of these subcomponents has two parallel data paths aCDMA path 2104 and a TDMA/FDMA path 2106 for communicating in the respective network protocols. - FIG. 21B is a detailed view of a
CDMA modulator 2150, which implements a synchronous data flow data path.CDMA modulator 2150 takes the dot-product of an incoming data signal along path 2152 and a stored modulation code forcell phone 1600 alongpath 2154, which is a sequence of chips, which are measured time signals having a value of −1 or +1. -
Transport component 1908 uses CDMA and TDMA technologies to coordinate access to a resource shared amongseveral cell phones 1600, i.e., the airwaves.Transport components 1908 supersede the FDMA technologies (e.g., AM and FM) used for analog cellular phones and for radio and television broadcasts. In FDMA, a signal is encoded for transmission by modulating it with a carrier frequency. A signal is decoded by demodulation after being passed through a band pass filter to remove other carrier frequencies. Eachbase station 1502 has a set of frequencies—chosen to minimize interference between adjacent cells. (The area covered by a cell may be much smaller than the net range of the transmitters within it.) - TDMA, on the other hand, coordinates access to the airwaves through time slicing.
Cell phone 1600 on the network is assigned a small time slice, during which it has exclusive access to the media. Outside of the small time slice,cell phone 1600 must remain silent. Decoding is performed by filtering out all signals outside of the small time slice. The control for this access must be distributed. As such, each component involved must be synchronized to observe the start and end of the small time slice at the same instant. - Most TDMA systems also employ FDMA, so that instead of sharing a single frequency channel,
cell phones 1600 share several channels. The band allocated to TDMA is broken into frequency channels, each with a carrier frequency and a reasonable separation between channels. Thus user channels for the most common implementations of TDMA can be represented as a two-dimensional array, in which the rows represent frequency channels and the columns represent time slices. - CDMA is based on vector arithmetic. In a sense, CDMA performs inter-cell-phone coordination using data flow. Instead of breaking up the band into frequency channels and time slicing these, CDMA regards the entire band as an n-dimensional vector space. Each channel is a code that represents a basis vector in this space. Bits in the signal are represented as either 1 or −1, and the modulation is the inner product of this signal and a basis vector of
mobile unit 1506 orcell phone 1600. This process is called spreading, since it effectively takes a narrowband signal and converts it into a broadband signal. - Demultiplexing is simply a matter of taking the dot-product of the received signal with the appropriate basis vector, obtaining the original 1 or −1. With fast computation and the appropriate codes or basis vectors, the signal can be modulated without a carrier frequency. If this is not the case, a carrier and analog techniques can be used to fill in where computation fails. If a carrier is used, however, all units use the same carrier in all cells.
- FIG. 22 shows TDMA and CDMA signals for four
cell phones 1600. With reference to FIG. 22, for TDMA, eachcell phone 1600 is assigned a time slice during which it can transmit.Cell phone 1 is assigned time slice t0,cell phone 2 is assigned time slice t1,cell phone 3 is assigned time slice t2, andcell phone 4 is assigned time slice t3. For CDMA, eachcell phone 1600 is assigned a basis vector that it multiplies with its signal.Cell phone 1 is assigned the vector: -
-
-
- Notice that these vectors form an orthogonal basis.
- B. Handheld Web Browser
- In the previous subsection, we demonstrated our methodology on a cell phone with a top-down design approach. In this subsection, we demonstrate our methodology with a bottom-up approach in building a handheld Web browser.
- FIG. 23A is a LCD
touch screen component 2300 for a Web browser GUI (shown in FIG. 24A) for awireless device 1506. With reference to FIG. 23A, a LCDtouch screen component 2300, has anLCD screen 2302 and atouch pad 2304. - FIG. 23B is a Web
page access component 2350 for fetching and formatting web pages. With reference to FIG. 23B,web access component 2350 has a page fetchsubcomponent 2352 and apage format subcomponent 2354.Web access component 2350 reads hypertext markup language (HTML) from aconnection interface 2356, sends word placement requests to adisplay interface 2358, and sends image requests to theconnection interface 2356.Web access component 2350 also has a character input interface to allow users to enter page requests directly and to fill out forms on pages that have forms. - FIG. 24A shows a completed handheld
Web browser GUI 2400. With reference to FIG. 24A, handheldWeb browser GUI 2400, has LCDtouch screen component 2300,web access component 2350, and a penstroke recognition component 2402 that translates pen strokes entered ontouch pad 2304 into characters. - FIG. 24B shows the complete component view of a
handheld Web browser 2450. With reference to FIG. 24B,handheld Web browser 2450 is formed by connecting handheldWeb browser GUI 2400 toconnection component 1610 of cell phone 1600 (described with reference to FIG. 16) with bidirectional data transfer coordinator 604 (described with reference to FIG. 6B).Handheld Web browser 2450 is an example ofmobile unit 1506, and connects to the Internet through the cellular infrastructure described above. However,handheld Web browser 2450 has different access requirements than doescell phone 1600. Forhandheld Web browser 2450, reliability is more important than real-time delivery. Dropped packets usually require retransmission, so it is better to deliver a packet late than to drop it. Real-time issues primarily affect download time and are therefore secondary. Despite this,handheld Web browser 2450 must coordinate media access withcell phones 1600, and so it must use the same protocol ascell phones 1600 to connect to the network. For that reason,handheld Web browser 2450 can reuseconnection component 1610 fromcell phone 1600. - It will be obvious to those having skill in the art that many changes may be made to the details of the above-described embodiments of this invention without departing from the underlying principles thereof. The scope of the present invention should, therefore, be determined only by the following claims.
Claims (62)
1. A methodology for designing a software system independent of a target hardware implementation, the methodology comprising designing the software system as comprising
a first component for realizing a predetermined functionality,
a first coordinator for managing interactions between the first component and a second component, and
a first pair of coordination interfaces comprising a first and a second coordination interface for implementing a connection between the first component and the first coordinator so as to preserve component modularity while exposing only the parts of the component that participate in coordination.
2. A method according to claim 1 wherein the first coordinator implements a predetermined coordination protocol.
3. A method according to claim 2 wherein the first pair of coordination interfaces includes a pair of complimentary ports to transfer information between the coordination interfaces.
4. A method according to claim 3 wherein a first port of the pair of complimentary ports has a combination of attributes realizing an output message port and the other port of the pair of complimentary ports has a combination of attributes realizing an input message port.
5. A method according to claim 3 wherein the a first port of the pair of complimentary ports has a combination of attributes realizing an exported state port and the other port of the pair of complimentary ports has a combination of attributes realizing an imported state port.
6. A method according to claim 3 wherein a first port of the pair of complimentary ports has a combination of attributes realizing a first control port, and the other port of the pair of complimentary ports has a combination of attributes realizing a second control port that is complimentary to the first control port.
7. A method according to claim 3 wherein a first port of the pair of complimentary ports has a combination of attributes realizing a first arbitrated state port, and the other port of the pair of complimentary ports has a combination of attributes realizing a second arbitrated state port that is complimentary to the first arbitrated state port.
8. A method according to claim 3 wherein each port of the pair of complimentary ports is defined by a five-tuple (T, A, Q, D, R) where:
T represents a datatype of the port;
A is a Boolean value that is true if and only if the port is arbitrated;
Q is a predetermined integer greater than zero that represents logical queue depth of the port;
D represents a directionality of data flows with respect to the port; and
R represents a policy for data removal on the port.
9. A method according to claim 8 wherein D is one of {in, out, inout } representing data flow into the port, out of the port, or bi-directional, respectively.
10. A method according to claim 9 wherein D is one of {in, out, inout or custom}, where custom directionality permits restricting the port to accept or to generate only certain specific predetermined values.
11. A method according to claim 2 wherein the first coordination interface implements a predetermined guarantee of a selected invariant interface property of the first component.
12. A method according to claim 11 wherein the guarantee specifies a predetermined event ordering.
13. A method according to claim 11 wherein the guarantee specifies an acceptable relative behavior between the first and second component.
14. A method according to claim 2 wherein the first coordination interface includes a specified requirement and the second coordination interface includes a specified guarantee that satisfies the specified requirement of the first coordination interface.
15. A computer software design methodology comprising a coordination interface for software packaging, wherein the coordination interface comprises at least one named port.
16. A method according to claim 15 wherein the coordination interface further comprises:
a set of at least one named guarantee provided by the interface;
a set of at least one named requirement that must be matched by a guarantee of a connected interface
17. A method according to claim 16 wherein the coordination interface further comprises a set of coordination interfaces including at least a second coordination interface, thereby making coordination interfaces hierarchical.
18. A method according to claim 15 wherein the named port is defined by a five-tuple (T, A, Q, D, R) where:
T represents a datatype of the port;
A is a Boolean value that is true if and only if the port is arbitrated;
Q is a predetermined integer greater than zero that represents logical queue depth of the port;
D represents a directionality of data flows with respect to the port; and
R represents a policy for data removal on the port.
19. A software system for execution on a hardware platform, the software system comprising:
a first component having a first coordination interface;
a second component having a second coordination interface; and
a coordinator for coordinating control and data flow between the first and second components and having a third coordination interface that is complimentary to the first coordination interface and a fourth coordination interface that is complimentary to the second coordination interface.
20. A software system according to claim 19 wherein the first coordination interface includes a first port as a connection point to a second port included on the third coordination interface.
21. A method according to claim 20 wherein the first port has a combination of attributes realizing a first message port.
22. A method according to claim 21 wherein the second port has a combination of attributes realizing a second message port that is complimentary to the first message port.
23. A method according to claim 20 wherein the first port has a combination of attributes realizing a first state port.
24. A method according to claim 22 wherein the second port has a combination of attributes realizing a second state port that is complimentary to the first message port.
25. A method according to claim 20 wherein the first port has a combination of attributes realizing a first control port.
26. A method according to claim 25 wherein the first port has a combination of attributes realizing a second control port that is complimentary to the first control port.
27. A method for designing software systems comprising:
designing a first software component for performing a first predetermined functionality that when activated produces a defined result;
designing a first coordination interface for logically connecting the first component to the first coordination interface in order to export the result produced by the first component;
designing a second component for performing a second predetermined functionality that can respond to the defined result produced by the first component;
designing a second coordination interface for logically connecting the second component to the second coordination interface in order to importing the result produced by the first software component;
designing a coordinator with a third coordination interface that is complimentary to the first coordination interface and a fourth coordination interface that is complimentary to the second coordination interface, for transferring the result exported by the first coordination interface from the first coordination interface to the second coordination interface.
28. A method according to claim 27 in which the first coordination interface has a first port for exporting the result produced by the first component.
29. A method according to claim 28 in which the second coordination interface has a second port for importing the result produced by first component.
30. A method according to claim 29 in which the third coordination interface has a third port that is complimentary to the first port for importing the result exported by the first port, and in which the fourth coordination interface has a fourth port that is complimentary to the second port for exporting the result imported by the third port.
31. A method according to claim 30 in which the third coordination interface is bound to the fourth coordination interface in a manner that implements a predetermined coordination protocol.
32. A method according to claim 27 in which the first component comprises a first action, for implementing the first predetermined functionality, a first mode for implementing a boolean guard on the first action, and a first event to serve as a trigger for initiating the first action.
33. A method according to claim 32 in which the second component comprises a second action, for implementing the second predetermined functionality, a second mode for implementing a boolean guard on the second action, and a second event to serve as a trigger for initiating the second action.
34. A method according to claim 33 in which the coordinator comprises a binding between the third and fourth coordination interfaces for transferring the result from the third coordination interface to the fourth coordination interface.
35. A method according to claim 33 in which the coordinator comprises a coordinator action which performs a predetermined coordinator function, and a mode which serves as a boolean guard on the coordinator action.
36. A method according to claim 35 in which the coordinator further comprises a constraint which serves to enforce a predetermined relationship between a pair of control ports.
37. A method for designing a software program without reference to a target system architecture comprising:
creating a first component comprising software code for performing a first function and a first coordination interface for sending and receiving separate control and dataflow information;
creating a second component comprising software code for performing a second function and a second coordination interface for sending and receiving separate control and dataflow information;
creating a coordinator to manage control interactions and dataflow interactions between the first component and the second component comprising a third coordination interface for logically connecting to the first coordination interface, and a fourth coordination interface for logically connecting to the second coordination interface.
38. The method of claim 37 in which the coordination interfaces each comprise a port for transferring information.
39. The method of claim 38 in which the first coordination interface and the third coordination interface have corresponding ports and complimentary requirements and guarantees, and the second coordination interface and the fourth coordination interface have corresponding ports and complimentary requirements and guarantees.
40. The method of claim 39 in which the first component further comprises a first mode and a first action.
41. The method of claim 40 in which the second component further comprises a second mode and a second action.
42. The method of claim 41 in which the coordinator further comprises a third action and a third mode.
43. The method of claim 42 in which the coordinator further comprises a first binding which connects a first port on the third coordination interface to a second port on the fourth coordination interface
44. The method of claim 43 in which the first port is an input data port and the second port is an output data port.
45. The method of claim 42 in which the coordinator further comprises a second binding which connects a third port on the third coordination interface to the third mode.
46. The method of claim 42 in which the coordinator further comprises a third binding which connects a fourth port on the fourth coordination interface to a first variable.
47. The method of claim 42 in which the coordinator further comprises a fourth binding which connects a fifth port on the third coordination interface to a first event.
48. A software system comprising:
a first software component comprising a first action;
a second software component comprising a second action; and
a coordinator for implementing a communication protocol between the first software component and the second software component and connected to the first software component and the second software component.
49. The software system of claim 48 in which the first software component further comprises:
a first mode connected to the first action;
a first trigger connected to the first action; and
a first coordination interface comprising a first port.
50. The software system of claim 49 in which the second software component further comprises;
a second mode connected to the second action;
a first trigger connected to the first action; and
a second coordination interface comprising a second port.
51. The software system of claim 50 in which the coordinator comprises:
a third action for implementing the communication protocol;
a third mode connected to the third action;
a third trigger connected to the third action;
a third coordination interface comprising a third port and connected to the first coordination interface; and
a fourth coordination interface comprising a fourth port and connected to the second coordination interface.
52. The software system of claim 51 in which the first software component further comprises a first binding.
53. The software system of claim 52 in which the second software component further comprises a second binding.
54. The software system of claim 53 in which the coordinator further comprises a third binding.
55. The software system of claim 54 in which the first coordination interface further comprises a fourth port and a fourth binding.
56. The software system of claim 55 in which the first binding connects the first port to the first mode and the fourth binding connects the fourth port with the first trigger.
57. A method for designing a software system comprising:
creating a first software component comprising a first action, a first mode and a first coordination interface;
creating a second software component comprising a second action, a second mode and a second coordination interface; and
creating a coordinator, to implement a predetermined communication protocol between the first and second component by coordinating control and dataflow interactions between the first component and the second component, comprising:
a third action;
a third mode;
a third coordination interface connected to the first coordination interface; and
a fourth coordination interface connected to the second coordination interface.
58. A software system comprising;
n components, where n is an integer greater than zero, each component designed to perform a predetermined functionality;
m coordinators, where m is an integer greater than zero, each coordinator designed to implement a predetermined coordination protocol between a set of the n components;
n coordination interface pairs, each coordination interface pair designed to logically connect a component to a coordinator for transferring information between the component and the coordinator.
59. The software system of claim 58 wherein each component of the n components comprises:
an action to perform a predetermined function;
a mode to act as a boolean guard on the action;
a trigger which when activated causes the action to perform the predetermined function when the mode has a value of true.
60. The software system of claim 59 wherein a component of the n components further comprises:
a set of sub-components;
a set of internal coordinators, each internal coordinator designed to implement a predetermined coordination protocol between a subset of the set of sub-components;
a set internal coordination interface pairs for logically connecting the sub-components to the internal coordinators.
61. The software system of claim 59 wherein each coordinator of the m coordinators comprises:
an action an action to perform a predetermined function;
a mode to act as a boolean guard on the action;
a trigger which when activated causes the action to perform the predetermined function when the mode has a value of true.
62. The software system of claim 61 wherein a coordinator of the m coordinators further comprises:
a set of sub-coordinators, each sub-coordinator designed to implement a predetermined coordination protocol between a subset of any of the n coordination interface pairs that are logically connected to the coordinator;
a set of internal coordination interface pairs, each internal coordination interface pair designed to logically connect the sub-coordinators to one coordination interface of the coordination interface pairs that are logically connected to the coordinator.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/881,391 US20030005407A1 (en) | 2000-06-23 | 2001-06-12 | System and method for coordination-centric design of software systems |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21349600P | 2000-06-23 | 2000-06-23 | |
US09/881,391 US20030005407A1 (en) | 2000-06-23 | 2001-06-12 | System and method for coordination-centric design of software systems |
Publications (1)
Publication Number | Publication Date |
---|---|
US20030005407A1 true US20030005407A1 (en) | 2003-01-02 |
Family
ID=22795323
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/881,391 Abandoned US20030005407A1 (en) | 2000-06-23 | 2001-06-12 | System and method for coordination-centric design of software systems |
US09/885,456 Abandoned US20020174415A1 (en) | 2000-06-23 | 2001-06-19 | System and method for debugging distributed software environments |
US09/886,479 Expired - Fee Related US7003777B2 (en) | 2000-06-23 | 2001-06-20 | Coordination-centric framework for software design in a distributed environment |
US09/886,459 Abandoned US20020087953A1 (en) | 2000-06-23 | 2001-06-20 | Data structure and method for detecting constraint conflicts in coordination-centric software systems |
US09/888,061 Abandoned US20030028858A1 (en) | 2000-06-23 | 2001-06-21 | Evolution diagrams for debugging distributed embedded software applications |
US09/888,082 Abandoned US20020062463A1 (en) | 2000-06-23 | 2001-06-22 | Dynamic control graphs for analysis of coordination-centric software designs |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/885,456 Abandoned US20020174415A1 (en) | 2000-06-23 | 2001-06-19 | System and method for debugging distributed software environments |
US09/886,479 Expired - Fee Related US7003777B2 (en) | 2000-06-23 | 2001-06-20 | Coordination-centric framework for software design in a distributed environment |
US09/886,459 Abandoned US20020087953A1 (en) | 2000-06-23 | 2001-06-20 | Data structure and method for detecting constraint conflicts in coordination-centric software systems |
US09/888,061 Abandoned US20030028858A1 (en) | 2000-06-23 | 2001-06-21 | Evolution diagrams for debugging distributed embedded software applications |
US09/888,082 Abandoned US20020062463A1 (en) | 2000-06-23 | 2001-06-22 | Dynamic control graphs for analysis of coordination-centric software designs |
Country Status (6)
Country | Link |
---|---|
US (6) | US20030005407A1 (en) |
EP (3) | EP1297428A2 (en) |
AT (1) | ATE305153T1 (en) |
AU (4) | AU2001271354A1 (en) |
DE (1) | DE60113538T2 (en) |
WO (4) | WO2002001349A2 (en) |
Cited By (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003054721A1 (en) * | 2001-12-19 | 2003-07-03 | Thomson Licensing S.A. | Method and apparatus for handing off a mobile terminal between a mobile network and a wireless lan |
US20050240737A1 (en) * | 2004-04-23 | 2005-10-27 | Waratek (Australia) Pty Limited | Modified computer architecture |
US20050257219A1 (en) * | 2004-04-23 | 2005-11-17 | Holt John M | Multiple computer architecture with replicated memory fields |
US20050262513A1 (en) * | 2004-04-23 | 2005-11-24 | Waratek Pty Limited | Modified computer architecture with initialization of objects |
US20050262313A1 (en) * | 2004-04-23 | 2005-11-24 | Waratek Pty Limited | Modified computer architecture with coordinated objects |
US20060020913A1 (en) * | 2004-04-23 | 2006-01-26 | Waratek Pty Limited | Multiple computer architecture with synchronization |
US20060095483A1 (en) * | 2004-04-23 | 2006-05-04 | Waratek Pty Limited | Modified computer architecture with finalization of objects |
US20060253844A1 (en) * | 2005-04-21 | 2006-11-09 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with initialization of objects |
US20070101080A1 (en) * | 2005-10-25 | 2007-05-03 | Holt John M | Multiple machine architecture with overhead reduction |
US20070126750A1 (en) * | 2005-10-25 | 2007-06-07 | Holt John M | Replication of object graphs |
US20070174734A1 (en) * | 2005-10-25 | 2007-07-26 | Holt John M | Failure resistant multiple computer system and method |
US20080114943A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Adding one or more computers to a multiple computer system |
US20080114853A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Network protocol for network communications |
US20080114896A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Asynchronous data transmission |
US20080114945A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Contention detection |
US20080120477A1 (en) * | 2006-10-05 | 2008-05-22 | Holt John M | Contention detection with modified message format |
US20080120478A1 (en) * | 2006-10-05 | 2008-05-22 | Holt John M | Advanced synchronization and contention resolution |
US20080126703A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Cyclic redundant multiple computer architecture |
US20080126505A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Multiple computer system with redundancy architecture |
US20080126721A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Contention detection and resolution |
US20080126508A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Synchronization with partial memory replication |
US20080123642A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Switch protocol for network communications |
US20080126516A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Advanced contention detection |
US20080134189A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Job scheduling amongst multiple computers |
US20080133861A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Silent memory reclamation |
US20080133871A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Hybrid replicated shared memory |
US20080130652A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Multiple communication networks for multiple computers |
US20080133884A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Multiple network connections for multiple computers |
US20080133869A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Redundant multiple computer architecture |
US20080133859A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Advanced synchronization and contention resolution |
US20080140975A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Contention detection with data consolidation |
US20080140801A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Multiple computer system with dual mode redundancy architecture |
US20080155127A1 (en) * | 2006-10-05 | 2008-06-26 | Holt John M | Multi-path switching networks |
US20080195617A1 (en) * | 2005-10-25 | 2008-08-14 | Holt John M | Modified machine architecture with machine redundancy |
US20080215701A1 (en) * | 2005-10-25 | 2008-09-04 | Holt John M | Modified machine architecture with advanced synchronization |
US20080250221A1 (en) * | 2006-10-09 | 2008-10-09 | Holt John M | Contention detection with data consolidation |
US20080250213A1 (en) * | 2007-04-06 | 2008-10-09 | Holt John M | Computer Architecture And Method Of Operation for Multi-Computer Distributed Processing Having Redundant Array Of Independent Systems With Replicated Memory And Code Striping |
US8122198B2 (en) | 2005-10-25 | 2012-02-21 | Waratek Pty Ltd. | Modified machine architecture with partial memory updating |
US20140257589A1 (en) * | 2011-07-14 | 2014-09-11 | Fronius International Gmbh | Welding power source and method for controlling the same |
Families Citing this family (233)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6378066B1 (en) * | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
AU2001255808A1 (en) * | 2000-03-15 | 2001-09-24 | Arc Cores, Inc. | Method and apparatus for debugging programs in a distributed environment |
US20030121027A1 (en) * | 2000-06-23 | 2003-06-26 | Hines Kenneth J. | Behavioral abstractions for debugging coordination-centric software designs |
KR101142608B1 (en) * | 2000-07-03 | 2012-05-11 | 오클스 어플리케이션즈, 엘엘씨 | Access control for a decentralized or emergent model on a computer network |
US6961923B2 (en) * | 2000-12-07 | 2005-11-01 | International Business Machines Corporation | Method of detecting zombie breakpoints |
JP2003015906A (en) * | 2001-06-28 | 2003-01-17 | Mitsubishi Electric Corp | Remote debugging method and device |
US7577554B2 (en) * | 2001-07-03 | 2009-08-18 | I2 Technologies Us, Inc. | Workflow modeling using an acyclic directed graph data structure |
US7210145B2 (en) * | 2001-10-15 | 2007-04-24 | Edss, Inc. | Technology for integrated computation and communication; TICC |
US7426717B1 (en) * | 2001-11-27 | 2008-09-16 | Adobe Systems Incorporated | System and method for debugging files in a runtime environment |
US6825846B2 (en) * | 2001-12-10 | 2004-11-30 | American Megatrends, Inc. | Systems and methods for capturing screen displays from a host computing system for display at a remote terminal |
FI113709B (en) * | 2001-12-10 | 2004-05-31 | Nokia Corp | A method for providing remote device functionality in an embedded environment |
US7921284B1 (en) | 2001-12-12 | 2011-04-05 | Gary Mark Kinghorn | Method and system for protecting electronic data in enterprise environment |
US7921288B1 (en) | 2001-12-12 | 2011-04-05 | Hildebrand Hal S | System and method for providing different levels of key security for controlling access to secured items |
US10033700B2 (en) | 2001-12-12 | 2018-07-24 | Intellectual Ventures I Llc | Dynamic evaluation of access rights |
US7380120B1 (en) | 2001-12-12 | 2008-05-27 | Guardian Data Storage, Llc | Secured data format for access control |
US8065713B1 (en) | 2001-12-12 | 2011-11-22 | Klimenty Vainstein | System and method for providing multi-location access management to secured items |
US7260555B2 (en) | 2001-12-12 | 2007-08-21 | Guardian Data Storage, Llc | Method and architecture for providing pervasive security to digital assets |
US7178033B1 (en) | 2001-12-12 | 2007-02-13 | Pss Systems, Inc. | Method and apparatus for securing digital assets |
US7565683B1 (en) | 2001-12-12 | 2009-07-21 | Weiqing Huang | Method and system for implementing changes to security policies in a distributed security system |
US7921450B1 (en) | 2001-12-12 | 2011-04-05 | Klimenty Vainstein | Security system using indirect key generation from access rules and methods therefor |
US8006280B1 (en) | 2001-12-12 | 2011-08-23 | Hildebrand Hal S | Security system for generating keys from access rules in a decentralized manner and methods therefor |
US10360545B2 (en) | 2001-12-12 | 2019-07-23 | Guardian Data Storage, Llc | Method and apparatus for accessing secured electronic data off-line |
US7930756B1 (en) | 2001-12-12 | 2011-04-19 | Crocker Steven Toye | Multi-level cryptographic transformations for securing digital assets |
US7950066B1 (en) | 2001-12-21 | 2011-05-24 | Guardian Data Storage, Llc | Method and system for restricting use of a clipboard application |
US7281241B2 (en) * | 2002-01-15 | 2007-10-09 | Cadence Design (Israel) Ii Ltd. | System and method for visual debugging of constraint systems |
US8176334B2 (en) | 2002-09-30 | 2012-05-08 | Guardian Data Storage, Llc | Document security system that permits external users to gain access to secured files |
JP2003241807A (en) * | 2002-02-19 | 2003-08-29 | Yaskawa Electric Corp | Robot control unit |
EP1349111A1 (en) * | 2002-03-27 | 2003-10-01 | Hewlett-Packard Company | Improvements in or relating to software |
US7167861B2 (en) * | 2002-06-28 | 2007-01-23 | Nokia Corporation | Mobile application service container |
US7296259B2 (en) * | 2002-09-11 | 2007-11-13 | Agere Systems Inc. | Processor system with cache-based software breakpoints |
US7260624B2 (en) * | 2002-09-20 | 2007-08-21 | American Megatrends, Inc. | Systems and methods for establishing interaction between a local computer and a remote computer |
WO2004038620A1 (en) * | 2002-10-28 | 2004-05-06 | Renesas Technology Corp. | System development method and data processing system |
US7542471B2 (en) * | 2002-10-30 | 2009-06-02 | Citrix Systems, Inc. | Method of determining path maximum transmission unit |
US8270423B2 (en) * | 2003-07-29 | 2012-09-18 | Citrix Systems, Inc. | Systems and methods of using packet boundaries for reduction in timeout prevention |
US7630305B2 (en) * | 2003-07-29 | 2009-12-08 | Orbital Data Corporation | TCP selective acknowledgements for communicating delivered and missed data packets |
US7616638B2 (en) | 2003-07-29 | 2009-11-10 | Orbital Data Corporation | Wavefront detection and disambiguation of acknowledgments |
US8233392B2 (en) * | 2003-07-29 | 2012-07-31 | Citrix Systems, Inc. | Transaction boundary detection for reduction in timeout penalties |
US7131113B2 (en) * | 2002-12-12 | 2006-10-31 | International Business Machines Corporation | System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts |
JP4403794B2 (en) * | 2003-02-28 | 2010-01-27 | 株式会社デンソー | Inspection method, inspection apparatus and inspection program for control program |
US20040177139A1 (en) * | 2003-03-03 | 2004-09-09 | Schuba Christoph L. | Method and apparatus for computing priorities between conflicting rules for network services |
US7418141B2 (en) * | 2003-03-31 | 2008-08-26 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for identifying character coordinates |
US7117483B2 (en) * | 2003-04-15 | 2006-10-03 | Microsoft Corporation | Server debugging framework using scripts |
US7412625B2 (en) * | 2003-05-27 | 2008-08-12 | American Megatrends, Inc. | Method and system for remote software debugging |
US8707034B1 (en) | 2003-05-30 | 2014-04-22 | Intellectual Ventures I Llc | Method and system for using remote headers to secure electronic files |
US7546584B2 (en) | 2003-06-16 | 2009-06-09 | American Megatrends, Inc. | Method and system for remote software testing |
CA2432866A1 (en) * | 2003-06-20 | 2004-12-20 | Ibm Canada Limited - Ibm Canada Limitee | Debugging optimized flows |
US7543277B1 (en) | 2003-06-27 | 2009-06-02 | American Megatrends, Inc. | Method and system for remote software debugging |
US8432800B2 (en) * | 2003-07-29 | 2013-04-30 | Citrix Systems, Inc. | Systems and methods for stochastic-based quality of service |
US8238241B2 (en) | 2003-07-29 | 2012-08-07 | Citrix Systems, Inc. | Automatic detection and window virtualization for flow control |
US7656799B2 (en) * | 2003-07-29 | 2010-02-02 | Citrix Systems, Inc. | Flow control system architecture |
US7698453B2 (en) | 2003-07-29 | 2010-04-13 | Oribital Data Corporation | Early generation of acknowledgements for flow control |
US8437284B2 (en) | 2003-07-29 | 2013-05-07 | Citrix Systems, Inc. | Systems and methods for additional retransmissions of dropped packets |
US7512912B1 (en) * | 2003-08-16 | 2009-03-31 | Synopsys, Inc. | Method and apparatus for solving constraints for word-level networks |
US7480914B2 (en) * | 2003-09-19 | 2009-01-20 | International Business Machines Corporation | Restricting resources consumed by ghost agents |
US7472184B2 (en) * | 2003-09-19 | 2008-12-30 | International Business Machines Corporation | Framework for restricting resources consumed by ghost agents |
US7386837B2 (en) * | 2003-09-19 | 2008-06-10 | International Business Machines Corporation | Using ghost agents in an environment supported by customer service providers |
US7246056B1 (en) * | 2003-09-26 | 2007-07-17 | The Mathworks, Inc. | Runtime parameter mapping for system simulation |
US7703140B2 (en) | 2003-09-30 | 2010-04-20 | Guardian Data Storage, Llc | Method and system for securing digital assets using process-driven security policies |
US8127366B2 (en) | 2003-09-30 | 2012-02-28 | Guardian Data Storage, Llc | Method and apparatus for transitioning between states of security policies used to secure electronic documents |
US7421705B2 (en) * | 2003-10-30 | 2008-09-02 | Sprint Communications Company L.P. | System and method for asynchronous processing in COBOL |
US8090564B1 (en) | 2003-11-03 | 2012-01-03 | Synopsys, Inc. | Automatic generation of transaction level bus simulation instructions from bus protocol |
US7921412B1 (en) * | 2003-11-26 | 2011-04-05 | Sprint Communications Company L.P. | Application monitor system and method |
US7702909B2 (en) * | 2003-12-22 | 2010-04-20 | Klimenty Vainstein | Method and system for validating timestamps |
US7346486B2 (en) * | 2004-01-22 | 2008-03-18 | Nec Laboratories America, Inc. | System and method for modeling, abstraction, and analysis of software |
US20050240555A1 (en) * | 2004-02-12 | 2005-10-27 | Lockheed Martin Corporation | Interactive electronic technical manual system integrated with the system under test |
US20050223288A1 (en) * | 2004-02-12 | 2005-10-06 | Lockheed Martin Corporation | Diagnostic fault detection and isolation |
US7801702B2 (en) * | 2004-02-12 | 2010-09-21 | Lockheed Martin Corporation | Enhanced diagnostic fault detection and isolation |
US7584420B2 (en) * | 2004-02-12 | 2009-09-01 | Lockheed Martin Corporation | Graphical authoring and editing of mark-up language sequences |
US7827258B1 (en) | 2004-03-01 | 2010-11-02 | American Megatrends, Inc. | Method, system, and apparatus for communicating with a computer management device |
US7594227B2 (en) * | 2004-03-08 | 2009-09-22 | Ab Initio Technology Llc | Dependency graph parameter scoping |
US7657873B2 (en) * | 2004-04-29 | 2010-02-02 | Microsoft Corporation | Visualizer system and methods for debug environment |
US7509618B1 (en) * | 2004-05-12 | 2009-03-24 | Altera Corporation | Method and apparatus for facilitating an adaptive electronic design automation tool |
US7516052B2 (en) * | 2004-05-27 | 2009-04-07 | Robert Allen Hatcherson | Container-based architecture for simulation of entities in a time domain |
US7363203B2 (en) * | 2004-06-28 | 2008-04-22 | Graniteedge Networks | Determining event causality including employment of partitioned event space |
US20050288915A1 (en) * | 2004-06-28 | 2005-12-29 | Graniteedge Networks | Determining event causality including employment of causal chains |
US8271955B1 (en) * | 2004-07-23 | 2012-09-18 | Green Hille Software, Inc. | Forward post-execution software debugger |
KR20070059072A (en) * | 2004-07-28 | 2007-06-11 | 에스디 파마슈티칼스 인코포레이티드 | Stable injectable composition of alpha tocopheryl succinate, analogues and salts thereof |
US7970639B2 (en) * | 2004-08-20 | 2011-06-28 | Mark A Vucina | Project management systems and methods |
US7519749B1 (en) | 2004-08-25 | 2009-04-14 | American Megatrends, Inc. | Redirecting input and output for multiple computers |
US7487501B2 (en) * | 2004-08-30 | 2009-02-03 | International Business Machines Corporation | Distributed counter and centralized sensor in barrier wait synchronization |
US20060120181A1 (en) * | 2004-10-05 | 2006-06-08 | Lockheed Martin Corp. | Fault detection and isolation with analysis of built-in-test results |
US20060085692A1 (en) * | 2004-10-06 | 2006-04-20 | Lockheed Martin Corp. | Bus fault detection and isolation |
US8555286B2 (en) * | 2004-10-27 | 2013-10-08 | International Business Machines Corporation | Method, system, and apparatus for establishing a software configurable computing environment |
US7516109B2 (en) | 2004-11-02 | 2009-04-07 | Furtek Frederick C | Automatically deriving logical, arithmetic and timing dependencies |
KR100582389B1 (en) * | 2004-11-08 | 2006-05-23 | 주식회사 팬택앤큐리텔 | Wireless Communication Terminal suspending the interrupt at paying using RF mode and its method |
US8181182B1 (en) * | 2004-11-16 | 2012-05-15 | Oracle America, Inc. | Resource allocation brokering in nested containers |
US20080052281A1 (en) * | 2006-08-23 | 2008-02-28 | Lockheed Martin Corporation | Database insertion and retrieval system and method |
US8271448B2 (en) * | 2005-01-28 | 2012-09-18 | Oracle International Corporation | Method for strategizing protocol presumptions in two phase commit coordinator |
US7716031B2 (en) * | 2005-02-25 | 2010-05-11 | Coware, Inc. | Interface converter for unified view of multiple computer system simulations |
US7742905B2 (en) * | 2005-02-25 | 2010-06-22 | Coware, Inc. | Method and system for dynamically adjusting speed versus accuracy of computer platform simulation |
WO2006099446A2 (en) * | 2005-03-11 | 2006-09-21 | Argade Pramod V | Environment for controlling the execution of computer programs |
US7900193B1 (en) * | 2005-05-25 | 2011-03-01 | Parasoft Corporation | System and method for detecting defects in a computer program using data and control flow analysis |
US20070162158A1 (en) * | 2005-06-09 | 2007-07-12 | Whirlpool Corporation | Software architecture system and method for operating an appliance utilizing configurable notification messages |
US20080137670A1 (en) * | 2005-06-09 | 2008-06-12 | Whirlpool Corporation | Network System with Message Binding for Appliances |
US7917914B2 (en) * | 2005-06-09 | 2011-03-29 | Whirlpool Corporation | Event notification system for an appliance |
CN101305350A (en) | 2005-06-09 | 2008-11-12 | 惠而浦公司 | Software architecture system and method for communication with, and management of, at least one component within a household appliance |
US7921429B2 (en) * | 2005-06-09 | 2011-04-05 | Whirlpool Corporation | Data acquisition method with event notification for an appliance |
US7454738B2 (en) * | 2005-06-10 | 2008-11-18 | Purdue Research Foundation | Synthesis approach for active leakage power reduction using dynamic supply gating |
US7427025B2 (en) * | 2005-07-08 | 2008-09-23 | Lockheed Marlin Corp. | Automated postal voting system and method |
US7487241B2 (en) | 2005-08-05 | 2009-02-03 | Vantos, Inc. | Performing efficient insertions in wavefront table based causal graphs |
US20070032986A1 (en) * | 2005-08-05 | 2007-02-08 | Graniteedge Networks | Efficient filtered causal graph edge detection in a causal wavefront environment |
US7693690B2 (en) * | 2005-08-09 | 2010-04-06 | Nec Laboratories America, Inc. | Disjunctive image computation for sequential systems |
US7698691B2 (en) * | 2005-09-20 | 2010-04-13 | Microsoft Corporation | Server application state |
CN101495990B (en) * | 2005-12-02 | 2011-09-14 | 思杰系统有限公司 | Systems and methods for providing authentication credentials across proxy server to virtual computing environments to access remote resource |
US8402443B2 (en) * | 2005-12-12 | 2013-03-19 | dyna Trace software GmbH | Method and system for automated analysis of the performance of remote method invocations in multi-tier applications using bytecode instrumentation |
US20070168975A1 (en) * | 2005-12-13 | 2007-07-19 | Thomas Kessler | Debugger and test tool |
US8010843B2 (en) | 2005-12-14 | 2011-08-30 | American Megatrends, Inc. | System and method for debugging a target computer using SMBus |
US7924884B2 (en) | 2005-12-20 | 2011-04-12 | Citrix Systems, Inc. | Performance logging using relative differentials and skip recording |
US8448137B2 (en) * | 2005-12-30 | 2013-05-21 | Sap Ag | Software model integration scenarios |
US7899661B2 (en) | 2006-02-16 | 2011-03-01 | Synopsys, Inc. | Run-time switching for simulation with dynamic run-time accuracy adjustment |
US8543367B1 (en) | 2006-02-16 | 2013-09-24 | Synopsys, Inc. | Simulation with dynamic run-time accuracy adjustment |
US7849446B2 (en) * | 2006-06-09 | 2010-12-07 | Oracle America, Inc. | Replay debugging |
US7801712B2 (en) * | 2006-06-15 | 2010-09-21 | Microsoft Corporation | Declaration and consumption of a causality model for probable cause analysis |
US7664997B2 (en) * | 2006-06-19 | 2010-02-16 | Microsoft Corporation | Failure handling and debugging with causalities |
US7653881B2 (en) | 2006-06-19 | 2010-01-26 | Microsoft Corporation | Failure handling and debugging with causalities |
US8522261B2 (en) * | 2006-06-30 | 2013-08-27 | Sap Ag | Using status models with state guards in a computer system |
US8706776B1 (en) | 2006-06-30 | 2014-04-22 | Sap Ag | Extending status models in a computer system |
US8200715B1 (en) | 2006-06-30 | 2012-06-12 | Sap Ag | Using status models with adaptable process steps in a computer system |
US8365200B1 (en) | 2006-06-30 | 2013-01-29 | Sap Ag | Using cancellation status models in a computer system |
US8533687B1 (en) | 2009-11-30 | 2013-09-10 | dynaTrade Software GmbH | Methods and system for global real-time transaction tracing |
US8464225B2 (en) * | 2007-05-06 | 2013-06-11 | Dynatrace Software Gmbh | Method and system for adaptive, generic code instrumentation using run-time or load-time generated inheritance information for diagnosis and monitoring application performance and failure |
US9231858B1 (en) | 2006-08-11 | 2016-01-05 | Dynatrace Software Gmbh | Completeness detection of monitored globally distributed synchronous and asynchronous transactions |
US8694684B2 (en) | 2006-08-21 | 2014-04-08 | Citrix Systems, Inc. | Systems and methods of symmetric transport control protocol compression |
US8949790B2 (en) * | 2006-08-30 | 2015-02-03 | International Business Machines Corporation | Debugging visual and embedded programs |
US7783799B1 (en) * | 2006-08-31 | 2010-08-24 | American Megatrends, Inc. | Remotely controllable switch and testing methods using same |
EP2074507A4 (en) * | 2006-09-20 | 2011-01-26 | Nat Ict Australia Ltd | Generating a transition system for use with model checking |
US8429613B2 (en) * | 2006-10-31 | 2013-04-23 | Microsoft Corporation | Stepping and application state viewing between points |
US8296737B2 (en) * | 2006-11-03 | 2012-10-23 | International Business Machines Corporation | Computer program for tracing impact of errors in software applications |
US8495592B2 (en) * | 2006-11-28 | 2013-07-23 | International Business Machines Corporation | Presenting completion progress status of an installer via join points |
US7865872B2 (en) | 2006-12-01 | 2011-01-04 | Murex S.A.S. | Producer graph oriented programming framework with undo, redo, and abort execution support |
US8332827B2 (en) | 2006-12-01 | 2012-12-11 | Murex S.A.S. | Produce graph oriented programming framework with scenario support |
US8307337B2 (en) | 2006-12-01 | 2012-11-06 | Murex S.A.S. | Parallelization and instrumentation in a producer graph oriented programming framework |
US8191052B2 (en) | 2006-12-01 | 2012-05-29 | Murex S.A.S. | Producer graph oriented programming and execution |
US8219650B2 (en) * | 2006-12-28 | 2012-07-10 | Sap Ag | Communicating with a status management component in a computer system |
US8135572B2 (en) * | 2007-01-23 | 2012-03-13 | Microsoft Corporation | Integrated debugger simulator |
US8065688B2 (en) * | 2007-01-23 | 2011-11-22 | Microsoft Corporation | Transparently capturing the causal relationships between requests across distributed applications |
US20080209405A1 (en) * | 2007-02-28 | 2008-08-28 | Microsoft Corporation | Distributed debugging for a visual programming language |
US7707459B2 (en) | 2007-03-08 | 2010-04-27 | Whirlpool Corporation | Embedded systems debugging |
US8244772B2 (en) * | 2007-03-29 | 2012-08-14 | Franz, Inc. | Method for creating a scalable graph database using coordinate data elements |
US7890518B2 (en) * | 2007-03-29 | 2011-02-15 | Franz Inc. | Method for creating a scalable graph database |
US7917900B2 (en) * | 2007-03-30 | 2011-03-29 | Microsoft Corporation | Enabling analysis of software source code |
US9047412B2 (en) | 2007-05-06 | 2015-06-02 | Dynatrace Corporation | System and method for extracting instrumentation relevant inheritance relationships for a distributed, inheritance rule based instrumentation system |
US7788542B2 (en) * | 2007-05-31 | 2010-08-31 | Red Hat, Inc. | Debugging in a distributed system |
US7937497B2 (en) * | 2007-05-31 | 2011-05-03 | Red Hat, Inc. | Apparatus for selectively copying at least portions of messages in a distributed computing system |
US8752065B2 (en) * | 2007-05-31 | 2014-06-10 | Red Hat, Inc. | Rules engine for a persistent message store |
US7721158B2 (en) * | 2007-06-04 | 2010-05-18 | Microsoft Corporation | Customization conflict detection and resolution |
US8276124B2 (en) * | 2007-06-20 | 2012-09-25 | Microsoft Corporation | Constructing petri nets from traces for diagnostics |
US7925487B2 (en) * | 2007-06-29 | 2011-04-12 | Microsoft Corporation | Replaying distributed systems |
US8533678B2 (en) * | 2007-07-13 | 2013-09-10 | Digi International Inc. | Embedded device program debug control |
US20090064092A1 (en) * | 2007-08-29 | 2009-03-05 | Microsoft Corporation | Visual programming language optimization |
KR101473337B1 (en) * | 2007-10-01 | 2014-12-16 | 삼성전자 주식회사 | Method and Appartus for providing interface compatibility based on a component model |
US8826242B2 (en) * | 2007-11-27 | 2014-09-02 | Microsoft Corporation | Data driven profiling for distributed applications |
FR2927438B1 (en) * | 2008-02-08 | 2010-03-05 | Commissariat Energie Atomique | METHOD FOR PRECHARGING IN A MEMORY HIERARCHY CONFIGURATIONS OF A RECONFIGURABLE HETEROGENETIC INFORMATION PROCESSING SYSTEM |
US7933759B2 (en) | 2008-03-28 | 2011-04-26 | Microsoft Corporation | Predicate checking for distributed systems |
US8504980B1 (en) | 2008-04-14 | 2013-08-06 | Sap Ag | Constraining data changes during transaction processing by a computer system |
CA2720897C (en) | 2008-04-28 | 2015-06-30 | Salesforce.Com, Inc. | Object-oriented system for creating and managing websites and their content |
US8473085B2 (en) * | 2008-04-30 | 2013-06-25 | Perkinelmer Las, Inc. | Mutex-mediated control of spatial access by appliances moveable over a common physical space |
US20090319993A1 (en) * | 2008-06-24 | 2009-12-24 | Microsoft Corporation, | Generalized and extensible software architecture representation |
US7747742B2 (en) | 2008-06-27 | 2010-06-29 | Microsoft Corporation | Online predicate checking for distributed systems |
JP5195149B2 (en) * | 2008-08-11 | 2013-05-08 | 富士通株式会社 | Authenticity judgment method |
US8307345B2 (en) * | 2008-11-04 | 2012-11-06 | Ca, Inc. | Intelligent engine for dynamic and rule based instrumentation of software |
US9703678B2 (en) * | 2008-12-23 | 2017-07-11 | Microsoft Technology Licensing, Llc | Debugging pipeline for debugging code |
US20100235809A1 (en) * | 2009-03-12 | 2010-09-16 | Honeywell International Inc. | System and method for managing a model-based design lifecycle |
US8392876B2 (en) * | 2009-05-18 | 2013-03-05 | National Instruments Corporation | Cooperative execution of graphical data flow programs in multiple browsers |
KR101060181B1 (en) * | 2009-08-03 | 2011-08-29 | 강원대학교산학협력단 | Web-based software debugging device and its method for remote debugging |
US8572575B2 (en) * | 2009-09-14 | 2013-10-29 | Myspace Llc | Debugging a map reduce application on a cluster |
US20110131450A1 (en) * | 2009-11-30 | 2011-06-02 | Microsoft Corporation | Using synchronized event types for testing an application |
US8863088B2 (en) * | 2010-02-08 | 2014-10-14 | Red Hat, Inc. | Simulating a line of source code in a debugging tool |
US20110228696A1 (en) * | 2010-03-19 | 2011-09-22 | Navneet Agarwal | Dynamic directed acyclic graph (dag) topology reporting |
US9111031B2 (en) * | 2010-04-16 | 2015-08-18 | Salesforce.Com, Inc. | Method and system for simulating and analyzing code execution in an on-demand service environment |
US20130030568A1 (en) * | 2010-04-23 | 2013-01-31 | Samsung Heavy Ind. Co., Ltd. | Robot system control method and a device therefor |
US8443342B2 (en) | 2010-06-01 | 2013-05-14 | Microsoft Corporation | Static analysis using interactive and integration tools |
US9223892B2 (en) | 2010-09-30 | 2015-12-29 | Salesforce.Com, Inc. | Device abstraction for page generation |
KR101649925B1 (en) * | 2010-10-13 | 2016-08-31 | 삼성전자주식회사 | Analysis for Single Thread Access of variable in Multi-threaded program |
US8935360B2 (en) | 2010-12-03 | 2015-01-13 | Salesforce.Com, Inc. | Techniques for metadata-driven dynamic content serving |
US20120253857A1 (en) * | 2011-03-28 | 2012-10-04 | Infosys Technologies Limited | Structured methods for business process unification |
US9274919B2 (en) | 2011-04-29 | 2016-03-01 | Dynatrace Software Gmbh | Transaction tracing mechanism of distributed heterogenous transactions having instrumented byte code with constant memory consumption and independent of instrumented method call depth |
US8296708B1 (en) * | 2011-05-24 | 2012-10-23 | Springsoft Inc. | Method of constraint-hierarchy-driven IC placement |
US9805094B2 (en) * | 2011-11-04 | 2017-10-31 | Ipc Systems, Inc. | User interface displaying filtered information |
EP2610746A1 (en) * | 2011-12-30 | 2013-07-03 | bioMérieux | Job scheduler for electromechanical system for biological analysis |
US9251039B2 (en) * | 2012-02-17 | 2016-02-02 | Microsoft Technology Licensing, Llc | Remote debugging as a service |
US8996472B2 (en) | 2012-04-16 | 2015-03-31 | Sap Se | Verification of status schemas based on business goal definitions |
US8924939B2 (en) | 2012-05-09 | 2014-12-30 | International Business Machines Corporation | Streams debugging within a windowing condition |
US8898643B2 (en) * | 2012-06-19 | 2014-11-25 | Sap Se | Application trace replay and simulation systems and methods |
US9710357B2 (en) * | 2012-08-04 | 2017-07-18 | Microsoft Technology Licensing, Llc | Function evaluation using lightweight process snapshots |
US8996473B2 (en) | 2012-08-06 | 2015-03-31 | Sap Se | Checking compatibility of extended and core SAM schemas based on complex goals |
US9448820B1 (en) | 2013-01-03 | 2016-09-20 | Amazon Technologies, Inc. | Constraint verification for distributed applications |
US9146829B1 (en) * | 2013-01-03 | 2015-09-29 | Amazon Technologies, Inc. | Analysis and verification of distributed applications |
US9804945B1 (en) | 2013-01-03 | 2017-10-31 | Amazon Technologies, Inc. | Determinism for distributed applications |
US10223450B1 (en) * | 2013-03-14 | 2019-03-05 | Google Llc | Data delivery |
CN105103120A (en) * | 2013-04-30 | 2015-11-25 | 惠普发展公司,有限责任合伙企业 | Dependencies between feature flags |
US10417594B2 (en) | 2013-05-02 | 2019-09-17 | Sap Se | Validation of functional correctness of SAM schemas including action chains |
US10169171B2 (en) | 2013-05-13 | 2019-01-01 | Nxp Usa, Inc. | Method and apparatus for enabling temporal alignment of debug information |
US10339229B1 (en) | 2013-05-31 | 2019-07-02 | Cadence Design Systems, Inc. | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system |
US9361202B2 (en) | 2013-07-18 | 2016-06-07 | International Business Machines Corporation | Filtering system noises in parallel computer systems during thread synchronization |
US8880999B1 (en) | 2013-09-20 | 2014-11-04 | Axure Software Solutions, Inc. | Language notification generator |
FR3011955B1 (en) * | 2013-10-10 | 2015-10-30 | Bull Sas | METHOD FOR DEPLOYING AN APPLICATION, CORRESPONDING COMPUTER PROGRAM, SYSTEM FOR DEPLOYING AN APPLICATION, AND INSTALLATION COMPRISING THE DEPLOYMENT SYSTEM |
US9098377B1 (en) | 2014-05-30 | 2015-08-04 | Semmle Limited | Aggregating source code metric values |
US10505826B2 (en) * | 2014-09-26 | 2019-12-10 | Oracle International Corporation | Statistical pattern correlation of events in cloud deployments using codebook approach |
EP3021217A1 (en) * | 2014-11-14 | 2016-05-18 | Semmle Limited | Distributed analysis and attribution of source code |
US9785777B2 (en) * | 2014-12-19 | 2017-10-10 | International Business Machines Corporation | Static analysis based on abstract program representations |
US11487561B1 (en) | 2014-12-24 | 2022-11-01 | Cadence Design Systems, Inc. | Post simulation debug and analysis using a system memory model |
US10460047B1 (en) * | 2015-02-27 | 2019-10-29 | The Mathworks, Inc. | Tentative model components |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US9727394B2 (en) | 2015-04-27 | 2017-08-08 | Microsoft Technology Licensing, Llc | Establishing causality order of computer trace records |
US10755590B2 (en) * | 2015-06-18 | 2020-08-25 | The Joan and Irwin Jacobs Technion-Cornell Institute | Method and system for automatically providing graphical user interfaces for computational algorithms described in printed publications |
US9965256B2 (en) * | 2015-06-18 | 2018-05-08 | The Joan and Irwin Jacobs Technion-Cornell Institute | Method and system for evaluating computational algorithms described in printed publications |
US10802852B1 (en) * | 2015-07-07 | 2020-10-13 | Cadence Design Systems, Inc. | Method for interactive embedded software debugging through the control of simulation tracing components |
US9720652B2 (en) | 2015-08-06 | 2017-08-01 | Symphore, LLC | Generating a software complex using superordinate design input |
US9411556B1 (en) * | 2015-09-30 | 2016-08-09 | Semmle Limited | Template dependency inlining |
US9672135B2 (en) * | 2015-11-03 | 2017-06-06 | Red Hat, Inc. | System, method and apparatus for debugging of reactive applications |
KR102132105B1 (en) * | 2016-01-04 | 2020-07-09 | 저장 리뱌오 로보츠 컴퍼니 리미티드 | Method and system for synchronization between robot and server |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US9779012B1 (en) * | 2016-02-26 | 2017-10-03 | Mbit Wireless, Inc. | Dynamic and global in-system debugger |
US10268568B2 (en) * | 2016-03-29 | 2019-04-23 | Infosys Limited | System and method for data element tracing |
US11663110B2 (en) * | 2016-10-31 | 2023-05-30 | International Business Machines Corporation | Analysis to check web API code usage and specification |
US11086755B2 (en) * | 2017-06-26 | 2021-08-10 | Jpmorgan Chase Bank, N.A. | System and method for implementing an application monitoring tool |
US10416974B2 (en) | 2017-10-06 | 2019-09-17 | Chicago Mercantile Exchange Inc. | Dynamic tracer message logging based on bottleneck detection |
US11099834B2 (en) | 2017-11-16 | 2021-08-24 | Hewlett-Packard Development Company, L.P. | Software builds using a cloud system |
US10649884B2 (en) | 2018-02-08 | 2020-05-12 | The Mitre Corporation | Methods and system for constrained replay debugging with message communications |
US10564940B2 (en) * | 2018-05-03 | 2020-02-18 | International Business Machines Corporation | Systems and methods for programming drones |
US10430321B1 (en) * | 2018-08-21 | 2019-10-01 | International Business Machines Corporation | White box code concurrency testing for transaction processing |
CN109508260B (en) * | 2018-10-31 | 2021-11-12 | 西北工业大学 | Reliability modeling and analyzing method for self-repairing processor to lockstep system |
US11556374B2 (en) | 2019-02-15 | 2023-01-17 | International Business Machines Corporation | Compiler-optimized context switching with compiler-inserted data table for in-use register identification at a preferred preemption point |
US11514019B1 (en) | 2019-12-30 | 2022-11-29 | Cigna Intellectual Property, Inc. | Systems and methods for maintaining and updating an event logging database |
US11204767B2 (en) | 2020-01-06 | 2021-12-21 | International Business Machines Corporation | Context switching locations for compiler-assisted context switching |
US11762858B2 (en) | 2020-03-19 | 2023-09-19 | The Mitre Corporation | Systems and methods for analyzing distributed system data streams using declarative specification, detection, and evaluation of happened-before relationships |
US11681603B2 (en) | 2021-03-31 | 2023-06-20 | International Business Machines Corporation | Computer generation of illustrative resolutions for reported operational issues |
US20220334836A1 (en) * | 2021-04-15 | 2022-10-20 | Dell Products L.P. | Sharing of computing resources between computing processes of an information handling system |
LU500132B1 (en) * | 2021-05-06 | 2022-11-08 | Microsoft Technology Licensing Llc | Automated root cause identification using data flow analysis of plural execution traces |
US12124822B2 (en) * | 2022-08-25 | 2024-10-22 | International Business Machines Corporation | Mining code expressions for data analysis |
US20240152429A1 (en) * | 2022-11-04 | 2024-05-09 | Microsoft Technology Licensing, Llc | Recoverable Processes |
US11843663B1 (en) * | 2023-01-03 | 2023-12-12 | Huawei Cloud Computing Technologies Co., Ltd. | Vector-scalar logical clock and associated method, apparatus and system |
Citations (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965743A (en) * | 1988-07-14 | 1990-10-23 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Discrete event simulation tool for analysis of qualitative models of continuous processing system |
US5095421A (en) * | 1989-08-17 | 1992-03-10 | International Business Machines Corporation | Transaction processing facility within an operating system environment |
US5428782A (en) * | 1989-09-28 | 1995-06-27 | Texas Instruments Incorporated | Portable and dynamic distributed applications architecture |
US5485617A (en) * | 1993-12-13 | 1996-01-16 | Microsoft Corporation | Method and system for dynamically generating object connections |
US5551035A (en) * | 1989-06-30 | 1996-08-27 | Lucent Technologies Inc. | Method and apparatus for inter-object communication in an object-oriented program controlled system |
US5581691A (en) * | 1992-02-04 | 1996-12-03 | Digital Equipment Corporation | Work flow management system and method |
US5596750A (en) * | 1992-06-09 | 1997-01-21 | Bull S.A. | System for transactional processing between an information processing server and a plurality of workstations |
US5642478A (en) * | 1994-12-29 | 1997-06-24 | International Business Machines Corporation | Distributed trace data acquisition system |
US5694539A (en) * | 1994-08-10 | 1997-12-02 | Intrinsa Corporation | Computer process resource modelling method and apparatus |
US5724508A (en) * | 1995-03-09 | 1998-03-03 | Insoft, Inc. | Apparatus for collaborative computing |
US5737607A (en) * | 1995-09-28 | 1998-04-07 | Sun Microsystems, Inc. | Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats |
US5790778A (en) * | 1996-08-07 | 1998-08-04 | Intrinsa Corporation | Simulated program execution error detection method and apparatus |
US5794046A (en) * | 1994-09-29 | 1998-08-11 | International Business Machines Corporation | Method and system for debugging parallel and distributed applications |
US5819270A (en) * | 1993-02-25 | 1998-10-06 | Massachusetts Institute Of Technology | Computer system for displaying representations of processes |
US5870588A (en) * | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US5920717A (en) * | 1995-12-20 | 1999-07-06 | Nec Corporation | Method and apparatus for automated program-generation |
US5941945A (en) * | 1997-06-18 | 1999-08-24 | International Business Machines Corporation | Interest-based collaborative framework |
US5949998A (en) * | 1996-07-03 | 1999-09-07 | Sun Microsystems, Inc. | Filtering an object interface definition to determine services needed and provided |
US5980096A (en) * | 1995-01-17 | 1999-11-09 | Intertech Ventures, Ltd. | Computer-based system, methods and graphical interface for information storage, modeling and stimulation of complex systems |
US5999728A (en) * | 1996-07-30 | 1999-12-07 | Sun Microsystems, Inc. | Method and apparatus for enhancing the portability of an object oriented interface among multiple platforms |
US6003037A (en) * | 1995-11-14 | 1999-12-14 | Progress Software Corporation | Smart objects for development of object oriented software |
US6038381A (en) * | 1997-11-25 | 2000-03-14 | Synopsys, Inc. | Method and system for determining a signal that controls the application of operands to a circuit-implemented function for power savings |
US6044211A (en) * | 1994-03-14 | 2000-03-28 | C.A.E. Plus, Inc. | Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description |
US6052527A (en) * | 1997-02-21 | 2000-04-18 | Alcatel | Method of generating platform-independent software application programs |
US6083281A (en) * | 1997-11-14 | 2000-07-04 | Nortel Networks Corporation | Process and apparatus for tracing software entities in a distributed system |
US6125392A (en) * | 1996-10-11 | 2000-09-26 | Intel Corporation | Method and apparatus for high speed event log data compression within a non-volatile storage area |
US6134676A (en) * | 1998-04-30 | 2000-10-17 | International Business Machines Corporation | Programmable hardware event monitoring method |
US6192419B1 (en) * | 1997-06-18 | 2001-02-20 | International Business Machines Corporation | Collaborative framework for disparate application programs |
US6317773B1 (en) * | 1994-10-11 | 2001-11-13 | International Business Machines Corporation | System and method for creating an object oriented transaction service that interoperates with procedural transaction coordinators |
US6340977B1 (en) * | 1999-05-07 | 2002-01-22 | Philip Lui | System and method for dynamic assistance in software applications using behavior and host application models |
US6347374B1 (en) * | 1998-06-05 | 2002-02-12 | Intrusion.Com, Inc. | Event detection |
US20020078431A1 (en) * | 2000-02-03 | 2002-06-20 | Reps Thomas W. | Method for representing information in a highly compressed fashion |
US6470388B1 (en) * | 1999-06-10 | 2002-10-22 | Cisco Technology, Inc. | Coordinated extendable system for logging information from distributed applications |
US6539501B1 (en) * | 1999-12-16 | 2003-03-25 | International Business Machines Corporation | Method, system, and program for logging statements to monitor execution of a program |
US6567818B1 (en) * | 1999-06-14 | 2003-05-20 | International Business Machines Corporation | Employing management policies to manage instances of objects |
US6665819B1 (en) * | 2000-04-24 | 2003-12-16 | Microsoft Corporation | Data capture and analysis for embedded systems |
US6701328B1 (en) * | 2000-01-06 | 2004-03-02 | Media Fusion Co., Ltd. | Database management system |
US6718294B1 (en) * | 2000-05-16 | 2004-04-06 | Mindspeed Technologies, Inc. | System and method for synchronized control of system simulators with multiple processor cores |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5168554A (en) * | 1989-10-13 | 1992-12-01 | International Business Machines Corporation | Converting trace data from processors executing in parallel into graphical form |
EP0444315B1 (en) * | 1990-02-26 | 1997-10-01 | Digital Equipment Corporation | System and method for software application event collection |
US5544067A (en) * | 1990-04-06 | 1996-08-06 | Lsi Logic Corporation | Method and system for creating, deriving and validating structural description of electronic system from higher level, behavior-oriented description, including interactive schematic design and simulation |
US6298476B1 (en) * | 1995-12-04 | 2001-10-02 | International Business Machines Corporation | Object oriented software build framework mechanism |
US5933639A (en) * | 1996-05-17 | 1999-08-03 | International Business Machines Corporation | System and method for debugging distributed programs |
JP3175757B2 (en) * | 1996-08-13 | 2001-06-11 | 日本電気株式会社 | Debug system |
IT1292052B1 (en) | 1997-05-30 | 1999-01-25 | Sace Spa | PROCEDURE FOR PARTITIONING CONTROL FUNCTIONS IN DISTRIBUTED SYSTEMS |
AU753202B2 (en) * | 1997-07-25 | 2002-10-10 | British Telecommunications Public Limited Company | Software system generation |
US6701382B1 (en) * | 1998-12-23 | 2004-03-02 | Nortel Networks Limited | Name service for transparent container objects |
US6523020B1 (en) * | 2000-03-22 | 2003-02-18 | International Business Machines Corporation | Lightweight rule induction |
-
2001
- 2001-06-12 US US09/881,391 patent/US20030005407A1/en not_active Abandoned
- 2001-06-19 US US09/885,456 patent/US20020174415A1/en not_active Abandoned
- 2001-06-20 WO PCT/US2001/019735 patent/WO2002001349A2/en not_active Application Discontinuation
- 2001-06-20 US US09/886,479 patent/US7003777B2/en not_active Expired - Fee Related
- 2001-06-20 AU AU2001271354A patent/AU2001271354A1/en not_active Abandoned
- 2001-06-20 EP EP01950355A patent/EP1297428A2/en not_active Withdrawn
- 2001-06-20 US US09/886,459 patent/US20020087953A1/en not_active Abandoned
- 2001-06-21 AU AU2001272985A patent/AU2001272985A1/en not_active Abandoned
- 2001-06-21 WO PCT/US2001/020071 patent/WO2002001390A2/en active Application Filing
- 2001-06-21 US US09/888,061 patent/US20030028858A1/en not_active Abandoned
- 2001-06-22 WO PCT/US2001/019972 patent/WO2002001362A2/en active Search and Examination
- 2001-06-22 AT AT01948638T patent/ATE305153T1/en not_active IP Right Cessation
- 2001-06-22 EP EP01948638A patent/EP1297424B1/en not_active Expired - Lifetime
- 2001-06-22 AU AU2001270079A patent/AU2001270079A1/en not_active Abandoned
- 2001-06-22 AU AU2001270094A patent/AU2001270094A1/en not_active Abandoned
- 2001-06-22 EP EP01948620A patent/EP1323042A2/en not_active Withdrawn
- 2001-06-22 WO PCT/US2001/020031 patent/WO2002001359A2/en active IP Right Grant
- 2001-06-22 US US09/888,082 patent/US20020062463A1/en not_active Abandoned
- 2001-06-22 DE DE60113538T patent/DE60113538T2/en not_active Expired - Lifetime
Patent Citations (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965743A (en) * | 1988-07-14 | 1990-10-23 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Discrete event simulation tool for analysis of qualitative models of continuous processing system |
US5551035A (en) * | 1989-06-30 | 1996-08-27 | Lucent Technologies Inc. | Method and apparatus for inter-object communication in an object-oriented program controlled system |
US5095421A (en) * | 1989-08-17 | 1992-03-10 | International Business Machines Corporation | Transaction processing facility within an operating system environment |
US5428782A (en) * | 1989-09-28 | 1995-06-27 | Texas Instruments Incorporated | Portable and dynamic distributed applications architecture |
US5581691A (en) * | 1992-02-04 | 1996-12-03 | Digital Equipment Corporation | Work flow management system and method |
US5596750A (en) * | 1992-06-09 | 1997-01-21 | Bull S.A. | System for transactional processing between an information processing server and a plurality of workstations |
US5819270A (en) * | 1993-02-25 | 1998-10-06 | Massachusetts Institute Of Technology | Computer system for displaying representations of processes |
US5485617A (en) * | 1993-12-13 | 1996-01-16 | Microsoft Corporation | Method and system for dynamically generating object connections |
US6044211A (en) * | 1994-03-14 | 2000-03-28 | C.A.E. Plus, Inc. | Method for graphically representing a digital device as a behavioral description with data and control flow elements, and for converting the behavioral description to a structural description |
US5694539A (en) * | 1994-08-10 | 1997-12-02 | Intrinsa Corporation | Computer process resource modelling method and apparatus |
US6154876A (en) * | 1994-08-10 | 2000-11-28 | Intrinsa Corporation | Analysis of the effect of program execution of calling components with data variable checkpointing and resource allocation analysis |
US5794046A (en) * | 1994-09-29 | 1998-08-11 | International Business Machines Corporation | Method and system for debugging parallel and distributed applications |
US6317773B1 (en) * | 1994-10-11 | 2001-11-13 | International Business Machines Corporation | System and method for creating an object oriented transaction service that interoperates with procedural transaction coordinators |
US5642478A (en) * | 1994-12-29 | 1997-06-24 | International Business Machines Corporation | Distributed trace data acquisition system |
US5980096A (en) * | 1995-01-17 | 1999-11-09 | Intertech Ventures, Ltd. | Computer-based system, methods and graphical interface for information storage, modeling and stimulation of complex systems |
US5724508A (en) * | 1995-03-09 | 1998-03-03 | Insoft, Inc. | Apparatus for collaborative computing |
US5737607A (en) * | 1995-09-28 | 1998-04-07 | Sun Microsystems, Inc. | Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats |
US5870588A (en) * | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US6003037A (en) * | 1995-11-14 | 1999-12-14 | Progress Software Corporation | Smart objects for development of object oriented software |
US5920717A (en) * | 1995-12-20 | 1999-07-06 | Nec Corporation | Method and apparatus for automated program-generation |
US6083277A (en) * | 1996-07-03 | 2000-07-04 | Sun Microsystems, Inc. | Filtering an object interface definition to determine services needed and provided |
US5949998A (en) * | 1996-07-03 | 1999-09-07 | Sun Microsystems, Inc. | Filtering an object interface definition to determine services needed and provided |
US5999728A (en) * | 1996-07-30 | 1999-12-07 | Sun Microsystems, Inc. | Method and apparatus for enhancing the portability of an object oriented interface among multiple platforms |
US5790778A (en) * | 1996-08-07 | 1998-08-04 | Intrinsa Corporation | Simulated program execution error detection method and apparatus |
US6125392A (en) * | 1996-10-11 | 2000-09-26 | Intel Corporation | Method and apparatus for high speed event log data compression within a non-volatile storage area |
US6052527A (en) * | 1997-02-21 | 2000-04-18 | Alcatel | Method of generating platform-independent software application programs |
US5941945A (en) * | 1997-06-18 | 1999-08-24 | International Business Machines Corporation | Interest-based collaborative framework |
US6192419B1 (en) * | 1997-06-18 | 2001-02-20 | International Business Machines Corporation | Collaborative framework for disparate application programs |
US6083281A (en) * | 1997-11-14 | 2000-07-04 | Nortel Networks Corporation | Process and apparatus for tracing software entities in a distributed system |
US6038381A (en) * | 1997-11-25 | 2000-03-14 | Synopsys, Inc. | Method and system for determining a signal that controls the application of operands to a circuit-implemented function for power savings |
US6134676A (en) * | 1998-04-30 | 2000-10-17 | International Business Machines Corporation | Programmable hardware event monitoring method |
US6347374B1 (en) * | 1998-06-05 | 2002-02-12 | Intrusion.Com, Inc. | Event detection |
US6340977B1 (en) * | 1999-05-07 | 2002-01-22 | Philip Lui | System and method for dynamic assistance in software applications using behavior and host application models |
US6470388B1 (en) * | 1999-06-10 | 2002-10-22 | Cisco Technology, Inc. | Coordinated extendable system for logging information from distributed applications |
US6567818B1 (en) * | 1999-06-14 | 2003-05-20 | International Business Machines Corporation | Employing management policies to manage instances of objects |
US6539501B1 (en) * | 1999-12-16 | 2003-03-25 | International Business Machines Corporation | Method, system, and program for logging statements to monitor execution of a program |
US6701328B1 (en) * | 2000-01-06 | 2004-03-02 | Media Fusion Co., Ltd. | Database management system |
US20020078431A1 (en) * | 2000-02-03 | 2002-06-20 | Reps Thomas W. | Method for representing information in a highly compressed fashion |
US6665819B1 (en) * | 2000-04-24 | 2003-12-16 | Microsoft Corporation | Data capture and analysis for embedded systems |
US6718294B1 (en) * | 2000-05-16 | 2004-04-06 | Mindspeed Technologies, Inc. | System and method for synchronized control of system simulators with multiple processor cores |
Cited By (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7693522B2 (en) | 2001-12-19 | 2010-04-06 | Thomson Licensing | Method and apparatus for handing off a mobile terminal between a mobile network and a wireless LAN |
US20050021586A1 (en) * | 2001-12-19 | 2005-01-27 | Guillaume Bichot | Method and apparatus for handing off a mobile terminal between a mobile network and a wireless lan |
WO2003054721A1 (en) * | 2001-12-19 | 2003-07-03 | Thomson Licensing S.A. | Method and apparatus for handing off a mobile terminal between a mobile network and a wireless lan |
US20050257219A1 (en) * | 2004-04-23 | 2005-11-17 | Holt John M | Multiple computer architecture with replicated memory fields |
US20050262513A1 (en) * | 2004-04-23 | 2005-11-24 | Waratek Pty Limited | Modified computer architecture with initialization of objects |
US20050262313A1 (en) * | 2004-04-23 | 2005-11-24 | Waratek Pty Limited | Modified computer architecture with coordinated objects |
US20060020913A1 (en) * | 2004-04-23 | 2006-01-26 | Waratek Pty Limited | Multiple computer architecture with synchronization |
US20060095483A1 (en) * | 2004-04-23 | 2006-05-04 | Waratek Pty Limited | Modified computer architecture with finalization of objects |
US20090198776A1 (en) * | 2004-04-23 | 2009-08-06 | Waratek Pty Ltd. | Computer architecture and method of operation for multi-computer distributed processing with initialization of objects |
US7860829B2 (en) | 2004-04-23 | 2010-12-28 | Waratek Pty Ltd. | Computer architecture and method of operation for multi-computer distributed processing with replicated memory |
US7707179B2 (en) | 2004-04-23 | 2010-04-27 | Waratek Pty Limited | Multiple computer architecture with synchronization |
US7788314B2 (en) | 2004-04-23 | 2010-08-31 | Waratek Pty Ltd. | Multi-computer distributed processing with replicated local memory exclusive read and write and network value update propagation |
US7844665B2 (en) | 2004-04-23 | 2010-11-30 | Waratek Pty Ltd. | Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers |
US20050240737A1 (en) * | 2004-04-23 | 2005-10-27 | Waratek (Australia) Pty Limited | Modified computer architecture |
US7849452B2 (en) | 2004-04-23 | 2010-12-07 | Waratek Pty Ltd. | Modification of computer applications at load time for distributed execution |
US20060265704A1 (en) * | 2005-04-21 | 2006-11-23 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with synchronization |
US20060253844A1 (en) * | 2005-04-21 | 2006-11-09 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with initialization of objects |
US8028299B2 (en) | 2005-04-21 | 2011-09-27 | Waratek Pty, Ltd. | Computer architecture and method of operation for multi-computer distributed processing with finalization of objects |
US20090055603A1 (en) * | 2005-04-21 | 2009-02-26 | Holt John M | Modified computer architecture for a computer to operate in a multiple computer system |
US20090235034A1 (en) * | 2005-04-21 | 2009-09-17 | John Matthew Holt | Computer architecture and method of operation for multi-computer distributed processing with synchronization |
US20060265705A1 (en) * | 2005-04-21 | 2006-11-23 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with finalization of objects |
US7818296B2 (en) | 2005-04-21 | 2010-10-19 | Waratek Pty Ltd. | Computer architecture and method of operation for multi-computer distributed processing with synchronization |
US7958322B2 (en) | 2005-10-25 | 2011-06-07 | Waratek Pty Ltd | Multiple machine architecture with overhead reduction |
US7996627B2 (en) | 2005-10-25 | 2011-08-09 | Waratek Pty Ltd | Replication of object graphs |
US20070174734A1 (en) * | 2005-10-25 | 2007-07-26 | Holt John M | Failure resistant multiple computer system and method |
US20070126750A1 (en) * | 2005-10-25 | 2007-06-07 | Holt John M | Replication of object graphs |
US8122198B2 (en) | 2005-10-25 | 2012-02-21 | Waratek Pty Ltd. | Modified machine architecture with partial memory updating |
US20070101080A1 (en) * | 2005-10-25 | 2007-05-03 | Holt John M | Multiple machine architecture with overhead reduction |
US8209393B2 (en) | 2005-10-25 | 2012-06-26 | Waratek Pty Ltd. | Multiple machine architecture with overhead reduction |
US20080189385A1 (en) * | 2005-10-25 | 2008-08-07 | Holt John M | Multiple machine architecture with overhead reduction |
US7849369B2 (en) | 2005-10-25 | 2010-12-07 | Waratek Pty Ltd. | Failure resistant multiple computer system and method |
US8122200B2 (en) | 2005-10-25 | 2012-02-21 | Waratek Pty Ltd. | Modified machine architecture with advanced synchronization |
US8015236B2 (en) | 2005-10-25 | 2011-09-06 | Waratek Pty. Ltd. | Replication of objects having non-primitive fields, especially addresses |
US20080215701A1 (en) * | 2005-10-25 | 2008-09-04 | Holt John M | Modified machine architecture with advanced synchronization |
US20080215593A1 (en) * | 2005-10-25 | 2008-09-04 | Holt John M | Replication of object graphs |
US20080215928A1 (en) * | 2005-10-25 | 2008-09-04 | Holt John M | Failure resistant multiple computer system and method |
US20080195617A1 (en) * | 2005-10-25 | 2008-08-14 | Holt John M | Modified machine architecture with machine redundancy |
US20080126721A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Contention detection and resolution |
US20080126322A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Synchronization with partial memory replication |
US20080133870A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Hybrid replicated shared memory |
US20080133689A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Silent memory reclamation |
US20080133694A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Redundant multiple computer architecture |
US20080133859A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Advanced synchronization and contention resolution |
US20080140799A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Contention detection and resolution |
US20080140975A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Contention detection with data consolidation |
US20080140863A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Multiple communication networks for multiple computers |
US20080140982A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Redundant multiple computer architecture |
US20080140856A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Multiple communication networks for multiple computers |
US20080140805A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Multiple network connections for multiple computers |
US20080137662A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Asynchronous data transmission |
US20080140976A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Advanced contention detection |
US20080140801A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Multiple computer system with dual mode redundancy architecture |
US20080141092A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Network protocol for network communications |
US20080151902A1 (en) * | 2006-10-05 | 2008-06-26 | Holt John M | Multiple network connections for multiple computers |
US20080155127A1 (en) * | 2006-10-05 | 2008-06-26 | Holt John M | Multi-path switching networks |
US20080184071A1 (en) * | 2006-10-05 | 2008-07-31 | Holt John M | Cyclic redundant multiple computer architecture |
US20080133884A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Multiple network connections for multiple computers |
US20080130652A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Multiple communication networks for multiple computers |
US20080133692A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Multiple computer system with redundancy architecture |
US20080133690A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Contention detection and resolution |
US20080130631A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Contention detection with modified message format |
US8473564B2 (en) | 2006-10-05 | 2013-06-25 | Waratek Pty Ltd. | Contention detection and resolution |
US20080114943A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Adding one or more computers to a multiple computer system |
US20080133871A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Hybrid replicated shared memory |
US20080133861A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Silent memory reclamation |
US20080134189A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Job scheduling amongst multiple computers |
US20080133869A1 (en) * | 2006-10-05 | 2008-06-05 | Holt John M | Redundant multiple computer architecture |
US20080126516A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Advanced contention detection |
US20080123642A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Switch protocol for network communications |
US20080126506A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Multiple computer system with redundancy architecture |
US7831779B2 (en) | 2006-10-05 | 2010-11-09 | Waratek Pty Ltd. | Advanced contention detection |
US20080126508A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Synchronization with partial memory replication |
US7849151B2 (en) | 2006-10-05 | 2010-12-07 | Waratek Pty Ltd. | Contention detection |
US20080126504A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Contention detection |
US20080126505A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Multiple computer system with redundancy architecture |
US7852845B2 (en) | 2006-10-05 | 2010-12-14 | Waratek Pty Ltd. | Asynchronous data transmission |
US20080126703A1 (en) * | 2006-10-05 | 2008-05-29 | Holt John M | Cyclic redundant multiple computer architecture |
US7894341B2 (en) | 2006-10-05 | 2011-02-22 | Waratek Pty Ltd. | Switch protocol for network communications |
US7949837B2 (en) | 2006-10-05 | 2011-05-24 | Waratek Pty Ltd. | Contention detection and resolution |
US7958329B2 (en) | 2006-10-05 | 2011-06-07 | Waratek Pty Ltd | Hybrid replicated shared memory |
US20080120478A1 (en) * | 2006-10-05 | 2008-05-22 | Holt John M | Advanced synchronization and contention resolution |
US7962697B2 (en) | 2006-10-05 | 2011-06-14 | Waratek Pty Limited | Contention detection |
US7971005B2 (en) | 2006-10-05 | 2011-06-28 | Waratek Pty Ltd. | Advanced contention detection |
US20080120477A1 (en) * | 2006-10-05 | 2008-05-22 | Holt John M | Contention detection with modified message format |
US20080114944A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Contention detection |
US20080114945A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Contention detection |
US8086805B2 (en) | 2006-10-05 | 2011-12-27 | Waratek Pty Ltd. | Advanced contention detection |
US8090926B2 (en) | 2006-10-05 | 2012-01-03 | Waratek Pty Ltd. | Hybrid replicated shared memory |
US8095616B2 (en) | 2006-10-05 | 2012-01-10 | Waratek Pty Ltd. | Contention detection |
US20080114896A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Asynchronous data transmission |
US20080114853A1 (en) * | 2006-10-05 | 2008-05-15 | Holt John M | Network protocol for network communications |
US20080250221A1 (en) * | 2006-10-09 | 2008-10-09 | Holt John M | Contention detection with data consolidation |
US20080250213A1 (en) * | 2007-04-06 | 2008-10-09 | Holt John M | Computer Architecture And Method Of Operation for Multi-Computer Distributed Processing Having Redundant Array Of Independent Systems With Replicated Memory And Code Striping |
US8316190B2 (en) | 2007-04-06 | 2012-11-20 | Waratek Pty. Ltd. | Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping |
US20140257589A1 (en) * | 2011-07-14 | 2014-09-11 | Fronius International Gmbh | Welding power source and method for controlling the same |
US9851704B2 (en) * | 2011-07-14 | 2017-12-26 | Fronius International Gmbh | Welding power source and method for controlling the same |
Also Published As
Publication number | Publication date |
---|---|
WO2002001349A2 (en) | 2002-01-03 |
WO2002001359A3 (en) | 2002-07-18 |
US7003777B2 (en) | 2006-02-21 |
AU2001270079A1 (en) | 2002-01-08 |
WO2002001362A2 (en) | 2002-01-03 |
WO2002001349A9 (en) | 2002-03-21 |
WO2002001359A2 (en) | 2002-01-03 |
AU2001270094A1 (en) | 2002-01-08 |
DE60113538D1 (en) | 2005-10-27 |
WO2002001390A3 (en) | 2002-04-25 |
AU2001271354A1 (en) | 2002-01-08 |
DE60113538T2 (en) | 2006-06-22 |
US20030028858A1 (en) | 2003-02-06 |
EP1297424B1 (en) | 2005-09-21 |
US20020174415A1 (en) | 2002-11-21 |
US20020087953A1 (en) | 2002-07-04 |
WO2002001349A3 (en) | 2002-05-10 |
US20020059558A1 (en) | 2002-05-16 |
ATE305153T1 (en) | 2005-10-15 |
US20020062463A1 (en) | 2002-05-23 |
WO2002001362A3 (en) | 2003-04-03 |
AU2001272985A1 (en) | 2002-01-08 |
EP1297424A2 (en) | 2003-04-02 |
WO2002001390A2 (en) | 2002-01-03 |
EP1323042A2 (en) | 2003-07-02 |
EP1297428A2 (en) | 2003-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20030005407A1 (en) | System and method for coordination-centric design of software systems | |
KR101076910B1 (en) | Implementation of concurrent programs in object-oriented languages | |
Schmidt et al. | C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks | |
US20030121027A1 (en) | Behavioral abstractions for debugging coordination-centric software designs | |
Fay-Wolfe et al. | Real-time CORBA | |
Nakamura et al. | Implementing integrated services of networked home appliances using service oriented architecture | |
Kraemer et al. | Aligning UML 2.0 state machines and temporal logic for the efficient execution of services | |
Hiltunen et al. | Reflections on aspects and configurable protocols | |
Florissi | QuAL: Quality Assurance Language | |
Akşit et al. | Guideliness for Identifying Obstacles When Composing Distributed Systems from Components | |
Paluszek | Coordinating distributed loops and fault handling, transactional scopes using WS-Coordination protocols layered on WS-BPEL services | |
Hsiung et al. | Real-time embedded software design for mobile and ubiquitous systems | |
Alkassar et al. | Proving the correctness of client/server software | |
Awad et al. | A practical approach to the design of concurrency in object‐oriented systems | |
Chen et al. | Research on client/server communication mechanism in autosar system | |
Broy et al. | Specifying and Composing Layered Architectures. | |
Subramonian | Timed automata models for principled composition of middleware | |
Li et al. | ANSA Real-Time QoS Extensions | |
Li | A Model of Real-time QoS | |
Hammer | Component-based architecting for distributed real-time systems: How to achieve composability? | |
Chandy et al. | Systematic composition of distributed objects: Processes and sessions | |
Jaghoori | Coordinating object oriented components using data-flow networks | |
Paluska | Automatic implementation generation for pervasive applications | |
Wai et al. | A Performance Framework | |
Phase III | ANSAware/RT 1.0 Manual |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: CONSYSTANT DESIGN TECHNOLOGIES, INC., WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HINES, KENNETH J.;REEL/FRAME:011905/0949 Effective date: 20010605 |
|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CONSYSTANT DESIGN TECHNOLOGIES, INC.;REEL/FRAME:014380/0978 Effective date: 20031120 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |