CS 355, Spring 2020, Heidi Gurung Assignment #1 (Individual), 50 points
Due Tuesday, March 3rd, 2020 12:00 noon Requirements and Extended UML Class Diagram for Chat System
First, you must generate a list of requirements specifications (that is, a detailed requirements list) for the scenario below. The requirements should be divided into two sections: first, a section for functional requirements, and second, a section for non-functional requirements. The requirements specifications must be constructed as a list with identifiers for each requirement. You may use numbers by themselves (e.g. 1), or numbers plus letters (e.g. 1a), using as many levels and sub-levels as you find appropriate. Your requirements can be prepared in any word processor as long as you can convert the final result to PDF format for submission.
Second, using Visio and the UML Class shapes, construct a UML class model that supports the classes necessary to implement a client-server chat system. Your class model should also include a 12-pt. text note with any assumptions that you have made about the scenario. Assumptions should be reasonable and not contradict the text below or any additional information from class lecture. Note that you are not describing or implementing methods, and you don’t have to list attributes at this point – you are just specifying classes and their relationships. You must use the various relationship types (aggregation, composition, interface implementation, inheritance, and association) that we discussed in class. Your individual solution model must be converted from Visio to PDF (File/Save As PDF).
You will need to submit both PDF files through Canvas by the assignment due date. Only PDF files will be accepted. Late assignments, without prior approval, will not be accepted, but partial work submitted on time will be graded for partial credit.
Your client has given you narrative text as follows below. You will be given a chance to ask questions of the client, Heidius Gurungus, on Tuesday, February 25th during class lecture.
===
Your task is to generate a requirements specification list and develop a domain model using a modified UML class notation for a chat system which overall allows its users to send text messages to a single other user connected to the system. The system will consist of several separate applications that communicate with each other, including the server application, a client application, an administrator application, and a display application. The system should be implemented in Java using a client-server architecture. The server will indirectly coordinate the communication between the client systems that provide functionality for each user wanting to chat. However, to keep the server from getting overloaded, each time a client requests a connection to the server, the server will create a client- handler object in a new thread to handle the actual communication with the client, and the client-
handler will pass any necessary information from the client to the server. The server must be able to handle up to 1000 simultaneous clients.
The client application will connect to the server without any required authorization. Each client will be identified by its local computer name, which is guaranteed to be distinct in our environment. At this point, a client sends a message by specifying a single recipient user and the message, limited to 4000 characters. If the recipient of the message is not connected, an appropriate error message should be displayed on the client application. The client application must be implemented with a Graphical User Interface (GUI). Client support is limited to desktop systems at this time, though may later be expanded to mobile devices.
The server application will be connected to an Oracle database running on a remote server. We will use a Data Access Object (DAO) layer to isolate the database activity. The DAO operations (e.g. connect, executeQuery, processResults, disconnect) should be specified in an interface or abstract class. Several concrete classes should be created using this specification, including an Oracle DAO class and a mock DAO class that will do nothing for connect and disconnect, and returns hard-coded data to allow initial testing without needing a network connection.
We also want to create a display application which displays which clients are currently connected to the system. This display application can be run on one or more systems connected to the same network as the server. The display will refresh every 10 seconds (+/- 2 seconds, as tolerance for system and network load).
We also need an administrator application as part of the system. This application should be able to start or stop the chat server, initialize or re-initialize the client list, start the display application on a remote system, and disconnect any client. The administrator application should have a GUI as well.
NOTE: we would like to add an element of robustness analysis to this model to help us check the structure. Please add a hyphen (-) and letter after each class name describing what type it is in terms of a Robustness Diagram, using the letter C for controller, E for entity, and B for boundary. For example, if you had an Employee class holding data about an employee, that would be named here as Employee – E, as Employee would be an entity class. It is expected that your model comply with the Robustness analysis rules you’ve learned in your classroom work (e.g. certain robustness types can or can’t talk to certain other robustness types).
= = = = = End – Narrative = = = = =
Notes:
• You must use MS Visio and the UML Class shapes within it for your UML domain/class diagram. You can use other versions of Visio if you have one. Steps for using Visio to make a UML class diagram in the lab are below:
1. Open Microsoft Visio (Start / Programs / Visio)
2. Generate a new Visio workspace (Blank Drawing (use default of US Units), Create)
3. In the Shapes section, type UML in the search box and you’ll see several types of UML
shapes for different UML diagrams (e.g. UML Activity, UML Class, UML Database, UML
Sequence, etc.).
4. Use the UML Class shapes – Aggregation, Association, Class, Composition, Inheritance,
Interface and Interface Realization should be sufficient for this assignment. If you don’t see all of these, click on the More Results to display the full set for that diagram type.
5. You can control a number of attributes of any relationship by right-clicking on it, including whether to show multiplicity / cardinality and to set the minimum and maximum values for that multiplicity, and even to change the connector type to one of the other relationship types. If you want to show multiplicity, you can left-click on each value once shown to change that value – you can use any number (e.g. 0, 1, 3) or * for indefinite many.
6. You may want to change the zoom factor in the View settings if you have trouble seeing the details in your diagram.
• I suggest you use the following convention for naming your files:
e.g. if I was creating a Visio file as a solution for the modeling part of this assignment, it should be named:
assignment1-model-gurunghl.vsdx .
e.g. if I was creating a Word file as a solution for the requirements part of this assignment, it should be named:
assignment1-requirements-gurunghl.docx .
Now, when you save each of them to PDF format, you do not run the risk of overwriting one of them because they originally had the same name.