Network Program Design
Due: 11:00pm, Tuesday, November 21, 2023
Network Application Design – Chat Server
You must complete the program design for a specified network application (application specifications will be provided in a separate document). This will be an assignment that will be completed as a team.
Your team must select a project manager for this project. The project manager will coordinate the team efforts for project design and development.
Do NOT begin to implement the application at this time. Application specifications will be discussed in more detail and may change. You are encouraged to begin implementation early, but after your design is complete.
Requirements
Each of the following items are to be included in your design. Many of these items are dynamic, meaning they will most likely change as you begin the implementation of the application. What you are developing now and submitting is the application design as you understand it at this point. Be sure to ask any clarification questions that may help your understanding of the application!
Project members – a list of your team members with the project manager identified. Also include project aspect each team member will be responsible (client, server, or library code).
Communication plan
Determine and state the method(s) your team will use to communicate.
Determine and state the method your team will use to conduct team meetings, when necessary.
List the tasks involved, the team member(s) assigned to complete each task and the estimated time you think each task will take to complete. All tasks for application design and implementation, including testing, must be included. Be specific and create sub-tasks, as necessary. For example, you will have a task for “application design”, which would probably have the sub-tasks of each of the items required for this design assignment. Each task/subtask must have the following information identified with it: task/subtask name, team member(s) responsible, and estimated time to complete.
Be sure to separate the tasks for the client, server and shared functionality. As you work on the project, keep track of your time – you will be required to submit your actual completion times at the conclusion of this project.
Programming language(s) – Determine and state the programming language(s) to be used for each aspect of the project (client, server, library). It is possible to use multiple programming languages but remember that you will be required to utilize the library functions in both client and server code. If you utilize multiple programming languages, make sure both languages can call functions written in the language used for the library code.
Project Requirements (scope) – include all necessary requirements for the project. These are what you determine must be completed based on the application specifications. Be detailed and specific.
Application Inputs and Outputs – list the following, in terms of User Interaction, not client-server interaction. Note the user may be the system administrator, particularly for the server program. These are to be program inputs and outputs only, not function inputs and outputs. Inputs may be command-line arguments or user entered data. Outputs may be to the display (standard output) or a file.
Client program user inputs, including any constraints
Client program outputs to the user
Server program user inputs, including any constraints
Server program outputs to the user
List of functionalities that will be common to both client and server. These functionalities will be implemented in a library and utilized by both the client and server. This list may be general functionalities at this point, such as read a message, and may change when you begin implementation.
Application protocol - This is the protocol the team developed for communicating between client and server for this specific application. Some of the protocol is provided in the application specs.
Sequence diagram - A sequence diagram for the application. This is where the client-server interaction will be illustrated.
Test plan – how you plan on testing your program (input data you will enter and expected output). You must include values for at least seven test runs. You should consider some invalid values (based on your constraints). There is no need to show the layout of the output; just include the output values. Include a variety of test cases; don’t just include seven test cases for the same scenario/input. Consider a variety of aspects of the application. A chart or table is a great way to present the test plan. Include at least the following for each test case: test case number, brief description, and expected results. Columns that may be empty for this submission might be tester name, date tested, actual results, success/fail, and correction for fails. The information doesn’t have to include the entire application run; just the details for the section being tested.
Submission
One team member must submit the assignment via D2L. Be sure to include all team members’ names on the title page. The text responses should be included in one document, which should include a title page and table of contents. The diagrams and any spreadsheets developed may be submitted as separate documents. Any separate documents submitted should be mentioned in the report document indicating what additional files are submitted, their filename, and their role (such as use case diagram, test plan, etc.). This can be done as part of the report content or as an appendix in the report.