[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ํํธ์จ์ด ๊ฐ๋ฐ
- -
2022๋ ๋ 1ํ์ฐจ ํ๊ธฐ์ํ ์ค๋นํ๋ฉด์ ๋ ธํธ ์ ๋ฆฌ ํ๋ ๋ด์ฉ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ ๋ฆฌํด ๋จ๋ ๋ด์ฉ๋ค์ด ์ผ๋ถ ์ฌ๋ผ์ง ๊ฒ๋ง ๊ฐ์ ๊ธฐ๋ถ์ด๊ธด ํ๋ฐ... ์๋ ์๋ฃ๋ผ๋ ์ฌ๋ ค๋๊ฒ ์ต๋๋ค. ๐คฃ๐คฃ ์ํ์ ๋ณด์ค ๋ถ๋ค๊ป ์์ ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ ๋๋ค.
ํด๋น ๋ด์ฉ์ 2022๋ ๋ ์์ ๋น ์ถํ์ฌ์ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ ์ฑ ์ ๋ด์ฉ์ด ์กฐ๊ธ ํฌํจ๋์ด ์์ต๋๋ค.
๊ฐ๊ธ์ ์ฑ ์ ๊ตฌ๋งคํ์ ์ผ ํ๊ณ ์ถํ์ฌ๋ ์์ ๋น ๋๋ ์๋๊ณต์ผ๋ก ๊ณต๋ถํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
#1. ๊ฐ๋ ๋ฐ ์ฉ์ด ์ ๋ฆฌ
- ์๋ฃ๊ตฌ์กฐ(Data Structure)
- ๊ฐ๋ : ์ปดํจํฐ์์ ์๋ฃ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ํ๋ช ํ ์ ํ์ ํตํด ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๊ฒ ํ์ฌ ์ฑ๋ฅ์ ํฅ์
- ๋ถ๋ฅ
- ์ ํ ๊ตฌ์กฐ: ๋ฆฌ์คํธ(์ ํ/์ฐ๊ฒฐ), ์คํ(Last-In First-Out; ์คํ์ ์ถ๋ ฅ์์), ํ(First-In First-Out), ๋ฐํฌ(ํ์ ์์ชฝ์์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ๋ฅ)
- ๋น์ ํ ๊ตฌ์กฐ: ํธ๋ฆฌ(์ ์์ํ;C L R; PRE / ์ค์์ํ; L C R; IN / ํ์์ํ; L R C; POST), ๊ทธ๋ํ
- ํธ๋์ญ์
์ธํฐํ์ด์ค(Transaction Interface)
- ๊ฐ๋ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์ ์ ์ ์ถ๋ ฅ๊ณผ ๊ธฐ๋ฅ ํํ๋ฅผ ์ ์ํ ์ธํฐํ์ด์ค
- ํน์ง: ACID ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ
- ์์์ฑ(Atomicity): All or Nothing
- ์ผ๊ด์ฑ(Consistency):์ฑ๊ณต์ ์ผ๋ก ์๋ฃ ์ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ ์ ์ง
- ๊ฒฉ๋ฆฌ์ฑ(Isolation): ๋ ์ด์ ํธ๋์ญ์ ๋์ ์คํ ์ ํ ๊ฐ์ ํธ๋์ญ์ ๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ์ฌ ๊ฐ์ญ ๋ถ๊ฐ
- ์์์ฑ(Durability): ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํธ๋์ญ์ ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋จ
- ํ๋ก์์ (Procedure)
- ๊ฐ๋ : ์ผ๋ จ์ ์ฟผ๋ฆฌ๋ค์ ๋ง์น ํ๋์ ํจ์์ฒ๋ผ ์คํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ์ ์งํฉ
- PL/SQL์ ํ์ฉํ ์ ์ฅํ ๊ฐ์ฒด ํ์ฉ
- ์ ์ฅ๋ ํ๋ก์์ : ์ฟผ๋ฆฌ์ ์งํฉ, ๋ฐฐ์น์์ , ๋ณต์กํ ํธ๋์ญ์ ์ํ, DB์ ์ ์ฅํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ๊ณต
- ์ ์ฅ๋ ํจ์: ๋ฐ๋์ ๋ฐํํ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ return๋ฌธ์ ์ ์ธํด์ผ ํจ
- ์ ์ฅ๋ ํจํค์ง: ํ๋ก์์ ๋ ํจ์๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ์งํฉ
- ํธ๋ฆฌ์ปค: '๋ณ๊ฒฝ ์ด๋ฒคํธ' ๋จ์ด๊ฐ ํต์ฌ
- PL/SQL ํ
์คํธ
- DBMS_OUTPUT.DISABLE
- DBMS_OUTPUT.ENABLE
- DBMS_OUTPUT.PUT
- DBMS_OUTPUT.PUT_LINE
- DBMS_OUTPUT.GET_LINE
- DBMS_OUTPUT.GET_LINES
- ์์ค ์ฝ๋ ์ธ์คํ์
(Source Code Inspection)
- ๊ฐ๋ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ํฅ์์ ์ํ์ฌ ํ๋ก์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ์ฑ๋ฅ ๋ฌธ์ ์ ์ ๊ฐ์ ํด ๋๊ฐ๋ ํ๋
- SQL ์ฑ๋ฅ ๊ฐ์ ํ๋ก์ธ์ค
- ์์ ๋ฐ ์ค๋ช
- ๋ฌธ์ ์๋ SQL ์๋ณ: APM
- ์ตํฐ๋ง์ด์ ํต๊ณ ํ์ธ: ์ต์ ์ ์ฒ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์์ฑ
- SQL๋ฌธ ์ฌ๊ตฌ์ฑ: ๋ฒ์๊ฐ ์๋ ํน์ ๊ฐ ์ง์ ์ผ๋ก ๋ฒ์๋ฅผ ์ค์ฌ ์ฒ๋ฆฌ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํจ
- ์ธ๋ฑ์ค ์ฌ๊ตฌ์ฑ
- ์คํ๊ณํ ์ ์ง ๊ด๋ฆฌ
- ์์ ๋ฐ ์ค๋ช
- ์๊ณ ๋ฆฌ์ฆ(Algorithm)
- ๊ฐ๋ : ์ด๋ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ํด์ง ์ผ๋ จ์ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ๊ณต์ํํ ํํ๋ก ํํํ ๊ธฐ๋ฒ
- ๊ธฐ๋ฒ
- ๋ถํ ๊ณผ ์ ๋ณต(Divide and Conquer): ๋ฌธ์ ๋ฅผ ๋๋ ์ ์์ ๋๊น์ง ๋๋๊ณ , ๊ฐ๊ฐ์ ํ๋ฉด์ ๋ค์ ๋ณํฉํ์ฌ ๋ฌธ์ ์ ๋ต์ ์ป๋ ์๊ณ ๋ฆฌ์ฆ
- ๋์ ๊ณํ๋ฒ(Dynamic Programming): ์ด๋ค ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ๊ทธ ๋ฌธ์ ๋ฅผ ๋ ์์ ๋ฌธ์ ์ ์ฐ์ฅ์ ์ผ๋ก ์๊ฐํ๊ณ , ๊ณผ๊ฑฐ์ ๊ตฌํ ํด๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ ์๊ณ ๋ฆฌ์ฆ
- ํ์๋ฒ(Greedy): ๊ฒฐ์ ์ ํด์ผ ํ ๋๋ง๋ค ๊ทธ ์๊ฐ์ ๊ฐ์ฅ ์ข๋ค๊ณ ์๊ฐ๋๋ ๊ฒ์ ํด๋ต์ผ๋ก ์ ํํจ์ผ๋ก์จ ์ต์ข ์ ์ธ ํด๋ต์ ๋๋ฌํ๋ ๋ฐฉ์์ ์๊ณ ๋ฆฌ์ฆ (์์์ ํ๋ฆ)
- ๋ฐฑํธ๋ํน(Backtracking): ์ด๋ค ๋ ธ๋์ ์ ๋ง์ฑ ์ ๊ฒ ํ, ์ ๋งํ์ง ์์ผ๋ฉด ๊ทธ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋๋ก ๋๋์๊ฐ ํ ๋ค๋ฅธ ์์ ๋ ธ๋๋ฅผ ๊ฒ์ํ๋ ์๊ณ ๋ฆฌ์ฆ
- ์๊ฐ ๋ณต์ก๋์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ(๋น
์ค ํ๊ธฐ๋ฒ)
- O(1) : ํด์ํจ์
- O(log2n): ์ด์ง ํ์
- O(n): ์์ฐจ ํ์
- O(nlog2n): ํต ์ ๋ ฌ, ๋ณํฉ ์ ๋ ฌ(ํฉ๋ณ ์ ๋ ฌ)
- O(n2): ๊ฑฐํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ์ ํ ์ ๋ ฌ
#2. ๋ฌธ์ ํ์ด ๋ฐ ๋ต์ ์์ฑ
- ์ ์ ์ด 5๊ฐ์ธ ๋ฐฉํฅ ๊ทธ๋ํ๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ๊ฐ์ ์๋? N * (N-1)
- N๊ฐ์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ์ต๋ ๊ฐ์ ์๋? N * (N-1) / 2
- ์์๊ฐ A, B, C, D๋ก ์ ํด์ง ์
๋ ฅ ์๋ฃ๋ฅผ ์คํ์ ์
๋ ฅํ ํ ์ถ๋ ฅํ ๊ฒฐ๊ณผ๋ก ๋ถ๊ฐ๋ฅํ ๊ฒ์?
- D, C, B, A
- B, C, D, A
- C, B, A, D
- D, B, C, A (๋ถ๊ฐ๋ฅ)
- ๋ฐ ์ ๊ทํ(Denormalization) ์ ํ ์ค ์ค๋ณต ํ ์ด๋ธ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ํด๋นํ๋ ๊ฒ์? ์ง๊ณ, ์งํ, ํน์ ๋ถ๋ถ๋ง์ ํฌํจํ๋ ํ ์ด๋ธ ์ถ๊ฐ
- ์ํํธ์จ์ด ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ์ ํ? [๊ณตํด๋ถ]
- ๊ณต์ ํด๋ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ/์๋ฒ ๋ฐฉ์
- ๋ถ์ฐ ์ ์ฅ์ ๋ฐฉ์
- V(G) = E - N + 2; E=์ ์ ๊ฐ์; N=์์ ๊ฐ์
- ์คํ์ ์ญ์ ์๊ณ ๋ฆฌ์ฆ ํ์ธ
- ์ฐธ๊ณ ) Overflow; ๊ฐ๋ ์ฐผ์ ๋ ๊บผ๋ด๋ ค๊ณ ํ๋ฉด ๋ํ๋จ, Underflow; ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๊บผ๋ด๋ ค๊ณ ํ๋ฉด ๋ํ๋จ
- ๋์งํธ ์ ์๊ถ ๊ด๋ฆฌ(DRM) ๊ตฌ์ฑ ์์๊ฐ ์๋ ๊ฒ์?
- Dataware house (์ ๋ต)
- DRM Controller
- Packager
- Contents Distributor
- ์ ํ ๊ตฌ์กฐ์ ์ข ๋ฅ ๋ฐ ๊ธฐ๋ฅ ํ์ธ
- ํ ์คํธ ๋๋ผ์ด๋ฒ(Test Driver) ์ค๋ช
- ํ
์คํธ ์ผ์ด์ค ์๋ ์์ฑ ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ํ
์คํธ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๋ด๋ ๋ฐฉ๋ฒ์?
- ์คํฐ๋ธ(stub)์ ๋๋ผ์ด๋ฒ(driver)
- ๊ฒ์ฆ(Verification)๊ณผ ํ์ธ (Validation)์ ๋ํ ์ค๋ช ์ ๋ฆฌ ํ์
- ์ ์๊ถ ๊ด๋ฆฌ ๊ตฌ์ฑ ์์์ ์ฃผ์ ๊ธฐ๋ฅ ํ์ธ ํ์
- ํจํค์ (Packager)
- ํตํฉ ํ๋ก๊ทธ๋จ, ์ ์ฅ์, ๋ชจ๋, ๋ฐ์ดํฐ์ ์๋ฏธ์ ๊ธฐ๋ฅ ๋ฑ ๋ด์ฉ ์ ๋ฆฌ ํ์
- ์ ํ ์ํํธ์จ์ด์ ์ฌ์ฉ์ ๋งค๋ด์ผ ์์ฑ์ ์ฐจ ์ ๋ฆฌ ํ์
- ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ ์ ์ง๋ฅผ ์ํด ์ฌ์ฉ๋๋ ์ง์นจ
- ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ํ ๋ด์ฉ ์ ๋ฆฌ ํ์
- ๊น์ด์ฐ์ ํ์(DFS)์ผ๋ก ์ดํํ ๊ฒฐ๊ณผ ๊ฐ
- ์ฐธ๊ณ ) ์ ์ ๊ฐ์ผ๋ก๋ถํฐ ์๋๋ก ๋จผ์ ์กฐํ ํ ํ์ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ์ ์ ๊ฐ๋ถํฐ ๋ค์ ์ฐ๊ฒฐ๋๋ ๋ด์ฉ ํ์ธ
- ํตํฉ ํ ์คํธ(Integration Test), ๋จ์ ํ ์คํธ(Unit Test), ์์คํ ํ ์คํธ(System Test), ์ธ์ ํ ์คํธ(Acceptance Test) ๊ฐ๊ฐ ๊ธฐ๋ฅ ์ค๋ช ์ ๋ฆฌ ํ์
- ๋ฒ๋ธ ์ ๋ ฌ ๋ฑ ์ ๋ ฌ ๋ฐฉ์์ ๊ฐ๊ฐ์ ์ค๋๋ง ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌ ํ์
- ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋์ ์ํํจ์ ์์ด์ ์์คํ
์ด ๊ณ ์ฅ(Failure)์ ์ผ์ผํค๊ฒ ํ๋ฉฐ, ์ค๋ฅ(Error)๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ๊ฒ์?
- Fault
- ์ํํธ์จ์ด ํ์ง ๋ชฉํ ์ค ํ๋ ์ด์์ ํ๋์จ์ด ํ๊ฒฝ์์ ์ด์ฉ๋๊ธฐ ์ํด ์ฝ๊ฒ ์์ ๋ ์ ์๋ ์์คํ
๋ฅ๋ ฅ์ ์๋ฏธํ๋ ๊ฒ์?
- Portability
- ํ
์คํธ๋ฅผ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ถ๋ฅํ์ ๋, ๊ฐ๋(Stress) ํ
์คํธ์ ๋ํ ์ค๋ช
์ผ๋ก ์ณ์ ๊ฒ์?
- ์์คํ ์ ๊ณผ๋ค ์ ๋ณด๋์ ๋ถ๊ณผํ์ฌ ๊ณผ๋ถํ ์์๋ ์์คํ ์ด ์ ์์ ์ผ๋ก ์๋๋๋์ง๋ฅผ ํ ์คํธํ๋ค.
- ํ์ ๊ด๋ฆฌ์ ๊ฐ๋ ๊ณผ ์ ์ฐจ์ ๋ํ ์ค๋ช ์ ๋ฆฌ ํ์
- ์์ค์ฝ๋ ์ ์ ๋ถ์(Static Analysis)์ ๋ํ ์ค๋ช ์ ๋ฆฌ ํ์
๋ง์น๋ฉฐ..
์๋๋ ์ ๋ง ๋ณด๋ ค๊ณ ๋ ธํธ ์ ๋ฆฌํ๋ ๋ด์ฉ์ด๋ผ์ ํ์ ํ ์ ์ด ๋ง๊ธฐ๋ ํ ๊ฑฐ๊ณ ์คํ๋ ์์ ์ ์์ต๋๋ค. ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ๋ด์ฃผ์ธ์ ๐
๋ง์ด ๋ถ์กฑํ ๋ด์ฉ์ด์ จ๊ฒ ์ง๋ง ๋์์ด ๋์ จ๋ค๋ฉด ๋๊ธ ํ ๋ฒ์ฉ ๋จ๊ฒจ์ฃผ์๋ฉด ๋ง์ด ๋ฟ๋ฏํ ๊ฒ ๊ฐ์ต๋๋ค. ๐๐
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ ๋ณด์์คํ ๊ตฌ์ถ๊ด๋ฆฌ
'์๊ฒฉ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ ๋ณด์์คํ ๊ตฌ์ถ๊ด๋ฆฌ (0) | 2023.02.07 |
---|---|
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ํํธ์จ์ด ์ค๊ณ (2) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] 2022 ํ๊ธฐ ์ค๊ธฐ ๋ฆ์ ํฉ๊ฒฉ ํ๊ธฐ (0) | 2023.02.07 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค. ๐