๊ตญ๋น์ง์ D+20
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ -
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ
#1. ์ธ์ด ํน์ฑ ํ์ฉํ๊ธฐ
• ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ํ
- ๋ช ๋ นํ ์ธ์ด(Imperative Language) : ์ปดํจํฐ๊ฐ ๋์ํด์ผํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํ๋ก๊ทธ๋๋ฐ์ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ๊ตฌ๋ฌธ์ ์ค์ ์ ๋ ๋ฐฉ์
- ํจ์ํ ์ธ์ด(Functional Language) : ํจ์์ ์์ฉ์ ๊ฐ์กฐํ๋ฉด์ ์๋ฃ์ ์ฒ๋ฆฌ๋ ์ํ์ ์ธ ํจ์์ ์ฐ์ฐ์ผ๋ก ์ทจ๊ธํ๊ณ , ์ํ์ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ ๋ฉ๋ฆฌํ๋ ๋ฐฉ์
ex) LISP, Scala- ๊ฐ์ฒด์งํฅ์ธ์ด(Object - Oriented Language) : ๊ฐ์ฒด ๊ฐ์ ๋ฉ์์ง ํต์ ์ ์ด์ฉํ์ฌ ๋์ํ๋ ๋ฐฉ์ex) JAVA, C++
์ปดํ์ผ ์ธ์ด(Compile Language)
- ์์ค์ฝ๋๋ฅผ ๋ชจ์์ object-code๋ฅผ ๋ง๋ ๋ค.
- ์ ์ฒด์์ค์ฝ๋๋ฅผ ๋น๋ํ๋ค.
- ์คํํ์ผ์ ์์ฑํ๋ค.
- ์ฒ๋ฆฌ์๋๊ฐ ๋น ๋ฅด๋ค.
- ์ฝ๋๋ฅผ ์์ ํ์๋, ์ฌ์ปดํ์ผ์ ํด์ผํ๋ค.
์ธํฐํ๋ฆฌํฐ ์ธ์ด(Interpreter Language)
- ๋ฌธ์ฅ๋จ์๋ก ์ฝ์ด๋ค์ฌ ํด์ํด ์คํํ๋ค.
- ๋ฌธ์ฅ๋จ์๋ก ๋น๋ํ๋ค.
- ์คํํ์ผ์ ๋ฏธ์์ฑํ๋ค.
- ์ฒ๋ฆฌ์๋๊ฐ ๋๋ฆฌ๋ค.
- ์ฝ๋๋ฅผ ์์ ํ์๋, ์ฆ์ ์คํ์ด ๊ฐ๋ฅํ๋ค.
=> ๋จ, ์๋ฐ๋ ์ปดํ์ผ๋ฌ ์ธ์ด์ด์ง๋ง ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ์ฑ๊ฒฉ๋ ๊ฐ์ง๊ณ ์๋ค.
• ํ๋ก๊ทธ๋๋ฐ ์ธ์ดํน์ง
- JAVA : C++์ ๋นํด ๋จ์ํ๊ณ ๋ถ์ฐํ๊ฒฝ๊ณผ ๊ฐ์ฒด์งํฅ, ๋ณด์์ฑ์ ์ง์ํ๊ณ ์ปดํ์ผ์ ํตํด class ํ์ผ์ ์์ฑํ๋ฉฐ ๊ฐ์๋จธ์ (JVM)์์ ์คํ
- JAVASCRIPT : HTML, CSS์ ํจ๊ป ์น์ ๊ตฌ์ฑํ๋ ํต์ฌ ์์๋ก ๊ฑฐ์ ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์ ์คํฌ๋ฆฝํธ ์์ง(์ธํฐํ๋ฆฌํฐ)์ด ์กด์ฌ. ์น ํ์ด์ง์ ๋์ ๊ตฌํ์ด ๊ฐ๋ฅํ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ๊ณผ ํ์ฅ์ฑ์ด ๋ฐ์ด๋์ง๋ง ๋ค๋ฅธ ์ธ์ด์ ๋นํด ์๋์ ์ผ๋ก ๋ณด์์ด๋ ์ฑ๋ฅ์ด ๋ถ์กฑ
- PYTHON : ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ์ด์์ฑ์ด ์ข์ ์ธ์ด๋ก ๋ค์ํ ํจ์๋ค๋ ๋ง์ด ์ ๊ณต๋์ด ์ต๊ทผ ํธ๋ ๋์ ๋ง๋ฌผ๋ ค ์คํํธ์ ๊ณผ ๊ธ๋ก๋ฒ ๊ธฐ์ ๋ฑ์์๋ ๋ง์ด ์ฌ์ฉํ๋ ์ธ์ด
- GOLANG : Google์์ ๋ง๋ ์ธ์ด๋ก ์งง๊ฒ๋ GO๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ์ง์๋๊ณ C์ธ์ด์ ๋ฌธ๋ฒ๊ณผ ์ ์ฌํ๋ ์ ์ด ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ๋น ๋ฅธ ์ปดํ์ผ์ด ๊ฐ๋ฅํจ
- KOTLIN : JAVA๋ณด๋ค ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ๊ฐ์ง๊ณ ์๋ JVM ๊ธฐ๋ฐ์ ์ธ์ด๋ก JAVA์์ ์ํธ ์ด์ฉ์ด 100% ์ง์๋๊ณ 2019๋ ๊ตฌ๊ธ์ด ์๋๋ก์ด๋์ ๊ณต์ ์ธ์ด๋ก ์ถ๊ฐ
• ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ํ
- ๊ฐ์ฒด(object) : ๊ฐ์ฒด์ ์์ฑ, ๋ฉ์๋๋ก ๊ตฌ์ฑ๋ ํด๋์ค์ Instance
- ํด๋์ค(class) : ๊ณตํต๋ ํน์ฑ(์์ฑ, ์ฐ์ฐ)์ ๊ฐ์ง๋ ๊ฐ์ฒด ์งํฉ์ผ๋ก ๊ฐ์ฒดํ์ ์ ์ ์ํ๊ณ ์์ฑํ๋ ํ
- ๋ฉ์์ง(message) : ๊ฐ์ฒด๊ฐ์ ์ํธ์์ฉ์ ๋ฉ์์ง๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ฉฐ ๊ฐ์ฒด์์ ๊ฐ์ฒด๋ก ์ ๋ฌ๋๋ค.
• ๊ฐ์ฒด์งํฅ์ ํน์ง
1) ์ถ์ํ(Abstraction) : ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ, ์ค๊ณ์ฌํญ์ ์๊ตฌ์ฌํญ์ ์ํด ๋ฌด์์ด ์ค์ํ ๊ฒ์ธ์ง๋ฅผ ์ธ์งํ๊ณ ๋ฝ์๋ด๋ ๊ฒ
2) ์บก์ํ(Encapsulation) : ์ถ์ํ๋ฅผ ํตํด ์ป์ด๋ธ ์์ฑ๋ค์ ๋ฌถ๋ ๊ฒ
3) ๋คํ์ฑ(Polymorphism) : ๊ฐ์ ๋ชจ์์ ํจ์๊ฐ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋ ๊ฒ
4) ์์(Inheritance) : Heap ์์ญ์์์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฐํฉ
5) ์ ๋ณด ์๋(Information Hiding) : ์บก์ํ ์ ๋ณด๋ค์ ๋ฐ์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ
#2-0. ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌํ ๋ฐ ์ต์ ํ
• ํ๋ก๊ทธ๋จ์ ๋ชฉํ
์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ๊ฐ์ฅ ์ด์์ ์ธ ๋ชฉํ๋ ํ์ง์ด ๋์ s/w๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒ์ด๋ค.
์ด๋์ ๋์ ํ์ง์ด ๋๊ธฐ ์ํด์๋ ๋ฒ๊ทธ๊ฐ ์์ด์ผ ํ๋ฉฐ(Small Q), ๊ณ ๊ฐ์ด ๋ง์กฑํด์ผํ๋ ๊ฒ(Big Q)์ผ๋ก ์ด ๋๊ฐ์ง๊ฐ ๋ง์กฑํด์ผ ๋์ ํ์ง์ด๋ผ๊ณ ํ ์ ์๋ค.
Small Q์ Big Q๋ฅผ ์ถฉ์กฑํ๊ธฐ ์ํด์ ๋ฒ๊ทธ๋ฅผ ์ก๊ธฐ์ํ Testing๊ณผ์ ์ ๊ฑฐ์น๊ฑฐ๋ ๊ณ ๊ฐ๋ง์กฑ์ ์ํด "์๊ตฌ์ฌํญ๋ช ์ธ"๋ฅผ ์์ฑํ๋ค.
• SDLC (Software Development Life Cycle)
- S/W๋ฅผ ๋ง๋ค๊ธฐ์ํด ํ์ํ ์ ์ฐจ์ด๋ค.
- SDLC๊ณผ์ ์ ๊ฑฐ์ณ์ผ SmallQ ์ BigQ๋ฅผ ๋ง์กฑํ๋ ํ์ง์ด ๋๋ค.
- S/W : SDLC์์ ๋์ค๋ ๋ชจ๋ ์ฐ์ถ๋ฌผ
- ๋ฐฉ๋ฒ๋ก (Methodology) : ์ด๋คํ๋ก๊ทธ๋จ์ผ๋ก ๊ฐ๋ฐํ ์ง, ์ด๋ป๊ฒ ๊ตฌํํ ์ง์ ๋ํ ์ผ์ข ์ ๋ ์ํผ๋ก SDLC์ ๋ํ ๋ํ ์ผ์ ์ธ ๊ฒ
• ์ฝ๋๋ฆฌ๋ทฐ ๊ธฐ๋ฒ
1) ์ธ์คํ์ (Inspection)
- ํ๋ก๊ทธ๋จ ์์ค์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์ฝ๋์์์์ ์ ์ฌ์ ์ธ ์ค๋ฅ์ ํ์ค ๋ฏธ์ค์ ๋ฑ์ ๊ฒฐํจ์ ์ฌ์ ์ ์๋ณํ์ฌ ๊ฐ์ ํ๋ ๊ณต์์ ์ธ ๋ฆฌ๋ทฐ๊ธฐ๋ฒ
2) ์ํฌ์ค๋ฃจ (Walk Through)
- ๊ฐ๋ฐ์๊ฐ ๋ฆฌ๋ทฐ์ ์ฃผ์ ์ ์๊ฐ์ ์ ํด์ ๋ฐํ๋ฅผ ํ๊ณ ๋๋ฃ๋ค๋ก๋ถํฐ ์๊ฒฌ์ด๋ ์์ด๋์ด๋ฅผ ๋ฃ๋ ์๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์ฌ๋ก์ ๋ํ ์ ๋ณด ๊ณต์ ๋ ์์ด๋์ด ์์ง์ ์ํด์ ์ฌ์ฉ๋ ์ ์๋ค.
- ๋น๊ณต์์ ์ธ ๋ฆฌ๋ทฐ๊ธฐ๋ฒ
3) ๋๋ฃ๊ฒํ (Peer Review)
- ๋ณ๋์ ์ ์ฐจ ์์ด ๋น๊ณต์์ผ๋ก ๊ณํ ์์ด ์์์ ์ผ๋ก ์ค์๋๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ๋๋ฃ์ ์ฝ๋ ๋ฐ ์ฐ์ถ๋ฌผ์ ๊ฒฐํจ์ ์๋ณํ๋ ๊ธฐ๋ฒ
- ๋น๊ณต์์ ์ธ ๋ฆฌ๋ทฐ๊ธฐ๋ฒ
• ๋ฆฌํฉํ ๋ง(Refactoring)
- S/W์ ์๋ ๊ธฐ๋ฅ์ ์ ์งํ๋ฉด์ ์์ค์ฝ๋ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์์ ๋ฐ ๋ณด์ํ์ฌ ๊ฐ๋ ์ฑ, ์ฑ๋ฅ ํฅ์ ๋ฐ ๋ก์ง์ ๊ฐ์ ํ๋ ๊ธฐ๋ฒ
- ์ฝ๋ ์ค๋ฉ ๋ฐ์์์ ์ฃผ๋ก ์คํํ๋ค.
- ์ ์ง๋ณด์ ๋ชฉ์
• OWASP TOP 10
- OWASP(The Open Web Application Securitiy Project)
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ณด์ ํ๋ก์ ํธ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ทจ์ฝ์ ์ค์์ ๋น๋๊ฐ ๋ง์ด ๋ฐ์ํ๊ณ ๋ณด์์ ์ํฅ์ ํฌ๊ฒ ์ค ์ ์๋ 10๊ฐ์ง๋ฅผ ์ ์ ํ์ฌ 2-3๋ ๋ง๋ค ๋ฐํํ๋ค.
• ํ๋กํ ํ์
- ๋ถ์๋จ๊ณ์์ ๊ป๋ฐ๊ธฐ๋ง ์๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ ๊ฒ
- ex) kakao oven
• ๋์์ธ ํจํด
- ์์ฑ ํจํด
- ๊ตฌ์กฐ ํจํด
- ํ์ ํจํด
#2-1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์
• ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Library)
- ํ๋ก๊ทธ๋จ์ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์๋๋ก ํ์ํ ๊ธฐ๋ฅ์ด ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ๋ชจ์ ์งํฉ์ฒด
- function๋ค์ ์งํฉ
1) ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Static Library)
- ํ๋ก๊ทธ๋จ์ ๋น๋ํ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ์ฝ๋๋ฅผ ์คํํ์ผ์ ๋ฃ๋ ๋ฐฉ์
- ์ฅ์ ) ์๋๊ฐ ๋น ๋ฅด๊ณ ์ต์ ํ
- ๋จ์ ) ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค.
2) ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Dynamic Library)
- ๊ณตํต์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ๋ค์ ํ๋ก๊ทธ๋จ๊ณผ ๋ถ๋ฆฌํ์ฌ ํ์์์๋ง ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ฅ์ ) ์ฌ์ด์ฆ๊ฐ ์๋ค.
- ๋จ์ ) ์๋๊ฐ ๋๋ฆฌ๋ค.
• ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋ ์์ํฌ, ์ํคํ ์ฒ, ํ๋ซํผ
- Library : ์ฝ๋ ์ฌ์ฌ์ฉ ๋ฐ ๋ถํํ๋ฅผ ์ํ์ฌ ํ์ํ ๊ธฐ๋ฅ์์ ํธ์ถํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต๋๋ ๋ชจ๋์ ์งํฉ
- Framework : ์์ฉํ๋ก๊ทธ๋จ ํ์ค ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ํด๋์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ์
- Archtecture : ์ฌ๋ฌ ๊ฐ์ง ์ปดํจํฐ ๊ตฌ์ฑ์์๋ค์ ๋ํ ์ ๋ฐ์ ์ธ ๊ธฐ๊ณ์ ๊ตฌ์กฐ์ ์ด๋ฅผ ์ค๊ณํ๋ ๋ฐฉ๋ฒ
- Platform : ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ํ๋ก๊ทธ๋จ ์คํ์ด ๊ฐ๋ฅํ ๊ณตํต ์คํํ๊ฒฝ์ผ๋ก ํ๋ซํผ ์์ ๋ค๋ฅธ ํ๋ซํผ์ด ์กด์ฌํ ์ ์์
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+22] ์ฝ๋ฉ๋ฐ์ด (0) | 2022.10.22 |
---|---|
[D+21] ์์ ๊ต์ฌ์ ๋ฆฌ, ์ธํฐํ์ด์ค (0) | 2022.10.20 |
[D+19] ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ์์๊ด๊ณ (0) | 2022.10.19 |
[D+18] ์์ (0) | 2022.10.18 |
[D+18] ํด๋์ค ๊ต์ฌ์ ๋ฆฌ (0) | 2022.10.17 |
๋๊ธ