|Due at Friday, June 18th, 23:59|
In the lecture we discussed the differences between Checked and Unchecked Exceptions. Go through the following list of conditions and decide whether this information should be represented as Checked Exception, Unchecked Exception, or as regular element of the program flow (typically return values of type boolean or of an enumeration type). Give for each decision an argument (one sentence). In case your answer depends on a context, explain which context you are assuming.
After our discussion in Task 24 we decided to develop the component that allows to find Bike Rental Outlets nearby as a server component. The component gives a list of the 5 closest BROs if you pass the GPS coordinates as parameters. In the following you will discuss the availability of this component.
a) In the lecture we discussed two strategies to detect whether a component is available or not. Discuss which one is appropriate here. (2-4 sentences should be enough. Of course you can use as well the predefined format from the recent tasks.)
b) We mentioned the following tactics to handle failures. Discuss which one is appropriate here. (2-3 sentences per tactic should be enough. Of course the predefined format from the recent tasks could be especially helpful here as well.)
c) Finally we describe one error handling strategy in detail.
Assume that due to cost restrictions
We decided to deploy a list of BROs by PLZ (Postal Code) on the mobile device. In case the mobile device is not able to get the list of closest BROs, it will offer to find the BRO by PLZ.
Draw a sequence diagram that illustrates the case of a failure and how it will be handled by the mobile device.
The sequence diagram should contain at least one or a few objects as part of the client, the stub representing the server object on the client, the server object, and one or more objects representing the middleware framework. (You might want to have a look at the fourth slides of chapter 8).
In the lecture we discussed some modifiability tactics. From the aspect of localizing change (by reducing the consequences of a change and by reducing the cost of a change) the heuristics we gave you in Task 18 are very important. Explain for each of the following principles (in 1 or 2 sentences) how it improves modifiability:
|4 points (optional)|
Find a RMI tutorial on the web and implement a client object and a server object and get it up and running. Deployment on the same machine is ok. Distribution over two machines is of course more fun.
You should be able to explain your code and to show client and server running and interacting.