The Little Caesars Cory, Sean, Seth, James, Madison.

Slides:



Advertisements
Similar presentations
Module 5: TLS and SSL 1. Overview Transport Layer Security Overview Secure Socket Layer Overview SSL Termination SSL in the Hosted Environment Load Balanced.
Advertisements

15.1 © 2004 Pearson Education, Inc. Exam Managing and Maintaining a Microsoft® Windows® Server 2003 Environment Lesson 15: Configuring a Windows.
Tracking & Login Data persistence User tracking.
Real-Time Authentication Using Digital Signature Schema Marissa Hollingsworth BOISECRYPT ‘09.
Internet Networking Spring 2006 Tutorial 12 Web Caching Protocols ICP, CARP.
A CHAT CLIENT-SERVER MODULE IN JAVA BY MAHTAB M HUSSAIN MAYANK MOHAN ISE 582 FALL 2003 PROJECT.
ASP.NET Programming with C# and SQL Server First Edition Chapter 8 Manipulating SQL Server Databases with ASP.NET.
Guide To UNIX Using Linux Third Edition
1 First app – simplechat1 Reminder: what’s the point?  To build on ocsf framework.  Simple requirements: echo all messages to all clients.  Use only.
Introduction to the Secure SMTP Server service. Secure SMTP server is a secure, reliable SMTP mail relay server for your outgoing mail. Secure SMTP service.
Introduction 1 Lecture 7 Application Layer (FTP, ) slides are modified from J. Kurose & K. Ross University of Nevada – Reno Computer Science & Engineering.
1 Semester 2 Module 2 Introduction to Routers Yuda college of business James Chen
Introduction 1-1 Chapter 2 FTP & Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 IC322 Fall.
Form Handling, Validation and Functions. Form Handling Forms are a graphical user interfaces (GUIs) that enables the interaction between users and servers.
FTP File Transfer Protocol. Introduction transfer file to/from remote host client/server model  client: side that initiates transfer (either to/from.
Chapter Seven Advanced Shell Programming. 2 Lesson A Developing a Fully Featured Program.
Advanced Shell Programming. 2 Objectives Use techniques to ensure a script is employing the correct shell Set the default shell Configure Bash login and.
PHP Tutorials 02 Olarik Surinta Management Information System Faculty of Informatics.
Topics Covered: Data preparation Data preparation Data capturing Data capturing Data verification and validation Data verification and validation Data.
Guide to TCP/IP, Second Edition1 Guide To TCP/IP, Second Edition Chapter 6 Basic TCP/IP Services.
CHAPTER 12 COOKIES AND SESSIONS. INTRO HTTP is a stateless technology Each page rendered by a browser is unrelated to other pages – even if they are from.
IT 424 Networks2 IT 424 Networks2 Ack.: Slides are adapted from the slides of the book: “Computer Networking” – J. Kurose, K. Ross Chapter 2: Application.
1 Guide to Novell NetWare 6.0 Network Administration Chapter 11.
FTP (File Transfer Protocol) & Telnet
Protocol Architectures. Simple Protocol Architecture Not an actual architecture, but a model for how they work Similar to “pseudocode,” used for teaching.
VTP VLAN Trunking Protocol
Simple Mail Transfer Protocol (SMTP)
JavaScript, Fourth Edition
Week 7 Working with the BASH Shell. Objectives  Redirect the input and output of a command  Identify and manipulate common shell environment variables.
Copyright 2000 eMation SECURITY - Controlling Data Access with
Instant Messaging for the Workplace A pure collaborative communication tool that does not distract users from their normal activities.
Instant Messaging for the Workplace A pure collaborative communication tool that does not distract users from their normal activities.
Module 7: Fundamentals of Administering Windows Server 2008.
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
Saeed Darvish Pazoki – MCSE, CCNA Abstracted From: Cisco Press – ICND 1 – Chapter 9 Ethernet Switch Configuration 1.
Chapter 9 How Do Users Share Computer Files?. What is a File Server A (central) computer which stores files which can be accessed by network users.
Unit 2—Using the Computer Lesson 14 and Electronic Communication.
Chapter 8 Cookies And Security JavaScript, Third Edition.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 3: Operating-System Structures System Components Operating System Services.
Linux+ Guide to Linux Certification, Third Edition
Linux Operations and Administration
Linux+ Guide to Linux Certification Chapter Eight Working with the BASH Shell.
Oracle 10g Database Administrator: Implementation and Administration Chapter 2 Tools and Architecture.
1 Chapter 9 – Cookies, Sessions, FTP, and More spring into PHP 5 by Steven Holzner Slides were developed by Jack Davis College of Information Science.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Computer Networking From LANs to WANs: Hardware, Software, and Security Chapter 13 FTP and Telnet.
VTP VLAN Trunking Protocol Create once and send to the other switches.
Topics Sending an Multipart message Storing images Getting confirmation Session tracking using PHP Graphics Input Validators Cookies.
CE Operating Systems Lecture 13 Linux/Unix interprocess communication.
Controlling Web Site Access Using Logins CS 320. Basic Approach HTML form a php page that collects the username and password  Sends them to second PHP.
Lesson 3-Touring Utilities and System Features. Overview Employing fundamental utilities. Linux terminal sessions. Managing input and output. Using special.
FriendFinder Location-aware social networking on mobile phones.
Database Access Using JDBC BCIS 3680 Enterprise Programming.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
ASP-2-1 SERVER AND CLIENT SIDE SCRITPING Colorado Technical University IT420 Tim Peterson.
Linux+ Guide to Linux Certification, Second Edition
Unit-6 Handling Sessions and Cookies. Concept of Session Session values are store in server side not in user’s machine. A session is available as long.
Linux Administration Working with the BASH Shell.
Spring 2006 CPE : Application Layer_ 1 Special Topics in Computer Engineering Application layer: Some of these Slides are Based on Slides.
How to develop a VoIP softphone in C# that enables SIP Instant Messaging (IM) This presentation describes how to create a softphone in C# that allows you.
How to develop a VoIP softphone in C# by using OZEKI VoIP SIP SDK This presentation demonstrates the first steps concerning to how to develop a fully-functional.
The Echo Server Problem. Contents  Basic Networking Concepts  The Echo Server Problem.
How Do Users Share Computer Files?
SQL and SQL*Plus Interaction
Net 323 D: Networks Protocols
What is Bash Shell Scripting?
Net 323 D: Networks Protocols
Chapter 7 Network Applications
Exceptions and networking
Presentation transcript:

The Little Caesars Cory, Sean, Seth, James, Madison

Domain Analysis  Instant messaging  Expanding Simplechat  Adding to the existing classes  Adding commands for users

Domain Analysis  Customers and Users  Quick Messaging (physical speed and time saved)  Networked Users (Internet, LAN, etc…)

Domain Analysis  Original Tasks and Procedures:  Send a message

How it was

What we did  Commands  LoginID and passwords  Blocking  Private Messages  Forwarding  Channels  Observer Layer

Platform/Process Requirements  Java or higher  Used SVN  Costs lots of hours and pizza  Transmission Control Protocol / Internet Protocol (TCP/IP) network

Quality Requirements  Usability The system is very user friendly with help menus, clear output when errors occur, and consistent notation. Users should not worry about case sensitivity for certain aspects of the program (e.g. usernames, channel names, commands)  Reliability SimpleChat shouldn’t fail due to problems in the implementation of the program  Maintainability SimpleChat is designed to be flexible and easy to change  Reusability SimpleChat is designed to work across a variety of systems Simple Consistent

Command Requirements Client should be able to perform special functions  How? Client program checks user input.  Check for what? Starting with ‘#’ will be command  Then what? Each function will have a command name

Some Commands  #quit Terminate Client gracefully  #logoff Disconnect from Server  #sethost If client is logged off, sets host to connect to  #stop Server stops listening for connections

Some Additional Requirements  Only appropriate users should be informed Each method makes decisions  User should know status of command call Methods will display error messages  Informed if usage is incorrect Referred to help function Case-insensitive.

Command Use Cases Use case: Commands - #logoff Actors: client Goal: allow client to logoff from the server, but not quit. Preconditions: Client must be logged on and connected to the server Summary: when a user types the #logoff command they log off from the server they are connected to but do not quit the program. Steps: Actor actionsSystem responses 1) client types #logoff command 2) Client side logs off from server but does not quit the program.

Command Use Cases cont. Use case: Commands - #stop Actors: Client using server Goal: Cause the server to stop listening for new clients. Preconditions: client using server must be connected to the server. Summary: When the user of a server types in the #stop command, the server will stop allowing new clients to be added. Steps: Actor actionsSystem responses 1) The client using server types in the 2) the server changes the #stop command.respective variable to false 3) the server stops listening to new connections.

Command Implementation  Each command starts with a ‘#’ and case doesn’t matter ‘#login’ is the same as ‘#LoGin’  Any message that starts with a ‘#’ is considered a command ‘Invalid command’ is displayed if command isn’t valid  Performs checks – such as a client needs to be disconnected to change port displays error if the command cannot be carried out or verification if it is  ClientUI commands are sent to a method clientCommand()  ServerUI commands are sent to serverCommand()  Commands checked using if statements  #help [command] available

Command Diagram

Login Requirements  Username’s needed to be password protected  Username’s needed to be stored  Passwords should be case sensitive  Usernames should NOT be case sensitive  Must store and retrieve username and password very quickly

Login Use Cases Use case: Password – returning user, correct password Actors: client Goal: to login successfully Preconditions: The user must specify the password in the command line Summary: when a user wishes to login they must specify the correct password in the command line and login. Steps: Actor actionsSystem responses 1) Start the client by typing ClientConsole, 2a) check loginID in hashmap then the loginID and password 2b) check password in hashmap

Login Use Case cont. Use case: Password – new user Actors: client Goal: to sign in successfully to a server for the first time Preconditions: user must specify a loginID that has not been taken and a password Summary: when a user wishes to log on to the server, they must specify a new username and declare a password Steps: Actor actionsSystem responses 1) Start the client by typing Client Console, 2a) check loginID in then the loginID and passwordhashmap 2b) add loginID and password to hashmap

Login Implementation First specified as command line args when starting Client program Username is case insensitive & password is case sensitive handleLogin is passed #login and: -checks if username exists -if no, add username and password to hashmap, then text file -else check password against stored password -if same connect user -else client gets error message and disconnects client *on server startup, text file is loaded into hash map

Login Diagram

Channel Requirements  Functional #joinchannel allows a user to join a channel if it exists #createchannel [password] allows a user to create a channel with an optional password if the channel doesn’t already exist #channellist lists the names of all channels that have been created #channel returns the name of the channel the user is currently on Messages sent by a user are received by other users on the same channel Displays appropriate messages to the user (e.g. incorrect usage, successufully joined/created a channel)

Channel Requirements cont.  Quality SimpleChat has increased usability since users can create their own channels and performance will be minimally affected The additional memory and cpu requirements won’t adversely affect the operation of SimpleChat

Channel Use Case Use case: Channels – user establish Actors: clients Goal: to establish separate channels on the server so that messages can be sent to only the users in said channel and not the global session. Preconditions: users must be online Summary: if a user wishes to join a channel they must type the channel command and then the channel name Steps: Actor actionsSystem responses 1) the user types the channel command 2) System sets channel to and specifies channel.specified channel

Channel Implementation  The channels are stored in a hashmap The channel name is the key and an instance of ChannelInfo is the value  Class ChannelInfo holds all information about the channels Includes name, list of clients on the channel, and password (optional)  #joinchannel and #createchannel commands check to see if channel has been created Displays whether user connected to channel or problem (such as incorrect password or channel has already been created) Sends message to everyone on the channel when a user joins the channel Channel names are NOT case sensitive however channel passwords are Channels names can contain any character except spaces

Channel Implementation cont.  Users are automatically put into channel ‘default’ when they first log in  If no users are connected to a channel it is removed (except ‘default’)  Messages are only sent to other users on the same channel  #channellist calls method getChannels() which returns an array of channel names in use (Strings) All of the channel names are displayed to the user  Server can send a message to all users on a channel using the command #channel

Channel Diagram

Private Msg Requirements  Users may want to send message to a single other user  Previously, Server echoed all msgs  How? Add #private command Server delegates to special method Checking for connected users Tell recipient it is a private message from:

Additional Requirements  User should not send PM’s to self  Server may send PM’s  User can send PM’s to Server  Should be case insensitive

Private Message Use Case Use case: Private messaging - unblocked Actors: client1 and client2 Goal: to successfully send a private message from client to client Preconditions: both users must be logged on and unblocked Summary: When a user wishes to private message another user, they must type the private message command, specify the loginID they wish to send a private message to and then the message they wish to send. Steps: Actor actionsSystem responses 1) user types #private command, loginID 2) the message is displayed to the and message to send. recipient with the PM from :

Private Message Use Case cont. Use case: Private messaging - blocked Actors: client (blocked) Goal: Clients blocked by a user receive an error message when trying to PM them Preconditions: the clients must both be logged in and the sender must be blocked by the recipient Summary: when a user tries to send a private message to a user they are blocked by, they receive an error message and the PM is not sent. Steps: Actor actionsSystem responses 1) client types pm command and tries to send msg.2) system checks loginID is blocked 3) system sends error message to user

Private Message Implementation User types #private //username is desired recipient name sendPrivateMethod receives command and: -Checks that user is not trying to send a message to himself Checks if recipient is the sever, if so display on serverUI If not, loops through threadlist of Clients to see if recipient is connected If the recipient is found, check if the sender is blocked by the recipient -If not, send message to recipient -if so, send error message to sender -If recipient not found, error message sent to sender

Private Message Diagram

Observable Requirements  Functional ChatClient is an observer of ObservableClient EchoServer is an observer of ObservableOriginatorServer  Quality Doesn’t affect usability (how SimpleChat is used by users both client side and server side remains the same) SimpleChat is more maintainable due to increased flexibility (separation of framework from implemented code) Increase reusability and expandability since there can be multiple observers on both the client and server sides

Observable Class Diagram

Observable Implementation  ChatClient implements Observer  Instantiate ObservableClient  addObserver  Replace HandlemessageFromServer with update  In the same way change EchoServer With ObservableOriginatorServer Change HandleMessageClient to update Get connectiontoclient thru.getOriginator()

Testing  Determined what test cases to run by following control structure of methods.  Each If statement created a different test case  Not all possible routes tested – too time consuming  Also did an intensive test on user logins

Lotsofusers.sh Script  #!/bin/bash  for ((i=1;i<=400;i+=1)); do  echo $i  echo `java ClientConsole cory$i cory` &  sleep.1  done

Testing Conditions  Computer 1  OS: Apple OSX Leopard  CPU: 2.4 GHz Intel Core 2 Duo  Memory: 2GB 667MHz  Java Version: 1.5.0_13  Computer 2  OS: Windows Vista SP1  CPU: 2.2Ghz AMD X  Memory: 4GB 400Mhz  Java Version: 1.6.0_04

Some Tests Done  Server and Client setup on one single computer  Server on one computer Client on another  Tested over 40 different scenarios

Some Examples