50
1 Association for Computing Machinery High School Competition System Prof: Masoud Sadjadi Fall 2004 First Deliverable By: Prasad Tummala, Hien Nguyen, Jose Ballesteros, Pablo A. Maurin, Bin Liu, Rafael Alpízar (Team four)

1 Advanced Software Engineering Association for Computing Machinery High School Competition System Prof: Masoud Sadjadi Fall 2004 First Deliverable By:

Embed Size (px)

Citation preview

1

Advanced Software Engineering

Association for Computing Machinery

High School Competition System

Prof: Masoud Sadjadi Fall 2004

First DeliverableBy: Prasad Tummala, Hien Nguyen, Jose

Ballesteros, Pablo A. Maurin, Bin Liu, Rafael Alpízar (Team

four)

2

Road Map Introduction Current System Proposed System Overview Requirement (Functional, Non-Functional) Registration Sub-System Game Management Sub-System

3

Introduction

The Programming Competition brings high school teams to FIU to compete for the prestigious FIU-ACM awards.

4

Current System

Registration Table A successful event, Needs Automation and streamlining

5

Proposed System Overview Registration Game-Management.

6

Registration Subsystem Requirements Functional Requirement

Web Registration Non-Functional Requirement

Ease Backup/Restore User Friendly Scalable

Constraints Ease of backup/restore. Database Independence

7

Game Mgt. Subsystem Requirements Functional Requirement

Controlled Solution Submission. In system Judging/feedback. Automatic Result Generation

Non-Functional Requirement Ease Backup/Restore User Friendly Maintain Team anonymity

8

Game Mgt. Subsystem Requirements Constraints

Ease of installation. Database Independence Interconnectivity Constraint Platform independence System must Standalone

9

Road Map Registration Sub-System Scenarios

Registration Sub-System Scenario 1 (Hien) Registration Sub-System Scenario 2 (Jose)

Game Management Sub-System Scenarios Game Management Sub-System Scenario 1 (Bin) Game Management Sub-System Scenario 2 (Prasad) Game Management Sub-System Scenario 3 (Rafael) Game Management Sub-System Scenario 4 (Pablo)

10

Web Registration Use Case Diagram

Validate Info

(from Use Cases)

Report Payment

(from Use Cases)

Manage Coach Account

(from Use Cases)

Add Team

(from Use Cases)

<<include>>

Modify Team

(from Use Cases)

<<include>>

Delete Team

(from Use Cases)

E-Mail System

(f rom Actors)

ACMOfficer

(f rom Actors)

Manage Account & Teams

(from Use Cases)

Create Coach Account

(from Use Cases)

Coach

(f rom Actors)

Write Comment

(from Use Cases)

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

11

Actor SpecificationActors:

• Coach

• ACMOfficer

• E-Mail System

Actors Description:

• Coach: uses the system to create an account that allows him to register teams for the competition. Moreover, he can manage his account and teams.

• ACMOfficer: uses the system to maintain team information and coach accounts.

• E-mail System: actor in charge of sending e-mails.

12

Add Team Use Case Specification

Brief DescriptionThis use case allows a Coach or ACMOfficer to add a new team.Flow of Events     1. System displays the form used to register a team. 2. Coach or ACMOfficer enters all the required information and submits data. 3. System validates that the required info was entered. 4. System sends a confirmation e-mail to the Coach. 5. System storages the new team data.Entry Condition:Coach or ACMOfficer is presented with the registration form.Exit Conditions:Coach or ACMOfficer adds a team and receives confirmation message and an e-mail.

13

Add Team Sequence Diagram

: Coach : RegistrationForm : ControllerMAT

: InformationForm

: AddTeamForm

: Team

: SendMail : E-Mail System : Storagelogin( )

createInformationForm( )

Display Information Form

Display Information Form

addTeam( )

createAddTeamForm( )

sendConfirmation( )send e-mail

Display Add Team Form

submitTeamInfo( )

createNewTeam( )

Display success Message

validateInfo( )

create

saveTeam( )

14

Add Team User Interface

15

AddTeamForm

createNewTeam()submitTeamInfo()

<<boundary>>

InformationForm

selectAction()manageCoachAccount()addTeam()modifyTeam()delete()reportPayment()writeComment()

<<boundary>>

Team

nameidmembersschool

updateTeam()paymentReceived()addComment()

<<entity>>

SendMail

sendConfirmation()

<<boundary>>

Storage

saveTeam()saveAccount()updateTeam()updateCoachAccount()getCoachAccount()getTeam()deleteTeam()

<<boundary>>

ControllerMAT

createMCAForm()updateAccount()createAddTeamForm()saveChanges()createNewTeam()validateInfo()createAddTeamForm()createInformationForm()saveAccountChanges()saveTeamChanges()deleteTeam()reportPay()recordComment()

<<control>>

1

1

*

1

11

1

11

1

+creates & maintains

00

*

0

1

0

0

1

0

1

<<communicate>>

16

Road Map Registration Sub-System Scenarios

Registration Sub-System Scenario 1 (Hien) Registration Sub-System Scenario 2 (Jose)

Game Management Sub-System Scenarios Game Management Sub-System Scenario 1 (Bin) Game Management Sub-System Scenario 2

(Prasad) Game Management Sub-System Scenario 3

(Rafael) Game Management Sub-System Scenario 4

(Pablo)

17

Web Registration Use Case

Validate Info

(from Use Cases)

Report Payment

(from Use Cases)

Manage Coach Account

(from Use Cases)

Add Team

(from Use Cases)

<<include>>

Modify Team

(from Use Cases)

<<include>>

Delete Team

(from Use Cases)

E-Mail System

(f rom Actors)

ACMOfficer

(f rom Actors)

Manage Account & Teams

(from Use Cases)

Create Coach Account

(from Use Cases)

Coach

(f rom Actors)

Write Comment

(from Use Cases)

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

18

Manage Account & TeamsUser Interfaces

19

Manage Account & TeamsUse Case Specification

Brief DescriptionThis use case allows a Coach or ACMOfficer to modify a team.

Participating actors: Coach, ACMOfficer, E-mail System.Flow of events:1. A Coach or an ACMOfficer logs into the system.

2. If the user is a Coach, System presents all the information about the teams from his school and a list of possible actions (Add Team, Delete Team, Modify Team and Manage Account), excluding the actions Report Payment and Write Comment.

3. If the user is an ACMOfficer, System presents a list of all posible actions and all the information about all schools and their respective teams.

4. Coach or ACMOfficer selects an action and team(s) if the action is to be applied to a team.

5. Include the corresponding use case.Entry Condition:Coach or ACMOfficer logs into the system.Exit Conditions:An action is carried out.

20

Manage Account & Teams Sequence Diagram

: Coach : RegistrationForm : ControllerMAT

: InformationForm

login( )

createInformationForm( )

select action

manage request

Display Information Form

21

Web Registration Use Case

Validate Info

(from Use Cases)

Report Payment

(from Use Cases)

Manage Coach Account

(from Use Cases)

Add Team

(from Use Cases)

<<include>>

Modify Team

(from Use Cases)

<<include>>

Delete Team

(from Use Cases)

E-Mail System

(f rom Actors)

ACMOfficer

(f rom Actors)

Manage Account & Teams

(from Use Cases)

Create Coach Account

(from Use Cases)

Coach

(f rom Actors)

Write Comment

(from Use Cases)

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

22

Modify Team Use Case Specification

Brief DescriptionThe use case allows a Coach or ACMOfficer to modify a team.

Flow of events:1. System presents existing information and allows modifications.2. Coach or ACMOfficer modifies information and submits the new data.3. System validates that the required information was entered.4. System sends a confirmation e-mail.5. System updates the team data.

Entry Condition:Coach or ACMOfficer is presented with current information of a team.

Exit Conditions:Information about the team is updated.

23

Modify Team Sequence Diagram

: Coach : RegistrationForm : ControllerMAT : InformationForm

: AddTeamForm

: Team

: SendMail : E-Mail System : Storagelogin( )

createInformationForm( )

Display Information Form

Display Information Form

Display Add Team Form

Display success Message

validateInfo( )

modifyTeam( )

createAddTeamForm( )

submitTeamInfo( )

saveTeamChanges( )

sendConfirmation( )send e-mail

updateTeam( )

updateTeam( )

getTeam( )

Return Team

24

ManageCoachAccountForm

submitChanges()

<<boundary>>

RegistrationForm

newAccount()login()

<<boundary>>

AddTeamForm

createNewTeam()submitTeamInfo()

<<boundary>>

InformationForm

selectAction()manageCoachAccount()addTeam()modifyTeam()delete()reportPayment()writeComment()

<<boundary>>

Team

nameidmembersschool

updateTeam()paymentReceived()addComment()

<<entity>>

SendMail

sendConfirmation()

<<boundary>>

Storage

saveTeam()saveAccount()updateTeam()updateCoachAccount()getCoachAccount()getTeam()deleteTeam()

<<boundary>>

CoachAccount

coachNameemailpasswordidschoolteams

saveChanges()updateAccount()updateAccount()

<<entity>>

ControllerMAT

createMCAForm()updateAccount()createAddTeamForm()saveChanges()createNewTeam()validateInfo()createAddTeamForm()createInformationForm()saveAccountChanges()saveTeamChanges()deleteTeam()reportPay()recordComment()

<<control>>

1

1

1

1

*

1

*

11

1

11 1

11

1

11

1

+creates & maintains

00

*

0

1

0

0 10 1

<<communicate>>

+maintains0

*

0

25

Web Registration Class Diagram

CreateAccountForm

submit()

<<boundary>>

RegistrationForm

newAccount()login()

<<boundary>>

ManageCoachAccountForm

submitChanges()

<<boundary>>

AddTeamForm

createNewTeam()submitTeamInfo()

<<boundary>>

InformationForm

selectAction()manageCoachAccount()addTeam()modifyTeam()delete()reportPayment()writeComment()

<<boundary>>

Team

nameidmembersschool

updateTeam()paymentReceived()addComment()

<<entity>>

SendMail

sendConfirmation()

<<boundary>>

Storage

saveTeam()saveAccount()updateTeam()updateCoachAccount()getCoachAccount()getTeam()deleteTeam()

<<boundary>>

ControllerCreateAccount

newCreateAccountForm()createNewAccount()

<<control>>

1

1

1

1

1

1

1

1

1

0

1

0

0

1

0

1

<<communicate>>

CoachAccount

coachNameemailpasswordidschoolteams

saveChanges()updateAccount()updateAccount()

<<entity>>1

0

1

+creates0

ControllerMAT

createMCAForm()updateAccount()createAddTeamForm()saveChanges()createNewTeam()validateInfo()createAddTeamForm()createInformationForm()saveAccountChanges()saveTeamChanges()deleteTeam()reportPay()recordComment()

<<control>>

1

1

1

1

1 11 1

1

1

1

1

1

1

1

1

0

*

+creates & maintains

0

*

1

0

1

0

0

1

0

1

<<communicate>>

*

0

*

+maintains0

26

Road Map Registration Sub-System Scenarios

Registration Sub-System Scenario 1 (Hien) Registration Sub-System Scenario 2 (Jose)

Game Management Sub-System Scenarios Game Management Sub-System Scenario 1

(Bin) Game Management Sub-System Scenario 1 (Prasad) Game Management Sub-System Scenario 1 (Rafael) Game Management Sub-System Scenario 1 (Pablo)

27

Scenarios of Check-in Subsystem Name: Prepare the System Participating Actors: Administrator Flow of Events:

Administrator create a folder to store the team’s solution. Administrator enter the information of judge Administrator enter and confirm competition rules

Name: Check-In Teams Participating Actors: Administrator Flow of Events:

Administrator verify the team information and payment status Assign each team an unique team ID

28

Use Case Diagram for Check-in Subsystem

PrepareStorage

(from Use Case View)

EnterJudge

(from Use Case View)

EnterRules

(from Use Case View)

VerifyTeam

(from Use Case View)

ReceivePayment

(from Use Case View)

Prepare

(from Use Case View)

Admi

(from Use Case View)

Check-in

(from Use Case View)

<<include>>

<<include>>

<<include>>

<<include>>

<<include>>

29

Sequence Diagram for Check-in

: Admi : Check-inControl

: TeamInfoForm : TeamInfo

1: Create

2: Input School-team name3: GetTeamInfo

4: TeamInfo

6: VerifyTheTeam

5: EnableCheck-inButton

7: Click Check-in Button

8: AssignTeamID

9: SaveTeamID

30

Sequence Diagram for Prepare

: Admi : PrepareControl

: PreFolderForm : Storage

: EnterJudgeForm : JudgeInfo

: EnterRulesForm : Rules

1: Create

2: InputFolderName and click OK3: CreateFolder()

4: Create

5: EnterJudgeInfo

6: AddJudgeInfo()

7: Create

8: InputRules

9: RenewRules

31

Class Diagram for Check-in Subsystem

RulesMostPriorityLessPriority

StorageEnterRulesForm

RenewRules()

PreFolderForm

CreateFolder()

PrepareControl

CreatePreFolderForm()CreateEnterJudgeForm()EnterJudgeForm()

JudgeInfoJudgeNameJudgeID

EnterJudgeForm

AddJudgeInfo()

Check-inControl

CreateTeamInfoForm()EnableCheck-inButtom()

TeamInfoSchoolNameTeamNameTeamIDPaymentStatus

TeamInfoForm

GetTeamInfo()AssignTeamID()SaveTeamID()

32

Road Map Registration Sub-System Scenarios

Registration Sub-System Scenario 1 (Hien) Registration Sub-System Scenario 2 (Jose)

Game Management Sub-System Scenarios Game Management Sub-System Scenario 1 (Bin) Game Management Sub-System Scenario 2

(Prasad) Game Management Sub-System Scenario 3

(Rafael) Game Management Sub-System Scenario 4

(Pablo)

33

Competition Use Case

Update ScoreUpdate Scoreboard

Transfer File

Send FeedBack

<<include>>

Submit Solution

<<include>>

Team Send/Receive Message

<<include>>

<<include>>

Grade Solution

<<include>>

<<include>>

Receive Solution

<<include>>

Start

Login

Judge

34

Actors Specification Actors:

Judge Team

Actors Description: Judge: Uses the system to grade the solutions

and to update the scores for each team. Team: Uses the system to participate in the

Competition and solves the problem those are given during the Competition.

35

Competition Sub-System Brief Description

This Use Case allows the Team to submit the solution that is solved.

Participating Actors: Team, Judge. Flow of Events:

Team selects the question number they want to submit. Team selects the location of the directory or file where is the

answer. Team submits data. System removes the submitted question number from the list

of question numbers. Judge is alerted of the new submission.

Entry Condition: Team is able to select the question number and browse for

the file location. Exit Condition: Judge is alerted of new submission.

36

Sequence Diagram for Submit Solution

37

Class Diagram for Submit Solution

38

Road Map Registration Sub-System Scenarios

Registration Sub-System Scenario 1 (Hien) Registration Sub-System Scenario 2 (Jose)

Game Management Sub-System Scenarios Game Management Sub-System Scenario 1 (Bin) Game Management Sub-System Scenario 2

(Prasad) Game Management Sub-System Scenario 3

(Rafael) Game Management Sub-System Scenario 4 (Pablo)

39

Game Mgt. Use Case Diagram

Update ScoreUpdate Scoreboard

Transfer File

Send FeedBack

<<include>>

Submit Solution

<<include>>

Team Send/Receive Message

<<include>>

<<include>>

Grade Solution

<<include>>

<<include>>

Receive Solution

<<include>>

Start

Login

Judge

40

Receive Solution Use Case Brief Description

This Use Case describes the process that the Judge follows upon receipt of a solution.

Participating Actors:Team, Judge. Flow of Events:

Judge is alerted that a team has submitted a solution

If she chooses to grade this solution she does the followingOtherwise she does nothing.

Downloads the files Inspects and grades the solution Submits a grade report to the team

Entry Condition:Judge is alerted that a team has

submitted a solution Exit Condition:

Judge Submits a grade report to team

SendFeedback

GradeSolution

Solution is Available

Judge

M

GradeSolution

SendFeedback

41

Sequence Diagram: Receive Solution

: Judge : ReceiveSolutionForm

: Solution

: SolutionInfo

: TransferFile

: SolutionWareHouse : ReceiveSolution

1: receiveSolution()

11: returnSolution()

7: Create

9: Create

10: returnSolutionInfo()

3: transferSolution()

4: getArciveInfo()

5: returnArchiveInfo()

6: getZipArchive( )

8: returnArchive()

2: getSolution( )

42

Game Mgt. Use Case Diagram

Feedback

feedbackMessage

<<entity>>

TeamMessageForm<<boundary>>

JudgeSendReceiveMessageForm

receiveMessage()sendMessage()

<<boundary>>

SendReceiveMessage

messageTypemessageBody

messageTo()messageFrom()receiveMessage()sendMessage()

<<control>>

ReceiveSolutionForm

receiveSolution()

<<boundary>>

Message

messageTomessageFrommessageTypemessageBody

getMessage()sendMessage()

<<entity>>

ReceiveSolution

solutionInfosolution

getSolutionInfo()getSolution()

<<control>>

ZipArchiveFile

dirPathdirNamesolutionArchive

prepareZipArchive()

<<entity>>

TransferFile

teamIDproblemNosubmissionNosubmittedTimezipArchiveInfozipArchivesolutionInfosolution

submitZipArchiveInfo()submitZipArchive()unzipSolution()sendSolution()

<<control>>

SolutionWareHouse

solutionInfosolutionZipArchive

saveZipArchiveInfo()saveZipArchive()getZipArchiveInfo()getZipArchive()

<<entity>>Solution.

teamIDproblemNosubmissionNosolutionTimegrade

setSolution()

<<entity>>

11 11

43

Road Map Registration Sub-System Scenarios

Registration Sub-System Scenario 1 (Hien) Registration Sub-System Scenario 2 (Jose)

Game Management Sub-System Scenarios Game Management Sub-System Scenario 1 (Bin) Game Management Sub-System Scenario 2

(Prasad) Game Management Sub-System Scenario 3

(Rafael) Game Management Sub-System Scenario 4

(Pablo)

44

Game Mgt. Use Case Diagram

Update ScoreUpdate Scoreboard

Transfer File

Send FeedBack

<<include>>

Submit Solution

<<include>>

Team Send/Receive Message

<<include>>

<<include>>

Grade Solution

<<include>>

<<include>>

Receive Solution

<<include>>

Start

Login

Judge

45

Actors Specification Actors:

Judge Actors Description:

Judge: Uses the system to grade the solutions and to update the scores for graded solution.

46

Competition Sub-System Brief Description

This Use Case allows the Judge to enter into the system the evaluation of a submitted solution.

Participating Actors: Judge. Flow of Events:

Judge enters into the GradeSolutionForm his evaluation of solution.

System records score for submitted solution System invokes rules engine to compute new team

scores and rankings. System notifies and updates Scoreboard.

Entry Condition: After Judge finishes grading a solution, the results of

his evaluation are need to be entered. Exit Condition: Judge is alerted of new submission.

47

Sequence Diagram for Grade Solution

: Judge : GradeSolutionForm : GradeSolutionControl : SolutionWareHouse : SolutionInfo : RulesEngine : UpdateScore : ScoreboardControl : ScoreboardDisplayForm1: submitEvalutation()

2: submitEvalutation()

4: updateSolutionInfo()

3: getSolutionInfo()

5: runRulesEngine()

6: setNewScores()

7: storeScores()

8: noti fy()

9: update()

48

Class Diagram for Grade Solution

GradeSolutionForm

opname()

<<boundary>>

Rules

operationattribute1attribute2

run()

<<entity>>

GradeSolutionControl

gradeSolution()createFeedback()sendFeedback()

<<control>>

RulesEngine

run()setRules()

<<entity>>

RuleEngineControl

loadEngine()runEngine()

<<control>>

Score

teamIDscoreranking

setScore()

<<entity>>

UpdateScore

setNewScore()saveScore()

<<control>>

ScoreboardDisplayForm

update()

<<boundary>>

ScoreboardControl

notify()updateDisplay()

<<control>>

SolutionInfo

teamIDproblemNosubmissionNosolutionTimegrade

setSolutionInfo()

<<entity>>

SolutionWareHouse

solutionInfosolutionZipArchive

saveZipArchiveInfo()saveZipArchive()getZipArchiveInfo()getZipArchive()

<<entity>>

1

1..*

1..*

11

1

1

11

1..*

1

11

1

1

1

1

1

1..*

1..*1..*

1

1

1..*

1

1

1

11

1

1

1

1

0..*

1..*1..*

1..*

11

0..*

49

Game Mgt. Class Diagram

Feedback

f eedbackMessage

<<entity >>

SendFeedback

sendFeedback()...

<<control>>

JudgeSendReceiv eMessageForm

receiv eMessage()sendMessage()

<<boundary >>

SendReceiv eMessage

messageTy pemessageBody

messageTo()messageFrom()receiv eMessage()sendMessage()

<<control>>

1

0..*

1

0..*

Receiv eSolutionForm

receiv eSolution()

<<boundary >>

Message

messageTomessageFrommessageTy pemessageBody

getMessage()sendMessage()

<<entity >>

0..*

1

0..*

1

SubmitSolutionControl

ZipArchiv eInf oZipArchiv e

...

<<control>>Receiv eSolution

solutionInf osolution

getSolutionInf o()getSolution()

<<control>>

1

1

1

1

ZipArchiv eFile

dirPathdirNamesolutionArchiv e

prepareZipArchiv e()

<<entity >>

Solution

...

<<entity >>

1 11 1

SolutionWareHouse

solutionInf osolutionZipArchiv e

sav eZipArchiv eInf o()sav eZipArchiv e()getZipArchiv eInf o()getZipArchiv e()

<<entity >>

0..*

1

0..*

1

Transf erFile

teamIDproblemNosubmissionNosubmittedTimezipArchiv eInf ozipArchiv esolutionInf osolution

submitZipArchiv eInf o()submitZipArchiv e()unzipSolution()sendSolution()

<<control>>

0..*

1

0..*

1

10..* 10..*

0..*

1

0..*

1

1

0..*

1

0..*

SolutionInf o

teamIDproblemNosubmissionNosolutionTimegrade

setSolutionInf o()

<<entity >>

1

1

1

1

1

0..*

1

0..*

GradeSolutionForm

opname()

<<boundary >>

Rules

operationattribute1attribute2

run()

<<entity >>

1..*

1..*

1..*

1..*

GradeSolutionControl

gradeSolution()createFeedback()sendFeedback()

<<control>>

1

1

1

1

RulesEngine

run()setRules()

<<entity >>

1

1..*

1

1..*

RuleEngineControl

loadEngine()runEngine()

<<control>>

1

1

1

1

1

1

1

1

Score

teamIDscoreranking

setScore()

<<entity >>

UpdateScore

setNewScore()sav eScore()

<<control>>

1..*

1

1..*

1

1..*

1

1..*

1

ScoreboardDisplay Form

update()

<<boundary >>

ScoreboardControl

notif y ()updateDisplay ()

<<control>>

1

1

1

1

1

1

1

1

Session

sessionTime...

<<entity >>

Login

userNameuserPassword

getLoginInf o()requestLogin()createSession()

<<control>>

1

1

1

1

User

userName...

<<Actor>>

LoginForm

userNameuserPassword

display Login()pressLoginButton()

<<boundary >>

1

1

1

1

1

1

1

1

Timer

compDurationcompTime

<<<<Create>> >> newTimer()...

<<entity >>

CompetitionTimerControl

<<<<Create>>>> createTimer()...

<<control>>

1

1

1

1

StartCompetitionForm

enterCompDuration()...

<<boundary >>

1

1

1

1

Judge

Judge_Name...Judge_IDGrade

<<Actor>>

1

1..*

1

1..*

TeamMessageForm<<boundary >>

0..*

1

0..*

1

Team

Team_ID : IntegerTeam_Name : StringSchool_ID : LongSchool-Name : StringPass_Code : String

<<Actor>>

SubmitSolutionForm

pathdirectory

browseSolution()

<<boundary >>

1

1

1

1

50

Thank you