[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ํํธ์จ์ด ์ค๊ณ
- -
2022๋ ๋ 1ํ์ฐจ ํ๊ธฐ์ํ ์ค๋นํ๋ฉด์ ๋ ธํธ ์ ๋ฆฌ ํ๋ ๋ด์ฉ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ ๋ฆฌํด ๋จ๋ ๋ด์ฉ๋ค์ด ์ผ๋ถ ์ฌ๋ผ์ง ๊ฒ๋ง ๊ฐ์ ๊ธฐ๋ถ์ด๊ธด ํ๋ฐ... ์๋ ์๋ฃ๋ผ๋ ์ฌ๋ ค๋๊ฒ ์ต๋๋ค. ๐คฃ๐คฃ ์ํ์ ๋ณด์ค ๋ถ๋ค๊ป ์์ ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ ๋๋ค.
ํด๋น ๋ด์ฉ์ 2022๋ ๋ ์์ ๋น ์ถํ์ฌ์ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ ์ฑ ์ ๋ด์ฉ์ด ์กฐ๊ธ ํฌํจ๋์ด ์์ต๋๋ค.
๊ฐ๊ธ์ ์ฑ ์ ๊ตฌ๋งคํ์ ์ผ ํ๊ณ ์ถํ์ฌ๋ ์์ ๋น ๋๋ ์๋๊ณต์ผ๋ก ๊ณต๋ถํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
#1. ๊ฐ๋ ๋ฐ ์ฉ์ด ์ ๋ฆฌ
- ๋ผ๋ฐ์ฐ(Rumbaugh)
- ๋ผ๋ฐ์ฐ๋(Rumbaugh)? ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๋ฅผ ๊ทธ๋ํฝ ํ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ๋ชจ๋ธ๋งํ๋ ๊ฐ์ฒด์งํฅ ๋ถ์(Object-oriented Analysis) ๊ธฐ๋ฒ
- ๊ฐ์ฒด ๋ชจ๋ธ๋ง(Object Modeling): ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ, ์ ๋ณด ๋ชจ๋ธ๋ง์ด๋ผ๊ณ ๋ ํ๋ฉฐ ์์คํ ์์ ์๊ตฌํ๋ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์, ๊ฐ์ฅ ์ค์ํ๋ฉฐ ์ ํ๋์ด์ผ ํจ
- ๋์ ๋ชจ๋ธ๋ง(Dynamic Modeling): ์ํ ๋ค์ด์ด๊ทธ๋จ, ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๊ฐ์ฒด๋ค ์ฌ์ด์ ์ ์ด ํ๋ฆ, ๋์ ์์ ๋ฑ์ ๋์ ์ธ ํ์๋ฅผ ํํ
- ๊ธฐ๋ฅ ๋ชจ๋ธ๋ง(Functional Modeling): ์๋ฃ ํ๋ฆ๋(DFD), ํ๋ก์ธ์ค๋ค์ ์๋ฃ ํ๋ฆ์ ์ค์ฌ์ผ๋ก ์ฒ๋ฆฌ ๊ณผ์ ํํ
- ๋ผ๋ฐ์ฐ ๊ฐ์ฒด์งํฅ ๋ถ์ ๊ธฐ๋ฒ์ ์ ์ฐจ๋ ๊ฐ์ฒด ๋ชจ๋ธ๋ง -> ๋์ ๋ชจ๋ธ๋ง -> ๊ธฐ๋ฅ ๋ชจ๋ธ๋ง ์์๋ก ์งํ
- UML(Unified Modeling Language)
- UML(Unified Modeling Language)์ด๋? ์ํํธ์จ์ด ์์คํ ์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ์ฐ์ถ๋ฌผ์ ๋ช ์ธํ, ์๊ฐํ, ๋ฌธ์ํํ ๋ ์ฌ์ฉํ๋ ๋ชจ๋ธ๋ง ์ธ์ด๋ก์จ ํ๋์ ์์คํ ์ ํํํ๊ธฐ ์ํ ํ์ค์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค.
- UML ํน์ง [๊ฐ๊ตฌ๋ช
๋ฌธ]
- ๊ฐ์ํ
- ๊ตฌ์ถ
- ๋ช ์ธํ
- ๋ฌธ์ํ ์ธ์ด
- UML ๊ตฌ์ฑ์์ [์ฌ๊ด๋ค]
- ์ฌ๋ฌผ(Things)
- ๊ด๊ณ(Relationships)
- ๋ค์ด์ด๊ทธ๋จ(Diagrams)
- ๊ตฌ์กฐ์ (Structural) / ์ ์ (Static) ๋ค์ด์ด๊ทธ๋จ(Diagram) [ํด๊ฐ ์ปด๋ฐฐ ๋ณตํจ]
- ํด๋์ค ๋ค์ด์ด๊ทธ๋จ(Class): ์์คํ ๋ด ํด๋์ค์ ์ ์ ๊ตฌ์กฐ๋ฅผ ํํ. ์์ฑ๊ณผ ๋์์ผ๋ก ๊ตฌ์ฑ. ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๊ณ ๊ตฌ์กฐ์์ ๋ฌธ์ ์ ๋์ถ ๊ฐ๋ฅ. ๊ตฌ์ฑ์์๋ ํด๋์ค ์ด๋ฆ, ์์ฑ, ์ฐ์ฐ, ์ ๊ทผ ์ ์ด์๊ฐ ์์
- ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ(Object): ํด๋์ค์ ์ํ ์ฌ๋ฌผ๋ค, ์ฆ ์ธ์คํด์ค๋ฅผ ํน์ ์์ ์ ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ก ํํ. ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๋ํ๋ด๋ ๋์ ์ค์ ํด๋์ค๋ฅผ ์ฌ์ฉ. ์ฐ๊ด๋ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ํํ
- ์ปดํฌ๋ํธ ๋ค์ด์ด๊ทธ๋จ(Component): ์ฝ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ ํํ. ์ค์ง์ ํ๋ก๊ทธ๋๋ฐ ์์ ์ ์ฌ์ฉ
- ๋ฐฐ์น ๋ค์ด์ด๊ทธ๋จ(Deployment): ์ปดํฌ๋ํธ ์ฌ์ด์ ์ข ์์ฑ์ ํํ. ๊ฒฐ๊ณผ๋ฌผ, ํ๋ก์ธ์ค, ์ปดํฌ๋ํธ ๋ฑ ๋ฌผ๋ฆฌ์ ์์๋ค์ ์์น๋ฅผ ํํ
- ๋ณตํฉ์ฒด ๊ตฌ์กฐ ๋ค์ด์ด๊ทธ๋จ(Composite Structure): ํด๋์ค๋ ์ปดํฌ๋ํธ๊ฐ ๋ณตํฉ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ๊ฒฝ์ฐ ๊ทธ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ํํ
- ํจํค์ง ๋ค์ด์ด๊ทธ๋จ(Package): ์ ์ค์ผ์ด์ค๋ ํด๋์ค ๋ฑ์ ๋ชจ๋ธ ์์๋ค์ ๊ทธ๋ฃนํํ ํจํค์ง๋ค์ ๊ด๊ณ๋ฅผ ํํ
- ํ์์ (Behavioral) / ๋์ (Dynamic) ๋ค์ด์ด๊ทธ๋จ(Diagram) [์ ์์ปค ์ํํ]
- ์ ์ค์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ(Usecase): ์ฌ์ฉ์ ๊ด์ ์์ ์์คํ ์ ํ๋์ ํํ. ์ ์ค์ผ์ด์ค๋ ์์คํ ์ ๊ธฐ๋ฅ์ ์๊ตฌ์ ์์ ํ์ฉ. ๊ตฌ์ฑ์์๋ ์ ์ค์ผ์ด์ค, ์กํฐ, ์์คํ ์ด ์์
- ์ํ์ค ๋ค์ด์ด๊ทธ๋จ(Sequence): ๊ฐ์ฒด ๊ฐ ์ํธ์์ฉ์ ๋ฉ์ธ์ง ํ๋ฆ์ผ๋ก ํํ. ๊ฐ์ฒด ์ฌ์ด ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ ์๊ฐ์ ํํ. ๊ตฌ์ฑ์์๋ ๊ฐ์ฒด, ์๋ช ์ , ์คํ, ๋ฉ์ธ์ง๊ฐ ์์
- ์ปค๋ฎค๋์ผ์ด์ ๋ค์ด์ด๊ทธ๋จ(Communication): ์ํ์ค ๋ค์ด์ด๊ทธ๋จ๊ณผ ๊ฐ์ด ๋์์ ์ฐธ์ฌํ๋ ๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์ธ์ง๋ฅผ ํํํ๋๋ฐ, ๋ฉ์ธ์ง๋ฟ๋ง ์๋๋ผ ๊ฐ์ฒด ๊ฐ์ ์ฐ๊ด๊น์ง ํํ
- ์ํ ๋ค์ด์ด๊ทธ๋จ(State): ๋ชจ๋ ๊ฐ๋ฅํ ์ํ์ ์ ์ด๋ฅผ ํํ. ๋ค์ ๋งํด ํ๋์ ๊ฐ์ฒด์์ ๋ฐ์ํ๋ ํ๋ ๋ณํ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ ๋ค์ด์ด๊ทธ๋จ
- ํ๋ ๋ค์ด์ด๊ทธ๋จ(Activity): ์ฌ๋ฌ ํ๋๋ค์ด ์์ฐจ, ๋ณํ ๋ฐฉ์ ๋ฑ์ ์ํํ๋ ์ํฉ์ ํํํ ๋ค์ด์ด๊ทธ๋จ
- ํ์ด๋ฐ ๋ค์ด์ด๊ทธ๋จ(Timing): ๊ฐ์ฒด ์ํ ๋ณํ์ ์๊ฐ ์ ์ฝ์ ๋ช ์์ ์ผ๋ก ํํ
- UML์ ๊ด๊ณ(Relationships) [์ฐ์งํฌ ์ผ์์ค]
- ์ฐ๊ด(Associaition): 2๊ฐ ์ด์์ ์ฌ๋ฌผ์ด ์๋ก ๊ด๋ จ๋ ์ํ๋ก ํํ [ -> ], ์๋ก์๊ฒ ์ํฅ์ ์ฃผ๋ ์๋ฐฉํฅ ๊ด๊ณ์ ๊ฒฝ์ฐ ํ์ดํ๋ฅผ ์๋ตํ๊ณ ์ค์ ์ผ๋ก๋ง ์ฐ๊ฒฐ
- ์งํฉ(Aggregation): ํ๋์ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ํฌํจ๋ ๊ด๊ณ ํํ [ โ ]
- ํฌํจ(Composition): ์งํฉ ๊ด๊ณ์ ํน์ํ ํํ๋ก, ํฌํจํ๋ ์ฌ๋ฌผ์ ๋ณํ๊ฐ ํฌํจ๋๋ ์ฌ๋ฌผ์ ์ํฅ์ ๋ฏธ์น๋ ๊ด๊ณ๋ฅผ ํํ [ โ ]
- ์ผ๋ฐํ(Generalization): ํ๋์ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ๋นํด ๋ ์ผ๋ฐ์ ์ธ์ง ๊ตฌ์ฒด์ ์ธ์ง๋ฅผ ํํ. ์ผ๋ฐ์ ์ธ ๊ฐ๋ ์ ๋ถ๋ชจ(์์)๋ผ๊ณ ํ๊ณ , ๊ตฌ์ฒด์ ์ธ ๊ฐ๋ ์ ์์(ํ์)์ด๋ผ ํจ [ -โท ]
- ์์กด(Dependency): ์ฌ๋ฌผ ์ฌ์ด์ ์๋ก ์ฐ๊ด์ ์์ผ๋ ํ์์ ๋ฐ๋ผ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ๋ ์งง์ ์๊ฐ ๋์๋ง ์ฐ๊ด์ ์ ์งํ๋ ๊ด๊ณ๋ฅผ ํํ [ ...> (์ค์ )]
- ์ค์ฒดํ(Realization): ์ฌ๋ฌผ์ด ํ ์ ์๊ฑฐ๋, ํด์ผ ํ๋ ๊ธฐ๋ฅ(ํ์, ์ธํฐํ์ด์ค)์ผ๋ก ์๋ก๋ฅผ ๊ทธ๋ฃนํํ ์ ์๋ ๊ด๊ณ๋ฅผ ํํ [ ...โท (์ค์ )]
- UMLํ์ฅ ๋ชจ๋ธ์์ ์คํ ๋ ์ค ํ์ ๊ฐ์ฒด๋ฅผ ํํํ ๋ ์ฌ์ฉํ๋ ๊ธฐํธ: <<>>
- ์ ์์ผ(Agile)
- ์ ์์ผ(Agile)์ด๋? ์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ ์ํํธ์จ์ด ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ์ ํ๋๋ก์ ๊ฐ๋ฐ๊ณผ ํจ๊ป ์ฆ์ ํผ๋๋ฐฑ์ ๋ฐ์์ ์ ๋์ ์ผ๋ก ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ
- ์ ์์ผ ๋ฐฉ๋ฒ๋ก ํน์ง
- ํ๋ก์ ํธ์ ์๊ตฌ์ฌํญ์ ๊ธฐ๋ฅ ์ค์ฌ์ผ๋ก ์ ์
- ์ ์ฐจ์ ๋๊ตฌ๋ณด๋ค ๊ฐ์ธ๊ณผ ์ํต์ ์ค์ํ๊ฒ ์๊ฐ
- ์์ ๊ณํ์ ์งง๊ฒ ์ธ์ ์๊ตฌ ๋ณํ์ ์ ์ฐํ๊ณ ์ ์ํ๊ฒ ๋์
- ์ํํธ์จ์ด๊ฐ ์ ์คํ๋๋ ๊ฒ์ ๊ฐ์น๋ฅผ ๋
- ๊ณ ๊ฐ๊ณผ์ ํผ๋๋ฐฑ์ ์ค์ํ๊ฒ ์๊ฐ
- ์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ ํ
- XP(eXtreme Programming): ์์ฌ์ํต ๊ฐ์ ๊ณผ ์ฆ๊ฐ์ ํผ๋๋ฐฑ์ผ๋ก ์ํํธ์จ์ด ํ์ง์ ๋์ด๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ก . 5๊ฐ์ง ๊ฐ์น์ 12๊ฐ์ ์ค์ฒํญ๋ชฉ์ด ์กด์ฌ
- 5๊ฐ์ง ๊ฐ์น: ์ฉ๊ธฐ, ๋จ์์ฑ, ์์ฌ์ํต, ํผ๋๋ฐฑ, ์กด์ค [์ฉ๋จ์ ํผ์กด]
- 12๊ฐ์ง ๊ธฐ๋ณธ์๋ฆฌ: ์ง ํ๋ก๊ทธ๋๋ฐ, ๊ณตํต ์ฝ๋ ์์ , ์ง์์ ์ธ ํตํฉ, ๊ณํ ์ธ์ฐ๊ธฐ, ์์ ๋ฆด๋ฆฌ์ฆ, ๋ฉํํฌ์ด, ๊ฐ๋จํ ๋์์ธ, ํ ์คํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ, ๋ฆฌํฉํ ๋ง, 40์๊ฐ ์์ , ๊ณ ๊ฐ ์์ฃผ, ์ฝ๋ ํ์ค
- ์คํฌ๋ผ(SCRUM): ๋ฉ์ผ ์ ํด์ง ์๊ฐ, ์ฅ์์์ ์งง์ ์๊ฐ์ ๊ฐ๋ฐ์ ํ๋ ํ์ ์ํ ํ๋ก์ ํธ ๊ด๋ฆฌ ์ค์ฌ ๋ฐฉ๋ฒ๋ก
- ์ฃผ์ ๊ฐ๋ : ๋ฐฑ๋ก๊ทธ, ์คํ๋ฆฐํธ, ์คํฌ๋ผ ๋ฏธํ , ์คํฌ๋ผ ๋ง์คํฐ, ์คํ๋ฆฐํธ ํ๊ณ , ๋ฒ๋ค์ด ์ฐจํธ
- ๋ฆฐ(LEAN): ๋์ํ์ ๋ฆฐ ์์คํ
ํ์ง๊ธฐ๋ฒ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ ์ฉํด์ ๋ญ๋น์์๋ฅผ ์ ๊ฑฐํ์ฌ ํ์ง์ ํฅ์์ํจ ๋ฐฉ๋ฒ๋ก . JIT(Just In Time), ์นธ๋ฐ(Kanban) ๋ณด๋ ์ฌ์ฉ
- 7๊ฐ์ง ์์น: ๋ญ๋น์ ๊ฑฐ, ํ์ง ๋ด์ฌํ, ์ง์ ์ฐฝ์ถ, ๋ฆ์ ํ์ , ๋น ๋ฅธ ์ธ๋, ์ฌ๋ ์กด์ค, ์ ์ฒด ์ต์ ํ [๋ญํ์ง ํ์ธ์ฌ์ ]
- XP(eXtreme Programming): ์์ฌ์ํต ๊ฐ์ ๊ณผ ์ฆ๊ฐ์ ํผ๋๋ฐฑ์ผ๋ก ์ํํธ์จ์ด ํ์ง์ ๋์ด๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ก . 5๊ฐ์ง ๊ฐ์น์ 12๊ฐ์ ์ค์ฒํญ๋ชฉ์ด ์กด์ฌ
- ์๋ฃ ์ฌ์ (Data Dictionary)
- =: ์๋ฃ ์์์ ๋ํ์ฌ ๊ฐ์ด๋ ๋จ์๋ฅผ ๋ํ๋
- (): ์๋ฃ์ ์๋ต ๊ฐ๋ฅํจ์ ๋ํ๋
- [] : ์๋ฃ์ ์ ํ์ ๋ํ๋
- {}: ์๋ฃ์ ๋ฐ๋ณต์ ๋ํ๋
- +: ์๋ฃ์ ์ฐ๊ฒฐ์ ๋ํ๋
- *: ์๋ฃ์ ์ค๋ช ์ ๋ํ๋. ์ฃผ์
- ๋ฐ์ดํฐ ํ๋ฆ๋(Data Flow Diagram; DFD)
- ํน์ง: ๊ตฌ์กฐ์ ๋ถ์ ๊ธฐ๋ฒ์ ์ด์ฉ. ๋ฐ์ดํฐ์ ํ๋ฆ์ ์ค์ฌ์ ๋๋ ๋ถ์์ฉ ๋๊ตฌ. ์ ์ด์ ํ๋ฆ์ ์ค์ํ์ง ์์. ์๊ฐ ํ๋ฆ์ ๋ช ํํ๊ฒ ํํํ ์๋ ์์
- ๊ตฌ์ฑ์์: ์ฒ๋ฆฌ๊ธฐ(Process), ๋ฐ์ดํฐ ํ๋ฆ(Data Flow), ๋ฐ์ดํฐ ์ ์ฅ์(Data Store), ๋จ๋ง(Terminator) [ํํ์คํฐ]
- ๋ชจ๋ธ๋ง
- ์ ์ฐจ: ์๊ตฌ์ฌํญ ๋ถ์ -> ๊ฐ๋ ๋ชจ๋ธ๋ง -> ๋ ผ๋ฆฌ ๋ชจ๋ธ๋ง -> ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง
- ๋ถ์ ์๋ํ ๋๊ตฌ ์ฃผ์ ๊ธฐ๋ฅ(CASE ๋๊ตฌ)
- ๊ทธ๋ํฝ ์ง์
- ์ํํธ์จ์ด ์๋ช ์ฃผ๊ธฐ์ ์ ๋จ๊ณ๋ฅผ ์ฐ๊ฒฐ
- ๋ค์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ชจํ์ ์ง์
- ํ์คํ๋ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ ๋ฐ ๋ฌธ์ ์๋ํ ๊ธฐ๋ฅ์ ์ ๊ณต
- ์์ ๊ณผ์ ๋ฐ ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ํตํด ์์ ์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ ์ฆ๋
- ๊ฐ์ฒด์งํฅ(Object Oriented)
- ๊ฐ๋ : ๊ฐ์ฒด์งํฅ์ ์ค์ธ๊ณ์ ๊ฐ์ฒด๋ฅผ ์์ฑ๊ณผ ๋ฉ์๋๊ฐ ๊ฒฐํฉํ ํํ์ ๊ฐ์ฒด๋ก ํํํ๋ ๊ธฐ๋ฒ
- ๊ตฌ์ฑ์์: ํด๋์ค(Class), ๊ฐ์ฒด(Object), ๋ฉ์๋(Method), ๋ฉ์ธ์ง(Message), ์ธ์คํด์ค(Instance), ์์ฑ(propertiy)
- ๊ธฐ๋ฒ
- ์บก์ํ(Encapsulation): ์๋ก ๊ด๋ จ์ฑ์ด ๋ง์ ๋ฐ์ดํฐ์ ์ด์ ๊ด๋ จ๋ ํจ์๋ค์ ํ ๋ฌถ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ. ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๊ณ ์ฌ์ฌ์ฉ์ด ์ฉ์ด. ์ธํฐํ์ด์ค๊ฐ ๋จ์ํ๋จ. ์ ๋ณด์๋๊ณผ ๊ด๊ณ๊ฐ ๊น์. ๋ณ๊ฒฝ ๋ฐ์ ์ ์ค๋ฅ์ ํ๊ธ ํจ๊ณผ๊ฐ ์ ์
- ์์์ฑ(Inheritance): ์์ ํด๋์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค์์ ์ฌ์ ์ ์์ด ๋ฌผ๋ ค๋ฐ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ
- ๋คํ์ฑ(Polymorphism): ํ๋์ ๋ฉ์ธ์ง์ ๋ํด ๊ฐ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ๋ฐฉ๋ฒ์ผ๋ก ์๋ตํ ์ ์๋ ๋ฅ๋ ฅ. ์ค๋ฒ๋ก๋ฉ, ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋ํ์
- ์ถ์ํ(Abstraction): ๊ณตํต ์ฑ์ง์ ์ถ์ถํ์ฌ ์ถ์ ํด๋์ค๋ฅผ ์ค์ ํ๋ ๊ธฐ๋ฒ. ๊ธฐ๋ฅ ์ถ์ํ, ์๋ฃ ์ถ์ํ, ์ ์ด ์ถ์ํ
- ์ ๋ณด์๋(Information Hiding): ์ฝ๋ ๋ด๋ถ ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ์จ๊ธฐ๊ณ ๊ณต๊ฐ ์ธํฐํ์ด์ค๋ฅผ ํตํด์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ ์ฝ๋ ๋ณด์ ๊ธฐ์ . ๊ณ ๋ ค๋์ง ์์ ์ํฅ(Side-Effect)๋ค์ ์ต์ํํ๊ธฐ ์ํ์ฌ ์ฌ์ฉ
- ๊ด๊ณ์ฑ(Relationship): ๋ ๊ฐ ์ด์์ ์ํฐํฐ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ๋ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๊ธฐ๋ฒ
- ์ข ๋ฅ: ์ฐ๊ดํ(is-member-of), ์ง๋จํ(is part of, part-whole), ๋ถ๋ฅํ(is-instance-of), ์ผ๋ฐํ(is-a), ํน์ํ(is-a, ๊ณ ์ ํน์ฑ์ ์ง๋)
- ๋ฐฉ๋ฒ๋ก ์ข
๋ฅ
- OOSE: ์ผ์ฝฅ์จ(Jacobson)
- OMT: ๋ผ๋ฐ์ฐ(Rumbaugh)
- OOD: ๋ถ์น(Booch)
- ์๊ตฌ์ฌํญ(Requirements Analysis)
- ๊ฐ๋ : ์๊ตฌ๋ถ์์ ๋์ถ๋ ์๊ตฌ์ฌํญ ๊ฐ ์์ถฉ์ ํด๊ฒฐํ๊ณ ์ํํธ์จ์ด์ ๋ฒ์๋ฅผ ํ์ ํ์ฌ ์ธ๋ถ ํ๊ฒฝ๊ณผ์ ์ํธ์์ฉ์ ๋ถ์ํ๋ ๊ณผ์ . ๊ฐ๋ฐ ๋์์ ๋ํ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ์ค ๋ช ํํ์ง ์๊ฑฐ๋ ๋ชจํธํ์ฌ ์ดํด๋์ง ์๋ ๋ถ๋ถ์ ๋ฐ๊ฒฌํ๊ณ ์ด๋ฅผ ๊ฑธ๋ฌ๋ด๊ธฐ ์ํ ๊ณผ์
- ํน์ง: ๋ถ์๊ฒฐ๊ณผ์ ๋ฌธ์ํ๋ฅผ ํตํด ํฅํ ์ ์ง๋ณด์์ ์ ์ฉํ๊ฒ ํ์ฉ ๊ฐ๋ฅ. ์๋จ์ ๋ช ์ธ์ ํ์ฉ ๊ฐ๋ฅ. ๊ฐ๋ฐ ๋น์ฉ์ด ๊ฐ์ฅ ๋ง์ด ์์๋๋ ๋จ๊ณ X
- ๊ธฐ๋ฒ: ํ์ธ(Validation), ๊ฒ์ฆ(Verification), ๋น์ฉ ์ถ์ ์ด ๊ฐ๋ฅํ๋๋ก ์ถฉ๋ถํ๊ณ ์ ํํ๊ฒ ๊ธฐ์
- ์๊ตฌ์ฌํญ ๋ถ๋ฅ: ๊ธฐ๋ฅor๋น๊ธฐ๋ฅ ๋ถ๋ฅ. ์ํํธ์จ์ด์ ๋ฏธ์น๋ ์ํฅ ๋ฒ์ ํ์
- ๊ฐ๋ ๋ชจ๋ธ๋ง ์์ฑ ๋ฐ ๋ถ์: ์๊ตฌ์ฌํญ์ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํ์ค ์ธ๊ณ์ ์ํฉ์ ๋จ์ํ, ๊ฐ๋ ์ ์ผ๋ก ํํํ ๊ฒ์ ๋ชจ๋ธ์ด๋ผ๊ณ ํ๋ฉฐ, ๋ชจ๋ธ๋ง์ ์ด๋ฌํ ๋ชจ๋ธ์ ๋ง๋๋ ๊ณผ์ . ๋ชจ๋ธ๋ง ํ๊ธฐ๋ ์ฃผ๋ก UML ์ฌ์ฉ
- ์๊ตฌ์ฌํญ ํ ๋น: ๋ค๋ฅธ ๊ตฌ์ฑ์์์ ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง ๋ถ์์ ํตํด ์ถ๊ฐ์ ์ธ ์๊ตฌ์ฌํญ ๋ฐ๊ฒฌ ๊ฐ๋ฅ
- ์๊ตฌ์ฌํญ ํ์: ๋ ๋ช ์ ์ดํด๊ด๊ณ์๊ฐ ์๋ก ์์ถฉ๋๋ ๋ด์ฉ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ, ์ ์ ํ ์ง์ ์์ ํฉ์ํ๊ธฐ ์ํ ๊ธฐ๋ฒ. ์ฐ์ ์์ ๋ถ์ฌํ์ฌ ์ค์๋ ์์ผ๋ก ์ฒ๋ฆฌ
- ์ ํ ๋ถ์: ๊ตฌ๋ฌธ(Syntax)๊ณผ ์๋ฏธ(Semantics)๋ฅผ ๊ฐ๋ ์ ํํ๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ํ์ ๊ธฐํธ๋ก ํํ
- GUI, CLI, CUI, MUI ๊ฐ๊ฐ์ ์๋ฏธ ๋ฐ ๊ธฐ๋ฅ
- CLI(Command Line Interface): ๋ช ๋ น์ด๋ฅผ ํ ์คํธ๋ก ์ ๋ ฅํ์ฌ ์กฐ์ํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค
- GUI(Graphical User Interface): ๊ทธ๋ํฝ ํ๊ฒฝ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ง์ฐ์ค๋ ์ ์ํ์ ์ด์ฉํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค
- CUI(Character User Interface): GUI์ ์ด์ ํ. CLI๊ณผ ๋ณ ์ฐจ์ด๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์
- MUI(Multilingual User Interface): ๋ค์ค ์ธ์ด ์ฌ์ฉ์ ์ธํฐํ์ด์ค
- ๋ฏธ๋ค์จ์ด ์๋ฃจ์
(Middleware Solution)
- ๊ฐ๋ : ์ปดํจํฐ์ ์ปดํจํฐ ๊ฐ์ ์ฐ๊ฒฐ์ ์ฝ๊ณ ์์ ํ๊ฒ ํ ์ ์๋๋ก ํด์ฃผ๊ณ ์ด์ ๋ํ ๊ด๋ฆฌ๋ฅผ ๋์์ฃผ๋ ์ํํธ์จ์ด
- ์ ํ
- DB ๋ฏธ๋ค์จ์ด
- ์๊ฒฉ ํ๋ก์์ ํธ์ถ
- ๋ฉ์ธ์ง ์งํฅ ๋ฏธ๋ค์จ์ด
- ํธ๋์ญ์ ์ฒ๋ฆฌ
- ๋ ๊ฑฐ์์จ์ด
- ๊ฐ์ฒด ๊ธฐ๋ฐ
- WAS
- EAI: ๊ธฐ์ ๋ด๋ถ์ ์ด๊ธฐ์ข ์์ฉ ๋ชจ๋ ๊ฐ ํตํฉ / ์ง์ค / ๊ธฐ์ ๋ด๋ถ๋ง
- ESB: ๊ธฐ์ ๊ฐ์ ์๋น์ค ๊ตํ์ ์ํด ํ์ค API๋ก ํตํฉ / ๋ถ์ฐ / ๊ธฐ์ ์ธ๋ถ ์ฑ๋๋ง
- GoF(Gang of Four) ๋์์ธ ํจํด ์ค๋ช
- ์ฐธ๊ณ ) ํจํด๋ณ๋ก ์ํ ๋ด์ฉ๋ค ์ถ์
- ์์ฑ ํจํด: Builder, Prototype, Factory Method, Abstract Factory, Singleton
- ๊ตฌ์กฐ ํจํด: Bridge, Decorator, Facade, Flyweight, Proxy, Composite, Adapter
- ํ์ ํจํด: Interpreter, Template Method, Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Visitor
- ์ํํธ์จ์ด ์ค๊ณ์์ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ์ถ์ํ(Abstraction) ๊ธฐ๋ฒ ์ข
๋ฅ ๋ฐ ๊ธฐ๋ฅ ์ค๋ช
- ์ ์ด ์ถ์ํ: ์ ์ด์ ์ ํํ ๋ฉ์ปค๋์ฆ์ ์ ์ํ์ง ์๊ณ ์ํ๋ ํจ๊ณผ๋ฅผ ์ ํ๋๋ฐ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
- ๊ธฐ๋ฅ ์ถ์ํ: ์ ๋ ฅ ์๋ฃ๋ฅผ ์ถ๋ ฅ์๋ฃ๋ก ๋ณํํ๋ ๊ณผ์ ์ ์ถ์ํํ๋ ๋ฐฉ๋ฒ
- ์๋ฃ ์ถ์ํ: ์๋ฃ์ ์๋ฃ์ ์ ์ฉ๋ ์ ์๋ ๊ธฐ๋ฅ์ ํจ๊ป ์ ์ํจ์ผ๋ก์จ ์๋ฃ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ
- ์ํคํ
์ฒ ํจํด์ ์ ํ
- ๋ ์ด์ด ํจํด(๊ณ์ธตํ ํจํด, Layers Pattern)
- ์์คํ ์ ๊ณ์ธต๊ตฌ์กฐ(Layer)๋ก ์์๋ ์ ํ์ ํจํด
- ๊ฐ๊ฐ์ ์์, ํ์ ๋ ์ด์ด๋ผ๋ฆฌ๋ง ์ํธ์์ฉ
- ํน์ ๋ ์ด์ด๋ง ์ ์ง๋ณด์ํ์ฌ ์์คํ ๊ฐ์ ๊ฐ๋ฅ
- ex) ๋คํธ์ํฌ ํ๋กํ ์ฝ
- ํด๋ผ์ด์ธํธ-์๋ฒ ํจํด
- ์๋ฒ(=1, ํญ์๋๊ธฐ): ์์์ ๊ณต / ํด๋ผ์ด์ธํธ(=๋ค์): ์์ ์์ฒญ
- ์๋ฒ: ๋ชฌ์คํฐ ์์ฑ / ํด๋ผ์ด์ธํธ: ๋ชฌ์คํฐ ์ฌ๋ฅ > ๊ฐ์์ ๊ธฐ๋ฅ์ด ๋ ๋ฆฝ์ ์ผ๋ก ๋์
- ํ์ดํ-ํํฐ ํจํด
- ๋ฐ์ดํฐ์ ํ๋ฆ(์คํธ๋ฆผ)์ ๊ฐ ๋จ๊ณ๋ฅผ ํ์ดํ์ ํํฐ๋ก ์ฐ๊ฒฐ
- ํ์ดํ: ๊ฐ ๋จ๊ณ๋ช / ํํฐ: ๊ฐ ํ์ดํ๋ฅผ ํตํด ๋์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์บก์ํ
- ์ ์์คํ ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฌผ์ ํ์ดํ๋ฅผ ํตํด ์ ๋ฌ๋ฐ์ ์ฒ๋ฆฌํ ๋ค์ ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ ํ์ดํ๋ฅผ ํตํด ๋ค์ ์์คํ ์ผ๋ก ๋๊ฒจ์ฃผ๋ ํจํด์ ๋ฐ๋ณตํ๋ ๊ฒ์ด ํ์ดํ-ํํฐ ํจํด
- ์ฌ์ฌ์ฉ์ฑ, ํ์ฅ์ฑ์ด ์ข์ ๋ค์ํ ํ์ดํ๋ผ์ธ ์์ฑ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ๋ณํ, ๋ฒํผ๋ง, ๋๊ธฐํ ๋ฑ์ ์ ๋ฆฌ
- *๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ ํจํด(MVC) (์ผ๋ฐ์ ์ธ ๋ํํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ํฉ)
- ๋ชจ๋ธ: ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ฐ์ดํฐ ๋ณด๊ด / ์ปจํธ๋กค๋ฌ: ์ ๋ ฅ ์ฒ๋ฆฌ / ๋ทฐ: ์ฒ๋ฆฌ๋ ์ ๋ณด ํ์(์ฌ๋ฌ ํํ์ ๋ทฐ)
- ๋ํํ ์ ํ๋ฆฌ์ผ์ด์ : ์จ๋ผ์ธ ์ผํ๋ชฐ ์ฌ์ดํธ๋ ์ค๋งํธํฐ ์ฑ๊ณผ ๊ฐ์ด ์ฌ์ฉ์์ ์๊ตฌ๊ฐ ๋ฐ์ํ๋ฉด ์์คํ ์ด ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ํ๋ ์ํํธ์จ์ด
- ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ํจํด
- ๋ง์คํฐ ์ปดํฌ๋ํธ๊ฐ ์ง์ํ ์ผ์ ์ฌ๋ฌ ์ฌ๋ ์ด๋ธ ์ปดํฌ๋ํธ๊ฐ ๋ณ๋ ฌ์ฒ๋ฆฌํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ทจํฉ
- ๋์ค์ ๋ช ๊ฐ์ ์ฌ๋ ์ด๋ธ๊ฐ ๊ณ ์ฅ ๋๋ ์ ๋ฌด ์ฒ๋ฆฌ์๋ ๋ฌธ์ ๊ฐ ์์
- ๋ธ๋ก์ปค ํจํด
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ค๊ฐ์์ ๋ธ๋ก์ปค๊ฐ ์ ์ ํ ์๋ฒ๋ก ์ฐ๊ฒฐํด ์ฃผ๋ ํ์(์๋ฒ ์ฌ๋ฌ๊ฐ=๋ถ์ฐํ๊ฒฝ ์์คํ )
- ํผ์ด ํฌ ํผ์ด ํจํด(P2P)
- ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ก ์ญํ ์ ๋ฐ๊ฟ ์ ์๋ ํํ(ํ ๋ ํธ, ์นํ๋)
- ๋ ๊ฐ์ง ์ผ์ ๋ณ๋ ฌ๋ก ์ํํ๋ ๋ฉํฐ์ค๋ ๋ฉ(์์์์ฒญ/์ ์์ ๊ณต)์ด ํน์ง
- ์ด๋ฒคํธ-๋ฒ์ค ํจํด
- ํน์ ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๋ฉด ํด๋น ์ฑ๋(๋ฒ์ค)๋ฅผ ๊ตฌ๋ ํ๊ณ ์๋ ๋ฆฌ์ค๋๋ค์ด ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ๋ ํ์
- ๋ธ๋๋ณด๋ ํจํด
- ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ธ๋๋ณด๋์ ์ ๊ทผํ์ฌ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ํ์(์์ฑ์ธ์, ์ฐจ๋์๋ณ, ์ ํธํด์ ๋ฑ)
- ๋ ์ด์ด ํจํด(๊ณ์ธตํ ํจํด, Layers Pattern)
- ๊ฐ์ฒด์งํฅ ๋ถ์ ๊ธฐ๋ฒ
- ์ํฅ์ ๋ฐฉ์. ํํฅ์์ผ๋ก ๋ณํ๋์ด ๋ฌธ์ ์ถ์ ๊ฐ๋ฅ์ฑ ์์
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค(User Interface; UI)์ ๋ํ ์ค๋ช . ๊ฐ๋ณ๊ฒ ๋ด๋ ๋ ๋ฏ
๋ง์น๋ฉฐ..
์๋๋ ์ ๋ง ๋ณด๋ ค๊ณ ๋ ธํธ ์ ๋ฆฌํ๋ ๋ด์ฉ์ด๋ผ์ ํ์ ํ ์ ์ด ๋ง๊ธฐ๋ ํ ๊ฑฐ๊ณ ์คํ๋ ์์ ์ ์์ต๋๋ค. ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ๋ด์ฃผ์ธ์ ๐
๋ง์ด ๋ถ์กฑํ ๋ด์ฉ์ด์ จ๊ฒ ์ง๋ง ๋์์ด ๋์ จ๋ค๋ฉด ๋๊ธ ํ ๋ฒ์ฉ ๋จ๊ฒจ์ฃผ์๋ฉด ๋ง์ด ๋ฟ๋ฏํ ๊ฒ ๊ฐ์ต๋๋ค. ๐๐
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ํํธ์จ์ด ๊ฐ๋ฐ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ ๋ณด์์คํ ๊ตฌ์ถ๊ด๋ฆฌ
'์๊ฒฉ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ ๋ณด์์คํ ๊ตฌ์ถ๊ด๋ฆฌ (0) | 2023.02.07 |
---|---|
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ํํธ์จ์ด ๊ฐ๋ฐ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] 2022 ํ๊ธฐ ์ค๊ธฐ ๋ฆ์ ํฉ๊ฒฉ ํ๊ธฐ (0) | 2023.02.07 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค. ๐