OSP Stage 2040 < Design > 그놈! Clone Checker Project Team T4 Date 2016-04-12 Team Information 201411258 강태준 201411265 김서우 201411321 홍유리 Team 4 1
Contents Activity 2041. Define Real s Activity 2042. Define Reports UI, and Storyboards Activity 2043. Refine System Architecture Activity 2044. Define Interaction Diagrams Activity 2045. Define Design Class Diagrams Activity 2046. Design Traceability Analysis Team 4 2
Activity 2041. Define Real s Display Main User 프로그램을시작한다. Overview 프로그램의첫메인화면을보여준다. Primary and Essential Cross Reference System Function : R 1.1 Typical Courses of Events (A) :, (S):System 1. (A) 사용자가프로그램을실행한다. 2. (S) 프로그램의메인 UI를띄운다.( 그림 #1) Alternative Courses of Events Exceptional Courses of Events Input Path User 유사도검사를진행할대상의위치파악. Overview 유사도검사를할폴더의경로를입력한다. Primary and Essential Cross Reference : Setting Files System Function : R 1.2, R 1.2.1 Typical Courses of Events (A) :, (S):System 1. (A) 경로를입력한뒤 ( 그림 #1-A), 입력버튼 ( 그림 #1-B) 클릭. 2. (S) input_path(path) 실행 3. (S) 해당폴더의모든소스파일의주석을제거한다. 4. (S) 해당폴더의모든소스파일의대문자를소문자로통합한다. 5. 완료되면화면에알림을띄운다.( 그림 #3 A) Alternative Courses of Events 2. (S) 해당경로에오류가있다면알림을띄운다.( 그림 #2 A) Exceptional Courses of Events Team 4 3
Setting Files System 소스코드파일정리 Overview 소스코드의주석을제거하고, 소문자로통일한다. Primary and Essential Cross Reference System Function : R 1.2.1 Typical Courses of Events (A) :, (S):System 1. (S) 파일개수만큼 setting_files(file f1) 을 f1자리의파일을바꿔가며실행 2. (S) setting_files(file f1) 에서 f1.open() 실행 3. (S) while(buf!=null){ strbuf[i].append(reader.readline())}; strbuf 원소 1개에소스코드파일 1개의내용전체저장 4. (S) // 뒷부분을다지움 ( 함수의매개변수로 // 가들어가는경우를걸러내기위해 // 뒤에 ) 가나오나검사후삭제 /* 가나온다면 */ 가나오는부분까지찾아서다지움 Alternative Courses of Events Exceptional Courses of Events -> strbuf 각원소안에존재하는모든주석제거 5. (S) while(strbuf[i][j]!=null) { if( A <= strbuf[i][j] && strbuf[i][ j] <= Z ) strbuf[i][ j] +=32} 전체코드에서모든 ( A ~ Z ) 찾아서 +32 -> 모든대문자소문자로변경 Start Analyze User 유사도검사시작 Overview 유사도검사를시작한다. Primary and Essential Cross Reference : Analyze Change Name, Analyze Loop, Analyze Conditional, Analyze Function, Calculate Similarity System Function : R 2.1.0, R 2.2.1, R 2.2.2, R 2.2.3, R 3.1 Typical Courses of Events (A) :, (S):System 1. (A) Start 버튼 ( 그림 #1 C) 클릭 Team 4 4
Alternative Courses of Events Exceptional Courses of Events 2. 분석진행중이라는알림 ( 그림 #4 A) 을띄운다. 3. (S) start() ->start_flow() ->counting() 4. (S) 변수, 함수, 조건문, 반복문의개수를세어줌. 5. (S) AnalysisSystem as = new AnalysisSystem(); AnalysisSystem() 에서 Sourcecode[] 저장 6. (S) as.analyze_codes() 7. (S) SetupSystem에서받아온 strbuf를분석. 8. (S) SourceCode객체, 그안의 Variable, Function, Loop, Conditional 객체생성 Analyze Change Name 유사도분석 Overview 변수명, 함수명을변경하였는지검사한다. Primary and Essential and Hidden Cross Reference Functional Requirement : R 2.2.0 Typical Courses of Events (A) :, (S):System 1. (S) change_name() For(j=0;j<SourceCode_num;j++) If (SourceCode[i].Variable[ j].numofuse == SourceCode[i+1].Variable[j].numOfuse) Check[0]++; 두소스코드상에서각각변수와함수의배열을만들고, 각변수, 함수의빈도수를두소스코드사이에서비교한다. Alternative Courses of Events Exceptional Courses of Events Analyze Loop 유사도분석 Overview 반복문의유사도를검사한다. Primary and Essential and Hidden Team 4 5
Cross Reference Functional Requirement : R 2.2.1 Typical Courses of Events (A) :, (S):System 1. (S) analyze_loop() 반복문의종류변경 (for->while,while->for) 을검사한다 { } 안의내용확인 {} 안의내용은변수, 함수의이름변경말고는알고리즘상의변화이므로이는유사도에반영이되지않는다. 따라서, 아스키코드 33번값 (! ) 부터 126번 (~) 사이의값의개수 ( 알파벳대소문자, 숫자, 기본적인특수문자포함 ) 가각각일치시 Check[1]++; -> 반복문안의 body의내용을비교 Alternative Courses of Events Exceptional Courses of Events Analyze Conditional 유사도분석 Overview 조건문의유사도를검사한다. Primary and Essential and Hidden Cross Reference Functional Requirement : R 2.2.2 Typical Courses of Events (A) :, (S) : System 1. (S) analyze_cond() 반복문과마찬가지로조건문 (if->switch, switch->if) 를검사한다. 조건문의 body( 내용 ) 부분은 switch나 if나같기때문에,body 부분을아스키코드 33번값 (! ) 부터 126번 (~) 사이의값의개수 ( 알파벳대소문자, 숫자, 기본적인특수문자포함 ) 가각각일치시 ->Check[2]++; Alternative Courses of Events Exceptional Courses of Events Analyze Function Team 4 6
유사도분석 Overview 함수의분기를검사한다. Primary and Essential and Hidden Cross Reference Functional Requirement : R 2.2.3 Typical Courses of Events (A) :, (S) : System 1. (S) analyze_func() 1개의함수가 2개로분해되었거나, 2개의함수를 1개 로합쳐놓은것을검사 소스코드 1개의모든함수의 {} 안의내용을합쳐놓고,5번과 비슷한 방법으로, 특수문자, 숫자, 알파벳의 개수가 일치시 Check[3]++; Alternative Courses of Events Exceptional Courses of Events Overview Cross Reference Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events Calculate Similarity System 유사도의계산및그놈파일찾기코드분석을바탕으로유사도를계산하여저장하고이를바탕으로중심이되는그놈파일을찾는다. Primary and Essential : Analyze Code System Function : R 3.1 (A) :, (S):System 1. (S) cal_similarity(check) Check 배열각각의원소에가중치를적용하여유사도를계산한다. 2. (S) write_result() 각소스코드끼리어떤부분이유사하고어떤식으로유사도를도출해냈는지총분석결과를 text파일로저장. Show X File Team 4 7
User 그놈! 파일확인 Overview 그놈! 파일의파일명을본다. Primary and Essential Cross Reference : Calculate Similarity System Function : R 3.2 Typical Courses of Events (A) :, (S):System 1. (A) Show 그놈 _File 버튼클릭 ( 그림 #1 D) 2. (S) showmessage(2); ->에게 X File name 출력 ( 그림 #6-A) Alternative Courses of Events Exceptional Courses of Events Show Detail User 각각의유사도검사결과확인 Overview 각각의유사도검사결과를확인한다. Primary and Essential Cross Reference : Calculate Similarity System Function : R 3.3 Typical Courses of Events (A) :, (S):System 1. (A) Show Detail 버튼 ( 그림 #1 E) 클릭 2. (S) 유사도검사의기록이담긴 txt 파일을보여준다.( 그림 #7-A) Alternative Courses of Events Exceptional Courses of Events Exit User 프로그램종료 Overview 프로그램을종료한다. Primary and Essential Cross Reference System Function : R 3.3 Team 4 8
Typical Courses of Events (A) :, (S):System 1. (A) Exit 버튼 ( 그림 #1-F) 클릭 2. (S) 프로그램을종료할것인지다시물어본다. 3. (A) 확인 ( 그림 #7-B) 버튼을누르면종료한다. Alternative Courses of Events 3. (A) 취소 ( 그림 #7-C) 버튼을누르면메인으로돌아간다. Exceptional Courses of Events Activity 2042. Define Reports UI, and Storyboards [ 그림 #1] [ 그림 #2] Team 4 9
[ 그림 #3] [ 그림 #4] Team 4 10
[ 그림 #5] [ 그림 #6] Team 4 11
[ 그림 #7] [ 그림 #8] Team 4 12
Activity 2043. Refine System Architecture Activity 2044. Define Interaction Diagrams [ Display Main ] Team 4 13
[ Input Path ] [ Start Analyze ] Team 4 14
[ Show X File ] [ Show Detail ] Team 4 15
[ Exit ] Activity 2045. Define Design Class Diagrams Team 4 16
Activity 2046. Design Traceability Analysis Team 4 17