CPT T1 Stage_2040 ㅊㅇㅌㅎㅇㄹㅇ 201111334 김강욱 / 201211339 김진욱 (Leader) 201312243 김동권 / 201510411 이소영
INDEX State Chart Diagram Revise Plan Refine System Architecture Define Real Use Cases Define Reports, UI, Storyboards Define Interaction Diagram Define Design Class Diagrams Design Traceability Analysis
1 Revise Plan Project Scope How to guarantee?
1 Revise Plan Functional Requirements Version 2 Version 3 Function Description Function Description Open File 엑셀파일을연다. Open File 엑셀파일을열고조건에맞게프로그램내부에저장 Parsing File 엑셀파일을읽어프로그램내부에저장. Modify Weight 가중치수정 Modify Weight 가중치수정 Input Essential Test Case 중요테스트케이스입력 Input Essential Test Case 중요테스트케이스입력 Compare with Test Case 프로그램에의해조합된테스트케이스와사용자가입력한중요테스트 Compare with Test Case 프로그램에의해조합된테스트케이스와사용자가입력한중요테스트 케이스를비교 케이스를비교 Modify Constraints 제한조건수정 Modify Constraints 제한조건수정 Make Test Case 테스트케이스생성 Make Test Case 테스트케이스생성 Arrange by Weight Average 가중치평균에따른정렬 Arrange by Weight Average 가중치평균에따른정렬 Make Final Test Case File 최종테스트케이스파일생성 Make Final Test Case File 최종테스트케이스파일생성
1 Revise Plan Domain Model Version 1 Version 2
1 Revise Plan Use Cases Version 2 Version 3
2 Define Real Use cases Open File Use Case Open File Actor User Purpose Excel File을열어서프로그램에넣어준다. Overview Excel File을열고, Excel File로부터 Category별 Representative Value의 정보를읽고각정보를 Type에맞는변수에넣어준다. Type Primary and Essential Cross Reference System Function: R 1.2 Pre-Requisites N/A UI Widgets Sample UI 1.2 Sample UI 1.3 Typical Courses of Events (A): Actor, (S): System 1. (A) User가 [ 파일열기버튼 ] 을누른다. 2. (S) [ 다이얼로그박스 ] 를띄운다. 3. (A) [ 다이얼로그박스 ] 에서파일을선택한다. 4. (S) 선택한파일을불러온다. 5. (S) Excel file의 Representative Value와해당 Value의 Index, Weight, Constraints의정보를읽는다. 6. (S) 확인한정보를각각지정해둔변수배열에넣어준다. 7. (S) [ 파일이름 ] 에파일명을보여준다. Alternative Courses of Events Exceptional Courses of Events 4. (S) 파일의확장자명이.xlsx 혹은.xls 와다르면 파일확장자명오류입니다 라는오류메시지를출력한다. 4. (S) 확장자명이외의오류로파일을가져올수없을경우 파일열기오류입니다 라는오류메시지를출력한다. 5. (S) 읽어온파일에정보가하나라도없으면오류난부분의행열값을띄워준다. 5. (S) 읽어온파일의양식이다르면 양식오류입니다 라는오류메시지를출력한다 N/A
2 Define Real Use cases Modify Weight Use Case Modify Weight Actor User Purpose Representative Value의가중치를변경한다. Overview Representative Value에할당되어있는가중치를초기값과다르게변경 한다. Type Primary and Essential Cross Reference System Function: R 5.2 Use case: Arrange by Weight Average Pre-Requisites Test Case가조합되어있어야한다. UI Widgets Sample UI 1.2 Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A): Actor, (S): System 1. (A) User가수정할 Representative Value의 Weight 값을 [ 테스트케이스테이블 ] 에입력한다 2. (S) User로부터수정요청받은 Representative Value의 weight 변수를사용자가입력한값으로갱신한다. 3. (S) 수정요청받은 Representative Value가속해있는 Test Case의 We ight를다시계산한다. 1. (A) 양의정수가아닌수정값을입력하면 System이재입력을요청한다. N/A
2 Define Real Use cases Input Essential Test Case Use Case Actor Input Essential Test Case User Purpose 중요하다고생각되는 Test case 를입력한다. Overview Type Representative Value 의 Index 를이용해 Test case 조합을프로그램에 입력하고 Essential Test case 목록에추가한다. Primary and Essential Cross Reference System Function: R 3.2 Use case: Compare with Test Case Pre-Requisites 파일이파싱된상태여야한다. UI Widgets Sample UI 1.1 Typical Courses of Events Sample UI 1.2 (A): Actor, (S): System 1. (A) 100, 101, 200과같이 Representative Value의 Index의조합을 [ 중요테스트케이스입력창에입력한다. 2. (S) index와일치하는 Representative Value를확인하고, 이를제한조건을고려하지않고, 단순조합하여중요 Test Case를생성한다. Alternative Courses of Events Exceptional Courses of Events 3. (S) 조합된중요 Test Case를 [ 중요테스트케이스창 ] 에출력한다. 2. (S) User가유효하지않은 Index를추가했을경우 유효하지않은 ind ex입니다. 라는오류메시지를출력한다. N/A
2 Define Real Use cases Compare with Test Case Use Case Compare with Test Case Actor N/A Purpose Essential Test case 와조합된 Test Case를비교한다. Overview 프로그램에의해조합된 Test Case와사용자가입력한중요 Test Case를비교하여누락여부와원인을확인한다. Type Primary and Essential Cross Reference Functional Requirement: R 3.1 Use Case: Input Essential Test Case Pre-Requisites 1. 중요 Test Case가입력되어야한다. 2. Test Case가조합되어있어야한다. UI Widgets Typical Courses of Events (A): Actor (S): System 1. (S) 중요 Test Case와프로그램에의해조합된 Test Case를비교하여중요 Test Case와일치하는조합된 Test Case를자주색으로표시한다 2. (S) 중요 Test Case와프로그램에의해조합된 Test Case를비교하여누락되었다면누락된중요 Test Case를노랑색으로표시한다. 3. (S) 중요 Test Case가누락된원인이되는제한조건을확인해서제한조건을빨간색으로표시한다. Alternative Courses of Events Exceptional Courses of Events N/A N/A
2 Define Real Use cases Modify Constraints Use Case Modify Constraints Actor User Purpose 제한조건을수정한다. Overview Representative Value의제한조건을수정한다. Type Primary and Essential Cross Reference Functional Requirement: R 5.1 Use Case: Make Test Case Pre-Requisites Test Case가조합되어있어야한다. UI Widgets Sample UI 1.2 Typical Courses of Events (A): Actor (S): System 1. (A) User가수정할 Representative Value의 Constraints 값을 [ 테스트케이스테이블 ] 에입력한다. 2. (S) User로부터수정요청받은 Representative Value의 Constraints 변수를사용자가입력한값으로갱신한다. Alternative Courses of Events Exceptional Courses of Events 1. 유효하지않은 Constraints 를입력하면 유효하지않은 Constraints 입니다. 라는오류메시지를출력한다. N/A
2 Define Real Use cases Make Test Case Use Case Make Test Case Actor User Purpose Test Case를생성한다. Overview 설정된제한조건을바탕으로 Test Case를생성한다. Type Primary and Essential Cross Reference Functional Requirement: R 5.2 Use Case: Arrange by Weight Average Pre-Requisites 파일이파싱되어있어야한다. UI Widgets Sample UI 1.2 Typical Courses of Events (A): Actor (S): System 1. (A) [ 조합버튼 ] 을누른다. 2. (S) 제한조건에따라 Test Case 를조합한다.. Alternative Courses of Events Exceptional Courses of Events N/A N/A
2 Define Real Use cases Arrange by Weight Average Use Case Arrange by Weight Average Actor N/A Purpose Test Case의가중치평균에따라재정렬한다. Overview User가수정한가중치를반영하여 Test Case를재정렬한다. Type Primary and Essential Cross Reference Functional Requirement: R 2.1, R 5.1 Use Case: Modify Weight, Make Test Case Pre-Requisites Test Case가조합되어있어야한다. UI Widgets Sample UI 1.2 Typical Courses of Events (A): Actor (S): System 1. (S) Test Case를구성하는 Representative Value 들의가중치의평균을구한다. 2. (S) Test Case의가중치평균을기준으로내림차순정렬한다. 3. (S) Test Case를정렬된순서로 [ 테스트케이스테이블 ] 에출력한다. Alternative Courses of Events Exceptional Courses of Events 2. (S) 같은가중치를가진 Test Case 가있으면 Representative Value 의 Index 순으로출력한다. N/A
2 Define Real Use cases Make Final Test Case File Use Case Make Final Test Case File Actor User Purpose 최종 Test Case 파일을생성한다. Overview User가최종적으로완성한 Test Case 파일을생성한다. Type Primary and Essential Cross Reference Functional Requirement: R 5.1 Use Case: Make Test Case Pre-Requisites Test Case가조합되어있어야한다. UI Widgets Sample UI 1.2 Sample UI 1.3 Typical Courses of Events (A): Actor (S): System 1. (A) User가 [ 내보내기버튼 ] 을누른다.. 2. (S) [ 다이얼로그박스 ] 를띄운다. 3. (A) [ 다이얼로그박스 ] 에서최종 file 을저장할디렉토리를선택하고파일명을입력한다. 4. (S) 해당디렉토리에 Test Case List Fil을.xlsx 형태로출력한다. Alternative Courses of Events N/A Exceptional Courses of Events N/A.
3 State Chart Diagram Open File
4 Define Reports, UI, Storyboards UI 번호 이름 타입 설명 1 배경이미지 Image 전체배경이미지 2 테스트케이스창 Image 테스트케이스창배경이미지 3 중요테스트케이스창 Image 중요테스트케이스창배경이미지
4 Define Reports, UI, Storyboards UI 번호이름타입설명 4 파일열기버튼 Button 파일을열때사용하는버튼 버튼을누르면파일을열수있는 Dialogue Box 가나타난다
4 Define Reports, UI, Storyboards UI 번호이름타입설명 불러온파일의이름 5 파일이름 String 글자수 50 글자 (50 글자초과한경우글자크기축소 ) Default 공백으로표시
4 Define Reports, UI, Storyboards UI 번호이름타입설명 6 조합버튼 Button 7 내보내기버튼 Button 테스트케이스를조합해주는버튼, 버튼을누르면테스트케이스를조합해서출력해준다. 파일을내보낼때사용하는버튼버튼을누르면파일을저장할수있는 Dialogue Box가나타난다.
4 Define Reports, UI, Storyboards UI 번호이름타입설명 8 테스트케이스테이블 Table, ScrollView 조합된테스트케이스를보여주는테이블 9 중요테스트케이스테이블 Table, ScrollView 중요테스트케이스를보여주는테이블 10 중요테스트케이스입력창 EditText 중요테스트케이스를인덱스형태로입력하는창 인덱스를입력하고엔터키를누르면된다.
4 Define Reports, UI, Storyboards UI 번호이름타입설명 11 다이얼로그박스 window 파일열기와저장이가능한다이얼로그박스
5 Refine System Architecture
6 Define System Sequence Diagram Open File
6 Define System Sequence Diagram Modify Weight
6 Define System Sequence Diagram Input Essential Test Case & Compare with Test Case
6 Define System Sequence Diagram Modify Constraints
6 Define System Sequence Diagram Make Test Case & Arrange by Weight Average
6 Define System Sequence Diagram Make Final Test Case File
Define Design Class Diagrams 7
8 Design Traceability Analysis Operation in sequencediagram Operation in interection diagram Method Class 1: enterfileinfo() reqopenfile() reqopenfile(): void 2: reqopenfile() OpenDiaologuebox() reqmodifyweight(): void 3: enterweightinfo() show reqessential(): void 4: reqmodifyweight() enterfileinfo reqconstraints(): void ManagementSystem 5: enteressentialinfo() openfile() reqmakecase(): void 6: reqessential() printfilename reqexport(): void 7: enterconstraintsinfo() enterweightinfo comparetestcase(): void 8: reqconstraints() reqmodifyweight() arrangeweightaverage(): voidmodifyweightdata(in int testcasenum, in int valuenum, in int weight): void 9: reqmakecase() modifyweightdata(int testcasenum, int value num, int weight) exportfile(): void 10: enterexportinfo() getnode(int index) modifyweightdata(in int testcasenum, in int valuenum, in int weight): void 11: reqexport() getvaluenode() modifyconstraints(in int testcasenum, in int valuenum, in String constraints): void CaseController setweight(int num) inserttestcase(): void show calallcase(): int enteressentialcaseinfo insertessentialtestcase(in String index): void reqessential() notifycaseinfo(): void insertessentialtestcase(string index) calculateweight(): void makeessentialtestcase(int[] index) maketestcase(): boolean parsinginput(string index) getweight(): int TestCase comparetestcase() getmatch(): int setexistence(int existence) setmatch(in int match) setcausevalue(int num) makeessentialcase(in int[] index) checkconstraints() parsinginput(in String index): int array notifycaseinfo() checkconstraints(): void getexistence() getexistence(): int EssentialTestCase getcausevalue() setexistence(in int existence) enterconstrainsinfo getcausevalue(): int reqconstraints() setcausevalue(in int num) modifyconstraints(int testcasenum, int valuenum, String constraints) getsize(): int getnode(int index) addlast(in RepresentativeValue node) Linkedlist getvaluenode() getnode(in int index): RepersentativeValue setconstraints(string const) opendialoguebox(): void reqmakecase() openfile(): void makevalue() savedialoguebox(): void getfiledata getindexarray(): int array File inserttestcase() getweight(): int array maketestcase() getname(): String array getnode(int index) getconstraints(): String array getvaluenode(int index) makevalue(): void setstate() getvaluenode(): RepersentativeValue NodeFactory addlast(node) getindex(): int makefinished = maketestcase() calallcase() calculateweight() arrangeweightaverage() show reqexport() savedialoguebox() show enterexportinfo exportfile() setindex(in int num): void getweight(): int setweight(in int num): void getname(): String setname(in String name): void getconstraints(): String setconstraints(in String const): void getstate(): int setstate(in int state) input ouput RepresentativeValue GUI