An Internet Voting System Manager

Preview:

DESCRIPTION

An Internet Voting System Manager. MSE Project - Phase 3. Yonghua Li Kansas State University October 14, 2002. Give my thanks to:. Dr. Maria Zamfir-Bleyberg Dr. William Hsu Dr. David Gustafson. Presentation Overview. Project Overview Project Requirement - PowerPoint PPT Presentation

Citation preview

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 yli3568@cis.ksu.edu **** 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!

Recommended