๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™ (5)

๐Ÿ–ฅ dev-ruby

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] ํ˜•์ƒ๊ด€๋ฆฌ

ํ˜•์ƒ ๊ด€๋ฆฌ ๋‹ค์Œ์ด ๋ณ€๊ฒฝ ๋  ๋•Œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์˜ ์ƒˆ ๋ฒ„์ „์ด ์ƒ์„ฑ๋œ๋‹ค. ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ/๊ธฐ๊ณ„ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ฑ ์ œ๊ณต ํŠน์ • ์‚ฌ์šฉ์ž ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์กฐ์ • ์ง„ํ™”ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ ์žˆ๋‹ค. ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ๋œ ๋น„์šฉ๊ณผ ๋…ธ๋ ฅ์„ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. ์ง„ํ™”ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ ˆ์ฐจ ๋ฐ ํ‘œ์ค€์˜ ๊ฐœ๋ฐœ ๋ฐ ์ ์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ํ’ˆ์งˆ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ ๋ฆด๋ฆฌ์Šค๋  ๋•Œ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์€ ์ถ”๊ฐ€ ๊ฐœ๋ฐœ์˜ ์‹œ์ž‘์ ์ด๋ฏ€๋กœ ๊ธฐ์ค€์„ ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ํ˜•์ƒ๊ด€๋ฆฌ๋ž€? ๋‹ค์Œ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. ํ•ญ๋ชฉ ์‹๋ณ„, ์ •์˜ ๋ฐ ๊ธฐ์ค€์„  ํ•ด๋‹น ํ•ญ๋ชฉ์˜ ์ˆ˜์ • ๋ฐ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ œ์–ด ํ•ญ๋ชฉ ๋ฐ ์ˆ˜์ • ์š”์ฒญ์˜ ์ƒํƒœ๋ฅผ ๋ณด๊ณ ํ•˜๊ณ  ๊ธฐ๋ก ํ•ญ๋ชฉ์˜ ์™„์ „์„ฑ, ์ผ๊ด€์„ฑ ๋ฐ ์ •ํ™•์„ฑ์„ ๋ณด์žฅ ๋ฌผํ’ˆ์˜ ๋ณด๊ด€, ์ทจ๊ธ‰ ๋ฐ ๋ฐฐ์†ก์„ ์ œ์–ด ํ˜•์ƒ..

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] Verification & Validation

Verification (๊ฒ€์ฆ) ์ฃผ์–ด์ง„ ๋‹จ๊ณ„์˜ ์ œํ’ˆ์ด ์ด์ „ ๋‹จ๊ณ„์—์„œ ์˜จ ์‚ฌ์–‘์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค -> ์ด์ „์˜ ๋‹จ๊ณ„๊ฐ€ ํ˜„์žฌ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆ Validation (ํ™•์ธ) ์š”๊ตฌ์‚ฌํ•ญ ์ค€์ˆ˜๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ์ข…๋ฃŒ ์‹œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๋ชฉํ‘œ ํ’ˆ์งˆ ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์—์„œ ์˜ค๋ฅ˜ ๋ฐ ๊ฒฐํ•จ์„ ์ฐพ๊ธฐ ์š”๊ตฌ์‚ฌํ•ญ ๋ชจ๋“  ์‚ฌํ•ญ์„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค. ๊ฒ€์ฆ์€ ๊ฐ๊ด€์ ์ด๊ฑฐ๋‚˜ ์ฃผ๊ด€์ ์ผ ์ˆ˜ ์žˆ๋‹ค. ๋‚ด์žฌ์  ํ’ˆ์งˆ๋„ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค. V & V ํ™œ๋™์˜ ๋ถ„๋ฅ˜ error : ์—”์ง€๋‹ˆ์–ด์˜ ์‹ค์ˆ˜ Fault : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •ํ™•ํ•œ ์„œ๋น„์Šค ์ œ๊ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ Failure : ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์€ ์˜ค๋ฅ˜, ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ˆ˜๋ฅผ ํ–ˆ๋Š”๋ฐ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ Static ํ™œ๋™ - ์†Œ์Šค์ฝ”๋“œ ์‹คํ–‰ X..

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] Design-Pattern

Preliminary design (์ƒ์œ„์„ค๊ณ„) : ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋กœ ๋ณ€ํ™˜ Detailed design (์ƒ์„ธ์„ค๊ณ„) : ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘œํ˜„์œผ๋กœ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„  ๊ธฐ์ˆ ์  ์ธก๋ฉด์—์„œ ์„ค๊ณ„ Data design : ์ƒ์„ฑ๋œ ์ •๋ณด ์˜์—ญ ๋ชจ๋ธ์„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ Architectural design : ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ฃผ์š” ๊ตฌ์กฐ์  ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ •์˜ Procedural design : ๊ตฌ์กฐ์  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ ˆ์ฐจ์  ๋””์Šคํฌ๋ฆฝ์…˜์œผ๋กœ ๋ณ€ํ™˜ Interface design : ์ธ๊ฐ„-๊ธฐ๊ณ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๋ฐฐ์น˜ ๋ฐ ์ƒํ˜ธ ์ž‘์šฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํ™•๋ฆฝ Design Patterns ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์‚ฐ์ถœ๋ฌผ์„ ์žฌ์‚ฌ์šฉ : ์œ ์šฉํ•œ ์„ค๊ณ„์ •๋ณด๋ฅผ ํŒจํ„ด์œผ๋กœ ์ •์˜ ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต..

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] ๊ฐ์ฒด์ง€ํ–ฅ์„ค๊ณ„

ํด๋ž˜์Šค ๋ฐ ๋ฉ”์†Œ๋“œ ์„ค๊ณ„ ํ˜„์žฌ ๋ชจ๋ธ ๋ฆฌ๋ทฐ 1. ํด๋ž˜์Šค๊ฐ€ ๋ฌธ์ œ์— ํ•„์š”ํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ์ง€ ํ™•์ธ 2. ๊ฐ ํด๋ž˜์Šค์˜ ์†์„ฑ ๋ฐ ๋ฉ”์†Œ๋“œ ๊ฐ€์‹œ์„ฑ ๋งˆ๋ฌด๋ฆฌ 3. ๊ฐ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ ์›ํ˜• ์ •์˜ 4. ๊ฐ์ฒด๊ฐ€ ๋ณด์กดํ•  ์ œ์•ฝ ์กฐ๊ฑด ์ •์˜ ์„ค๊ณ„ ์žฌ๊ตฌ์กฐํ™” Factoring - ๋ฉ”์†Œ๋“œ ํด๋ž˜์Šค๋ฅผ ์ƒˆ ๋ฉ”์†Œ๋“œ ๋˜๋Š” ํด๋ž˜์Šค๋กœ ๊ตฌ๋ถ„ Normalization - ์„ค๊ณ„์—์„œ ๋ˆ„๋ฝ๋œ ์ž ์žฌ์  ํด๋ž˜์Šค ์‹๋ณ„ ๋ฉ”์†Œ๋“œ ๋ช…์„ธ ์ผ๋ฐ˜ ์ •๋ณด ๋ฉ”์†Œ๋“œ ์ด๋ฆ„, id, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด Event ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์ด๋ฒคํŠธ ๋‚˜์—ด Message passing ๋ฉ”์†Œ๋“œ์— ์˜ํ•ด ์–ด๋–ค ์ธ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜๊ณ , ์ „๋‹ฌ๋˜๊ณ , ๋ฐ˜ํ™˜๋˜๋Š”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ช…์„ธ ๊ตฌ์กฐํ™”๋œ ์˜์–ด ์˜์‚ฌ์ฝ”๋“œ UML activity diagram ๋„๋ฉ”์ธ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ ์–ธ์–ด์— ๋งคํ•‘ Single-Inheritance Language (๋‹จ..

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] ๋ชจ๋“ˆํ™”(Modularity)

์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ sw ๋””์ž์ธ์˜ ์ค‘์š”์„ฑ? ๋””์ž์ธ์€ ํ’ˆ์งˆ์ด ๊ฐ•ํ™”๋˜๋Š” ๊ณณ์ด๋‹ค. ๋””์ž์ธ์€ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” swํ‘œํ˜„์„ ์ œ๊ณตํ•œ๋‹ค. ์ข‹์€ ์„ค๊ณ„์˜ ํŠน์ง• ์„ค๊ณ„๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค. ์„ค๊ณ„๋Š” ๋ชจ๋“ˆ์‹์ด์–ด์•ผ ํ•œ๋‹ค. ์„ค๊ณ„๋Š” ๋ฐ์ดํ„ฐ์™€ ์ ˆ์ฐจ์— ๋Œ€ํ•œ ๋šœ๋ ทํ•˜๊ณ  ๋ถ„๋ฆฌ ๊ฐ€๋Šฅํ•œ ํ‘œํ˜„์„ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค. ์„ค๊ณ„๋Š” ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์  ํŠน์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชจ๋“ˆ๋กœ ์ด์–ด์ ธ์•ผ ํ•œ๋‹ค. ์„ค๊ณ„๋Š” ๋ชจ๋“ˆ๊ณผ ์™ธ๋ถ€ ํ™˜๊ฒฝ ๊ฐ„์˜ ์—ฐ๊ฒฐ ๋ณต์žก์„ฑ์„ ์ค„์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ด์–ด์ ธ์•ผ ํ•œ๋‹ค. ์„ค๊ณ„๋Š” ๋ณ€ํ™”๋ฅผ ์ˆ˜์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค. ๋ชจ๋“ˆํ™” โฌ†๏ธ -> ๊ฐœ๋ฐœ๋น„์šฉ โฌ†๏ธ -> ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ โฌ‡๏ธ ํšจ๊ณผ์ ์ธ ๋ชจ๋“ˆํ™” ์„ค๊ณ„ ๊ธฐ๋Šฅ์  ๋…๋ฆฝ : ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ์ด ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์„ ํ•ด์•ผํ•œ๋‹ค. ์ถ”์ƒํ™” ๋ฐ ์ •๋ณด ์€๋‹‰ ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„ ๊ฐ ๋ชจ๋“ˆ์—๋Š” ์š”๊ตฌ์‚ฌํ•ญ์˜ ํŠน์ • ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ๊ฐ ๋ชจ๋“ˆ์€ ์™ธ๋ถ€์—์„œ ๋ณผ ๋•Œ ..