The main purpose of this environment is keep all the subsystems informed of any changes in the design parameters. Therefore, passing information between the subsystems is the most important part of this environment. To be able to control the information flow, some protocols were developed to enable the communication between these subsystems in an organized manner. In our design, all subsystems communicate through the CI which is responsible for passing the information to the subsystems that need to know.
There are two types of events that can occur in this system:
Figure 32 shows the protocol used for the first event represented by a finite state machine (FSM). The states of this FSM are:
Figure 32: Finite state machine representation for the change protocol.
Figure 33 shows the protocol for the second event. The states in this FSM are:
Figure 33: Finite state machine representation for the data request protocol.
The suggested protocol can be described in algorithmic notation as follows:
do while true if change reported then lock messages apply relations check constraints if constraint satisfied then report changes to subsystems wait for subsystems acknowledgment if all acknowledgments ok update database report the new status else send a change-back message to subsystems report failure to sender else report nonsatisfied constraints to sender send final acknowledgment to subsystems else if data-request reported then send request to the appropriate subsystem if data received then send data to sender else send negative acknowledgment to sender.
Figure 34 shows a possible scenario when applying this protocol. In this algorithm we assume that all system constraints are located in the CI; however, any subsystem may reject the proposed values by other subsystems due to some unmodeled constraints. This can happen either because there are some ``new'' constraints that are not reported to the CI, or because some constraints are too hard to be easily represented in the constraint format in the CI.
Figure 34: Possible scenario for the communication between the subsystems.