์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ/์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ

| 2020 ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (ํ•„๊ธฐ) | 2. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ - ํ†ตํ•ฉ ๊ตฌํ˜„

ํ•œ์ฝ”๋”ฉ 2020. 8. 5. 11:54
728x90
728x90
39. ๋‹จ์œ„ ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ

 

๋‹จ์œ„ ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ (๋‹จ์œ„ ํ…Œ์ŠคํŠธ)

ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹จ์œ„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ชจ๋“ˆ์ด ์ •ํ•ด์ง„ ๊ธฐ๋Šฅ์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋‹จ์œ„ ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ์ค€์€ ๋‹จ์œ„ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ฝ”๋“œ์ด๋ฏ€๋กœ ์‹œ์Šคํ…œ ์ˆ˜์ค€์˜ ์˜ค๋ฅ˜๋Š” ์žก์•„๋‚ผ ์ˆ˜ ์—†์Œ 

ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ : ๋ชจ๋“ˆ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์˜คํ”ˆ์‹œํ‚จ ์ƒํƒœ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ๋ชจ๋“  ๋…ผ๋ฆฌ์  ๊ฒฝ๋กœ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ : ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ˆ˜ํ–‰ํ•  ํŠน์ • ๊ธฐ๋Šฅ์ด ์™„์ „ํžˆ ์ž‘๋™๋˜๋Š” ๊ฒƒ์„ ์ž…์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ

 

 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(Test Case)

๋ชจ๋“ˆ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ์— ์ž…๋ ฅ๋  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ’๋“ค๊ณผ ์˜ˆ์ƒ ๊ฒฐ๊ณผ๋“ค์„ ๋‚˜์—ดํ•œ ๋ชฉ๋ก์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •

- ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ช…์„ธ์„œ๋กœ, ๋ช…์„ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ์˜ ์„ค๊ณ„ ์‚ฐ์ถœ๋ฌผ์— ํ•ด๋‹น

- ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๋Š” ์ง๊ด€์ ์ธ ํ…Œ์ŠคํŠธ๋Š” ์ธ๋ ฅ๊ณผ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•  ์ˆ˜ ์žˆ์Œ

 

• ISO/IEC/IEEE 29119-3 ํ‘œ์ค€์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ

์‹๋ณ„์ž(Identifier) : ํ•ญ๋ชฉ ์‹๋ณ„์ž, ์ผ๋ จ๋ฒˆํ˜ธ

ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ(Test Item) : ํ…Œ์ŠคํŠธ ๋Œ€์ƒ

์ž…๋ ฅ ๋ช…์„ธ(Input Specification) :  ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๋˜๋Š” ํ…Œ์ŠคํŠธ ์กฐ๊ฑด

์ถœ๋ ฅ ๋ช…์„ธ(Output Specification) : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜ํ–‰ ์‹œ ์˜ˆ์ƒ๋˜๋Š” ์ถœ๋ ฅ ๊ฒฐ๊ณผ

ํ™˜๊ฒฝ ์„ค์ •(Environmental Needs) : ํ•„์š”ํ•œ ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ™˜๊ฒฝ

ํŠน์ˆ˜ ์ ˆ์ฐจ ์š”๊ตฌ(Special Procedure Requirement) : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜ํ–‰ ์‹œ ํŠน๋ณ„ํžˆ ์š”๊ตฌ๋˜๋Š” ์ ˆ์ฐจ

์˜์กด์„ฑ ๊ธฐ์ˆ (Inter-case Dependencies) : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐ„์˜ ์˜์กด์„ฑ

 

 

ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…๋“ค์ด ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ๊ณผ ์กฐ๊ฑด์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ณผ์ •

 

• ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค 5๋‹จ๊ณ„

โ‘  ๊ณ„ํš ๋ฐ ์ œ์–ด ๋‹จ๊ณ„ : ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„ํš ์ˆ˜๋ฆฝ, ๊ณ„ํš๋Œ€๋กœ ์ง„ํ–‰๋˜๋„๋ก ์ œ์–ด

โ‘ก ๋ถ„์„ ๋ฐ ์„ค๊ณ„ ๋‹จ๊ณ„ : ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ๋ฅผ ๊ตฌ์ฒดํ™”ํ•ด ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹จ๊ณ„

ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ ์šฉํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ์ ˆ์ฐจ๋ฅผ ๋ช…์„ธํ•œ ๋ฌธ์„œ

โ‘ข ๊ตฌํ˜„ ๋ฐ ์‹คํ–‰ ๋‹จ๊ณ„ : ํšจ์œจ์ ์ธ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์„ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์กฐํ•ฉํ•ด ํ…Œ์ŠคํŠธ ํ”„๋กœ์‹œ์ €์— ๋ช…์„ธํ•˜๋Š” ๋‹จ๊ณ„

ํ…Œ์ŠคํŠธ ํ”„๋กœ์‹œ์ € : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์˜๋ฏธ

โ‘ฃ ํ‰๊ฐ€ ๋‹จ๊ณ„ : ํ…Œ์ŠคํŠธ๊ฐ€ ๊ณ„ํš๊ณผ ๋ชฉํ‘œ์— ๋งž๊ฒŒ ์ˆ˜ํ–‰๋˜์—ˆ๋Š”์ง€ ํ‰๊ฐ€, ๊ธฐ๋ก

โ‘ค ์™„๋ฃŒ ๋‹จ๊ณ„ : ์ดํ›„์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ฐธ๊ณ  ์ž๋ฃŒ ๋ฐ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์— ๋Œ€ํ•œ ์ฆ๊ฑฐ ์ž๋ฃŒ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ ๊ณผ์ •๊ณผ ์‚ฐ์ถœ๋ฌผ์„ ๊ธฐ๋ก ๋ฐ ์ €์žฅํ•˜๋Š” ๋‹จ๊ณ„

 

 

40. ๊ฐœ๋ฐœ ์ง€์› ๋„๊ตฌ

 

ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (IDE; Integrated Development Environment)

๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ, ์ฆ‰ ํŽธ์ง‘๊ธฐ (Editor), ์ปดํŒŒ์ผ๋Ÿฌ (Compiler), ๋””๋ฒ„๊ฑฐ (Debugger) ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ํˆด์„ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ†ตํ•ฉํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

- ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์˜๋ฏธ

- ์ฝ”๋“œ์˜ ์ž๋™ ์ƒ์„ฑ ๋ฐ ์ปดํŒŒ์ผ ๊ฐ€๋Šฅ, ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋„๊ตฌ๋“ค์„ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Œ

- ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„์„ ์‹œ๊ฐํ™”ํ•˜๋ฏ€๋กœ ์ˆ˜์ • ์šฉ์ด

- ์™ธ๋ถ€์˜ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์™€ ์—ฐ๋™ ๊ฐ€๋Šฅ 

 

 

• ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ

ํ”„๋กœ๊ทธ๋žจ

๊ฐœ๋ฐœ์‚ฌ

ํ”Œ๋žซํผ

์šด์˜์ฒด์ œ 

์ง€์› ์–ธ์–ด

์ดํด๋ฆฝ์Šค(Eclipse) 

Eclipse Foundation, IBM

ํฌ๋กœ์Šค ํ”Œ๋žซํผ

Windows, Linux, MacOS ๋“ฑ

JAVA, C++, C, PHP, JSP ๋“ฑ

๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค

(Visual studio)

Microsoft

 

Win32, Win64

Windows 

Basic, C++, C, C#, .NET ๋“ฑ 

์—‘์Šค ์ฝ”๋“œ(Xcode) 

Apple 

Mac, iPhone

MacOS, iOS 

C++, C, C#, JAVA ๋“ฑ

์•ˆ๋“œ๋กœ์ด์Šค ์ŠคํŠœ๋””์˜ค

(Android Studio)

Google 

Android 

Windows, Linux, MacOS 

JAVA, C, C++

IDEA 

JetBrains 

ํฌ๋กœ์Šค ํ”Œ๋žซํผ 

Windows, Linux, MacOS 

JAVA, JSP, XML, GO, Kotlin ๋“ฑ

 

 

๋นŒ๋“œ ๋„๊ตฌ

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์— ํ•„์š”ํ•œ ์ „์ฒ˜๋ฆฌ, ์ปดํŒŒ์ผ ๋“ฑ์˜ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

์ „์ฒ˜๋ฆฌ (Preprocessing) : ์ปดํŒŒ์ผ์— ์•ž์„œ ์ฝ”๋“œ์— ์‚ฝ์ž…๋œ ์ฃผ์„์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋งคํฌ๋กœ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •

๋นŒ๋“œ : ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ๋“ค์„ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ œํ’ˆ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • ๋˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ๋งํ•จ

 

• ๋Œ€ํ‘œ์ ์ธ ๋นŒ๋“œ ๋„๊ตฌ

Ant

(Another Neat Tool)

์•„ํŒŒ์น˜ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์—์„œ ๊ฐœ๋ฐœํ•œ ์†Œํ”„ํŠธ์›จ์–ด, ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์˜ ๊ณต์‹์ ์ธ ๋นŒ๋“œ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋จ

XML ๊ธฐ๋ฐ˜์˜ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ

์ž์œ ๋„์™€ ์œ ์—ฐ์„ฑ ๋†’์Œ, ๋ณต์žกํ•œ ๋นŒ๋“œ ํ™˜๊ฒฝ์—๋„ ๋Œ€์ฒ˜ ๊ฐ€๋Šฅ

- ์ •ํ•ด์ง„ ๊ทœ์น™์ด๋‚˜ ํ‘œ์ค€์ด ์—†์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ •์˜, ์Šคํฌ๋ฆฝํŠธ์˜ ์žฌ์‚ฌ์šฉ ์–ด๋ ค์›€

 Maven

์•„ํŒŒ์น˜ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์—์„œ ๊ฐœ๋ฐœํ•œ ์†Œํ”„ํŠธ์›จ์–ด, Ant์˜ ๋Œ€์•ˆ์œผ๋กœ ๊ฐœ๋ฐœ ๋จ

์˜์กด์„ฑ์„ ์„ค์ •ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌ

์ปดํŒŒ์ผ๊ณผ ๋นŒ๋“œ ๋™์‹œ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

- ๊ทœ์น™์ด๋‚˜ ํ‘œ์ค€์ด ์กด์žฌํ•ด ์˜ˆ์™ธ ์‚ฌํ•ญ๋งŒ ๊ธฐ๋กํ•˜๋ฉด ๋จ

Gradle

๊ธฐ์กด์˜ Ant์™€ Maven์„ ๋ณด์™„ํ•ด ๊ฐœ๋ฐœ๋œ ๋นŒ๋“œ ๋„๊ตฌ

ํ•œ์Šค ํ† ์ปค ์™ธ 6์ธ์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ชจ์—ฌ ๊ณต๋™ ๊ฐœ๋ฐœํ•จ

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์˜ ๊ณต์‹ ๋นŒ๋“œ ๋„๊ตฌ๋กœ ์ฑ„ํƒ๋œ ๋„๊ตฌ

- ์˜์กด์„ฑ ํ™œ์šฉ, ๊ทธ๋ฃจ๋น„(Groovy) ๊ธฐ๋ฐ˜์˜ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ 

 

๊ธฐํƒ€ ํ˜‘์—… ๋„๊ตฌ (๊ทธ๋ฃน์›จ์–ด)

๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—… ํ™˜๊ฒฝ์—์„œ ์›ํ™œํžˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ธ ํ˜‘์—… ์†Œํ”„ํŠธ์›จ์–ด

- ์ผ์ • ๊ด€๋ฆฌ, ์—…๋ฌดํ๋ฆ„ ๊ด€๋ฆฌ, ์ •๋ณด ๊ณต์œ , ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋“ฑ์˜ ์—…๋ฌด ๋ณด์กฐ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Œ

- ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋จ

- ํ˜‘์—… ๋„๊ตฌ๊ฐ€ ์ต์ˆ™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ด์šฉํ•  ์˜์ง€๊ฐ€ ์—†์œผ๋ฉด ํ˜‘์—… ๋„๊ตฌ๊ฐ€ ์˜คํžˆ๋ ค ํ˜‘์—…์˜ ๋ฐฉํ•ด ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ

 

• ํ˜‘์—… ๋„๊ตฌ์˜ ์ข…๋ฅ˜

ํ”„๋กœ์ ํŠธ ๋ฐ ์ผ์ • ๊ด€๋ฆฌ

์ „์ฒด ํ”„๋กœ์ ํŠธ์™€ ๊ฐœ๋ณ„ ์—…๋ฌด๋“ค์˜ ์ง„ํ–‰ ์ƒํƒœ, ์ผ์ • ๋“ฑ์„ ๊ณต์œ ํ•˜๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต

- ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”, ๋ถ„๋”๋ฆฌ์ŠคํŠธ(Wunderlist), ํŠธ๋ ๋กœ(Trello), ์ง€๋ผ(Jira), ํ”Œ๋กœ์šฐ(Flow) ๋“ฑ

์ •๋ณด ๊ณต์œ  ๋ฐ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

- ์ฃผ์ฒด๋ณ„๋กœ ๊ตฌ์„ฑ์›๋“ค์„ ์ง€๋ชฉํ•ด ๋ฐฉ์„ ๊ฐœ์„คํ•œ ํ›„ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ ๊ฐ€๋Šฅ

ํŒŒ์ผ ๊ด€๋ฆฌ ๊ฐ„ํŽธ, ์˜์‚ฌ์†Œํ†ต ์ž์œ ๋กœ์›€

- ์Šฌ๋ž™(Slack), ์ž”๋””(Jandi), ํƒœ์Šคํฌ์›”๋“œ(Teskworld) ๋“ฑ

๋””์ž์ธ

- ๋””์ž์ด๋„ˆ๊ฐ€ ์„ค๊ณ„ํ•œ UI๋‚˜ ์ด๋ฏธ์ง€์˜ ์ •๋ณด๋“ค์„ ์ฝ”๋“œํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต

- ์Šค์ผ€์น˜(Sketch), ์ œํ”Œ๋ฆฐ(Zeplin) ๋“ฑ

๊ธฐํƒ€

- ์•„์ด๋””์–ด ๊ณต์œ ์— ์‚ฌ์šฉ๋˜๋Š” ์—๋ฒ„๋…ธํŠธ(Evernote)

- API๋ฅผ ๋ฌธ์„œํ™”ํ•ด ๊ฐœ๋ฐœ์ž๋“ค ๊ฐ„ ํ˜‘์—…์„ ๋„์™€์ฃผ๋Š” ์Šค์›จ๊ฑฐ(Swagger)

- ๊นƒ(Git)์˜ ์›นํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์ธ ๊นƒํ—ˆ๋ธŒ(Github)

728x90
๋ฐ˜์‘ํ˜•