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