๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+16] ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๊ฐ์ฒด์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 10. 13.

 

 

๊ตญ๋น„์ง€์› D+16

-  ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๊ฐ์ฒด์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ -

 


 

๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ”„๋กœ๊ทธ๋žจ์€ ์ž๋ฃŒ์™€ ๋ช…๋ น์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ž˜ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ตฌ์„ฑ์š”์†Œ์ธ ์ž๋ฃŒ์™€ ๋ช…๋ น์–ด๋ฅผ ์ž˜ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ์ƒ๊ฐํ•ด ๋‚ธ ๋ฐฉ๋ฒ•์ด ์ž๋ฃŒ์™€ ๋ช…๋ น์–ด๋ฅผ ๊ตฌ์กฐํ™”์‹œํ‚จ๊ฒƒ์ธ๋ฐ ์ด๋ฅผ ์šฐ๋ฆฌ๋Š” ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

• ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ค๊ณ„ ๊ตฌ์กฐ

1) ์ˆœ์ฐจ๊ตฌ์กฐ - ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ผ์ง์„ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ตฌ์กฐ๋กœ ์‹คํ–‰์„ ์œ„ํ•˜์—ฌ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆˆ ํ›„ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

2) ์„ ํƒ๊ตฌ์กฐ - ์ฃผ์–ด์ง„ ์กฐ๊ฑด ๋งŒ์กฑ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ๋Œ€์ƒ๊ณผ ์ˆœ์„œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์กฐ๊ฑด๋ฌธ์ธ if์™€ if-else๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

3) ๋ฐ˜๋ณต๊ตฌ์กฐ - ์กฐ๊ฑด์ด ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๋™์ž‘์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋ฐ˜๋ณต๋ฌธ while, for๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

• ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์„ฑ์š”์†Œ

1) ๋ฐ์ดํ„ฐ ํ๋ฆ„๋„ DFD(Data Flow Diagram)

- ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•ด ๋ฐ์ดํ„ฐ์˜ ๊ฐ ๊ธฐ๋Šฅ์„ ๋ถ„ํ• ํ•˜์—ฌ ํ‘œํ˜„ํ•œ ๊ตฌ์กฐ๋„

- DFD๋ฅผ ํ†ตํ•ด ๊ฐ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ์ง€์— ๋Œ€ํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

- mini spec : ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์„ธ๋ถ€์ ์œผ๋กœ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒƒ

 

2) ์ž๋ฃŒ์‚ฌ์ „ DD(Data Dictionary)

- DFD์— ํ‘œํ˜„๋œ ์ž๋ฃŒ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ช…์‹œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ

- ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด '์ด๊ฒƒ์€ ์ด๊ฒƒ์ด๋‹ค'์— ๋Œ€ํ•ด ์ •์˜๋‚ด๋ ค์ ธ ์žˆ๋‹ค.

 

3) ์ƒํƒœ ์ „์ด๋„ STD(State Transition Diagram)

- ์–ด๋–ค ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ณผ์ • ๋ฐ ํ•ด๋‹น ๊ณผ์ •์˜ ํ”„๋กœ์„ธ์Šค ๋ช…์„ธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋‹ค์ด์–ด๊ทธ๋žจ

 

• ์ข‹์€ ๊ตฌ์กฐ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€...

1) ์‘์ง‘๋„

- ๋ชจ๋“ˆ ๋‚ด๋ถ€ ์š”์†Œ๋“ค์ด ์„œ๋กœ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ์ •๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋„

- ์‘์ง‘๋„๊ฐ€ ๊ฐ•ํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ์ข‹๋‹ค.

 

2) ๊ฒฐํ•ฉ๋„

- ๋ชจ๋“ˆ ๊ฐ„์— ์ƒํ˜ธ ์˜์กดํ•˜๋Š” ์ •๋„

- ๊ฒฐํ•ฉ๋„๊ฐ€ ์•ฝํ• ์ˆ˜๋ก ํ’ˆ์งˆ์ด ์ข‹๋‹ค.

 


๊ฐ์ฒด์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

(๊ฐ์ฒด์ง€ํ–ฅ์ ์ด๋ผ๋Š” ์˜๋ฏธ๋Š” ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€๋น„๋˜์–ด ๊ฐ์ฒด์ง€ํ–ฅ์ ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋‹ˆ ์ฐธ๊ณ )

 

• ๊ฐ์ฒด์ง€ํ–ฅ ์†์„ฑ 

1) ์บก์Šํ™”

- ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด ์–ป์–ด๋‚ธ ์†์„ฑ๋“ค์„ ๋ฌถ๋Š”๊ฒƒ

- ์ผ๋ถ€๋ฅผ ์™ธ๋ถ€์— ๊ฐ์ถ”์–ด ์€๋‹‰ํ•˜๋Š” ๊ธฐ๋ฒ•

 

2) ์ถ”์ƒํ™”

- ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ, ์„ค๊ณ„์‚ฌํ•ญ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ์˜ํ•ด ๋ฌด์—‡์ด ์ค‘์š”ํ•œ ๊ฒƒ์ธ์ง€ ์ธ์ง€ํ•˜๊ณ  ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ

 

3) ๋‹คํ˜•์„ฑ

- ๊ฐ™์€ ๋ชจ์–‘์˜ ํ•จ์ˆ˜๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ

 

4) ์ •๋ณด์€๋‹‰

- ์บก์Šํ™” ์ •๋ณด๋“ค์„ ๋ฐ–์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์€๋‹‰ํ™”๋ผ๊ณ  ํ•œ๋‹ค.

 

5) ์ƒ์†์„ฑ

- ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•

- ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋”ฐ๋กœ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ •์˜๋œ ๊ฒƒ๋“ค์„ ์ž๋™์œผ๋กœ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

• ๊ฐ์ฒด์ง€ํ–ฅ ๋ฐฐ๊ฒฝ

ํ”„๋กœ๊ทธ๋žจ์€ Data์™€ Function์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ ์–‘์ด ๋งŽ์•„์ง€๋ฉด์„œ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•ด ๊ด€๋ฆฌํ•˜๋Š”๋ฐ์— ์–ด๋ ค์›€์ด ๋ฐœ์ƒ๋˜์—ˆ๋‹ค.

๊ทธ ๊ณ„๊ธฐ๋กœ ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ƒ๊ฒจ๋‚˜๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ๊ฐ์ฒด์ง€ํ–ฅ์€ ์ถ”์ƒํ™”, ์บก์Šํ™”, ๋‹คํ˜•์„ฑ, ์ •๋ณด์€๋‹‰, ์ƒ์†์„ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ด๋•Œ, ๋” ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•์ธ ๊ธฐ๋Šฅ์„ฑ, ์‹ ๋ขฐ์„ฑ, ์‚ฌ์šฉ์„ฑ, ํšจ์œจ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์ด์‹์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ด์•ผํ•˜๋Š”๋ฐ ์ด๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฒŒ ์›์น™์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์›์น™์—๋Š” ์–ด๋–ค๊ฒŒ ์žˆ์„๊นŒ?

 

• ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™ (SOLID)

1) ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ SRP (Single Responsiblity Principle)

- ๋ชจ๋“  ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

- ํด๋ž˜์Šค๋Š” ๊ทธ ์ฑ…์ž„์„ ์™„์ „ํžˆ ์บก์Šํ™”ํ•ด์•ผ ํ•œ๋‹ค.

- ์ฃผ์˜) ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ์ง€๋Š” ๊ฒƒ์ด์ง€ ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜๋ผ๋Š” ์†Œ๋ฆฌ๋Š” ์•„๋‹ˆ๋‹ค.

 

2) ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ OCP (Open Closed Principle)

- ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ๊ณ  ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€์žˆ๋‹ค.

- ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

3) ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ LSP (Liskov Substitution Principle)

- ์ž์‹ ํด๋ž˜์Šค๋Š” ์ž์‹ ์˜ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ๋“ค์–ด๊ฐˆ ์ž๋ฆฌ์— ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๋„ฃ์–ด๋„ ์ž˜ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค.

- ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ฑ…์ž„์„ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ์žฌ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ํ™•์žฅ๋งŒ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ด์•ผ ๋งŒ์กฑํ•œ๋‹ค.

 

4) ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ ISP (Interface Segregation Principle)

- ํ•œ ํด๋ž˜์Šค๋Š” ์ž์‹ ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„ํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.

- ํ•˜๋‚˜์˜ ํ‰๋ฒ”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ณด๋‹ค ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ตฌ์ฒด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ข‹๋‹ค.

 

5) ์˜์กด ์—ญ์ „ ์›์น™ DIP (Dependency Inversion Principle)

- ๋ณ€ํ™”๊ฐ€ ์—†๋Š” ๊ฒƒ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค.

- ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋ณด๋‹ค ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์•ผ ํ•œ๋‹ค.

 

• UML (ํ†ตํ•ฉ ๋ชจ๋ธ ์–ธ์–ด)

1) ์œ ์ฆˆ์ผ€์ด์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

2) ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

3) ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€