저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

Size: px
Start display at page:

Download "저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할"

Transcription

1 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우, 이저작물에적용된이용허락조건을명확하게나타내어야합니다. 저작권자로부터별도의허가를받으면이러한조건들은적용되지않습니다. 저작권법에따른이용자의권리는위의내용에의하여영향을받지않습니다. 이것은이용허락규약 (Legal Code) 을이해하기쉽게요약한것입니다. Disclaimer

2

3

4

5 - i -

6 - ii -

7 - iii -

8 iv -

9 v -

10 Removing security vulnerabilities during a development stage is much more effective and efficient than tackling it during an operational phase. Secure coding is getting the most attention among the efforts for minimizing the security vulnerabilities at the level of the source code. This research studied the secure coding classification system for the mobile application program, and produced an Android Application Secure Coding Standard chart through drawing a definition of risk assessment standard (severity, risk, and probability) for each item.after developing a classification system for the co-relationships between the standard chart and the secure coding chart, this research drew the M-SCSA Matrix. With this research results and the new tools we developed through the research, we recommend that using these tools, individuals, groups, and organizations can conduct their own mobile secure coding assessment. First, this research looks into secure coding. Then, it further looks into the mobile security threat. And we recommend a self assessment for mobile secure coding. I developed the M-SCSA classification system first and then, conduct a secure coding risk assessment for each item according to the risk analysis standard. And finally, I talk about how to conduct a secure coding self assessment in relation to the mobile secure coding self assessment based on my M-SCSA research results. - vi -

11 1) 소프트웨어생명주기 (SDLC, Software Development Lifecycle) : 시스템을개발하는절차, 혹은개발단계의반복현상을시스템개발주기 (System Development Life Cycle) 라고부른다. 2) 시큐어코딩 (Secure Coding) : 소프트웨어개발시취약성이있을수있는부분을보완해프로그램을개발하는방법 - 1 -

12 < 그림 1-1> Now is the time for security at Application Level Gartner, Dec

13 구분 설계단계 코딩단계 통합단계 베타제품 제품출시 설계과정결함 1배 5배 10배 15배 30배 코딩과정결함 1배 10배 20배 30배 통합과정결함 1배 10배 20배 < 표 1-1> The Economic Impacts of Inadequate Infrastructure for Software Testing, , NIST - 3 -

14 - 4 -

15 - 5 -

16 발견연도 플랫폼 Symbian 이슈사항 Shotcut, icons 를해골로변경 Rom 파일을 overwrite 하여기능오류를발생시킴 어플리케이션의 Shotcut, icons 들을해골로바꾸고, 쓸모없게만들어전화걸기 / 받기를제외한스마트특징폰의모든기능이사용불가능하게됨 기기의 Rom 업데이트기능을악용하여, Rom 파일을 overwrite 함으로써치명적인오류를발생시킴 Extended theme.sis라는정상적인형태의 SIS 감염경로파일실행 - 6 -

17 발견연도 플랫폼 Symbian 이슈사항 배터리방전 ( 사용자불편초래 ) 감염확산에 bluetooth를사용 특징 bluetooth 를통해서주변디바이스에감염파일전송 감염경로 bluetooth 를통해서전송된정상적인형태의 SIS 파일을유저가실행 참고 Links

18 발견연도 플랫폼 Java (J2ME) 이슈사항 premium-rate SMS messages 의전송 SMS 전송은무한루틴으로반복됨 특징 free SMS를전송하는것으로, 유저를속여 SMS 전송의허가를유도함 감염경로 정상적인어플리케이션으로위장된 jar 파일을유저가실행 참고 Links 발견연도 플랫폼 Windows Mobile, J2ME device 이슈사항 PC 환경의 trojan.dialer 웜이모바일환경에서다시발생 중국에서제작된 3D anti-terrorist Action 이라는 게임에감염되어전파됨특징 비싼유료과금이부과되는서비스에사용자모르게 SMS을전송하여과금피해를발생시킴감염경로 합법적으로위장된어플리케이션에감염되어전파 hive/2010/01/12/beware-java-dialers-that-affect 참고 -mobile-bills.aspx Links hive/2010/04/16/mobile-phones-and-dialers.aspx - 8 -

19 발견연도 플랫폼 Windows Mobile 원격지웹사이트에서추가적인코드를다운로드이슈사항 레지스트리를수정하여 security 설정을변경 감염된디바이스의 IMEI, 시리얼넘버등의정보를수집후, 특정웹사이트로전송특징 레지스트리를변경하여 security 설정을낮춰 unsigned app를경고없이설치할수있도록함 메모리카드의 autorun을이용한감염을시도 합법적 App와번들로묶여져, 중국사이트로부터감염경로다운로드후실행참고 Links ce_infojack.a!tr.html 발견연도 플랫폼 Symbian 이슈사항 수집한정보를무작위대상에게전송 정상적인 utility 프로그램으로위장하고있음특징 휴대폰에저장된전화번호를 txt파일로저장한후, bluetooth를통해인근디바이스로무작위전송감염경로 SIS 파일을유저가실행참고 Links pbstealer_e.shtml - 9 -

20 발견연도 플랫폼 Symbian 이슈사항 메모리카드를이용한 Cross-platform 감염을시도 File Manager, Application Manager, Browser 등 특징 내장애플리케이션을중지시키고, Anti-virus 어플리케이션의손상을시도함 메모리카드에 Win32 바이러스를감염시킴 감염경로 감염된 SIS 파일의실행 참고 Links cardtrap_m.shtml

21 순위용도 1 장치의 85% 가비즈니스다이어리로사용 2 장치의 80% 가비즈니스대상이름 / 주소저장에사용 3 장치의 79% 가개인이름과주소를저장하는데사용 4 장치의 75% 가개인다이어리에사용 5 장치의 48% 가오락 ( 게임 / 음악 ) 에사용 6 장치의 35% 가문서에사용 7 장치의 33% 가패스워드 / PIN 번호저장에사용 8 장치의 32% 가이메일수신하는데사용 9 장치의 25% 가은행계좌관련사항을저장하는데사용 10 장치의 25가기ᅟᅥᆸ정보를저장하는데사용

22 - 12 -

23 - 13 -

24 - 14 -

25 구분 장점 단점 설명 어플리케이션의특성을평가하는메커니즘을제공하는데에효과적 이며, 의심스러운어플리케이션에대한정확하고신속한파악가능 악의적인어플리케이션을정의하기가어려움

26 - 16 -

27 구분 3.1 CERT 기반안드로이드코딩스타일기법 시큐어코딩식별명 유사한형태를가진문자열을동시에사용하지않는다 동일한타입을갖는변수들을한라인에선언하지않는다 복수의명령문들을한라인에작성하지않는다 프로그램에서상수를사용한다 Long타입을사용할경우, l을사용하지않는다 중복된이름을사용하지않는다 직관적인명칭이름을사용한다 복합어는구분되도록사용한다 명명규칙을준수한다 올바르게정수를표현한다 나머지연산자 (%) 의결과값에주의한다 올바른방법으로두배열객체들을비교한다 3.2 CERT 기반안드로이드시큐어코딩기법 char 로 read() 하지않는다 시프트연산자를남용하지않는다 할당연산자의동작순서를인지한다 NaN 판별시, NaN 을비교연산자에사용하지않는다, 어떤객체를실수형으로변환시, 범위검사를한다, 반복문루프카운터변수로실수값을사용하지않는다 wait()( 또는 await()) 는루프 (loop) 문에서호출한다 Thread.stop() 로스레드를중지시키지않는다 thread-safe 메서드를 thread-unsafe 메서드로재정의하지않는다 메서드파라메타를적절히검사한다 생성자에서재정의될수있는메서드를호출하지않는다 배열첨자는 0 부터사용한다 연산후, 연산동작이올바르게수행됨을보장한다, 3.3 CWE 기반안드로이드시큐어코딩기법 묵시적캐스팅시, 변수표현범위내에서연산을수행한다, 괄호로묶여진명령문들은연산자우선순위에의존하지 않는다 중첩클래스에서외부클래스의 private 필드를노출하지 않는다 명시적캐스팅시, 변수표현범위내에서연산을수행한다, 올바른방법으로문자열을비교한다 Little endian 을사용하는시스템과통신시, 데이터를

28 Little endian 으로변환한다, 클래스멤버변수를외부에노출하지않는다 final 객체를의도한경우, 내부멤버들도 final 로선언한다, public static키워드를사용하지않는다 Thread.run() 으로스레드를실행하지않는다 멀티스레드프로그램에서적절한동기화를구현한다 Double-Checked Locking 기법을사용하지않는다 finally블록에서종료행위를하지않는다 액티비티 (Activity) 클래스 3.4 안드로이드 A P I 관련시큐어코딩기법 인텐트 (Intent) 클래스 서비스 (Service) 클래스 대화상자 (AlertDialog) 클래스 토스트 (Toast) 박스클래스 미디어플레이어 (MediaPlayer) 클래스 이벤트처리 캔버스 (Canvas) 클래스

29 구분입력데이터검증및표현 API 악용보안특성시간및상태에러처리코드품질캡슐화 시큐어코딩식별명상대디렉터리정보조작절대디렉터리정보조작 null 매개변수미검사 equals() 와 hashcode() 하나만정의기밀정보의단순한텍스트전송취약한암호화알고리즘의사용저절하지않은난수값의사용전전역적으로접근가능한파일외부에서접근하여활성화가능한컴포넌트공유아이디에의한접근제어통과경쟁조건 : 검사시점과사용시점제대로제어되지않은재귀오류메시지통한정보노출오류상황에대한처리부재널포인터역참조공용메소드로부터리턴된 private 배열-유형필드 private 배열-유형필드에공용데이터할당시스템데이터정보누출

30 No 분류항목설명 1 입력데이터 검증및표현 입력을검증없이그대로받아들여사용하면많은보안 위험에노출된다.[9] 2 API 악용 3 보안특성 4 시간및상태 5 에러처리 6 코드품질 7 캡슐화 8 명명규칙 9 연산규칙 API 오용및취약점이알려진 API의사용은개발효율성, 유지보수성의저하및보안상의심각한위협요인이될수있다.[9] 부적절한보안특성의사용은오히려성능이나부가적인문제를불러올수도있다.[9] 프로그램의동작과정에서시간적개념을포함한시스템상태에대항정보에관련한취약점을유발할수있다.[9] 에러를불충하게처리하지않을때나에러정보에과도하게많은정보를포함할경우공격자에게악용될수있다.[9] 프로그램코드가너무복잡하면관리성, 유지보수성, 가독성이떨어지며, 안전성을위협할취약점들이코드안에숨겨져있을가능성이높다.[9] 중요한데이터나기능성을불충분하게캡슐화하는경우, 인가된데이터와인가되지않은데이터를구분하지못하여허용되지않는사용자들간의데이터유출이가능해진다.[9] 좋은명명규칙은프로그램의가독성이있어서핵심적인요소이다. 루프인덱스와상태변수같은특정한종류의변수들은특정한고려사항이요구된다.[10] 잘못된연산을수행하면오버플로를유발할수있고, 경우에따라공격자가임의코드를수행시킬수있게허용하는결과를초래한다.[11]

31 No 분류항목 분류번호 1 입력데이터검증및표현 IVP 설명 Input data Validation and Presentation 2 API 악용 API API Exploit 3 보안특성 SEC SECurity property 4 시간및상태 TMS TiMe and Status 5 에러처리 EOR ErrOR handling 6 코드품질 COD CODe quality 7 캡슐화 CAP encapsulation 8 명명규칙 NAM NAMing Rules 9 연산규칙 OPR OPRration Rules

32 분류항목입력데이터검증및표현 분류 번호 IVP No 시큐어코딩식별명 001 상대디렉터리정보조작 002 절대디렉터리정보조작 003 메서드파라메타를적절히검사한다 004 생성자에서재정의될수있는메서드를호출하지않는다 005 반복문루프카운터변수로실수값을사용하지않는다 006 wait()( 또는 await()) 는루프 (loop) 문에서호출한다 007 올바르게정수를표현한다 분류항목 API 악용 분류 번호 API No 시큐어코딩식별명 001 null 매개변수미검사 002 equals() 와 hashcode() 하나만정의 액티비티 (Activity) 클래스 인텐트 (Intent) 클래스 서비스 (Service) 클래스 대화상자 (AlertDialog) 클래스 토스트 (Toast) 박스클래스 미디어플레이어 (MediaPlayer) 클래스 이벤트처리 캔버스 (Canvas) 클래스 분류항목 보안특성 분류 번호 SEC No 시큐어코딩식별명 001 기밀정보의단순한텍스트전송 002 취약한암호화알고리즘의사용 003 저절하지않은난수값의사용전 004 전역적으로접근가능한파일 005 외부에서접근하여활성화가능한컴포넌트 006 공유아이디에의한접근제어통과

33 분류항목 시간및 상태 분류 번호 TMS No 시큐어코딩식별명 001 경쟁조건 : 검사시점과사용시점 002 제대로제어되지않은재귀 003 Thread.stop() 로스레드를중지시키지않는다 004 thread-safe 메서드를 thread-unsafe 메서드로재정의하지않는다 005 Thread.run() 으로스레드를실행하지않는다 006 멀티스레드프로그램에서적절한동기화를구현한다 007 Double-Checked Locking 기법을사용하지않는다 분류항목 에러처리 분류 번호 EOR No 시큐어코딩식별명 001 오류메시지통한정보노출 002 오류상황에대한처리부재 003 클래스멤버변수를외부에노출하지않는다 분류항목 코드품질 분류 번호 COD No 시큐어코딩식별명 001 널포인터역참조 002 Little endian 을사용하는시스템과통신시, 데이터를 Little endian 으로변환한다, 003 public static키워드를사용하지않는다 004 finally블록에서종료행위를하지않는다

34 분류항목 분류 번호 No 시큐어코딩식별명 001 공용메소드로부터리턴된 private 배열 - 유형필드 캡슐화 CAP 002 private 배열 - 유형필드에공용데이터할당 003 시스템데이터정보누출 004 중첩클래스에서외부클래스의 private 필드를노출하지 않는다 분류항목 분류 번호 No 시큐어코딩식별명 001 유사한형태를가진문자열을동시에사용하지않는다 002 동일한타입을갖는변수들을한라인에선언하지않는다 003 복수의명령문들을한라인에작성하지않는다 004 프로그램에서상수를사용한다 명명규칙 NAM 005 Long 타입을사용할경우, l 을사용하지않는다 006 중복된이름을사용하지않는다 007 직관적인명칭이름을사용한다 008 복합어는구분되도록사용한다 009 명명규칙을준수한다 010 final 객체를의도한경우, 내부멤버들도 final 로 선언한다,

35 분류항목 분류 번호 No 시큐어코딩식별명 001 나머지연산자 (%) 의결과값에주의한다 002 올바른방법으로두배열객체들을비교한다 003 char 로 read() 하지않는다 004 시프트연산자를남용하지않는다 005 할당연산자의동작순서를인지한다 006 NaN 판별시, NaN 을비교연산자에사용하지않는다. 연산규칙 OPR 007 어떤객체를실수형으로변환시, 범위검사를한다. 008 배열첨자는 0 부터사용한다 009 연산후, 연산동작이올바르게수행됨을보장한다 묵시적캐스팅시, 변수표현범위내에서연산을수행한다. 괄호로묶여진명령문들은연산자우선순위에의존하지않는다. 명시적캐스팅시, 변수표현범위내에서연산을수행한다. 013 올바른방법으로문자열을비교한다

36 - 26 -

37 평가요소범위설명 1 낮음심각도 2 보통규칙을무시했을때의결과가얼마나심각한가? (Severity) 3 높음 위험도 발생가능성 (Possibility) 1 낮음규칙을무시했을때의결과가프로그램에얼마 2 보통나큰영향을끼치는가? 3 높음 1 낮음규칙을무시해악용당할취약성으로발전될결 2 보통함이될가능성은어떤가? 3 높음

38 구분 1점 2점 3점 위험수준 낮음 보통 높음 판단기준 초래된위험을초래된위험을초래된위험을어플리케이션어플리케이션어플리케이션자체에서상당한자체에서즉시자체에서극복할수노력을기울여야극복할수있음없음극복할수있음 사례 해당단말기의작동네트워크서비스어플리케이션의불능, 단말기에방해, 통신정보의작동불능, 해당담긴정보의유출, 유출, 조작위험, 어플리케이션이조작위험초래, 통합시스템작동취급하는정보의단말기사용성불능초래, 사회적유출, 조작위험방해등문제야기등초래등

39 구분 1 점 2 점 3 점 위험수준낮음보통높음 판단기준 어플리케이션자체의보안성을위협하는위험수준 단말기간의어플리케이션및데이터의보안성을위협하는위험수준 네트워크또는통합시스템단위의보안성을위협하는위험수준 사례 해당어플리케이션의작동불능, 해당어플리케이션이취급하는정보의유출, 조작위험초래등 단말기의작동불능, 단말기에담긴정보의유출, 조작위험초래, 단말기사용성방해등 네트워크서비스방해, 통신정보의유출, 조작위험, 통합시스템작동불능초래, 사회적문제야기등 구분 1점 2점 3점 위험수준 낮음 보통 높음 판단기준 어플리케이션의어플리케이션의어플리케이션의 Life Cycle 동안 Life Cycle 동안 Life Cycle 동안매거의발생하지않수차례발생함우자주발생함. 음 명명규칙및표현 데이터조작및연 입력검증및보안 사례 의부적절한사용 산규칙의부적절 특성의부적절한사 등 한사용등 용등

40 위험평가 내 용 시큐어코딩필수적용필수 (12~27) - 어플리케이션에보안취약점이다수존재하며, 심각도 12 <= (S*R*P) >= 27 및위험의정도가매우크며, 발생가능성이높은수준 시큐어코딩선택적용선택 (6~9) - 어플리케이션에보안취약점이다수존재할수있으나, 6 <= (S*R*P) >= 9 심각도및위험의정도가보통이며, 발생가능성도보통수준 시큐어코딩적용권고 권고 (1~4) - 어플리케이션에보안취약점이다수존재할수있으나, 1 <= (S*R*P) >= 4 심각도및위험의정도가수용가능며, 발생가능성이 낮은 수준

41 - 31 -

42 분류항목 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) 001 상대디렉터리정보조작 (2) * (3) * (2) = 절대디렉터리정보조작 (2) * (3) * (2) = 메서드파라메타를적절히검사한다 (2) * (3) * (2) = 12 입력데이터 검증및 표현 IVP 생성자에서재정의될수있는메서드를호출하지않는다 (1) * (2) * (2) = 4 반복문루프카운터변수로실수값을사용하지않는다 (1) * (2) * (2) = wait()( 또는 await()) 는루프 (loop) 문에서호출한다 (1) * (2) * (2) = 올바르게정수를표현한다 (1) * (1) * (1) =

43 분류항목 API 악용 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) API null 매개변수미검사 (2) * (3) * (3) = 18 equals() 와 hashcode() 하나만정의 (3) * (3) * (2) = 액티비티 (Activity) 클래스 (2) * (2 * (3) = 인텐트 (Intent) 클래스 (2) * 2) * (3) = 서비스 (Service) 클래스

44 (2) * (2) * (3) = 대화상자 (AlertDialog) 클래스 (2) * (2) * (3) = 토스트 (Toast) 박스클래스 (2) * (2) * (3) = 미디어플레이어 (MediaPlayer) 클래스 (2 * (2) * (3) = 이벤트처리 (2) * (2) * (3) = 캔버스 (Canvas) 클래스 (2 * (2) * (3) =

45 분류항목 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) 001 기밀정보의단순한텍스트전송 (3) * (3) * (3) = 취약한암호화알고리즘의사용 (3) * (3) * (3) = 27 보안특성 SEC 적절하지않은난수값의사용전 (3) * (3) * (3) = 27 전역적으로접근가능한파일 (3) * (3) * (3) = 외부에서접근하여활성화가능한컴포넌트 (3) * (3) * (3) = 공유아이디에의한접근제어통과 (3) * (3) * (3) =

46 분류항목 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) 001 경쟁조건 : 검사시점과사용시점 (3) * (2) * (2) = 제대로제어되지않은재귀 (3) * (2) * (2) = Thread.stop() 로스레드를중지시키지않는다 (3) * (2) * (2) = 12 thread-safe 메서드를 thread-unsafe 메서드 시간및 상태 TMS 로재정의하지않는다 (2) * (2) * (1) = 4 Thread.run() 으로스레드를실행하지않는다 (2) * (2) * (2) = 8 멀티스레드프로그램에서적절한동기화를구현 006 한다 (2) * (3) * (2) = 12 Double-Checked Locking 기법을사용하지않 007 는다 (2) * (2) * (1) =

47 분류항목 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) 001 오류메시지통한정보노출 (2) * (2) * (3) = 12 에러처리 EOR 002 오류상황에대한처리부재 (2) * (2) * (3) = 클래스멤버변수를외부에노출하지않는다 (2) * (2) * (3) =

48 분류항목 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) 001 널포인터역참조 (3) * (1) * (2) = 6 Little endian 을사용하는시스템과통신시, 코드품질 COD 002 데이터를 Little endian 으로변환한다, (2) * (1) * (1) = public static 키워드를사용하지않는다 (2) * (2) * (3) = finally 블록에서종료행위를하지않는다 (2) * (2) * (2) =

49 분류항목 캡슐화 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) CAP 공용메소드로부터리턴된 private 필드 (3) * (3) * (2) = 18 배열 - 유형 private 배열-유형필드에공용데이터할당 (3) * (3) * (2) = 18 시스템데이터정보누출 (3) * (3) * (3) = 27 중첩클래스에서외부클래스의 private 필드를노 출하지않는다 (3) * (3) * (2) =

50 분류항목 명명규칙 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) NAM 유사한형태를가진문자열을동시에사용하지 않는다 (2) * (2) * (2) = 8 동일한타입을갖는변수들을한라인에선언하 지않는다 (1) * (1) * (2) = 2 복수의명령문들을한라인에작성하지않는다 (1) * (1) * (2) = 2 프로그램에서상수를사용한다 (1) * (1) * (2) = 2 Long 타입을사용할경우, l 을사용하지않는다 (1) * (1) * (3) = 3 중복된이름을사용하지않는다 (1) * (1) * (3) =

51 직관적인명칭이름을사용한다 (1) * (1) * (3) = 3 복합어는구분되도록사용한다 (1) * (1) * (3) = 3 명명규칙을준수한다 (1) * (1) * (3) = 3 final 객체를의도한경우, 내부멤버들도 final 로선언한다, (1) * (1) * (3) =

52 분류항목 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) 001 나머지연산자 (%) 의결과값에주의한다 (2) * (2) * (3) = 올바른방법으로두배열객체들을비교한다 (2) * (2) * (3) = char 로 read() 하지않는다 (2) * (2) * (3) = 시프트연산자를남용하지않는다 (2) * (2) * (3) = 할당연산자의동작순서를인지한다 (2) * (2) * (2) = 8 NaN 판별시, NaN 을비교연산자에사용하지 006 않는다, (2) * (2) * (2) = 8 어떤객체를실수형으로변환시, 범위검사를한 007 다, 연산규칙 OPR 008 (2) * (3) * (3) = 18 배열첨자는 0 부터사용한다 (2) * (2) * (3) = 연산후, 연산동작이올바르게수행됨을보장한다. (3) * (3) * (3) = 묵시적캐스팅시, 변수표현범위내에서연산을수행한다. (2) * (2) * (2) = 8 괄호로묶여진명령문들은연산자우선순위에의존하지 011 않는다. (2) * (2) * (2) = 8 명시적캐스팅시, 변수표현범위내에서연산을 012 수행한다. (2) * (2) * (2) = 올바른방법으로문자열을비교한다 (2) * (2) * (2) =

53 - 43 -

54 - 44 -

55 식별번호심각도위험도발생위험가능성평가 MSCSA-AN-IVP MSCSA-AN-IVP MSCSA-AN-IVP MSCSA-AN-IVP MSCSA-AN-IVP MSCSA-AN-IVP MSCSA-AN-IVP MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-API MSCSA-AN-SEC MSCSA-AN-SEC MSCSA-AN-SEC MSCSA-AN-SEC MSCSA-AN-SEC MSCSA-AN-SEC MSCSA-AN-TMS MSCSA-AN-TMS MSCSA-AN-TMS MSCSA-AN-TMS MSCSA-AN-TMS MSCSA-AN-TMS MSCSA-AN-TMS MSCSA-AN-EOR MSCSA-AN-EOR MSCSA-AN-EOR 등급분류필수선택권고

56 식별번호심각도위험도발생위험가능성평가 MSCSA-AN-COD MSCSA-AN-COD MSCSA-AN-COD MSCSA-AN-COD MSCSA-AN-CAP MSCSA-AN-CAP MSCSA-AN-CAP MSCSA-AN-CAP MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-NAM MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR MSCSA-AN-OPR 등급분류필수선택권고

57 - 47 -

58 - 48 -

59 자가평가계획 - 개인, 단체, 조직에따라적합한시큐어코딩자가평가계획수립 - 시큐어코딩자가평가프로세스및절차수립 자가평가실시 - 계획에따른효과적 효율적위험평가실행 - 위험평가결과를반영한시큐어코딩자가평가실시 평가결과검토 - 시큐어코딩평가측정결과의검토 - 검토결과에따른시정조치 시큐어코딩적용 - 개인, 단체, 조직에따라최적화된시큐어코딩적용 - 시큐어코딩적용에따른성과보고 M-SCSA 갱신 - 개인, 단체, 조직에따라적합한시큐어코딩축적 - 일회성이아닌지속적관리를위한 M-SCSA 갱신

60 - 50 -

61 평가요소 (E) 중요도 (I) 높음 보통 낮음 입력데이터검증및표현 81~100% 51~80% 1~50% API 악용 81~100% 51~80% 1~50% 보안특성 81~100% 51~80% 1~50% 시간및상태 81~100% 51~80% 1~50% 에러처리 81~100% 51~80% 1~50% 코드품질 81~100% 51~80% 1~50% 캡슐화 81~100% 51~80% 1~50% 명명규칙 81~100% 51~80% 1~50% 연산규칙 81~100% 51~80% 1~50%

62 평가요소 우선순위 ( 예 ) 입력데이터검증및표현 7 API 악용 2 보안특성 1 시간및상태 3 에러처리 4 코드품질 5 캡슐화 6 명명규칙 8 연산규칙

63 우선순위 가중치 단

64 최우수 우수 양호 미흡 불량

65 - 55 -

66 분류항목입력데이터검증및표현 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) IVP 상대디렉터리정보조작 (2) * (3) * (2) = 12 절대디렉터리정보조작 (2) * (3) * (2) = 12 메서드파라메타를적절히검사한다 (2) * (3) * (2) = 12 생성자에서재정의될수있는메서드를호출하지않는다 (1) * (2) * (2) = 4 반복문루프카운터변수로실수값을사용하지않는다 (1) * (2) * (2) = 4 wait()( 또는 await()) 는루프 (loop) 문에서호출한다 (1) * (2) * (2) = 4 올바르게정수를표현한다. (1) * (1) * (1) =

67 분류항목 보안특성 분류 시큐어코딩식별명 번호 No 심각도 (S) * 위험 (R) * 발생가능성 (P) SEC 기밀정보의단순한텍스트전송 (3) * (3) * (3) = 27 취약한암호화알고리즘의사용 (3) * (3) * (3) = 27 적절하지않은난수값의사용전 (3) * (3) * (3) = 27 전역적으로접근가능한파일 (3) * (3) * (3) = 27 외부에서접근하여활성화가능한컴포넌트 (3) * (3) * (3) = 27 공유아이디에의한접근제어통과 (3) * (3) * (3) =

68 평가요소 우선순위 ( 예 ) 가중치 입력데이터검증및표현 API 악용 보안특성 시간및상태 에러처리 코드품질 캡슐화 명명규칙 연산규칙

69 분류항목 분류번호 No 시큐어코딩식별명적용여부 001 상대디렉터리정보조작 Y 002 절대디렉터리정보조작 Y 입력데이터 검증및 표현 IVP 003 메서드파라메타를적절히검사한다 Y 004 생성자에서재정의될수있는메서드를호출하지않는다 N 005 반복문루프카운터변수로실수값을사용하지않는다 Y 006 wait()( 또는 await()) 는루프 (loop) 문에서호출한다 N/A 007 올바르게정수를표현한다. Y 단

70 분류항목 분류번호 No 시큐어코딩식별명적용여부 001 기밀정보의단순한텍스트전송 Y 002 취약한암호화알고리즘의사용 Y 보안특성 SEC 003 적절하지않은난수값의사용전 Y 004 전역적으로접근가능한파일 Y 005 외부에서접근하여활성화가능한컴포 넌트 Y 006 공유아이디에의한접근제어통과 Y 단

71 평가요소 우선순위 ( 예 ) 가중치 준수성산정결과 ( 예 ) 보안특성 % API 악용 % 시간및상태 % 에러처리 % 코드품질 % 캡슐화 % 입력데이터검증및표현 % 명명규칙 % 연산규칙 %

72 - 62 -

73 구분 M-SCSA 정보보호수준평가보안관리수준평가 평가기관자가평가한국인터넷진흥원국가정보원 평가대상개인 / 단체 / 조직주요기반시설중앙행정기관 12 개통제분야, 평가항목 9 개분야 64 개평가항목 54개통제항목, 89개세부통제항목 9 개분야 ( 안전점검기준 ) 평가단계 9 단계 - 3 단계 ( 준비 - 수행 - 완료 ) 평가방법 평가산정식 ( 분야별누적 ) 평가산정식 ( 분야별누적 ) 평가산정식 ( 분야별누적 ) 평가결과 5 단계 - 수준 ( 최우수, 우수, 양호, 미흡, 불량 ) 5단계-성숙도 (1단계, 2단계, 3단계, 4단계, 5단계 ) 5 단계 - 수준 ( 최우수, 우수, 양호, 미흡, 불량 )

74 - 64 -

75 - 65 -

76 - 66 -

77 - 67 -

78 - 68 -

79 - 69 -

80 식별번호 MSCSA-AN-IVP-001 M-SCSA 필수 식별명 상대디렉터리경로조작 위험평가 심각도 M 위험도 H 발생가능성 M 외부의입력을통하여 " 디렉터리경로문자열 " 생성이필요한 설 방 명 법 경우, 외부입력에서경로조작에사용될수있는문자를필 터링하지않으면, 예상밖의영역에대한경로문자열이가능 해져시스템정보누출, 서비스장애등을유발시킬수있다. 외부의입력이직접파일이름을생성하는사용될수없도록 한다. 불가피하게직접사용하는경우, 다른디렉터리의파 일을접근할수없도록퍼피교 6ᅀ110 등의메소드를사용하 여위험문자열 (,/,\) 을제거하는필터를거치도록한다. 상대디렉터리경로조작사용예시외부에서입력되는값에대하여 NULL 여부를체크하고 ᅮ 외부에서입력되는파 일이름 (name) 에서상대경로 (/, \\, &,. 등특수문자 ) 를설정할수없도록 replaceall 를이용하여특수문자를제거한다. Bad Code Good Code CWE 관련항목 1: 2: public void f(properties request) { 3: 4: String name = request.getproperty("filename"); 5: if( name!= null ) { 6: File file = new File("/usr/local/tmp/" + name); 7: file.delete(); 8: 9: 10: 1: 2: public void f(properties request) { 3: 4: String name = request.getproperty("user"); 5: if ( name!= null &&!"".equals(name) ) { 6: name = name.replaceall("/", ""); 7: name = name.replaceall(" \ \", ""); 8: name = name.replaceall(".", ""); 9: name = name.replaceall("&", ""); 10: name = name + "-report"; 11: File file = new File("/usr/local/tmp/" + name); 12: if (file!= null) file.delete(); 13: 14: 15: CWE-23 상대디렉터리경로조작

81 식별번호 MSCSA-AN-IVP-002 M-SCSA 필수 식별명 절대디렉터리경로조작 위험평가 심각도 M 위험도 H 발생가능성 M 외부입력이파일시스템을조작하는경로를직접제어할수 설 방 명 법 있거나영향을끼치면위험하다. 사용자입력이파일시스템 작업에사용되는경로를제어하는것을허용하면, 공격자가 응용프로그램에치명적인시스템파일또는일반파일을접 근하거나변경할가능성이존재한다. 즉, 경로조작을통해 서공격자가허용되지않은권한을획득하여, 설정에관계된 파일을변경할수있거나실행시킬수있다. 파일이름으로부터 replaceall 메소드를사용하여위험한 문자들을제거하거나, 절대경로문자열포함여부를검사함으 로써임의의디렉터리에접근하지못하도록프로그램을작성 하는것이바람직하다. 절대디렉터리경로조작사용예시외부의입력이파일이름으로사용될경우절대경로명이사용되지못하도록, 문자열이또는 "/" 을포함하거나해당문자열로시작할경우관련동작수행 을거부하는것이바람직하다. 1: 2: public void oncreate(bundle savedinstancestate) { 3: super.oncreate(savedinstancestate); 4: File file = new File(android.os.Environment.getExternalStorageDirectory(), "inputfile"); 5: try { 6: InputStream is = new FileInputStream(file); 7: Properties props = new Properties(); Bad Code 8: props.load(is); 9: String name = props.getproperty("filename"); 10: file = new File("/usr/local/tmp/" + name); 11: file.delete(); 12: is.close(); 13: catch (IOException e) { 14: Log.w("Error", "", e); 15: 16: 1: 2: public void oncreate(bundle savedinstancestate) { 3: super.oncreate(savedinstancestate); 4: Good Code 5: File file = new File(android.os.Environment.getExternalStorageDirectory(), "inputfile"); 6: try {

82 CWE 관련항목 7: InputStream is = new FileInputStream(file); 8 Properties props = new Properties(); 9: props.load(is); 10: String name = props.getproperty("filename"); 11: if (name.indexof("/") <0) { 12: file = new File(name); 13: file.delete(); 14: 15: is.close(); 16: catch (IOException e) { 17: Log.w("Error", "", e); 18: 19: CWE-36 절대디렉터리경로조작

83 식별번호 MSCSA-AN-IVP-003 M-SCSA 필수식별명메서드파라메타를적절히검사한다위험평가심각도 M 위험도 H 발생가능성 M 파라메타를사용하는메서드는수용된파라메타를적절하게 설 명 검사해야한다. 만약적절한검사를하지않으면잘못된파라 메타수용으로인해프로그램오동작을야기할수있다. 이는 메서드에선언된접근자키워드에상관없이파라메타를수용 하는모든메서드에서수용한파라메타값에대한검사를해 야한다. 예를들어, private 로선언된메서드는외부에서접 근이불가하므로파라메타에대한적절한검사를하지않아 도된다고생각할수있지만, 개발자의사소한프로그래밍오 류로인해문제가발생할수있다. 방 법 파라메타를수용하는모든메서드는수용한파라메타의타입과특성에따라적절하게검사한다. 메서드파라메타검사예시 주민등록번호를파라메타로수용하는메서드이다. 주민등록번호는 13 자리이 다. 하지만이메서드에서주민등록번호가 13 자리인지적절하게검사를하 지않기때문에, 만약 13 자리보다크거나적은자리수가들어오면문제를 야기한다. 이는수용된파라메타를적절하게검사함으로써메서드가올바른 동작을하도록보장할수있다. public void setrrn(string residentregistrationnumber) Bad Code Good Code 검사방법 CERT 관련항목 { // do something public void setrrn(string residentregistration- Number) { if(residentregistrationnumber.length() == 13) { // do something else { // error 취약점분석도구 (Analysis Tool) MET02-J. Validate method parameters

84 식별번호 MSCSA-AN-IVP-004 M-SCSA 권고식별명생성자에서재정의될수있는메서드를호출하지않는다위험평가심각도 L 위험도 M 발생가능성 M 상위클래스의생성자에서재정의될수있는메서드를호출 설 방 명 법 한경우, 상위클래스객체또는하위클래스객체로하위클래 스객체를생성하면하위클래스의생성자가호출되기전에 상위클래스에서재정의한메서드가먼저호출된다. 이경우, 하위클래스내에선언된어떤변수를하위클래스생성자에서 초기화하고, 그변수를재정의된메서드에서사용한다면, 적 절하게초기화되지않은변수를사용하는문제를야기한다. 상위클래스의생성자에서메서드를호출한다면, 이메서드가 하위클래스에서재정의될수없도록 final 로선언한다. 상위 클래스의생성자에서메서드를호출한다면, 이메서드를재정 의하는하위클래스에서사용되는객체가초기화되도록보장 한다. 상위클래스생성자에서재정의할수있는메서드호출예시 BaseClass 의생성자에서재정의될수있는 doadd() 를호출한코드이다. BaseClass 의객체를생성하고, 그결과를 textview1 에서보면 20 이라는 결과가나온다. textview2 와 textview3 의결과로는 30 이라는결과를예 상하겠지만 20 이라는결과가나온다. 그이유는 BaseClass 가먼저호출되 고, 호출되면서 SubClass 의 doadd() 를호출하게되기때문이다. 이는 SubClass 의 value 의값이초기화되기전에계산이수행된것이며, 초기화 되지않은변수를사용하게되는문제를야기한다.... Bad Code public void oncreate(bundle savedinstancestate) { BaseClass bc = new BaseClass(); // bc : BaseClass 객체 BaseClass sc = new SubClass(); // sc : SubClass 객체 SubClass sc1 = new SubClass(); // sc1 : SubClass 객체 textview1.settext(integer.tostring(bc.getresult())); textview2.settext(integer.tostring(sc.getresult())); textview3.settext(integer.tostring(sc1.getresult())); class BaseClass { private int result; public BaseClass() {

85 doadd(10, 10); public void doadd(int num1, int num2) { result = num1 + num2; public int getresult() { return result; class SubClass extends BaseClass { private int value; private int result; public SubClass() { super(); value = public void doadd(int num1, int num2) { result = num1 + num2 + public int getresult() { return result; Good Code // #1 BaseClass 의 doadd() 를 final 로선언 class BaseClass { private int result; public BaseClass() { doadd(10, 10); public final void doadd(int num1, int num2) { result = num1 + num2; public int getresult() { return result;

86 검사방법 CERT 관련항목 // #2 SubClass 의 value 가초기화되었음을보장 class SubClass extends BaseClass { private int value; private int result; public SubClass() { super(); value = 10; public void doadd(int num1, int num2) { if(value == 0) { value = 10; result = num1 + num2 + value; public int getresult() { return result; 취약점분석도구 (Analysis Tool) MET04-J. Ensure that constructors do not call overridable methods

87 식별번호 MSCSA-AN-IVP-005 M-SCSA 권고식별명반복문루프카운터변수로실수값을사용하지않는다위험평가심각도 L 위험도 M 발생가능성 M 실수형은자연수를분수로표현하며, 이를정확하게표현하는 설 명 데한계점을가지고있다. 만약, for 문의루프카운터변수로 실수형변수를사용하면이런한계점으로인해의도한만큼 루프를실행하지못한다. 방 법 for 문의루프카운터변수에는정수형을사용한다. for 문루프카운터변수예시 for 루프가 10 번이실행된다고예상하겠지만, 실제로 9 번만실행된다. 그 이유는 float 가자연수를표현하는데한계점을가지고있기때문이다. float 형변수 x 에는다음의값들이저장된다. (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, , , ) for(float x = 0.1f; x <= 1.0f; x += 0.1f) { Bad Code Good Code 검사방법 CERT 관련항목 // do something for(int x = 1; x <= 1; x ++) { // do something 룰체커 (Rule Checker) FLP07-J. Do not use floating point variables as loop counters 식별번호 MSCSA-IVP-006 M-SCSA 식별명 wait()( 또는 await()) 는루프 (loop) 문에서호출한다 위험평가 심각도 L 위험도 M 발생가능성 M wait() 와 await() 는락 (lock) 을요청하는다른스레드에게락 (lock) 을양도하기위해호출되며, 반드시동기화메서드또 는동기화블록내에서호출되어야한다. 만약특정조건이 만족할때락을양도해야한다면 if문또는루프 (loop) 문에서 설 명 wait()( 또는 await()) 를 호출해야 한다. 하지만 if문에서 wait() 를호출할경우, if문은 wait() 를지속적으로잡고있는데한계점이있기때문에문제가된다. 반면에루프 (loop) 문은 wait() 를지속적으로잡고있는데한계점이없기때문에이문제를예방할수있다. 방 법 스레드락 (lock) 을양도할때, 루프 (loop) 문에서 wait()( 또는 await()) 를호출한다

88 wait() 사용예시 vector 객체가 isempty() 인경우 wait() 하는코드이다. 만약 if 문에서 wait() 하면, wait() 를지속적으로잡고있지못하기때문에 if 문이후에명령문이 실행되는문제를야기한다. 따라서 wait() 를지속적으로잡을수있는루프 (while) 문에서 wait() 를호출해야한다. synchronized (vector) { Bad Code Good Code 검사방법 CERT 관련항목 if(vector.isempty()) { vector.wait(); // do something, after vertor.wait() synchronized (vector) { while(vector.isempty()) { vector.wait(); // do something, after vertor.wait() 취약점분석도구 (Analysis Tool) THI03-J. Always invoke wait() and await() methods inside a loop

89 식별번호 MSCSA-AN-IVP-007 M-SCSA 권고 식별명 올바르게정수를표현한다 위험평가 심각도 L 위험도 L 발생가능성 L 정수형은 10 진수, 16 진수, 그리고 8 진수로표현될수있 설 명 다. 이를명확하게구분하여사용하지않으면정수형변수에 의도하지않은정수값이할당된다. 방 법 정수표현방법을정확하게인지하고정수형변수에의도한정수값을할당한다. 정수변수에값할당예시 정수형변수에값을할당하는예이다. 두번째라인에서 num2 변수에 42를 할당하려고의도하였지만, 이는 8 진수표현이며, 실제로는 10 진수값 34 가 할당된다. Bad Code num1 = 1234; Good Code num1 = 1234; num2 = 0042; num2 = 42; 검사방법 룰체커 (Rule Checker) CERT 관련항목 DCL07-J. Beware of integer literals beginning with '0'

90 식별번호 MSCSA-AN-API-001 M-SCSA 필수 식별명 Null 매개변수미검사 위험평가 심각도 M 위험도 H 발생가능성 H Java 표준에 따르면 Object.equals(), 설 방 명 법 Comparable.compareTo() 및 Comparator.compare() 의 구현은매개변수가 null 인경우지정된값을반환해야한다. 이약속을따르지않으면예기치못한동작이발생할수있 다. Object.equals(), Comparable.compareTo() 과 Comparator.compare() 구현에서는매개변수를 null 과비교 해야한다. Null 매개변수미검사사용예시매개변수가 null인지먼저검사한다. 1: public void oncreate(bundle savedinstancestate) { 2: super.oncreate(savedinstancestate); 3: 4: Bad Code 5: public boolean equals(object object) 6: { 7: return (tostring().equals(object.tostring())); 8: 1: 2: public void oncreate(bundle savedinstancestate) { 3: super.oncreate(savedinstancestate); 4: 5: File file = new File(android.os.Environment.getExternalStorageDirectory(), "inputfile"); 6: try { 7: InputStream is = new FileInputStream(file); 8 Properties props = new Properties(); Good Code 9: props.load(is); 10: String name = props.getproperty("filename"); 11: if (name.indexof("/") <0) { 12: file = new File(name); 13: file.delete(); 14: 15: is.close(); 16: catch (IOException e) { 17: Log.w("Error", "", e); 18: 19: CWE CWE-398 부족한코드품질지시자관련항목

91 식별번호 MSCSA-AN-API-002 M-SCSA 필수식별명 equals() 와 hashcode() 하나만정의위험평가심각도 H 위험도 H 발생가능성 M Java 표준에따르면, Java의같은객체는같은해시코드를가 설 방 명 법 져야한다. 즉 "a.equals(b) == true" 이면 "a.hashcode() == b.hashcode()" 이어야한다. 따라서한클래스내에서 6 다 03 뇨 0 와뇨 3 쇼 0 크 60 는둘다구현하거나둘다구현하지 않아야한다. 한클래스내에 equals() 를정의하면 hashcode() 도정의해야 하고 hashcode() 를정의하면 equals() 도정의해야한다. equals() 와 hashcode() 예시 equals() 와 hashcode() 모두정의해야한다. 1: 2: public void oncreate(bundle savedinstancestate) { 3: super.oncreate(savedinstancestate); 4: 5: 6: public boolean equals(object obj) { 7: if (obj == null) 8: return false; Bad Code 9: int i1 = this.hashcode(); 10: int i2 = obj.hashcode(); 11: 12: if (i1 == i2) 13: return true; 14: else 15: return false; 16: 1: 2: public boolean equals(object obj) { 3: if (obj == null) 4: return false; 5: int i1 = this.hashcode(); 6: int i2 = obj.hashcode(); 7: Good Code 8: if (i1 == i2) 9: return true; 10: else 11: return false; 12: 13: public int hashcode() { 14: return new HashCodeBuilder(17, 37).toHashCode(); 15: CWE CWE-581 equals() 와 hashcode() 하나만정의관련항목

92 액티비티 클래스... 식별번호 MSCSA-AN-API-003 M-SCSA 필수식별명 oncreate(bundle) 에서정적변수를초기화하라. 위험평가심각도 M 위험도 M 발생가능성 H oncreate(bundle) 는액티비티가생성될때호출된다. 따라서 근 방 거 법 oncreate(bundle) 는정적변수를초기화하기에적합한메서 드이다. 또한생성되면서정적변수를초기화하기때문에프 로그램성능에좋다. 액티비티클래스를상속받는서브클래스에서, oncreate(bundle) 를재정의하고, 정적변수를초기화한다. 정적변수초기화예시 private MediaPlayer dunkinmusic;... public void oncreate(bundle saveinstancestate) {... dunkinmusic = new MediaPlayer.create(ClassName.this, Rraw.dunkinSong);... 검사방법 룰체커 (Rule Checker)

93 ... 식별번호 MSCSA-AN-API-003 M-SCSA 필수식별명 onresume() 에서액티비티의실행에필요한자원을시작하라. 위험평가심각도 M 위험도 M 발생가능성 H onresume() 은액티비티가실행 (running) 시호출된다. 따라서 근 방 거 법 onresume() 은액티비티가실행할때, 필요한자원들을시작 하는데적합한메서드이다. 예를들면, 동영상재상, 오디오와 같은자원들이있다. onresume() 에서이런자원들을시작함 으로써프로그램이자원을유지하는데드는많은비용을절 감할수있다. 액티비티클래스를상속받는서브클래스에서 onresume() 을 재정의하고, 액티비티가실행할때, 필요한자원들을시작한 다. private MediaPlayer dunkinmusic;... protected void onresume() {... dunkinmusic.play();... 검사방법 자원시작예시 룰체커 (Rule Checker)

94 ... 식별번호 MSCSA-AN-API-003 M-SCSA 필수식별명 onpause() 에서액티비티의자원을정지, 저장, 해제하라.. 위험평가심각도 M 위험도 M 발생가능성 H onpause() 는전화와같은외부이벤트로인해실행중인액 근 방 거 법 티비티를잠시떠날때호출된다. 따라서 onpause() 는현재 상태의내용을모두저장하는작업을수행하는데적합한메 서드이다. onpause() 를구현하지않으면외부이벤트가발생 했을때, 데이터손실을초래한다. 액티비티클래스를상속받는서브클래스에서 onpause() 를재 정의하고, onresume() 에서시작한자원을 onpause() 에서 반드시정지, 저장, 해제한다. 실행자원정지예시 private MediaPlayer dunkinmusic;... protected void onpause() {... dunkinmusic.stop();... 검사방법 룰체커 (Rule Checker)

95 ... 식별번호 MSCSA-AN-API-003 M-SCSA 필수식별명 ondestroy() 에서할당된자원을파괴하라. 위험평가심각도 M 위험도 M 발생가능성 H ondestroy() 는액티비티가완전히종료될때호출된다. 프로 근 방 거 법 그램에서할당했던자원들을 ondestroy() 에서파괴하지않으 면자원낭비문제를초래한다. 액티비티를상속받은서브클래스에서 ondestroy() 를재정의 하고, 애플리케이션종료시더이상필요없는자원을파괴 한다. private Mediayer dunkinmusic;... protected void ondestory() {... dunkinmusic.relese();... 검사방법 자원파괴예시 룰체커 (Rule Checker)

96 인텐트 클래스 식별번호 MSCSA-AN-API-004 M-SCSA 필수 식별명 인텐트로사용되는액티비티클래스를 AndroidManifest.xml 파일에등록하라. 위험평가 심각도 M 위험도 M 발생가능성 H 인텐트 파이어시, 파이어 될 액티비티 클래스를 근 거 AndroidManifest.xml 파일에등록을하지않으면인텐트는 올바른동작을수행하지않는다 방 법 인텐트파이어에사용할액티비티클래스를 AndroidManifest.xml 파일에등록한다. 인텐트로실행한액티비티클래스등록예시 <activity android:name="setphonenum" android:label="@string/settingphonenum" /> 검사방법룰체커 (Rule Checker) 식별번호 MSCSA-AN-API-004 M-SCSA 필수인텐트로사용되는액티비티클래스를식별명 AndroidManifest.xml 파일에등록하라. 위험평가심각도 M 위험도 M 발생가능성 H 인텐트클래스는총 6개의인텐트생성자 (constructor) 를제 근 방 거 법 공한다. 이는다양한상황에맞게인텐트를사용하기위함이 다. 인텐트파이어를위한생성자는 5 번째생성자인 Intent (Context packagecontext, Class<?> cls) 이다. 하나의액티비티에서다른액티비티로전환을할때, 인텐트 클래스의다섯번째생성자인 Intent (Context packagecontext, Class<?> cls) 를사용한다. 인텐트객체생성예시 Intent tolaunch = new Intent(getApplicationContext(), Click_Notify.class); 검사방법룰체커 (Rule Checker)

97 식별번호 MSCSA-AN-API-004 M-SCSA 필수인텐트파이어에사용되는 startactivity() 또는식별명 startactivityforresult() 의인자로인텐트객체사용하라. 위험평가심각도 M 위험도 M 발생가능성 H 인텐트를파이어하여새로운액티비티로전환할때, 근 거 startactivity() 또는 startactivityforresult() 를호출한다. 이 메서드들의인자로인텐트를넣지않으면인텐트는올바른 동작을하지않는다. 방 법 startactivity() 나 startactivityforresult() 의인자로인텐트객체를삽입한다. 인텐트파이어예시 Intent tolaunch = new Intent(getApplicationContext(), Click_Notify.class); startactivity(tolaunch); 검사방법룰체커 (Rule Checker) 식별번호 MSCSA-AN-API-004 M-SCSA 필수인텐트를파이어하고콜백 (callback) 받을경우식별명 startactivityforresult() 를사용하라. 위험평가심각도 M 위험도 M 발생가능성 H startactivity() 로인텐트를파이어할경우, 콜백을받을수 근 거 없다. 따라서인텐트를파이어하고콜백을받아야할경우 startactivityforresult() 로인텐트를파이어해야한다. 방 법 startactivityforresult() 를사용하여인텐트를파이어한다. 콜백인텐트파이어예시 Intent enableintent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startactivityforresult(enableintent, REQUEST_ENABLE_BT); 검사방법룰체커 (Rule Checker)

98 식별번호 MSCSA-AN-API-005 M-SCSA 필수식별명서비스클래스를 AndroidManifest.xml 파일에등록한다. 위험평가심각도 M 위험도 M 발생가능성 H 서비스로실행할클래스는반드시 AndroidManifest.xml 파 근 거 일에등록을해야한다. 등록을하지않을시서비스는동작 하지않는다. 방 법 AndroidManifest.xml 파일에서비스클래스를등록한다. 다. 서비스클래스등록예시 <service android:name="smsservice" /> 검사방법 룰체커 (Rule Checker) 식별번호 MSCSA-AN-API-005 M-SCSA 필수서비스클래스의 oncreate() 에서서비스에필요한자원들을식별명초기화한다. 위험평가심각도 M 위험도 M 발생가능성 H oncreate() 는서비스가생성될때호출되는메서드이다. 따라 근 거 서서비스가생성될때, 필요한자원들을초기화하는것이성 능에좋다. 방 법 서비스클래스를상속받은서브클래스에서 oncreate() 를재정의하고, 서비스시작에필요한자원들을초기화한다. 서비스자원초기화예시 private BluetoothAdapter mbluetoothadapter = public void oncreate() { super.oncreate(); mbluetoothadapter = BluetoothAdapter.getDefaultAdapter(); 검사방법 룰체커 (Rule Checker)

99 식별번호 MSCSA-AN-API-005 M-SCSA 필수 식별명 서비스클래스의 onstart() 에서서비스에필요한자원들을시작한다. 위험평가 심각도 M 위험도 M 발생가능성 H 근 거 onstart() 는서비스가시작할때호출되는메서드이다. 따라서 onstart() 에서서비스로실행할동작들을기술해야한다. 방 법 서비스클래스를상속받은서브클래스에서 onstart() 를재정의하고, 서비스로실행할작업을기술한다. 서비스로실행할동작기술예시... private BluetoothAdapter mbluetoothadapter = null; private Bluetooth_Connection mbluetooth_connection = public void onstart(intent intent, int startid) {... BluetoothDevice device = mbluetoothadapter.getremotedevice(address); mbluetooth_connection.connecttodevice(device); 검사방법 룰체커 (Rule Checker) 식별번호 MSCSA-AN-API-001 M-SCSA 필수 식별명 ondestory() 에서서비스에사용한자원들을파괴한다. 위험평가 심각도 M 위험도 M 발생가능성 H 근 거 ondestory() 는서비스가종료할때호출되는메서드이다. 따라서 ondestory() 에서서비스로실행했던동작들을종료해야한다. 서비스클래스를상속받은서브클래스에서 ondestory() 를재 방 public void ondestroy() { 정의하고, 서비스로실행한동작들을종료시켜라. 서비스동작종료예시 if (mbluetooth_connection!= null) { mbluetooth_connection.stopconnectthread(); ; super.ondestroy(); 검사방법 룰체커 (Rule Checker)

100 대화상자 클래스 식별번호 MSCSA-AN-API-006 M-SCSA 필수대화상자생성시, AlertDialog 를사용하지말고, 식별명 AlertDialog.Builder 를사용한다. 위험평가심각도 M 위험도 M 발생가능성 H 일반적으로해당클래스의객체를생성할때, 해당클래스로 근 거 객체를선언하고이를통해객체를할당한다. 하지만 AlertDialog 의생성자는 protected 로되어있기때문에직 접적으로생성할수없다. 방 법 AlertDialog의내부클래스인 Builder 를통해대화상자객체를생성한다. 대화상자객체생성예시 private AlertDialog.Builder alertdialog;... alertdialog = new Builder(this); 검사방법룰체커 (Rule Checker)

101 식별번호 MSCSA-AN-API-006 M-SCSA 필수단순한대화상자생성시, show() 를호출하기전에대화상자식별명의필요한속성을설정한다. 위험평가심각도 M 위험도 M 발생가능성 H show() 는대화상자를사용자에게보여주는함수이며, 설정한 근 거 속성들에따라대화상자를설정하고보여준다. 만약 show() 이후에속성값들을설정하면, 그속성값들은대화상자에반 영되지않는다. 방 법 대화상자의필요한속성들을모두정의하고 show() 를호출한다. 대화상자 show() 호출예시 private AlertDialog.Builder alertdialog;... alertdialog = new Builder(this);... alertdialog.show(); 검사방법룰체커 (Rule Checker)

102 식별번호 MSCSA-AN-API-006 M-SCSA 필수식별명복잡한대화상자생성시, oncreatedialog(int) 를사용한다. 위험평가심각도 M 위험도 M 발생가능성 H 복잡한대화상자는매번생성하고파괴할때마다다량의메 근 방 거 법 모리가소비되어효율적이지못하다. oncreatedialog(int) 는 대화상자를생성할때호출되며생성된대화상자는시스템이 관리한다. 이후두번째호출부터는이를다시생성하지않고 화면에보여주기만하므로 메모리소비에효율적이다. 대화상자를사용하는액티비티클래스에서 oncreatedialog(int) 를재정의한다. 재정의한메서드의인자 값으로해당되는대화상자의식별자에따라대화상자를생성 한다. oncreatedialoy() 사용예시 private final static int CUSTOM_VIEW = protected Dialog oncreatedialog(int id) {... switch(id) { case CUSTOM_VIEW: return new AlertDialog.Builder(CustomDialog.this)... return super.oncreatedialog(id); 검사방법 룰체커 (Rule Checker)

103 식별번호 MSCSA-AN-API-006 M-SCSA 필수 oncreatedialog(int) 에서대화상자속성설정후, 맨마지막식별명에 create() 를호출한다. 위험평가심각도 M 위험도 M 발생가능성 H 단순한대화상자에익숙한개발자는사소한실수로인해 근 방 거 법 switch(id) { case CUSTOM_VIEW: show() 를호출할수있다. 대화상자를화면에보이는것이 아니라생성만해야하므로 show() 가아닌 create() 를호출 해야한다. oncreatedialog(int) 에서대화상자의필요한속성값들을설 정하고마지막에 create() 를호출한다. create() 호출사용예시 return new AlertDialog.Builder(CustomDialog.this).create(); 검사방법 룰체커 (Rule Checker) 식별번호 MSCSA-AN-API-006 M-SCSA 필수식별명복잡한대화상자를보여줄때, showdialog(int) 를사용한다. 위험평가심각도 M 위험도 M 발생가능성 H showdialog(int) 는인자값에해당하는대화상자가시스템에 근 거 의해생성되었는지점검한다. 생성되지않았으면 oncreatedialog(int) 를호출하여대화상자를생성하고, 이미 생성되어생성된대화상자를보여준다. 방 법 복잡한대화상자를호출할때, showdialog(int) 를사용한다. showdialog() 호출예시 button.setonclicklistener(new View.OnClickListener() public void onclick(view v) { showdialog(custom_view); 검사방법 룰체커 (Rule Checker)

104 식별번호 MSCSA-AN-API-006 M-SCSA 필수대화상자의입력에따라프로그램이실행되어야할경우, 대식별명화상자의버튼클릭리스너에서실행할코드를작성한다. 위험평가심각도 M 위험도 M 발생가능성 H 대화상자는프로그램의흐름을막지못한다. 따라서대화상자 근 거 가호출된후에대화상자뒤에있는코드가실행된다. 만약 show() 혹은 showdialog(int) 를호출한다음에대화상자의 입력에따라실행되는코드를삽입하면개발자가의도한기 능을수행하지못한다. 방 법 대화상자의버튼클릭리스너에서대화상자에입력에의해수행되어야하는코드를작성한다.. 대화상자버튼클릭리스너사용예시 alertdialog.setpositivebutton(" 종료버튼 ", new DialogInterface.OnClickListener() public void onclick(dialoginterface dialog, int which) { finish(); 검사방법 룰체커 (Rule Checker)

105 토스트 박스클래스 식별번호 MSCSA-AN-API-007 M-SCSA 필수식별명토스트박스사용시, 반드시 show() 를호출한다. 위험평가심각도 M 위험도 M 발생가능성 H 토스트클래스의 maketext(..) 를사용하여메시지박스를생 근 거 성하고, show() 를호출하여메시지박스를사용자에게보여줘 야한다. 하지만이는 show() 를빠뜨리는경우가종종발생 하며, 이경우메시지박스를화면에출력할수없다. 방 법 maketext(..) 로토스트박스를생성하고, show() 를호출한다. 토스트클래스 show() 호출사용예시 Toast.makeText(this, " Toast Box ", Toast.LENGTH_SHORT).show(); 검사방법룰체커 (Rule Checker)

106 미디어플레이어 클래스 식별번호 MSCSA-AN-API-008 M-SCSA 필수하나의미디어플레이어객체에다수의미디어자원들을사용 식별명 할경우, 미디어를재생하기전에현재재생중인미디어를 파괴하고재생한다. 위험평가심각도 M 위험도 M 발생가능성 H 하나의미디어플레이어객체에다수의미디어자원들을사용 근 방 거 법 할경우, 하나의미디어를재생하는동안에다른미디어가들 어온다면현재재생을파괴하고, 미디어플레이어객체는새로 운미디어를위해생성되어야한다. 만약이를파괴하지않고 새로운미디어를재생할경우, 프로그램이다운되거나혹은 미디어가정상적인재생을하지못한다. 미디어를재생하기전에미디어플레이어객체에자원이할당 되었는지판단하고, 할당되어있으면미디어플레이어객체를 초기화되지않은상태로설정하는 reset() 를사용한후에미 디어를재생한다. 미디어플레이어클래스 reset() 호출사용예시 private MediaPlayer directplayer; if(directplayer!= null) { if(directplayer.isplaying()) { directplayer.reset(); 검사방법 룰체커 (Rule Checker)

107 이벤트처리 식별번호 MSCSA-AN-API-009 M-SCSA 필수식별명이벤트리스너에서사용될변수를 final 로선언한다. 위험평가심각도 M 위험도 M 발생가능성 H 메서드에선언된지역변수는메서드가호출되면존재하고메 근 거 서드가리턴되면더이상존재하지않는다. 만약이벤트리스 너를메서드내에선언했을경우, 메서드가리턴되더라도이 벤트리스너는없어지지않고이벤트가발생하면언제든호 출된다. 따라서이벤트리스너에서메서드내에있는지역변 수를사용할경우, final 로선언하여전역적으로지속되도록 만들어야한다. 방 법 메서드에선언된지역변수를이벤트처리기에서사용한다면 final 로선언한다. 이벤트처리기내의변수사용예시 final String textstring; exbutton.setonclicklistener(new View.onClickListener() public void onclick(view v) { textstring = "Click Event!!!";... 검사방법 룰체커 (Rule Checker)

108 캔버스 클래스 식별번호 MSCSA-AN-API-010 M-SCSA 필수 식별명 캔버스에적용할페인트객체에안티에일리어싱을적용한다. 위험평가 심각도 M 위험도 M 발생가능성 H 근 거 안티에일리어싱은색상차이가나는경계부근을매끄럽게만들어준다. 따라서품질을향상시킬수있다. 페인트객체를생성하고생성된객체에안티에일리어싱을적 방 법 용하거나또는페인트객체생성시인자값으로안티에일리 어싱이적용되도록생성한다. 안티에일리어싱적용사용예시 // #1 : 페인트객체의메서드를사용하여안티에일리어싱적용 Paint mpaint = new Paint(); mpaint.setantialias(true); // #2 : 생성자에게안티에일리어싱적용 Paint mpaint = new Paint(Paint.ANTI_ALIAS_FLAG); 검사방법룰체커 (Rule Checker) 식별번호 MSCSA-AN-API-010 M-SCSA 필수 식별명 캔버스의그리기메서드를호출하기전에적용할모든속성을모두정의한다. 위험평가 심각도 M 위험도 M 발생가능성 H 근 거 만약캔버스의그리기메서드이후에페인트객체의다양한속성들을정의하면, 이는그리기객체에반영되지않는다. 방 법 페인트객체의색상, 텍스트사이즈등과같은속성들을먼저정의하고, 이를캔버스의그리기메서드에적용한다. drawtext() 메서드사용예시 Paint mpaint = new Paint(Paint.ANTI_ALIAS_FLAG); mpaint.setcolor(color.green);... canvas.drawtext(..., mpnint); 검사방법룰체커 (Rule Checker)

109 식별번호 MSCSA-AN-SEC-001 M-SCSA 필수식별명기밀정보의단순한텍스트전송위험평가심각도 H 위험도 H 발생가능성 H SW가보안과관련된민감한데이터를명백한텍스트의형태 설 명 로통신채널을통해서보내는경우, 인증받지않은주체에 의해서스니핑이일어날수있다. 방 법 민감한정보를통신채널을통하여내보낼때는반드시암호화과정을거쳐야한다. 기밀정보의단순한텍스트전송사용예시 민감한정보를네트워크를통하여서버에전송하기전에최소한 128비트길 이의키를이용하여암호화하는것이바람직하다. 1: 2: public void oncreate(bundle savedinstancestate) { 3: int port = 443; 4: String hostname = "hostname"; 5: Socket socket = new Socket(hostname, port); Bad Code 6: InputStream in = socket.getinputstream(); 7: OutputStream out = socket.getoutputstream(); 8: // Read from in and write to out... 9: in.close(); 10: out.close(); 11: 1: 2: public void oncreate(bundle savedinstancestate) { 3: int port = 443; 4: String hostname = "hostname"; 5: SocketFactory socketfactory = SSLSocketFactory.getDefault(); 6: Socket socket = Good Code socketfactory.createsocket(hostname,, port); 7: InputStream in = socket.getinputstream(); 8: OutputStream out = socket.getoutputstream(); 9: // Read from in and write to out... 10: in.close(); 11: out.close(); 12: CWE CWE-319 기밀정보의단순한텍스트전송관련항목

110 식별번호 MSCSA-AN-SEC-002 M-SCSA 필수식별명취약한암호화알고리즘의사용위험평가심각도 H 위험도 H 발생가능성 H 보안적으로취약하거나위험한암호화알고리즘을사용해서는안 설 명 된다. 표준화되지암호화알고리즘을사용하는것은공격자가알고 리즘을분석하여무력화시킬수있는가능성을높일수도있다. 몇 몇오래된암호화알고리즘의경우는컴퓨터의성능이향상됨에 따라취약해지기도해서, 예전에는해독하는데몇십억년이걸리던 알고리즘이며칠이나몇시간내에해독되기도한다. RC2, RC4, RC5, RC6, MD4, MD5, SHA1, DES 알고리즘이여기에해당된다. 방 법 AES 처럼보다강력한암호화알고리즘을사용하는것이바람직하다. 취약한암호화알고리즘의사용예시 취약하다고알려진알고리즘대신 AES알고리즘을최소한 128비트길이의키 를이용하여사용하는것이바람직하다 1: 2: public byte[] encrypt(byte[] msg, Key k) { 3: byte[] rslt = null; 4: 5: try { 6: 7: Cipher c = Cipher.getInstance("DES"); Bad Code 8: c.init(cipher.encrypt_mode, k); 9: rslt = c.update(msg); 10: catch (InvalidKeyException e) { 11: 12: 13: return rslt; 14: 15: 1: 2: public byte[] encrypt(byte[] msg, Key k) { 3: byte[] rslt = null; 4: 5: try { 6: 7: Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding"); 8: c.init(cipher.encrypt_mode, k); Good Code 9: rslt = c.update(msg); 10: catch (InvalidKeyException e) { 11: 12: 13: return rslt; 14: 15: 18: 19: CWE CWE-327 취약한암호화알고리즘의사용관련항목

111 식별번호 MSCSA-AN-SEC-003 M-SCSA 필수식별명적절하지않은난수값의사용위험평가심각도 H 위험도 H 발생가능성 H 예측가능한난수를사용하는것은시스템에취약점을야기 설 명 시킨다. 예측불가능한숫자가필요한상황에서예측가능한 난수를사용한다면, 공격자는 SW 에서생성되는다음숫자를 예상하여시스템을공격하는것이가능하다. 방 법 난수발생기에서 SEED를사용하는경우에는예측하기어려운방법으로변경하여사용하는것이바람직하다. 적절하지않은난수값의사용사용예시 java.util.random 클래스는 SEED를재설정하지않아도매번다른난수를생 성한다. 따라서 Random 클래스를사용하는것이보다안전하다. Bad Code Good Code CWE 관련항목 1: 2: public double roledice() { 3: return Math.random(); 4: 5: 1: import java.util.random; 2: import java.util.date; 3: 4: public int roledice() { 5: Random r = new Random(); 6: 7: r.setseed(new Date().getTime()); 8: 9: return (r.nextint()%6) + 1; 10: 11: CWE-330 적절하지않은난수값의사용

112 식별번호 MSCSA-AN-SEC-004 M-SCSA 필수식별명전역적으로접근가능한파일위험평가심각도 H 위험도 H 발생가능성 H 파일생성시다른응용프로그램이접근할수있는인자값 설 명 (MODE_WORLD_READABLE, MODE_WORLD_WRITABLE) 을사용할경우보안성이나무 결성이침해될수있다. 방 법 파일에대한접근권한은최소한으로유지되어야한다. 전역적으로접근가능한파일사용예시 외부에서접근할수없도록 MODE_PRIVATE로권한을설정한다. 1: public void oncreate(bundle savedinstancestate) { Bad Code 2: super.oncreate(savedinstancestate); 3: try { 4: FileOutputStream fout = openfileoutput("test", MODE_WORLD_READABLE); 5: OutputStreamWriter out1 = new OutputStreamWriter(fOut); 6: out1.write("hello World"); 7: out1.close(); 8: fout.close(); 9: catch (Throwable t) { 10: 11: 1: public void oncreate(bundle savedinstancestate) { Good Code 2: super.oncreate(savedinstancestate); 3: try { 4: FileOutputStream fout = openfileoutput("test", MODE_PRIVATE); 5: OutputStreamWriter out1 = new OutputStreamWriter(fOut); 6: out1.write("hello World"); 7: out1.close(); 8: fout.close(); 9: catch (Throwable t) { 10: 11:

113 식별번호 MSCSA-AN-SEC-005 M-SCSA 필수식별명외부에서접근하여활성화가능한컴포넌트위험평가심각도 H 위험도 H 발생가능성 H 안드로이드애플리케이션에서 manifest.xml파일에 설 명 android:exported="true" 로설정되어있는컴포넌트는외부 에서해당컴포넌트에인텐트를전달하여활성화시킬수있 다. 이경우해당컴포넌트가원래의도하지않았던상황에 서수행을시작함으로써시스템보안에침해를가져올수있 다. 또한이러한작업요청은인텐트를라우팅하는리졸버 (resolver) 액티비티를통하여 System 레벨사용자권한으로 송신자의 ID0 가바뀌어전송되므로보안침해의위험이커진 다. 방 법 컴포넌트에대한접근권한을외부에제공하지않은것이바람직하다. 외부에서접근하여활성화가능한컴포넌트사용예시 android:exported 속성을 "false" 로설정하거나설정을제거하면해당속성이 "false" 가되어외부로부터의구동이차단된다. 1: <?xml version="1.0" encoding="utf-8"?> 2: <manifest xmlns:android=" d" 3: package="com.example.android.samplesync" android:versioncode="1" android: versionname="1.0"> 4: 5: <application android:icon="@drawable/icon" android:label="@string/label"> 6: <service android:name=".syncadapter.syncservice" android:exported="true"> Bad Code 7: <intent-filter> 8: <action android:name="android.content.syncadapter"/> 9: </intent-filter> 10: <meta-data android:name="android.content.syncadapter" 11: android:resource="@xml/syncadapter"/> 12: <meta-data android:name="android.provider.contacts_structure " 13: android:resource="@xml/contacts"/> 14: </service> 15: </application> 16: <uses-sdk android:minsdkversion="5"/> 17: </manifest> 1: <?xml version="1.0" encoding="utf-8"?> Good Code 2: <manifest xmlns:android="

114 d" 3: package="com.example.android.samplesync" android:versioncode="1" android: versionname="1.0"> 4: 5: <application 6: <service android:name=".syncadapter.syncservice" android:exported="false"> 7: <intent-filter> 8: <action android:name="android.content.syncadapter"/> 9: </intent-filter> 10: <meta-data android:name="android.content.syncadapter" 11: 12: <meta-data android:name="android.provider.contacts_structure " 13: 14: </service> 15: </application> 16: <uses-sdk android:minsdkversion="5"/> 17: </manifest>

115 식별번호 MSCSA-AN-SEC-006 M-SCSA 필수식별명공유아디디에의한접근제어통과위험평가심각도 H 위험도 H 발생가능성 H Manifest.xml 파일의 manifest 태그에 설 명 android:shareduserid 속성을설정할경우같은 아이디와서명을사용함으로써다른응용프로그램이해당프 로그램의정보를접근할수있게된다. 이를통하여의도적 및비의도적으로해당프로그램의무결성과보안성이침해 될수있다. 방 법 공유아이디설정을하지않는것이바람직하다. 공유아디디에의한접근제어통과사용예시 Manifest.xml 파일의 manifest 태그에 android:shareduserid 속성을설정하 지않아야, 아이디공유로인한데이터의유출이나부적절한접근위험을방 지할수있다. Bad Code Good Code 1: 2: <manifest xmlns:android=" d" 3: package="com.example.android.apis" 4: android:versioncode="1" 5: android:versionname="1.0" 6: android:shareduserid="android.uid.developer1"> 1: 2: <manifest xmlns:android=" d" 3:...package="com.example.android.apis".. 4:...android:versionCode="1".. 5:...android:versionName="1.0"> 6: <!-- android:shareduserid="android.uid.developer1"... -->

116 식별번호 MSCSA-AN-TMS-001 M-SCSA 필수식별명경쟁조건 : 검사시점과사용지점위험평가심각도 H 위험도 M 발생가능성 M 병렬실행환경의응용프로그램에서는자원을사용하기전에 설 방 명 법 자원의상태를검사한다. 그터나자원을사용하는시점에자 원의상태가변하는경우가있다. 이것으로인해프로그램에 여러가지문제, 즉교착상태, 경쟁조건및기타동기화오 류등이발생할수있다. 공유자원 ( 예 : 파일 ) 을여러스레드가접근하여사용할경우, 동기화구문을이용하여한번에하나의스레드만접근가능 하도록프로그램을작성하여야한다. 경쟁조건 : 검사시점과사용지점사용예시공유자원 ( 예를들어, 파일 ) 을여러스레드가접근하여사용할경우, 동기화구 문을이용하여한번에하나의스레드만접근가능하도록변경한다. 1: public class UA367 extends Activity { 3: public void oncreate(bundle savedinstancestate) { 4: super.oncreate(savedinstancestate); 5: FileAccessThread fileaccessthread = new FileAccessThread(); 6: FileDeleteThread filedeletethread = new FileDeleteThread(); 7: fileaccessthread.start(); 8: filedeletethread.start(); 9: 10: 11: 12: class FileAccessThread extends Thread { 13: public void run() { Bad Code 14: try { 15: File f = new File("Test_367.txt"); 16: if (f.exists()) { 17: BufferedReader br = new BufferedReader(new FileReader(f)); 18: br.close(); 19: 20: catch(filenotfoundexception e) { 21: System.out.println("Exception Occurred") ; 22: catch(ioexception e) { 23: System.out.println("Exception Occurred") ; 24: 25: 26: 27: class FileDeleteThread extends Thread { 28: public void run() {

117 Good Code CWE 관련항목 29: try { 30: File f = new File("Test_367.txt"); 31: if (f.exists()) { 32: f.delete(); 33: 34: catch(filenotfoundexception e) { 35: System.out.println("Exception Occurred") ; 36: catch(ioexception e) { 37: System.out.println("Exception Occurred") ; 38: 39: 40: 1: public class SA367 extends Activity { 2: public void oncreate(bundle savedinstancestate) { 3: super.oncreate(savedinstancestate); 4: 5: FileAccessThread fileaccess = new FileAccessThread(); 6: Thread first = new Thread(fileAccess); 7: Thread second = new Thread(fileAccess); 8: Thread third = new Thread(fileAccess); 9: Thread fourth = new Thread(fileAccess); 10: first.start(); 11: second.start(); 12: third.start(); 13: fourth.start(); 14: 15: 16: 17: class FileAccessThread implements Runnable { 18: public synchronized void run() { 19: try { 20: File f = new File("Test.txt"); 21: if (f.exists()) { 22: Thread.sleep(100); 23: BufferedReader br = new BufferedReader(new FileReader(f)); 24: System.out.println(br.readLine()); 25: br.close(); 26: f.delete(); 27: 28: catch (IOException e) { 29: System.err.println("IOException occured"); 30: 31: 32: CWE-367 경쟁조건 : 검사시점과사용지점

118 식별번호 MSCSA-AN-TMS-002 M-SCSA 필수 식별명 제대로제어되지않는재귀 위험평가 심각도 H 위험도 M 발생가능성 M 재귀의순환횟수를제어하지못하여할당된메모리나프로그 설 방 명 법 램스택등의자원을과다하게사용하면위험하다. 대부분의 경우, 귀납조건 (base case) 없는재귀는무한재귀에빠진 다. 무한재귀를방지하기위하여모든재귀호출을조건문블럭 이나반복문블럭안에서만수행해야한다. 제대로제어되지않는재귀사용예시모든재귀호출은조건문이나반복문블록안에서이루어져야한다. 1: 2: public int factorial(int n) { Bad Code 3: 4: return n * factorial(n - 1); 5: 1: 2: public int factorial(int n) { 3: int i; 4: 5: if (n == 1) { Good Code 6: i = 1; 7: else { 8: i = n * factorial(n - 1); 9: 10: return i; 11: CWE CWE-674 제대로제어되지않는재귀관련항목

119 식별번호 MSCSA-AN-TMS-003 M-SCSA 필수식별명 Thread.stop() 로스레드를중지시키지않는다위험평가심각도 H 위험도 M 발생가능성 M 스레드를중지시킬때사용하는 Thread.stop() 은 설 방 명 법 deprecated 메서드이이며, 스레드를중지시킬때발생하는 예외로인해취약점을갖고있다. Thread.stop() 은중지되는 스레드에대해 ThreadDeath 예외를발생시키며, 이는즉각 적으로모든락 (lock) 들을해방시킨다. 만약여러스레드들이 락을기다리는상황에서 Thread.stop() 이호출되면, 즉각적으 로모든락 (lock) 이해제되어원치않게락을해제하는문제 가발생한다. Thread.interrupt() 를사용하여스레드를중지시킨다. 또는 volatile 타입의플래그변수를두어, 이플래그값에따라 스레드의수행을중지시킨다. 스레드중지예시프로그램종료시스레드를중지하기위해 ondestroy() 에서스레드를중지시 킨다. 스레드를중지시킬때, 스레드의 stop() 을호출하면 ThreadDeath 예외 를발생시키며, 모든락 (lock) 을즉각적으로해제시키기때문에공유변수를 사용하는다른스레드들에게문제를야기할수있다. 이로인해 vector.size() 가예상치않은값을가질수있다. 이를예방하기위해 stop() 를사용하지 말고, interrupt() 를사용하거나또는 volatile 타입의플래그변수를사용하 여스레드수행을중지시켜야한다. spublic final class Container implements Runnable Bad Code public synchronized void run() { // end of run // end of Container... Container c = new Container(); Thread thread = new protected void ondestroy() {... super.ondestroy();

120 Good Code 검사방법 CERT 관련항목 thread.stop(); public final class Container implements Runnable public synchronized void run() { // end of run // end of Container... Container c = new Container(); Thread thread = new protected void ondestroy() {... super.ondestroy(); thread.interrupt(); 취약점분석도구 (Analysis Tool) THI05-J. Do not use Thread.stop() to terminate threads

121 식별번호 MSCSA-AN-TMS-004 M-SCSA 필수 thread-safe 메서드를 thread-unsafe 메서드로재정의하식별명지않는다위험평가심각도 M 위험도 M 발생가능성 L thread-safe 메서드를하위클래스에서재정의할때, 설 명 thread-unsafe 하게정의하는것은상위클래스의규약을위 반하는것이다. 이규약을위반했다고오류는아니지만, 이는 문제를야기할수있다. 상위클래스의인스턴스는그의서브 클래스들의인스턴스를수용할수있기때문에, 하위클래스가 thread-safe 메서드를 thread-unsafe 메서드로재정의하 면적절한동기화가이루어지지않는다. 방 법 상위클래스의 thread-safe 메서드는하위클래스에서도 thread-safe 하게재정의한다. thread-safe 메서드재정의예시 상위클래스의메서드를 thread-safe 로정의하고, 이를상속받는하위클래 스의메서드를 thread-unsafe 로재정의한코드이다. thread-unsafe 로 메서드를재정의하는것이명백한오류는아니지만, 이는상위클래스메서드 의규약을위반한것이다. 또한다중스레드프로그래밍에서적절한동기화가 이루어지지못한다. class Calculation { Bad Code Good Code public synchronized void doadd() { class CalculationObject extends Calculation public void doadd() { class Calculation { public synchronized void doadd() { class CalculationObject extends Calculation public synchronized void doadd() {

122 검사방법 CERT 관련항목 취약점분석도구 (Analysis Tool) TSM00-J. Do not override thread-safe methods with methods that are not thread-safe

123 식별번호 MSCSA-AN-TMS-005 M-SCSA 선택식별명 Thread.run() 으로스레드를실행하지않는다위험평가심각도 M 위험도 M 발생가능성 M 스레드를실행할때, Thread.run() 메서드를직접적으로호출 설 방 명 법 하는것은올바른방법이아니다. 이는단지스레드를정의한 클래스에있는 run() 메서드를호출하는것이기때문에새로 생성한스레드가실행되지않는다. 스레드의 Thread.start() 메서드를호출하여스레드를실행한 다. Thread.start() 메서드를호출하여스레드를실행하면, 실 제스레드가생성되고, 생성된스레드의 run() 메서드가실행 되어올바르게스레드를실행할수있다. 스레드시작예시 oncreate() 메서드에서 Thread.run() 을호출하여스레드를실행하는코드이 다. Thread.run() 은스레드를실행하는데올바른방법이아니다. class MyThread implements Runnable { Bad Code Good public void run() { // do public void oncreate(bundle savedinstancestate) {... private MyThread mthread = new MyThread(); new Thread(mThread).start();... private MyThread mthread = public void oncreate(bundle savedinstancestate) {... private MyThread mthread = new MyThread(); new Thread(mThread).run();

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

법학박사학위논문 실손의료보험연구 2018 년 8 월 서울대학교대학원 법과대학보험법전공 박성민

법학박사학위논문 실손의료보험연구 2018 년 8 월 서울대학교대학원 법과대학보험법전공 박성민 저작자표시 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 귀하는, 이저작물의재이용이나배포의경우, 이저작물에적용된이용허락조건을명확하게나타내어야합니다.

More information

행정학석사학위논문 공공기관기관장의전문성이 조직의성과에미치는영향 년 월 서울대학교행정대학원 행정학과행정학전공 유진아

행정학석사학위논문 공공기관기관장의전문성이 조직의성과에미치는영향 년 월 서울대학교행정대학원 행정학과행정학전공 유진아 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

문학석사학위논문 존밀링턴싱과이효석의 세계주의비교 로컬 을중심으로 년 월 서울대학교대학원 협동과정비교문학 이유경

문학석사학위논문 존밀링턴싱과이효석의 세계주의비교 로컬 을중심으로 년 월 서울대학교대학원 협동과정비교문학 이유경 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

i

i 저작자표시 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 귀하는, 이저작물의재이용이나배포의경우, 이저작물에적용된이용허락조건을명확하게나타내어야합니다.

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우, 이저작물에적용된이용허락조건을명확하게나타내어야합니다.

More information

저작자표시 - 비영리 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물

저작자표시 - 비영리 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물 저작자표시 - 비영리 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 귀하는, 이저작물의재이용이나배포의경우, 이저작물에적용된이용허락조건을명확하게나타내어야합니다.

More information

저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비

저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비 저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 동일조건변경허락. 귀하가이저작물을개작, 변형또는가공했을경우에는,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Precipitation prediction of numerical analysis for Mg-Al alloys

Precipitation prediction of numerical analysis for Mg-Al alloys 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원

저작자표시 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원 저작자표시 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 동일조건변경허락. 귀하가이저작물을개작, 변형또는가공했을경우에는, 이저작물과동일한이용허락조건하에서만배포할수있습니다.

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

경영학석사학위논문 투자발전경로이론의가설검증 - 한국사례의패널데이타분석 년 8 월 서울대학교대학원 경영학과국제경영학전공 김주형

경영학석사학위논문 투자발전경로이론의가설검증 - 한국사례의패널데이타분석 년 8 월 서울대학교대학원 경영학과국제경영학전공 김주형 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

( )부록

( )부록 A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

저작자표시 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니

저작자표시 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니 저작자표시 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 귀하는, 이저작물의재이용이나배포의경우, 이저작물에적용된이용허락조건을명확하게나타내어야합니다.

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비

저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비 저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 동일조건변경허락. 귀하가이저작물을개작, 변형또는가공했을경우에는,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

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

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

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

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

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

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

저작자표시 - 비영리 - 동일조건변경허락 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이차적저작물을작성할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 동일조건변경허락. 귀하가이저작물을개작, 변형또는가공했을경우에는,

More information

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint App Fundamentals[Part2].pptx

Microsoft PowerPoint App Fundamentals[Part2].pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 Part 1 애플리케이션컴포넌트 액티비티와태스크 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 태스크는명시적으로정의 / 선언하는것이아니라, 주어진목적을위해 현재수행되고있는액티비티들의스택이다. 예를들어, 어떤액티비티가특정위치상의시가지지도를보여주고자한다하자. 해당액티비티는안드로이드에이미존재하는맵뷰어액티비티를실행

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요 . 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

저작자표시 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 변경금지. 귀

저작자표시 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 변경금지. 귀 저작자표시 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 이저작물을영리목적으로이용할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우, 이저작물에적용된이용허락조건을명확하게나타내어야합니다.

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

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

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

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 헬로, 안드로이드 4 주차 사용자인터페이스디자인하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 차례 메뉴추가하기 Settings 추가하기 새게임시작하기

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 2 xmlns:tools=http://schemas.android. 10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

교육학석사학위논문 윤리적입장에따른학교상담자의 비밀보장예외판단차이분석 년 월 서울대학교대학원 교육학과교육상담전공 구승영

교육학석사학위논문 윤리적입장에따른학교상담자의 비밀보장예외판단차이분석 년 월 서울대학교대학원 교육학과교육상담전공 구승영 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 애플리케이션컴포넌트 액티비티와태스크 Part 1 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 Library Java (classes) aapk.apk (android package) identifiers Resource & Configuration aapk: android

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

행정학박사학위논문 목표모호성과조직행태 - 조직몰입, 직무만족, 공직봉사동기에미치는 영향을중심으로 - 년 월 서울대학교대학원 행정학과행정학전공 송성화

행정학박사학위논문 목표모호성과조직행태 - 조직몰입, 직무만족, 공직봉사동기에미치는 영향을중심으로 - 년 월 서울대학교대학원 행정학과행정학전공 송성화 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

03장

03장 CHAPTER3 ( ) Gallery 67 68 CHAPTER 3 Intent ACTION_PICK URI android provier MediaStore Images Media EXTERNAL_CONTENT_URI URI SD MediaStore Intent choosepictureintent = new Intent(Intent.ACTION_PICK, ë

More information

슬라이드 1

슬라이드 1 Android App 개발기초 & Activity, Intent 세미나 2012. 03. 26 ING 팀여상권, 이용균, 최상욱, 권지해 목차 프로젝트생성과정설명 안드로이드동작, 구조설명 Activity 설명 Intent 설명 질문 1 프로젝트생성과정설명 1. Eclipse의메뉴바에서 File 선택 2. New선택후 Android Project 선택 3. Project

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

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

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

PowerPoint Template

PowerPoint Template 10. 예외처리 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 10.1 개요 10.2 C++ 의예외처리 10.3 Java 의예외처리 10.4 Ada 의예외처리 10.1 예외처리의개요 (1) 3 예외 (exception) 오버플로나언더플로, 0 으로나누기, 배열첨자범위이탈오류와같이프로그램실행중에비정상적으로발생하는사건 예외처리 (exception handling)

More information

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할 저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할수없습니다. 변경금지. 귀하는이저작물을개작, 변형또는가공할수없습니다. 귀하는, 이저작물의재이용이나배포의경우,

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information