DIT085 FAQ 2015
Q: Do we need to add new functionalities to make this really work?
A: No! Please stick to the minimum functionality. The focus is on testing and not programming and hence, you need to spare enough time to apply testing techniques. If the description is vague; just make a reasonable design decision and document it.
Q: Do we need to implement a database on the server side?
A: No! All data may be stored in a data-structure in memory.
Q: Do we have to use Java and Eclipse?
A: This is very much recommended. If you use any other programming language or development environment, you may expect far less help and support from the instructors (and also from your peer groups).
Q: What do pre- and post-condition in Phase 1 (TDD of Unit) mean?
A: Post-condition is the conditions on the state and input parameters that are necessary for the successful execution of the to-be-designed method. Post-condition is the effect of the method on the state and also its return value.
Q: The phase 1 description talks about an interface. Does it mean GUI interface or something else?
A: At this stage, you should focus on the interface of the module you are currently developing, i.e. public methods, their return and argument types. Other server modules will call these methods in order to add/replace/fetch/delete messages.
Q: Are the supervision sessions on Fridays mandatory to attend?
A: In general no. The sessions are there for you if you have any questions that you need answered. However, prior to submitting your work in every project phase you have to present it to the instructors at one of the supervision sessions.
Q:' Phase 2 description reads "The server should provide an XML-based interface on its socket with the following specifications." Can you make it more precise?
A: This means that all communication (i.e. strings sent) between the server and mobile clients must conform to the specified XML format. However, you are free to define custom error codes/messages.
Q: In the phase 2 description, you ask us to "make a separate class for accepting connections and communicating with the connected sockets". Does that mean we need to implement the connections in a different class than the server?
A: Yes, it must be a separate class with its own functionality. Its purpose is to listen for new connections, and spawn a thread for each connected client. Notice, that it should refuse multiple connections from the same client ID.
Q: How will this new class interact with the Server class from phase 1?
A: The Server class encapsulates the message storage functionality, and you will need an instance of that class to represent the state of your system. Also, the threads should have concurrent access to the message store, so your code may need to be modified to allow for that. See Oracle's concurrency tutorial linked from Phase 2 page for more details.