Top-level Object| Communicates With| Incoming Messages| Outgoing Messages| Graphical Interface/Central Computer| Communicates with the door, microwave generator, and table spinner| Incoming messages are from the user, i.e. power, timing, etc., also from the door which tells the GUI if the wave generator is safe to go on| Outgoing messages tell the generator to begin making the waves, the table spinner to spin, and displays things on the screen| Door| Communicates with the GUI to be sure that you can only turn the device on if the door is closed| No incoming messages except from the user who can open and close the door| Outgoing messages whenever the door is opened or closed, it must inform the interface so that the device turns off when the door is opened| Microwave Generator| Communicates with the GUI| Incoming messages from the GUI to either start or stop generating waves, setting the power, setting the time, etc.| Outgoing messages to the GUI to inform it of its current status| Table Spinner| Communicates with the GUI| Incoming messages from the GUI to tell it when to start and/or stop| No outgoing messages|
Advantages of having a componentized system
The major advantage of having a componentized system is that if one component breaks, you can just replace that one thing without having to replace the whole system. Take for example in a computer system, if one part of the code has a bug in it, you just have to focus on that one part instead of the whole code. For the example of the microwave breaking, if it breaks then you just have to replace the microwave instead of the whole kitchen.