SW Verification

Similar documents
JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - CSharp-10-예외처리

JVM 메모리구조

슬라이드 1

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint 프레젠테이션

교육자료

JAVA PROGRAMMING 실습 05. 객체의 활용

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

JUNIT 실습및발표

Cluster management software

PowerPoint 프레젠테이션

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

02 C h a p t e r Java

PowerPoint 프레젠테이션

PowerPoint Presentation

C++ Programming

12-file.key

PowerPoint Presentation

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

자바 프로그래밍

1

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

PowerPoint Presentation

Modern Javascript

PowerPoint Presentation

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

gnu-lee-oop-kor-lec06-3-chap7

Secure Programming Lecture1 : Introduction

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

PowerPoint Presentation

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

슬라이드 1

Microsoft PowerPoint - 2강

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft Word - java19-1-midterm-answer.doc

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - C++ 5 .pptx

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

제11장 프로세스와 쓰레드

PowerPoint 프레젠테이션

쉽게

Semantic Consistency in Information Exchange

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Presentation

유니티 변수-함수.key

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

rmi_박준용_final.PDF

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract

Microsoft PowerPoint - Chapter 6.ppt

Design Issues

쉽게 풀어쓴 C 프로그래밍

mytalk

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

쉽게 풀어쓴 C 프로그래밍

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

PowerPoint Presentation

슬라이드 1

3ÆÄÆ®-11

Microsoft PowerPoint - 14주차 강의자료

쉽게 풀어쓴 C 프로그래밍

신림프로그래머_클린코드.key

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Microsoft PowerPoint - Lect04.pptx

17장 클래스와 메소드

JMF3_심빈구.PDF

비긴쿡-자바 00앞부속

설계란 무엇인가?

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

PowerPoint Template

2002년 2학기 자료구조

5장.key

歯JavaExceptionHandling.PDF

Javascript.pages

Spring Boot/JDBC JdbcTemplate/CRUD 예제

MasoJava4_Dongbin.PDF

Microsoft PowerPoint - Chap12-OOP.ppt

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

Microsoft PowerPoint 장강의노트.ppt

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint 프레젠테이션

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

Transcription:

SW Verification 201211387 하헌규 201211337 김재현 201211354 성현구 201211369 이병찬

목차 Specification Review (2nd) System Test (2nd) Brute Force Test Category Partitioning Test Pairwise Combination Test Result & CTIP Static Analysis JDepend Code Scroll Findbugs SonarCloud 18-1 소프트웨어검증 T2 2

Test Model 2018 년 6 월 1 일업로드된파일을기준으로진행 ( 이후 SMA 팀의지속적인변경발생 ) 18-1 소프트웨어검증 T2 3

Specification Review 전체적인문서완성도우수 미비했던형식정의가해결되고명세됨 수수료에대한명세를표기할수있는문서를찾지못한듯 18-1 소프트웨어검증 T2 4

System Test - Brute Force Test 동일한테스트결과 Pass 의비율이 65% 에서 91% 로증가 18-1 소프트웨어검증 T2 5

System Test - Category Partitioning Test 18-1 소프트웨어검증 T2 6

System Test - Category Partitioning Test 1,813,985,280,000 7,776,025 [Error] 43,241 [Single][Error] 89 [Single][Error][Property] 18-1 소프트웨어검증 T2 7

System Test - Category Partitioning Test 테스트결과 Pass 의비율이 80% 에서 91% 로증가 18-1 소프트웨어검증 T2 8

System Test - Pairwise Test 테스트결과 Pass 의비율이 78% 에서 94% 로증가 18-1 소프트웨어검증 T2 9

System Test 오류 복권당첨 : 복권의주차형식을 0 이상인정수로정의하였으나 0 및현재존재하지않는주차를정상적인형식으로인식하고, 복권번호의형식도 1~45까지로정의되었으나 0을정상적인형식으로인식한다. 날짜 : 경계값을무시한다 (ex. 각날짜의 00시 00분을무시한다 ) 메시지 : Invalid와 Incorrect에따른행동이일관적이지않다. 언어변경 : 언어변경시 Admin이로그아웃된다. 18-1 소프트웨어검증 T2 10

System Test - Result System Test 결과 18-1 소프트웨어검증 T2 11

System Test - Result Brute Force Test : 65%(28/43) 91%(39/43) Category Partitioning Test : 80%(71/88) 91%(81/89) Pairwise Combination Test : 74% (25/32) 94%(32/34) 18-1 소프트웨어검증 T2 12

System Test in CTIP 18-1 소프트웨어검증 T2 13

Static Analysis - JDepend JDepend Summary 18-1 소프트웨어검증 T2 14

Static Analysis - JDepend 18-1 소프트웨어검증 T2 15

Static Analysis - JDepend 추상화된클래스안정성이높은것이권장된다. = Ce 가적고 Ca 는많은편이좋다. = 다른클래스의영향을적게받는것이좋다. 구체적인클래스안정성이낮은것이권장된다. = Ce 가많고 Ca 는적은편이좋다. = 다른클래스에영향을적게미치는것이좋다. 18-1 소프트웨어검증 T2 16

Static Analysis - JDepend Instability Abstraction Abstraction Instability Metrics 18-1 소프트웨어검증 T2 17

Static Analysis - JDepend 1/(2+1) = 0.33 D=1-(A+I)=0.67 5/(1+5) = 0.83 D=1-(A+I)=0.17 com.swad.cppatm 패키지가더이상적 com.swad.cppatm.exception 패키지는추상화하거나 Instability 를높여야함 18-1 소프트웨어검증 T2 18

Static Analysis - JDepend - 상호의존적인관계 - 재사용성을저해함 - 코드변경시도미노효과발생가능 - 메모리누수발생가능 18-1 소프트웨어검증 T2 19

Static Analysis Code Scroll 3874 개규칙위반발견 18-1 소프트웨어검증 T2 20

Static Analysis Code Scroll EGOV JAVA SUN CERT_SECURE_CODING EGOV_01_EMPTYCATCHBLOCK JAVA_44 SUN_13 ERROR 매우높음 EGOV_12_SWITCHSTMTSSHOUDHAVEDEFAULT JAVA_65 SUN_10 ERROR00-J 높음 EGOV_14_FINALFIELDCOULDBESTATIC JAVA_61 SUN_26 ERROR02-J 낮음 EGOV_25_SYSTEMPRINTLN JAVA_63 SUN_27 ERROR08-J 매우낮음 EGOV_26_VARIABLENAMINGCONVENTIONS JAVA_64 SUN_24 NUM EGOV_28_AVOIDARRAYLOOPS JAVA_71 SUN_22 NUM02-J EGOV_33_STRINGTOSTRING JAVA_72 SUN_20 NUM06-J EGOV_37_UNUSEDPRIVATEFIELD JAVA_68 SUN_19 VNA EGOV_39_UNUSEDFORMALPARAMTER SUN_17 VNA04-J SUN_14 OBJ SUN_03 OBJ05-J SUN_05 OBJ01-J SUN_06 OBJ03-J SUN_07 OBJ04-J SUN_08 META SUN_11 META04-J META05-J 18-1 소프트웨어검증 T2 21

Static Analysis - Findbugs Summary 18-1 소프트웨어검증 T2 22

Static Analysis - Findbugs 번호 탐지유형 사례및설명 1 Bad practice 클래스명명규칙. Null 처리실수등개발자의나쁜습관을탐지 2 Correctness 잘못된상수, 무의미한메소드호출등문제의소지가있는코드를탐지 3 Dodgy code int의곱셈결과를 long으로변환하는등부정확하거나오류를발생시킬수있는코드를탐지 4 Experimental 메소드에서생성된 stream이나리소스가해제하지못한코드를탐지 5 Internatinalization Default 인코딩을지정하지않은경우등지역특성을고려하지않은코드탐지 6 Maclicious codevulnerability 보안코드에취약한가변적인배열이나콜렉션, Hashtable 탐지 7 Multithreaded correctness 멀티쓰레드에안전하지않은객체사용등을탐지 8 Performance 미사용필드, 비효율적객체생성등성능에영향을주는코드를탐지 9 Security CSS, DB 패드워드누락등보안에취약한코드를탐지 18-1 소프트웨어검증 T2 23

Static Analysis - Findbugs DE DE_MIGHT_IGNORE: Method might ignore exception 예외처리를하지않음. 빈 catch 절이존재. OS RV SW OS_OPEN_STREAM: Method may fail to close stream stream close 하지않음. OS_OPEN_STREAM_EXCEPTION_PATH: Method may fail to close st stream 예외처리를하지않음 ream on exception RV_RETURN_VALUE_IGNORED_BAD_PRACTICE: Method ignores ex 확인되지않은값을리턴함. ceptional return value SW_SWING_METHODS_INVOKED_IN_SWING_THREAD: Certain swin Swing thread를호출해야함. g methods needs to be invoked in Swing thread RpC RpC_REPEATED_CONDITIONAL_TEST: Repeated conditional tests 조건부테스트가중복수행됨. Dm DM_STRING_TOSTRING: Method invokes tostring() method on a Str ing DM_DEFAULT_ENCODING: Reliance on default encoding String 이 tostring() 을사용할필요가없음. byte to string or string to byte 변환을수행할때 Charset 객체를명시적으로지정해야함. EI EI_EXPOSE_REP: May expose internal representation by returning reference to mutable object 객체의필드중하나에저장된변경가능한객체값에대한참조를반환하면객체의내부표현이노출됨. MS MS_SHOULD_BE_FINAL: Field isn't final but should be static 변수가 public 이라서위험. Final 을명시하여야함. 18-1 소프트웨어검증 T2 24

Static Analysis - Findbugs LI LI_LAZY_INIT_STATIC: Incorrect lazy initialization of static field multi-thread 환경에서초기화를보장하지못함. SIC DB SIC_INNER_SHOULD_BE_STATIC_ANON: Could be refactored into a 내부클래스이지만, 이를만든객체에대한내부참조를사용하 named static inner class 지않음. DB_DUPLICATE_SWITCH_CLAUSES: Method uses the same code fo 코드가중복사용됨. r two switch clauses PZLA_PREFER_ZERO_LENGTH_ARRAYS: Consider returning a zero PZLA length array rather than null null 을사용하는것이적절한지검토해봐야함. 0 을사용하는게나은경우가있다. REC REC_CATCH_EXCEPTION: Exception is caught when Exception is no t thrown 하나의 catch 로여러예외를처리하고있음. Throw 하지않은 Exception 까지 catch 하려함. SF UwF SF_SWITCH_NO_DEFAULT: Switch statement found where default case is missing SF_SWITCH_FALLTHROUGH: Switch statement found where one ca se falls through to the next case UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR: Field not initiali zed in constructor but dereferenced without null check swtich 문에 default case 가없음. swtich 문에특정 case 가수행후, 다음 case 로 fall though 중임. 생성시초기화되지않은값이 null check 없이참조해제됨. 18-1 소프트웨어검증 T2 25

Static Analysis - SonarCloud Summary 18-1 소프트웨어검증 T2 26

Static Analysis - Cyclomatic Complexity java 파일별 Cyclomatic Complexity 18-1 소프트웨어검증 T2 27

Static Analysis JAVA_44 : printstacktrace 메서드가사용됨. 시스템내부데이터나디버깅관련정보가공개되면공격의빌미가될수있다. printstacktrace 메서드를사용하지말아야한다. 18-1 소프트웨어검증 T2 28

Static Analysis OBJ05-J : PUBLIC 메서드에서 PRIVATE 필드리턴시레퍼런스를그대로리턴한다. 객체내부의상태를외부에서수정하도록해서는안되므로 MUTABLE 멤버에대한레퍼런스를외부에노출해서는안된다. CLONE 을리턴한다 18-1 소프트웨어검증 T2 29

Static Analysis EGOV_01_EMPTYCATCHBLOCK / JAVA_65 / ERROR00-J / SonarCloud / Findbugs DE : 빈 CATCH 절이존재한다. 의도한것이라면 COMMENT 로표시하는것을권장한다. CATCH BLOCK 에반드시예외를다루는코드를작성한다. 18-1 소프트웨어검증 T2 30

Static Analysis EGOV_12_SWITCHSTMTSSHOULDHAVEDEFAULT / JAVA_61 / SUN_13 / SonarCloud / Findbugs SF : DEFAULT 없는 SWITCH 구문사용을금지한다. SWITCH 구문에반드시 DEFAULT LABEL 이있어야한다. 18-1 소프트웨어검증 T2 31

Static Analysis EGOV_14_FINALFIELDCOULDBESTATIC / JAVA_63 / SonarCloud / Findbugs MS : 클래스의 FINAL 멤버필드가 STATIC 이아니다. FINAL FIELD 를 STATIC 으로전환해서 OVERHEAD 를줄인다. 18-1 소프트웨어검증 T2 32

Static Analysis EGOV_25_SYSTEMPRINTLN / SonarCloud : PRINTLN 메서드가사용되었다. 전용로거를사용할것을권장한다. 18-1 소프트웨어검증 T2 33

Static Analysis EGOV_33_STRINGTOSTRING / SonarCloud / Findbugs DM : TOSTRING 메서드가사용되었다. 불필요한 TOSTRING 메서드사용을금지한다. STRING 객체에서 TOSTRING 함수를사용하는것은불필요하므로해당코드를제거한다. 18-1 소프트웨어검증 T2 34

Static Analysis SonarCloud / Findbugs OS : Buffer 를 Close 하지않았다. Buffer 를 Close 해야한다. 18-1 소프트웨어검증 T2 35

Static Analysis SonarCloud / Findbugs RpC : 조건부테스트가중복수행되었다. 조건부를하나로합친다. 18-1 소프트웨어검증 T2 36

Static Analysis ERROR08-J / SonarCloud / Findbugs REC : 하나의 catch 로여러개의예외를처리하고있다. 여러가지예외를명시해야한다. 18-1 소프트웨어검증 T2 37

Static Analysis SonarCloud / Findbugs SF : case 문에 break; 가없다. break; 를추가한다. 18-1 소프트웨어검증 T2 38

Static Analysis in CTIP CTIP 환경에 Issue 등록 18-1 소프트웨어검증 T2 39

Static Analysis in CTIP Project Management 18-1 소프트웨어검증 T2 40

감사합니다 :) 18-1 소프트웨어검증 T2 41