-
Notifications
You must be signed in to change notification settings - Fork 0
시나리오
1.문제 제출
1.1 Basic Flow:
1.1.1 클라이언트가 <문제 제출> 버튼을 누른다
1.1.2 문제를 입력한다.
1.1.2.1 채점 기준을 입력한다.
1.1.2.1.1 마감 기한을 날짜 및 시간 형태로 텍스트로 입력한다.
1.1.2.1.2 오답을 제출할 때 마다 부여할 패널티를 숫자로 입력한다.
1.1.2.1.3 최적화 정도에 따라서 채점을 할 것인지 선택한다.
1.1.2.1.3.1 채점 방식 라디오 버튼에서 '최적화 정도'를 선택한다.
1.1.2.1.3.2 오답시 패널티를 주는 체크 박스 '오답시 패털티 부여'를 선택한다.
1.1.2.1.4 채점 언어에 대한 제한을 선택한다.
1.1.2.1.4.1 체크 박스에서 제한할 언어를 중복 선택한다.
1.1.2.2 문제의 내용을 에디터에 입력한다.
1.1.2.2.1 텍스트로 된 문제를 에디터에 입력한다.
1.1.2.2.2 사용할 jpg, png 파일을 삽입한다.
1.1.2.3 제출된 답안이 정답인지 확인할 수 있는 테스트 케이스를 입력한다.
1.1.2.4 답안의 형식을 입력한다.
1.1.2.4.1 답안 형태 라디오 버튼에서 답안이 문자열 형태임을 선택한다.
1.1.2.5 힌트 부여 여부를 선택한다.
1.1.2.5.1 힌트 부여 라디오 버튼에서 ‘yes’를 선택한다.
1.1.2.5.2 학생이 제출한 답안이 주어진 테스트 케이스 중 몇 퍼센트 이상의 답을 맞추면 정답을 위한 힌트를 줄 지를 힌트 제공 텍스트박스에 숫자로 입력한다.
1.1.2.6 대시보드의 표시 여부를 정한다.
1.1.2.6.1 대시보드 표시 라디오 버튼에서 ‘yes’를 선택한다.
1.1.3 문제를 제출한다.
1.1.3.1 <제출하기> 버튼을 누른다.
1.1.3.2 문제 목록으로 돌아간다.
1.2 Alternative Flow:
1.2.1 문제 수정 시 지정한 답안의 형태가 문자열이 아닐 경우
1.2.1.1 답안이 실수 형태임을 선택한다.
1.2.2 교수님 클라이언트에서 문제를 제출하던 중 <취소> 버튼을 누를 경우
1.2.2.1 문제 내용이 저장되지 않는다.
1.2.2.2 문제 목록 화면으로 돌아간다.
1.2.3 최적화 정도에 따라서 채점을 하지 않을 경우
1.2.3.1 채점 방법 라디오 버튼에서 ‘정답 시 통과‘를 선택한다.
1.2.3.2 제출 회수를 제한 할 경우
1.2.3.2.1 제출 횟수 제한값을 입력.
1.2.4 대시보드를 표시 하지 않을 경우
1.2.4.1 대시보드 표시 라디오 버튼에서 ‘no’를 클릭한다.
1.2.5 힌트를 부여 하지 않을 경우
1.2.5.1 힌트 부여 라디오 버튼에서 ‘no’를 선택한다.
1.2.6 교수님 클라이언트에서 문제를 제출하던 중 <임시저장> 버튼을 누를 경우
1.2.6.1 문제가 임시저장 된다.
1.2.6.2 문제목록으로 돌아간다.
1.3 Pre-condition
1.3.1 교수님으로 로그인이 되어 있다.
2.문제 수정
2.1 Basic Flow:
2.1.1 클라이언트가 <문제 수정> 버튼을 누른다
2.1.2 문제를 수정한다.
2.1.2.1 채점 기준을 수정한다.
2.1.2.1.1 마감 기한을 날짜 및 시간 형태로 텍스트로 입력한다.
2.1.2.1.2 오답을 제출할 때 마다 부여할 패널티를 숫자로 입력한다.
2.1.2.1.3 최적화 정도에 따라서 채점을 할 것인지 선택한다.
2.1.2.1.3.1 문제 채점 방식 라디오 버튼에서 '최적화 정도'를 선택한다.
2.1.2.1.4 채점 언어에 대한 제한을 선택한다.
2.1.2.1.4.1 체크 박스에서 제한할 언어를 중복 선택한다.
2.1.2.2 문제의 수정될 부분을 에디터에 입력한다.
2.1.2.2.1 텍스트로 된 문제를 에디터에 입력한다.
2.1.2.2.2 사용할 jpg, png 파일을 삽입한다.
2.1.2.3 제출된 답안이 정답인지 확인할 수 있는 테스트 케이스를 입력한다.
2.1.2.4 답안의 형식을 수정한다.
2.1.2.4.1 답안 형태 라디오 버튼에서 답안이 문자열 형태임을 선택한다.
2.1.2.5 힌트 부여 여부를 수정한다.
2.1.2.5.1 힌트 부여 라디오 버튼에서 ‘yes’를 선택한다.
2.1.2.5.2 학생이 제출한 답안이 주어진 테스트 케이스 중 몇 퍼센트 이상의 답을 맞추면 정답을 위한 힌트를 줄 지를 힌트 제공 텍스트박스에 숫자로 입력한다.
2.1.2.6 대시보드의 표시 여부를 정한다.
2.1.2.6.1 대시보드 표시 라디오 버튼에서 ‘yes’를 선택한다.
2.1.3 문제를 수정한다.
2.1.3.1 <수정하기> 버튼을 누른다.
2.1.3.2 문제 목록이 표시된다.
2.2 Alternative Flow:
2.2.1 문제 수정 시 지정한 답안의 형태가 문자열이 아닐 경우
2.2.1.1 답안이 실수 형태임을 선택한다.
2.2.2 교수 클라이언트에서 문제를 수정하던 중 <취소> 버튼을 누를 경우
2.2.2.1 문제 내용이 <수정> 버튼을 누르기 전으로 돌아간다..
2.2.2.2 문제 목록 화면으로 돌아간다.
2.2.3 최적화 정도에 따라서 채점을 하지 않을 경우
2.2.3.1 채점 방법 라디오 버튼에서 ‘정답 시 통과‘를 체크한다.
2.2.4 대시보드를 표시 하지 않을 경우
2.2.4.1 대시보드 표시 라디오 버튼에서 ‘no’를 클릭한다.
2.2.5 힌트를 부여 하지 않을 경우
2.2.5.1 힌트 부여 라디오 버튼에서 ‘no’를 선택한다.
2.3 Pre-condition
2.3.1 교수님으로 로그인이 되어 있다.
3.학생 답안 제출
3.1 Basic Flow:
3.1.1 학생 클라이언트에서 문제 목록 중 답안을 제출 할 문제의 <정답 제출> 버튼을 누른다.
3.1.2 답안을 제출한다.
3.1.2.1 답안 작성에 사용된 언어를 라디오 버튼에서 선택한다.
3.1.2.2 답안을 작성시에 폴더로 올릴 지 파일로 올릴 지 선택한다.
3.1.2.2.1 라디오 버튼의 '파일'을 선택한다.
3.1.2.2.2 위쪽의 제출함에 main에 해당하는 파일을 올린다.
3.1.2.2.3 아래쪽의 제출함에 그 외의 header파일이나 함수 선언에 해당하는 파일을 올린다.
3.1.2.3 <제출> 버튼을 누른다.
3.1.3 문제 목록 화면으로 돌아와 정답여부를 확인한다.
3.2 Alternative Flow:
3.2.1 학생 클라이언트에서 답안을 작성하던 중 <취소> 버튼을 누를 경우
3.2.1.1 에디터에 저장 된 내용을 임시로 저장한다.
3.2.2 에디터가 비어있을 때 <취소>버튼을 누를 경우
3.2.2.1 에디터를 저장하지 않고 문제 화면으로 돌아간다.
3.2.3 답안을 폴더로 올릴 경우
답안으로 제출할 폴더를 첨부파일로 선택한다.
선택한 첨부파일 내에서 main이 되는 파일을 선택한다.
3.4. Pre-conditions:
3.4.1 클라이언트에 학생이 로그인 되어있다.
4.학생이 채점 결과 확인
4.1 basic flow
4.1.1 채점 결과를 몰 문제의 채점 결과 버튼을 누른다.
4.1.2 선택한 문제의 채점 결과가 출력 된다.
4.2 alternative flow
4.2.1 선택한 문제의 채점 결과가 채점 중일 경우
4.2.1.1 최근 제출한 코드가 채점중임을 클라이언트에 메시지박스를 띄어서 알린다.
4.2.2 채점 실패시 테스트 input과 ouput을 보여주도록 설정되어 있을 경우
4.2.1.2 채점 결과에 어떤 input과 output에서 틀렸는지 클라이언트에 출력 한다.
4.3 pre-condition
4.3.1 학생으로 로그인 되어있다.
5.학생이 대시보드 확인하기
5.1 Basic Flow
5.1.1 학생 클라이언트에서 문제 목록 중 대시보드를 확인 할 문제의 <대시보드> 버튼을 누른다.
5.1.2 대시보드를 확인한다.
5.2 Alternative Flow:
5.2.1 교수 클라이언트에서 문제 제출 시 해당 문제의 대시보드를 볼 수 없도록 정했을 경우
5.2.1.1 해당 문제의 대시보드를 조회할 수 없음을 학생 클라이언트에게 알린다.
5.2.1.2 대시보드를 보이지 않고 문제 목록으로 돌아간다.
5.3 Pre-conditions:
5.3.1 클라이언트에 학생이 로그인 되어있다.
6.교수님이 채점 결과 확인
6.1 basic flow
6.1.1 문제 목록이 화면에 표시된다.
6.1.2 문제 목록에서 선택할 문제의 채점 결과 버튼을 누른다.
6.1.3 선택한 문제의 채점 결과가 출력 된다.
6.2 pre-condition
6.2.1 교수님으로 로그인 되어있다.
7.교수님 로그인
7.1 basic flow
7.1.1 id 입력 칸을 누른다.
7.1.2 id를 입력한다.
7.1.3 비밀번호 입력 칸을 누른다.
7.1.4 비밀번호를 입력한다.
7.1.5 로그인 버튼을 누른다.
7.1.6 문제목록이 나타난다.
7.2 exception flow
7.2.1 인증이 안될 경우
7.2.1.1 인증이 안될 경우 로그인 실패 메시지 박스를 띄운다.
7.3 pre-conditions
7.3.1 학교 데이터베이스에서 인증확인 서비스를 제공한다.
8.학생 로그인
8.1 basic flow
8.1.1 학번 입력 칸을 누른다.
8.1.2 학번을 숫자로 입력한다.
8.1.3 비밀번호 입력 칸을 누른다.
8.1.4 비밀번호를 입력한다.
8.1.5 로그인 버튼을 누른다.
8.1.6 문제목록이 나타난다.
8.2 exception flow
8.2.1 인증이 안될 경우
8.2.1.1 인증이 안될 경우 로그인 실패 메시지 박스를 띄운다.
8.3 alternative flow
8.3.1 인증 실패가 3번 초과일 경우
8.3.1.1 비밀번호를 찾기 메시지 박스를 띄운다.
8.3.1.2 종합정보시스템 비밀번호찾기 페이지를 띄운다.
8.4 pre-conditions
8.4.1 학교 데이터베이스에서 인증 확인 서비스를 제공한다.
9.임의의 사람 맞은 소스 확인하기
9.1 basic flow
9.1.1 로그인된 학생이 <문제 목록>을 클릭한다.
9.1.2 원하는 문제의 <제출 현황>을 클릭한다.
9.1.3 해당 문제에 모든 사람의 제출 결과를 출력한다.
9.1.4 문제를 맞춘 사람의 <소스 보기>를 누른다.
9.1.5 선택한 소스 코드가 화면에 출력된다.
9.2 alternative flow
9.2.1 <소스 보기>를 클릭한 사람이 해당 문제를 과거에 한번도 맞추지 못했다.
9.2.1.1 <소스 보기>버튼이 보이지 않는다.
9.2.2 해당 문제가 마감 기한이 지나지않았다.
9.2.2.1 <소스 보기>버튼 대신 '마감 기한 전'임을 알린다.
9.3 pre-condition
9.3.1 학생으로 로그인 되어있다.
9.3.2 해당 문제를 한번이라도 과거에 맞춘 기록이 있다.
9.3.3 해당 문제의 마감 기한이 지났다.
10.제출된 코드를 서버가 채점
10.1 basic flow
10.1.1 서버에 채점 할 소스코드가 네트워크로 입력된다.
10.1.2 서버 내에 샌드박스를 생성한다.
10.1.3 소스코드를 샌드박스에서 컴파일 & 실행한다.
10.1.4 해당 문제의 제약조건과 정답을 DB에서 로드한다.
10.1.5 문제의 제약조건과 정답이 맞는지 채점 프로그램이 비교한다.
10.1.6 최종 결과를 DB에 기록한다.
10.2 alternative flow
10.2.1 서버에 존재하지 않는 문제에 해당하는 정답 코드가 제출된다.
10.2.1.1 클라이언트에 해당 문제가 없음을 알린다.
10.2.2 컴파일에 실패한다.
10.2.2.1 클라이언트에 컴파일 실패 메시지박스를 띄운다.