an internet voting system manager
DESCRIPTION
An Internet Voting System Manager. Yonghua Li Kansas State University March 28, 2002. MSE Project - Phase 2. Give my thanks to:. Dr. Maria Zamfir-Bleyberg Dr. William Hsu Dr. David Gustafson. Presentation Overview. Project Overview Prototype: GUI Project Design: Object Model - PowerPoint PPT PresentationTRANSCRIPT
An Internet Voting System An Internet Voting System ManagerManager
Yonghua LiYonghua LiKansas State UniversityKansas State University
March 2March 288, 2002, 2002
MSE Project - Phase 2
Give my thanks to:Give my thanks to:
Dr. Maria Zamfir-Bleyberg Dr. Maria Zamfir-Bleyberg Dr. William HsuDr. William Hsu
Dr. David GustafsonDr. David Gustafson
Presentation OverviewPresentation OverviewProject Overview Project Overview Prototype: GUIPrototype: GUIProject Design: Object Model Project Design: Object Model Formal SpecificationFormal SpecificationTest PlanTest PlanFormal Technical Review (FTR)Formal Technical Review (FTR)Software Quality Assurance (SQA)Software Quality Assurance (SQA)Summary and QuestionSummary and Question
Project Review: GoalsProject Review: Goals
• To design an internet voting To design an internet voting system where voters can cast system where voters can cast ballots through internet;ballots through internet;
• To test some approaches on To test some approaches on internet voting system;internet voting system;
• Also to improve the integrity and Also to improve the integrity and fairness of votingfairness of voting
Project Review: ComponentsProject Review: Components
• Emphasis on two componentsEmphasis on two components IVS manager (IVSM) (sever side)IVS manager (IVSM) (sever side) Voter (client side)Voter (client side)
• Integration with other Integration with other components, e.g., databasecomponents, e.g., database
Basic Functions of IVSMBasic Functions of IVSM
• Administrator login setupAdministrator login setup• login id – administrator’s ID;login id – administrator’s ID;• password – administrator’s password;password – administrator’s password;
• Database setupDatabase setup• Candidate list database;Candidate list database;• Voter database;Voter database;
• Voting period setupVoting period setup• Start time;Start time;• Stop time;Stop time;
Basic Functions of IVSM (Cont’d)Basic Functions of IVSM (Cont’d)
• Server initializing;Server initializing;• Ballot counting – doing statistics Ballot counting – doing statistics
on the voting ballots.on the voting ballots.
Basic Functions of the ServerBasic Functions of the Server
• Idling – waiting for visit;Idling – waiting for visit;• Querying – getting ballots for the Querying – getting ballots for the
requested election title from the requested election title from the database;database;
• Caching – storing data and making Caching – storing data and making them available to querying;them available to querying;
• Uploading – sending required Uploading – sending required blank ballots to client. blank ballots to client.
Basic Functions of ClientBasic Functions of Client
• LoginLogin• providing voter ID and password;providing voter ID and password;• downloading a blank ballot;downloading a blank ballot;
• Voting – casting the ballot. Voting – casting the ballot.
Prototype: GUI (Server Side)Prototype: GUI (Server Side)
Prototype: GUI (Client Side)Prototype: GUI (Client Side)
Object Model: IVSMObject Model: IVSM
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
Administratorid : Stringpassword : String
setPassword(passwd : String) : voidgetID() : StringgetPassword() : StringverifyID(id : String) : booleanverifyPassword(passwd : String) : boolean
Serverquery : QueryWrapper
accept()sendBallot()verifyRequest()queryBallot()
ConnectionPoolcheckedOut : intfreeConnections : VectormaxConn : intname : Stringpassword : StringURL : Stringuser : String
freeConnections()getConnection()getConnection()release()newConnection()
CommCandidatecandidateList : VectorvotingGuide : String
getCandidates()getvotingGuide()addCandidate()
ServerProtocol
xmlProcess()
ConnServer
run()
ConnManagerconn : ConnectionPoolquery : QueryWrapperinstance : ConnManagerclients : intdrivers : Vectorpools : Hashtablelog : PrintWriter
freeConnection()getConnection()getConnection()getInstance()release()
QueryWrapperconnManager : ConnManager
verifiedQuery()ballotQuery()
BallotcommitteeList : VectorvotingGuide : String
getCommittees()getVotingGuide()addCommittee()
Object Model: ClientObject Model: Client
VClientintroFrame : IntroFramelogonFrame : LogonScreenvotingFrame : VotingScreenstatusFrame : ProgressScreencomm : ConnClient
ClientProtocol
xmlProcess()
BallotcommitteeList : VectorvotingGuide : String
addCommittee()getCommittees()getVotingGuide()
ConnClient
run()
TimeroutThreadthreadStatus : boolean
stopThread()run()
VotingScreen
IntroScreen LogonScreen
ProgressScreen
CommitteeCandidatescandidateList : VectorvotingGuide : String
addCandidate()getCandidates()getVotingGuide()
Sequence Diagram for Server SideSequence Diagram for Server Sideivsm : IVSM administrator :
Administratorserver : Server connServer :
ConnServerHandler :
ServerProtocolwrapper :
QueryWrapperconnManager : ConnManager
setCandidates(String)
verifyPassword(String)
setStartAndOverTime()
setDatabase(String)accept( )
start( ) xmlProcess(String)
verifiedQuery(String)
ballotQuery(String)
getConnection(String)
verifiedQuery(String)
ballotQuery(String)
accept( )
Sequence Diagram in Client SideSequence Diagram in Client Sidevclient : VClient connclient :
ConnClienthandler :
ClientProtocolballot : Ballot votingFrame :
VotingScreen
run( )
xmlProcess(String)
addCommittee(Object) formatBallot()
voting()xmlProcess(String)
sendBallot()
Formal Specification: USE-ClassFormal Specification: USE-Classmodel IVSMmodel IVSM
-- Class-- Classclass Administratorclass Administratorattributesattributes password:Stringpassword:Stringoperationsoperations verifyPassword(password:String):booleanverifyPassword(password:String):booleanendend
class ConnectionPoolclass ConnectionPoolendend
class ConnManagerclass ConnManagerendend
class QueryWrapperclass QueryWrapperendend
class Ballotclass Ballotattributesattributes candidates:Stringcandidates:Stringendend
class CommCandidateclass CommCandidateendend
class ServerProtocolclass ServerProtocolendend
class ConnServerclass ConnServerendend
Formal Specification: USE-associationFormal Specification: USE-associationassociation session betweenassociation session between ConnServer[1] role connserverConnServer[1] role connserver ConnClient[1] role connclientConnClient[1] role connclientendend
association admin betweenassociation admin between Administrator[1] role managerAdministrator[1] role manager IVSM[1] role systemIVSM[1] role systemendend
association service betweenassociation service between Server[1] role serverServer[1] role server IVSM[1] role systemIVSM[1] role systemendend
association mediator betweenassociation mediator between QueryWrapper[1] role wrapperQueryWrapper[1] role wrapper IVSM[1] role systemIVSM[1] role systemendend
association pool betweenassociation pool between ConnectionPool[1] role poolsinkConnectionPool[1] role poolsink ConnManager[1] role handlerConnManager[1] role handlerendend
association connQuery betweenassociation connQuery between QueryWrapper[1] role wrapperQueryWrapper[1] role wrapper ConnManager[1] role handlerConnManager[1] role handlerendend
association thread betweenassociation thread between Server[1] role serverServer[1] role server ConnServer[*] role connserverConnServer[*] role connserverendend
association cache betweenassociation cache between ConnServer[1] role connserverConnServer[1] role connserver Ballot[*] role ballotBallot[*] role ballotendend
association xmlhandler betweenassociation xmlhandler between ConnServer[1] role connserverConnServer[1] role connserver ServerProtocol[1] role xmlprocessServerProtocol[1] role xmlprocessendend
Formal Specification: USE-ConstraintsFormal Specification: USE-Constraintscontext Administrator::VerifyPassword(psword : String) : booleancontext Administrator::VerifyPassword(psword : String) : boolean pre passwordNotNull:psword.isdefined()pre passwordNotNull:psword.isdefined() post resultPost:post resultPost: result = self.password.equals(psword)result = self.password.equals(psword)
context IVSMcontext IVSM -- Over time must be greater than Start time-- Over time must be greater than Start time inv overtimeGreaterthanstart:inv overtimeGreaterthanstart: self.startTime < self.overTimeself.startTime < self.overTime
context Servercontext Server -- system is ready before it can accept the request-- system is ready before it can accept the request inv systemready:inv systemready: self.connserver.isdefined() implies self.system.isdefined()self.connserver.isdefined() implies self.system.isdefined()
context ConnServercontext ConnServer -- every ConnServer must have its own ConnClient-- every ConnServer must have its own ConnClient inv connServerClientPair:inv connServerClientPair: ConnServer.allInstances->forAll(c1,c2:ConnServer|c1<>c2 implies (c1.connclient<>c2.connclient))ConnServer.allInstances->forAll(c1,c2:ConnServer|c1<>c2 implies (c1.connclient<>c2.connclient)) -- every ConnServer belongs to the same Server-- every ConnServer belongs to the same Server inv connServerHasSameServer:inv connServerHasSameServer: ConnServer.allInstances->forAll(c1,c2:ConnServer|c1.server=c2.server)ConnServer.allInstances->forAll(c1,c2:ConnServer|c1.server=c2.server) -- Ballot on request-- Ballot on request inv ballotOnRequest:inv ballotOnRequest: self.ballot.isdefined() implies (self.ballot.size = 1 && self.connclient.isdefined())self.ballot.isdefined() implies (self.ballot.size = 1 && self.connclient.isdefined()) -- QueryWrapper is ready before ballot is ready.-- QueryWrapper is ready before ballot is ready. self.ballot.isdefined() implies (self.server.system.wrapper.isdefined()self.ballot.isdefined() implies (self.server.system.wrapper.isdefined()
context ConnClientcontext ConnClient -- ConnClient set up a connection before receive a ballot-- ConnClient set up a connection before receive a ballot inv connFirst:inv connFirst: self.ballot.isdefined() implies self.connserver.isdefined()self.ballot.isdefined() implies self.connserver.isdefined() -- ConnClient receives ballot after ConnServer gets it ready-- ConnClient receives ballot after ConnServer gets it ready inv ballotready:inv ballotready: self.ballot.isdefined() implies self.connserver.ballot.isdefined()self.ballot.isdefined() implies self.connserver.ballot.isdefined() -- ballot ConnClient received is the one its ConnServer sent-- ballot ConnClient received is the one its ConnServer sent inv sameballot:inv sameballot: self.ballot.candidates.equals(self.connserver.ballot.candidates)self.ballot.candidates.equals(self.connserver.ballot.candidates)
Test PlanTest PlanUnit Testing: Unit Testing: – each class is tested separately. Focus on each class is tested separately. Focus on
major functions in each classmajor functions in each class
Integration TestingIntegration Testing– tests the program structure, the program is tests the program structure, the program is
built with unit-tested modules.built with unit-tested modules.
System Testing: Performance TestingSystem Testing: Performance Testing– Stress testing Stress testing – Boundary testingBoundary testing
Test Plan: Test CaseTest Plan: Test CaseStress Testing:Stress Testing:
- From the same machine, keep sending a - From the same machine, keep sending a number of connecting requests to the number of connecting requests to the server to test the performanceserver to test the performanceBoundary testing:Boundary testing:
- Sending the server some special - Sending the server some special characters, eg !~#@()+_-=\|$%*characters, eg !~#@()+_-=\|$%*Authentic testing:Authentic testing:
- testing voter id, password, registering - testing voter id, password, registering codecode
Test Plan: Test Case (Cont’d)Test Plan: Test Case (Cont’d)Error Handling Testing:Error Handling Testing:
- The error handling testing case will test if - The error handling testing case will test if the server and client will show the right the server and client will show the right feedbackfeedbackLog Handling Testing:Log Handling Testing:
- This type of testing case will check if the - This type of testing case will check if the log system will works well when the log system will works well when the system run.system run.Voting Period TestingVoting Period Testing
- Voting period testing will check if the - Voting period testing will check if the server will accept connection in the right server will accept connection in the right time.time.
Prototype: Test Suite GUIPrototype: Test Suite GUI
Formal Technical Review (FTR)Formal Technical Review (FTR)Software Formal Inspection Process Software Formal Inspection Process Standard NASA-SYD-2202-93Standard NASA-SYD-2202-93
Ensure consistency between previously Ensure consistency between previously approved documents of phase I and the approved documents of phase I and the new design concepts resulting from new design concepts resulting from documents of phase IIdocuments of phase II
In this project, the system design will be In this project, the system design will be subjected to the FTR. A formal checklist will subjected to the FTR. A formal checklist will be developed and used to inspect the be developed and used to inspect the documentdocument
FTR: ChecklistFTR: Checklist
Check listCheck list* Completeness * Modifiability* Completeness * Modifiability* Consistence * Tracebility* Consistence * Tracebility* Correctness* Correctness * Understandability * Understandability* Feasibility * Maintainability * Feasibility * Maintainability
* Verifiability * Testability* Verifiability * Testability
Software Quality Assurance Plan Software Quality Assurance Plan (SQA)(SQA)
IEEE standard Std 730-1989IEEE standard Std 730-1989
Software Quality Assurance Plan documents a Software Quality Assurance Plan documents a plan, which assures the quality of the software plan, which assures the quality of the software during the whole life cycle of the software.during the whole life cycle of the software.
Including Purpose, Reference, Management, Including Purpose, Reference, Management, Documentation, Standards Practices Conventions Documentation, Standards Practices Conventions and Metricsand Metrics, , Review and Audit, Tools Techniques Review and Audit, Tools Techniques and Methodologies,and Methodologies, Code Control, Training, Risk Code Control, Training, Risk AnalysisAnalysis
Phase III Phase III –– ImplementationImplementation
User ManualUser ManualSource CodeSource CodeFormal Technical ReviewFormal Technical ReviewTesting & Reliability EvaluationTesting & Reliability EvaluationProject EvaluationProject Evaluation
SummarySummary• Project OverviewProject Overview• Project Design: Object ModelProject Design: Object Model• Formal SpecificationFormal Specification• Test PlanTest Plan• Formal Technical Review (FTR)Formal Technical Review (FTR)• Software Quality Assurance (SQA)Software Quality Assurance (SQA)• URL: URL:
http://www.cis.ksu.edu/~yli3568/mse/mse.http://www.cis.ksu.edu/~yli3568/mse/mse.htmlhtml
Thank!Thank!