******************************************************************** Project P1: Internet Chat System: ******************************************************************** Software Engineering Requirement: Functional Requirements Non Functional Requirements Language Reliability Efficiency Security Priority Algorithm Design Classes UML diagram Testing JUnit test Bugs Comparison With a UDP implementation. Appendix A: source code. Appendix B: Installation and usage Guide ******************************************************************** Software Engineering Requirement: An internet chat system has two basic components. A server and a client.We will analyze the requirement as is applicable to the system as a whole as well as for each component. We are provided with the TCP protocol to connect our system. Functional Requirements 1.Server: a.A server should run on a specified port. b.It should listen for and accept connections from clients over a TCP connection. c.It should maintain a list or collection of such clients. d.It should receive data from the client and pass it to all the other clients. 2.Client a.A client should try to connect to the server when given an ip address and a port number. b.It should receive messages from the server and display it. c.It should read data from the keyboard and send it to the server. d.It should not mix up the users own typing and the message received from the server. Non Functional Requirements 1.Language and library The Java 1.5 API will be used. Only standard Library will be used. 2.Efficiency a.Server The Server must be able to handle simultaneously a large number of clients. A 300 clients maximum limit would be appropriate.It must be able to run on a modest hardware. eg. processor 1.6 ghz memory 1gb ram network bandwidth 100Mbps b.Client Any java virtual machine capable of running a TCP protocol as well as a bare minimum GUI. eg. smartphones, laptops, thin clients, 3.Reliability a. Server The server must be able to manage its system resource.It must create a lot of connections and close them without running out of resources. The connections may break, and the server must recover and reuse the resource. The server must not block on any of the connections. b.client A problem with a single client must not affect the other user. 4.Security The system opens a serversocket and large number of sockets on a network. Therefore it is imperative that the sockets are protected from outside malicious users. It may implement an authentication and/or data encryption. 5.Priority Must: 1.Open a Server Socket on the server. 2.Add clients into a list on the server. 3.Open a socket on the client and on the server 4.Send a message to the Server from the client. 5.Receive a message from the Client to the server and display it on the screen. 6.Send copy of a message to all the Clients on the user. 7.Drop a client whose socket has been blocked. Should: 8.Client should not mix up the data from the server and users own keyboard echo. 9.Server should only allow legitimate chat clients to establish connections. 10.Server should manage the nick names and prevent duplicates. May: 11.Server and client should encrypt the data. 12.The chat client may use a GUI. 13.the chat client may implement a filter so that only selected users message are displayed. Comparison With a UDP implementation.