An Internet Voting System Manager Yonghua Li Kansas State University October 14, 2002 MSE Project - Phase 3
Jan 04, 2016
An Internet Voting System Manager
Yonghua Li
Kansas State University
October 14, 2002
MSE Project - Phase 3
Give my thanks to:
Dr. Maria Zamfir-Bleyberg
Dr. William Hsu
Dr. David Gustafson
Presentation Overview
Project Overview Project RequirementObject Model Design (revised)Sources Code Module Walk-ThroughTest EvaluationProject EvaluationDemo
Project Overview
• Internet voting system: poll site, kiosk and remote
• Design a system which manages the voting and makes ballot cast through the internet
• Also to improve the integrity and fairness of voting
• Easy and reliable to use
Project Overview: Data Flow Graph
IVSM
Query Processing
DatabaseConnection
Manager
Query Processing
Server
Client
ConClient
ConClient
Server
DBM
MailSender
Query Processing
Project Requirements
• Develop component server side IVS Manager
• Develop component database connection and query manager
• Develop component IVS server and connection of client
• Develop component mailSender• Develop component client
Project Requirements (cont’d)
• Follow all the procedures required by software engineering
• Develop API for the codes• Create report for the testing• Create User Manual for the project• Evaluate the project
Simple Database
name id email pwd voted
Yonghua Li 1 [email protected] **** no
name committee num votes
Carol Peak CITY OFFICES MANHATTAN
3 0
Voters table
Candidates table
Object Model Design: IVS Manager
IVSM
admin : Administrator[]server : Serverquery : QueryWrappersDate : DateeDate : Date
verifyID(id : Sring, passwd : String) : booleansetVoters(voterDataAddr : String) : voidgetVoters() : StringsetCandidates(canddAddr : String) : voidgetCandidates() : StringsetStartDate(date : Date) : DatesetEndDate(date : Date) : DateisVotingOver() : boolean
ConnectionPool
checkedOut : intfreeConnections : VectormaxConn : intname : Stringpassword : StringURL : Stringuser : String
freeConnections()getConnection()getConnection()release()newConnection()
Candidate
voted : booleanname : String
getName()setName()voted()isVoted()
ConnServer
timeOfLastActivity : longstatus : Integerkey : String
run()
ConnManager
conn : ConnectionPoolquery : QueryWrapperinstance : ConnManagerclients : intdrivers : Vectorpools : Hashtablelog : PrintWriter
freeConnection()getConnection()getConnection()getInstance()release()
QueryWrapper
connManager : ConnManager
init()insertVoters()insertCandidates()confirmVoter()votingResult()sendingResult()pwdRequest()getBallot()addVotes()
Ballot
votingGuide : Stringtitle : Stringissuer : Stringsubject : Stringdate : DatevoteID : Stringcommittee : String[]candidate : string[][]num : int[]newCand : String[][]
setCommittee()setCandidate()voteCandidate()voteNewCandidate()
Ticker
run()
TriggerServer
warning_if_inactive : inttime_to_close_a_warnreaper_time : intmaxinactivetimeparticipants : Hashtableticker : Ticker
run()getBallot()tick()
MailSender
host : Stringid : Stringaccound : Stringfrom : String
singleMailSent()batchMailSent()
Administrator
id : Stringpassword : String
setPassword(passwd : String) : voidgetID() : StringgetPassword() : StringverifyID(id : String) : booleanverifyPassword(passwd : String) : boolean
Object Model Design: Client
VClient
introFrame : IntroFramelogonFrame : LogonScreenvotingFrame : VotingScreenstatusFrame : ProgressScreencomm : ConnClient
Ballot
setCommittee : voidsetCandidatevoteCandidatevoteNewCandidate
setCommittee()setCandidate()voteCandidate()voteNewCandidate()
ConnClient
run()
TimeroutThread
threadStatus : boolean
stopThread()run()
Candidate
voted : Booleanname : String
setName()getName()Voted()isVoted()
Walkthrough: IVSManager
When starting the system, the first thing to do is to set the administrator. The system will block until user inputs the admin id and password
The system will use the administrator id as seeds to generate the encryption keys – public and private key.
Walkthrough: IVSManager (cont’d)
After the system has been launched, before the server can start, the administrator should configure the following – Make the keys and init the DB– Import Voters– Import Candidates– Set the Election Start Time– Set the End Time– Start the Server
Initiate the mail sender server Start the backup server.
Walkthrough: client
The client can be run as an application or as an applet; in this project the client will be a kiosk client.
The first interface the voter sees has two buttons and one text screen.
If the voter press the Enter to Voter button, the conformation interface will appear
The confirmation GUI has three text boxes and two button
Walkthrough: client (cont’d)
After filling the text box and pressing the vote button, there will be a confirmed GUI to show the result. If the server confirms the voter identification, then voter can press button vote to cast the ballot.
In the ballot GUI, the voter casts the ballot according to the instruction
After casting the ballot, the voter press the send button to send out the ballot.
If it goes well, the system will return back to initial state.
Test Overview
Unit testing– Purpose:
To test the all components’ major functions– Methodology: Functional Testing
White box testing, path-based domain, boundary testing technologies
black box testing, random and regression testing Testing Item:
DBConnectionPool, DBConnectionManager, QueryWrapper, IVSManager, IVSServer, ConClient, MailSender and IVSClient.
Test Overview (cont’d)
Integration Testing– Purpose: tests the program structure
the program has been built with unit-tested modules.– Methodology: Functional Testing (black box) ---
regression and random testing– Testing Items:
Dbpool-dbmanager, dbwrapper-dbmanager, ivsmanager-dbmanager-ivsserver, ivsserver-conclient, ivsclient-ivsserver-conclient
Testing Overview (cont’d)
System Testing/Performance Testing– Stress testing – Boundary testing– Error injection testing– Stamp testing– Testing the system log file and error handling
Test GUI
Test Overview
Pass/Fail Criteria
The percentage of test result will be sued to decide to if the software passes or fails
pass >90%
fail <70%
70%~90% ?
Test Result: unit and integration
Class Functionality Performane passDBPool Task for getting and freeing connection to max
connectionsWorks well yes
DBConnectionManager
Task for getting and freeing connection Works well yes
DBWrapper Task for conn. requiring, different queries Works well Yes
IVSManager Task for Init DB, input voters, input candidates, set start and end time, set mailsender, statistic result, send result
Works well yes
IVSServer task for connection management Works well yes
ConClient Task for message receiving, sending Works well yes
IVSClient task pwdRequest, enterVoter, sendRequest, SendConfirm, Voting, SendingBallot
Works well yes
MailSender Task for singleMailSend, batchMailSend Works well yes
Test Result: Performance
Testing type functionality Performance pass
Boundary System Works well yes
Stress System Works well yes
Error injection system Catch all yes
Stamp system Works well yes
Error handling system Works well yes
Error Handling Testing
Test items result
IVSManager can check if the db.properties is correctly file pass
IVSManager can check if the voter.dat file is correctly file Pass
IVSManager can check if the candidate.properties is correctly file pass
IVSManager can check if the election start time is correct Pass
IVSManager can check if the end time is correct Pass
IVSManager can check if the server port is ok pass
IVSManager can check if the mail sender server is right pass
IVSClient can check if the pwd request input boxes are filled pass
IVSClient can check if the confirm input boxes are filled pass
IVSClient can check if the ballot cast number is right pass
IVSClient can check if the new candidate is clicked and filled pass
Fairness Testing
6 candidates, generating 10000 ballots, each candidate appear in the first position for:
Candidate 1: 1662
Candidate 2: 1656
Candidate 3: 1673
Candidate 4: 1666
Candidate 5: 1671
Candidate 6: 1670
Integrity Testing
Test Item Performance pass
case for voting twice Works well yes
case for log on multi place Works well yes
case for losing ballot Works well yes
Project Evalutation
Cost-Estimation Evaluation Product Evaluation Process Evaluation Tools and Technologies Evaluation
Project Evaluation – Cost Estimation
Size of project– Estimated: 5160 LOC– Actual: 3912 LOC (19 classes, 1 interfaces)– Evaluation: The actual LOC doesn’t include the third party
software Cost effort
– Estimated: 7.0 months– Actual: 7.0 months– Evaluation: match
Schedule– Phase I and Phase II was finished in time– Phase III was postponed for four months
Product Evaluation
Product Evaluation– meets all requirements– successful through the test cases– stable: can run on windows, UNIX, Linux system– performance result is same as expected– Improve the fairness and integrity for ballot cast
Problem exist– Write-in candidates: Bill Hsu and William Hsu
Project Evaluation - Process
Process Evaluation– Whole software development life cycle– Learned to design a project in all details– Excellent experience to learn the Software
Engineering Process– Challenging project since no any background on
the politics knowledge
Project Evaluation - tools
Evaluation of Tools and Techniques used– Rational Rose– USE-2.0.0– Java– Java Mail– Oracle DBMS
Compare to System Used in Campus
Generating the voting students data from the enrolling data base – this system will build its own voters database to ensure that each voter will cast the ballot only one time.
Each candidate will appear on the same ballot position with almost same probability
Fairness: This system doesn’t not solve the write-in candidates name problem too
Demo
Start the IVSManager Server– Java –cp classes111.zip;. IVMSManager– Set up the Administrator– Build the key and init the DB– Import the Voters, candidates data– Import the election time and start the server– Set the mailsender server address
Start the IVSClient– Java IVMSClient
See http://www.cis.ksu.edu/~yli3568/mse/mse.html
Thank!