โจ ์ํํธ์จ์ด ์๋ช ์ฃผ๊ธฐ Software Life Cycle
์ํํธ์จ์ด ๊ฐ๋ฐ ๋จ๊ณ์ ๊ฐ ๋จ๊ณ๋ณ ์ฃผ์ ํ๋, ๊ทธ๋ฆฌ๊ณ ํ๋์ ๊ฒฐ๊ณผ์ ๋ํ ์ฐ์ถ๋ฌผ๋ก ํํํ๋ค.
โจ ํญํฌ์ ๋ชจํ Waterfall Model
์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ด์ ๋จ๊ณ๋ก ๋์๊ฐ ์ ์๋ค.
๊ฐ ๋จ๊ณ๋ฅผ ํ์คํ ๋งค๋ญ์ง๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ ์ ํ๊ฒ ๊ฒํ ํ์ฌ ์น์ธ ๊ณผ์ ์ ๊ฑฐ์น ํ์ ๋ค์ ๋จ๊ณ๋ฅผ ์งํ (์ ํ ์์ฐจ์ )
์ ํต์ , ๊ณ ์ ์
โจ ๋์ ํ ๋ชจํ Spiral Model, ์ ์ง์ ๋ชจํ
๋ณดํดBoehm์ด ์ ์ํ ๊ฒ
๋์ ์ ๋ฐ๋ผ ๋๋ฏ์ด ์ฌ๋ฌ๋ฒ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ๊ณผ์ ์ ๊ฑฐ์ณ ์ ์ง์ ์ผ๋ก ์๋ฒฝํ ์ต์ข ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐ
โจ ์ ์์ผ ๋ชจํ Agile Model
๊ณ ๊ฐ ์๊ตฌ์ฌํญ ๋ณํ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋๋ก ์ผ์ ํ ์ฃผ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๋ ๊ฐ๋ฐ๊ณผ์
์ข์ ๊ฒ์ ๋น ๋ฅด๊ณ ๋ญ๋น ์๊ฒ ๋ง๋ค๊ธฐ ์ํด ๊ณ ๊ฐ๊ณผ์ ์ํต์ ์ด์ ์ ๋ง์ถ ๋ฐฉ๋ฒ๋ก !
โจ ์ ์์ผ ๊ฐ๋ฐ 4๊ฐ์ง ํต์ฌ ๊ฐ์น
1. ํ๋ก์ธ์ค์ ๋๊ตฌ๋ณด๋ค๋ ๊ฐ์ธ ์ํธ์์ฉ์ ๋ ๊ฐ์น๋ฅผ ๋๋ค.
2. ๋ฐฉ๋ํ ๋ฌธ์๋ณด๋ค๋ ์คํ๋๋ SW์ ๋ ๊ฐ์น๋ฅผ ๋๋ค.
3. ๊ณ์ฝ ํ์๋ณด๋ค๋ ๊ณ ๊ฐ๊ณผ ํ์ ์ ๋ ๊ฐ์น๋ฅผ ๋๋ค.
4. ๊ณํ์ ๋ฐ๋ฅด๊ธฐ ๋ณด๋ค๋ ๋ณํ์ ๋ฐ์ํ๋ ๊ฒ์ ๋ ๊ฐ์น๋ฅผ ๋๋ค.
โจ ์คํฌ๋ผ
ํ์ด ์ค์ฌ์ด ๋์ด ๊ฐ๋ฐ์ ํจ์จ์ฑ์ ๋์ธ๋ค
์ ํ ์ฑ ์์ PO
์คํฌ๋ผ ๋ง์คํฐ SM
๊ฐ๋ฐํ DT
โจ XP (eXtreme Programming)
์์๋ก ๋ฐ์ํ๋ ๊ณ ๊ฐ์ ์๊ตฌ์ฌํญ์ ์ ์ฐํ๊ฒ ๋์ํ๊ธฐ ์ํด ๊ณ ๊ฐ์ ์ฐธ์ฌ์ ๊ฐ๋ฐ ๊ณผ์ ์ ๋ฐ๋ณต์ ๊ทน๋ํํ์ฌ ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฅ์
์งง๊ณ ๋ฐ๋ณต์ ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ, ๋จ์ํ ์ค๊ณ, ๊ณ ๊ฐ์ ์ ๊ทน์ ์ธ ์ฐธ์ฌ
๋ฆด๋ฆฌ์ฆ ๊ธฐ๊ฐ์ ์งง๊ฒ ๋ฐ๋ณต
- ํต์ฌ ๊ฐ์น : ์ฉ๊ธฐCourage, ๋จ์์ฑ Simplicity, ์์ฌ์ํตCommunication, ํผ๋๋ฐฑFeedback, ์กด์ค Respect
โจ ํํ ์์คํ ํ์
1๋จ๊ณ) ์์คํ ๊ตฌ์ฑ ํ์ , ์์คํ ๊ธฐ๋ฅ ์ฐจ์ , ์์คํ ์ธํฐํ์ด์ค ํ์
2๋จ๊ณ) ์ํคํ ์ฒ ๊ตฌ์ฑ ํ์ , ์ํํธ์จ์ด ๊ตฌ์ ํ์
3๋จ๊ณ) ํ๋์จ์ด ๊ตฌ์ฑ ํ์ , ๋คํธ์ํธ ๊ตฌ์ฑ ํ์
โจ ์ด์์ฒด์ OS
์ปดํจํฐ์ ์์คํ ์ ์์๋ค์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ
์ฌ์ฉ์๊ฐ ์ปดํจํฐ๋ฅผ ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฒฝ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด
โจ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ DBMS
์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์์ ์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ ์ ๋ณด๋ฅผ ์์ฑํด ์ฃผ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์ํํธ์จ์ด
โจ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ WAS
์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ ๋ณํ๋ ๋์ ์ธ ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฏธ๋ค์จ์ด middleware
๋ฐ์ดํฐ ์ ๊ทผ, ์ธ์ ๊ด๋ฆฌ, ํธ๋์ญ์ ๊ด๋ฆฌ ๋ฑ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต
- Tomcat, GlassFish, JBoss, Jetty, JEUS, Resin, WebLogic, WebSphere ...
โจ ์๊ตฌ์ฌํญ ์ ์
- ๊ธฐ๋ฅ ์๊ตฌ์ฌํญ : ์์คํ ์ด ๋ฌด์์ ํ๋์ง, ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง
- ๋น๊ธฐ๋ฅ ์๊ตฌ์ฌํญ
โจ ์๊ตฌ์ฌํญ ๊ฐ๋ฐ ํ๋ก์ธ์ค
1. ๋์ถ : ์ธํฐ๋ทฐ, ๋ธ๋ ์ธ์คํ ๋ฐ, ์ํฌ์ต, ํ๋กํ ํ์ดํ, ์ ์ค์ผ์ด์ค
2. ๋ถ์ : DFD, DD
3. ๋ช ์ธ : ์๋จ์ ๋ช ์ธ์
4. ํ์ธ (๊ฒ์ฆ)
โจ ์๊ตฌ์ฌํญ ๋ช ์ธ ๊ธฐ๋ฒ
- ์ ํ : ์ํ์ ์๋ฆฌ ๊ธฐ๋ฐ, ๋ชจ๋ธ ๊ธฐ๋ฐ
- ๋น์ ํ : ์ํ/๊ธฐ๋ฅ/๊ฐ์ฒด ์ค์ฌ
โจ ์๊ตฌ์ฌํญ ๋ถ์์ ๊ฐ์
๊ฐ๋ฐ ๋์์ ๋ํ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ์ดํดํ๊ณ ๋ฌธ์ํ(๋ช ์ธํ)ํ๋ ํ๋
- UML(Unified Modeling Language), ์๋ฃํ๋ฆ๋(DFD), ์๋ฃ ์ฌ์ (DD), ์๋จ์ ๋ช ์ธ์(Mini-Spec.), ๊ฐ์ฒด ๊ด๊ณ๋(ERD), ์ํ ์ ์ด๋(STD), ์ ์ด ๋ช ์ธ์ ...
โจ ์๋ฃ ํ๋ฆ๋ DFD
Data Flow Diagram
์๊ตฌ์ฌํญ ๋ถ์์์ ์๋ฃ์ ํ๋ฆ ๋ฐ ๋ณํ ๊ณผ์ ๊ณผ ๊ฐ๋ฅ์ ๋ํ ์ค์ฌ์ผ๋ก ๊ธฐ์ ํ๋ ๋ฐฉ๋ฒ
= ์๋ฃ ํ๋ฆ ๊ทธ๋ํ, ๋ฒ๋ธ ์ฐจํธ
- ํ๋ก์ธ์คProcess : ์์ด๋ ๋ฅ๊ทผ ์ฌ๊ฐํ
- ์๋ฃ ํ๋ฆFlow : ํ์ดํ ์์ ์๋ฃ์ ์ด๋ฆ์ ๊ธฐ์
- ์๋ฃ ์ ์ฅ์Data Store : ๋ํ ์์ ์๋ฃ ์ ์ฅ์ ์ด๋ฆ์ ๊ธฐ์
- ๋จ๋งTerminator : ์์คํ ๊ณผ ๊ต์ ํ๋ ์ธ๋ถ ๊ฐ์ฒด, ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ๋ง๋ค์ด์ง๊ณ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์, ๋ํ ์์ ์ด๋ฆ ๊ธฐ์
โจ ์๋ฃ ์ฌ์ DD
Data Dictionary
์๋ฃ ํ๋ฆ๋์ ์๋ ์๋ฃ๋ฅผ ๋ ์์ธํ ์ ์ํ๊ณ ๊ธฐ๋ก
๋ฐ์ดํฐ๋ฅผ ์ค๋ช ํ๋ ๋ฐ์ดํฐ = ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ = ๋ฉํ ๋ฐ์ดํฐ Meta Data
- = : ์๋ฃ์ ์ ์
- + : ์๋ฃ์ ์ฐ๊ฒฐ
- ( ) : ์๋ฃ์ ์๋ต
- [ | ] : ์๋ฃ์ ์ ํ
- { } : ์๋ฃ์ ๋ฐ๋ณต
- * * : ์๋ฃ์ ์ค๋ช
โจ ์๊ตฌ์ฌํญ ๋ถ์์ ์ํ CASE (์๋ํ ๋๊ตฌ)
์๊ตฌ์ฌํญ์ ์๋์ผ๋ก ๋ถ์ํ๊ณ , ์๊ตฌ์ฌํญ ๋ถ์ ๋ช ์ธ์๋ฅผ ๊ธฐ์ ํ๋๋ก ๊ฐ๋ฐ๋ ๋๊ตฌ
- SADT, SREM, PSL/PSA, TAGS
โจ HIPO
Hierarchy Input Process Output
์์คํ ๋ถ์ ๋ฐ ์ค๊ณ๋ ๋ฌธ์ํํ ๋ ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ
- ๊ธฐํธ, ๋ํ ๋ฑ์ ์ฌ์ฉํ๋ฏ๋ก ๋ณด๊ธฐ ์ฝ๊ณ ์ดํดํ๊ธฐ๋ก ์ฝ๋ค.
- ๊ธฐ๋ฅ๊ณผ ์๋ฃ์ ์์กด ๊ด๊ณ๋ฅผ ๋์์ ํํํ ์ ์๋ค.
โจ UML
Unified Modeling Language
์์คํ ๊ฐ๋ฐ์์ ๊ณ ๊ฐ ๋๋ ๊ฐ๋ฐ์ ์ํธ๊ฐ์ ์์ฌ์ํต์ด ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ก ํ์คํํ ๋ํ์ ์ธ ๊ฐ์ฒด์งํฅ ์ธ์ด
- ์ฌ๋ฌผThings, ๊ด๊ณRelationships, ๋ค์ด์ด๊ทธ๋จDiagram
โจ ๊ด๊ณ Relationships
์ฌ๋ฌผ๊ณผ ์ฌ๋ฌผ ์ฌ์ด์ ์ฐ๊ด์ฑ์ ํํ
- ์ฐ๊ดAssociation ๊ด๊ณ : 2๊ฐ ์ด์์ ์ฌ๋ฌผ์ด ์๋ก ๊ด๋ จ๋จ
- ์งํฉAggregation ๊ด๊ณ : ํ๋์ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ํฌํจ๋จ
- ํฌํจComposition ๊ด๊ณ : ํฌํจํ๋ ์ฌ๋ฌผ์ ๋ณํ๊ฐ ํฌํจ๋๋ ์ฌ๋ฌผ์๊ฒ ์ํฅ์ ๋ฏธ์นจ
- ์ผ๋ฐํGeneralization ๊ด๊ณ : ํ๋์ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ๋นํด ๋ ์ผ๋ฐ์ ์ธ์ง ๊ตฌ์ฒด์ ์ธ์ง
- ์์กดDependency ๊ด๊ณ : ์ฌ๋ฌผ ์ฌ์ด์ ์ฐ๊ด์ ์์ผ๋ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ๋ ์งง์ ์๊ฐ๋์๋ง ์ฐ๊ด์ ์ ์งํจ
- ์ค์ฒดํRealization ๊ด๊ณ : ์ฌ๋ฌผ์ด ํ ์ ์๊ฑฐ๋ ํด์ผํ๋ ๊ธฐ๋ฅ์ผ๋ก ์๋ก๋ฅผ ๊ทธ๋ฃนํํ ์ ์๋ ๊ด๊ณ
โจ ๋ค์ด์ด๊ทธ๋จ
์ฌ๋ฌผ๊ณผ ๊ด๊ณ๋ฅผ ๋ํ์ผ๋ก ํํ
- ์ ์ ๋ชจ๋ธ๋ง : ๊ตฌ์กฐ์ ๋ค์ด์ด๊ทธ๋จ (ํด๋์ค, ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ ...)
- ๋์ ๋ชจ๋ธ๋ง : ํ์ ๋ค์ด์ด๊ทธ๋จ (์ ์ค์ผ์ด์ค, ์ํ ๋ค์ด์ด๊ทธ๋จ ...)
โจ ์คํ ๋ ์ค ํ์
UML์์ ํํํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ธ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ํํํ๊ธฐ ์ํด ์ฌ์ฉ
- ๊ธธ๋ฌ๋ฉงGuilemet์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒนํ์ด๊ดํธ(<< >>) ์ฌ์ด์ ํํํ ํํ๋ฅผ ๊ธฐ์
- ex) <<include>>, <<extend>> ...
โจ ์ ์ค์ผ์ด์คUse Case ๋ค์ด์ด๊ทธ๋จ
๊ฐ๋ฐ๋ ์์คํ ๊ณผ ๊ด๋ จ๋ ์ธ๋ถ ์์๋ค, ์ฆ ์ฌ์ฉ์์ ๋ค๋ฅธ ์ธ๋ถ ์์คํ ๋ค์ด ๊ฐ๋ฐ๋ ์์คํ ์ ์ด์ฉํด ์ํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์์ ๊ด์ View์์ ํํํ ๊ฒ
- ์์คํ , ์กํฐ, ์ ์ค์ผ์ด์ค, ๊ด๊ณ
โจ ํด๋์คClass ๋ค์ด์ด๊ทธ๋จ
๊ตฌ์ฑ ์์ : ํด๋์ค, ์ ์ฝ์กฐ๊ฑด, ๊ด๊ณ
โจ ์์ฐจSequence ๋ค์ด์ด๊ทธ๋จ
์์คํ ์ด๋ ๊ฐ์ฒด๋ค์ด ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ์ํธ ์์ฉํ๋ ๊ณผ์ ์ ์กํฐ, ๊ฐ์ฒด, ๋ฉ์ธ์ง ๋ฑ์ ์์๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆผ์ผ๋ก ํํ
๊ตฌ์ฑ ์์ : ์กํฐ, ๊ฐ์ฒด, ์๋ช ์ , ์คํ ์์, ๋ฉ์์ง
โจ ์ฌ์ฉ์ ์ธํฐํ์ด์ค UI
- CLI : Command
- GUI : Graphical
- NUI : Natural
- OUI : Organic
โจ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ธฐ๋ณธ ์์น
- ์ง๊ด์ฑ
- ์ ํจ์ฑ : ์ฌ์ฉ์์ ๋ชฉ์ ์ ์ ํํ๊ณ ์๋ฒฝํ๊ฒ ๋ฌ์ฑ
- ํ์ต์ฑ
- ์ ์ฐ์ฑ : ์๊ตฌ์ฌํญ์ ์ต๋ํ ์์ฉ, ์ค์ ์ต์ํ
โจ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ค๊ณ ์ง์นจ
- ์ฌ์ฉ์ ์ค์ฌ
- ์ฌ์ฉ์ฑ
- ์ฌ๋ฏธ์ฑ
- ์ค๋ฅ ๋ฐ์ ํด๊ฒฐ : ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ธ์งํ ์ ์๋๋ก ์ค๊ณํด์ผ ํจ
โจ UI ์ค๊ณ ๋๊ตฌ
- ์์ด์ดํ๋ ์ : ๊ธฐํ ๋จ๊ณ ์ด๊ธฐ, ๋ผ๋ ์ค๊ณ, ๊ฐ๋ฐ์๋ ๋์์ด๋ ๋ฑ์ด ๋ ์ด์ด์์ ํ์/ํ์ฌ ์งํ ์ํ ๊ณต์ (์๊ทธ๋ฆผ)
- ๋ชฉ์ : ์์ด์ดํ๋ ์๋ณด๋ค ์ข ๋ ์ค์ ํ๋ฉด๊ณผ ์ ์ฌํ๊ฒ ๋ง๋ ์ ์ ์ธ ํํ์ ๋ชจํ
- ์คํ ๋ฆฌ๋ณด๋ : ์ฝํ ์ธ ์ ๋ํ ์ค๋ช , ํ์ด์ง ๊ฐ ์ด๋ ํ๋ฆ (ํ์ํฌ์ธํธ)
- ํ๋กํ ํ์ : ์ค์ ๊ตฌํ๋ ๊ฒ ์ฒ๋ผ ํ ์คํธ ๊ฐ๋ฅํ ๋์ ์ธ ํํ
- ์ ์ค์ผ์ด์ค : ์ฌ์ฉ์ ์ธก๋ฉด์์์ ์๊ตฌ์ฌํญ
โจ ํ์ง ์๊ตฌ์ฌํญ
๊ธฐ๋ฅ์ฑ, ์ ๋ขฐ์ฑ, ์ฌ์ฉ์ฑ, ํจ์จ์ฑ, ์ ์ง ๋ณด์์ฑ, ์ด์์ฑ
โจ ์์ ์ค๊ณ์ ํ์ ์ค๊ณ
- ์์ ์ค๊ณ : ์ํคํ ์ฒ ์ค๊ณ, ์๋น ์ค๊ณ / ์์คํ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ / ๊ตฌ์กฐ, DB, ์ธํฐํ์ด์ค
- ํ์ ์ค๊ณ : ๋ชจ๋ ์ค๊ณ, ์์ธ ์ค๊ณ / ์์คํ ์ ๋ด๋ถ ๊ตฌ์กฐ ๋ฐ ํ์ / ์ปดํฌ๋ํธ, ์๋ฃ ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ
โจ ์ํํธ์จ์ด ์ํคํ ์ณ ์ค๊ณ์ ๊ธฐ๋ณธ ์๋ฆฌ
๋ชจ๋ํ, ์ถ์ํ, ๋จ๊ณ์ ๋ถํด(ํํฅ์ ์ค๊ณ ์ ๋ต, ๋ฌธ์ ๋ฅผ ์์์ ์ค์ ๊ฐ๋ ์ผ๋ก๋ถํฐ ํ์์ ๊ฐ๋ ์ผ๋ก ๊ตฌ์ฒดํ), ์ ๋ณด ์๋
โจ ํ์ดํ-ํํฐ ํจํด Pipe-Filter Pattern
๋ฐ์ดํฐ ์คํธ๋ฆผ ์ ์ฐจ์ ๊ฐ ๋จ๊ณ๋ฅผ ํํฐFilter ์ปดํฌ๋ํธ๋ก ์บก์ํํ์ฌ ํ์ดํPipe๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํจํด
- ํํฐ ์ปดํฌ๋ํธ๋ ์ฌ์ฌ์ฉ์ฑ์ด ์ข๊ณ , ์ถ๊ฐ๊ฐ ์ฌ์ ํ์ฅ์ด ์ฉ์ดํ๋ค.
- ํํฐ ํ ํฌ๋ํธ๋ค์ ์ฌ๋ฐฐ์นํ์ฌ ๋ค์ํ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
- ํ์ดํ-ํํฐ ํจํด์ ๋ฐ์ดํฐ ๋ณํ, ๋ฒํผ๋ง, ๋๊ธฐํ ๋ฑ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- ๋ํ์ ์ผ๋ก UNIX์ ์(Shell)
โจ Model-View-Controller Pattern
์๋ธ์์คํ ์ 3๊ฐ์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์กฐํํ๋ ํจํด
- ๋ชจ๋ธ : ์๋ธ์์คํ ์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ด
- ๋ทฐ : ์ฌ์ฉ์์๊ฒ ์ ๋ณด๋ฅผ ํ์
- ์ปจํธ๋กค๋ฌ : ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ๋ ๋ณ๊ฒฝ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ชจ๋ธ์๊ฒ ๋ช ๋ น์ ๋ณด๋
โจ ๊ฐ์ฒด Object
๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ๋ฌถ์ด ๋์(์บก์ํํ) ํ๋์ ์ํํธ์จ์ด ๋ชจ๋
- ๋ ๋ฆฝ์ ์ผ๋ก ์๋ณ ๊ฐ๋ฅํ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ค.
- ๊ฐ์ฒด๊ฐ ๊ฐ์ง ์ ์๋ ์กฐ๊ฑด = ์ํ State → ์ํ๋ ์๊ฐ์ ๋ฐ๋ผ ๋ณํ๋ค.
- ๊ฐ์ฒด์ ๊ฐ์ฒด๋ ์ํธ ์ฐ๊ด์ฑ์ ์ํ ๊ด๊ณ๊ฐ ํ์ฑ๋๋ค.
- ๊ฐ์ฒด๊ฐ ๋ฐ์ํ ์ ์๋ ๋ฉ์์งMessage์ ์งํฉ์ ํ์๋ผ๊ณ ํ๋ฉฐ, ๊ฐ์ฒด๋ ํ์์ ํน์ง์ ๋ํ๋ผ ์ ์๋ค.
- ์ผ์ ํ ๊ธฐ์ต ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
โจ ํด๋์ค Class
๊ณตํต๋ ์์ฑ๊ณผ ์ฐ์ฐ(ํ์)์ ๊ฐ๋ ๊ฐ์ฒด์ ์งํฉ์ผ๋ก, ๊ฐ์ฒด์ ์ผ๋ฐ์ ์ธ ํ์ Type์ ์๋ฏธ
- ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ค์ด ๊ฐ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ์ ์ํ๊ณ ์๋ ํ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํํ๋ ๋จ์
- ํด๋์ค์ ์ํ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผ๊ณ ํ๋ฉฐ, ํด๋์ค๋ก๋ถํฐ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ธ์คํด์คํ๋ผ๊ณ ํ๋ค.
โจ ์บก์ํ Encapsulation
๋ฐ์ดํฐ(์์ฑ)์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ๋ ๊ฒ์ ์๋ฏธ
- ์บก์ํ๋ ๊ฐ์ฒด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ ์ธ๋ถ ๋ด์ฉ์ด ์ํ(์ ๋ณด ์๋)๋์ด ์ธ๋ถ์์์ ์ ๊ทผ์ด ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋ชจ๋์ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ํ๊ธ ํจ๊ณผ๊ฐ ์ ๋ค.
- ์บก์ํ๋ ๊ฐ์ฒด๋ค์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ฒด๋ค ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์๋ ๊ฐ์ฒด์ ์ธ๋ถ ๋ด์ฉ์ ์ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ธํฐํ์ด์ค๊ฐ ๋จ์ํด์ง๊ณ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ค.
โจ ์์ Inheritance
์ด๋ฏธ ์ ์๋ ์์(๋ถ๋ชจ) ํด๋์ค์ ๋ชจ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์(์์) ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ
โจ ๋คํ์ฑ Polymorphism
๋ฉ์์ง์ ์ํด ๊ฐ์ฒด(ํด๋์ค)๊ฐ ์ฐ์ฐ์ ์ํํ๊ฒ ๋ ๋ ํ๋์ ๋ฉ์์ง์ ๋ํด ๊ฐ๊ฐ์ ๊ฐ์ฒด(ํด๋์ค)๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ํ ๋ฐฉ๋ฒ(ํน์ฑ)์ผ๋ก ์๋ตํ ์ ์๋ ๋ฅ๋ ฅ์ ์๋ฏธ
- ๊ฐ์ฒด(ํด๋์ค)๋ค์ ๋์ผํ ๋ฉ์๋๋ช ์ ์ฌ์ฉํ๋ฉฐ ๊ฐ์ ์๋ฏธ์ ์๋ต์ ํ๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ ์์์ ํ๋์ ํจ์๋ ์ฐ์ฐ์๊ฐ ๋ ๊ฐ ์ด์์ ์๋ก ๋ค๋ฅธ ํด๋์ค์ ์ธ์คํด์ค๋ค์ ๊ฐ์ ํด๋์ค์ ์ํ ์ธ์คํด์ค์ฒ๋ผ ์ํํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
* ์ค๋ฒ๋ก๋ฉ Overloading : ๋ฉ์๋Method์ ์ด๋ฆ์ ๊ฐ์ง๋ง ์ธ์๋ฅผ ๋ฐ๋ ์๋ฃํ๊ณผ ๊ฐ์๋ฅผ ๋ฌ๋ฆฌํ์ฌ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ ์ํ ์ ์๋ค.
* ์ค๋ฒ๋ผ์ด๋ฉ Overriding (๋ฉ์๋ ์ฌ์ ์) : ์์ ํด๋์ค์์ ์ ์ํ ๋ฉ์๋์ ์ด๋ฆ์ ๊ฐ์ง๋ง ๋ฉ์๋ ์์ ์คํ ์ฝ๋๋ฅผ ๋ฌ๋ฆฌํ์ฌ ์์ ํด๋์ค์์ ์ฌ์ ์ํด์ ์ฌ์ฉํ ์ ์๋ค.
โจ ์ฐ๊ด์ฑ Relationship
- is member of : ์ฐ๊ดํ
- is instance of : ๋ถ๋ฅํ
- is part of : ์ง๋จํ
- is a : ์ผ๋ฐํ(๊ณตํต์ ์ธ ์ฑ์ง๋ค๋ก ์ถ์ํํ ์์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑ), ํน์ํ/์์ธํ(์์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฒดํํ์ฌ ํ์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑ)
โจ ๊ฐ์ฒด์งํฅ ๋ถ์์ ๋ฐฉ๋ฒ๋ก
- ๋ผ๋ฐ์ฐ Rumbaugh : ๊ฐ์ฅ ์ผ๋ฐ์ , ๋ถ์ ํ๋์ ๊ฐ์ฒด ๋ชจ๋ธ/๋์ ๋ชจ๋ธ/๊ธฐ๋ฅ ๋ชจ๋ธ๋ก ๋๋์ด ์ํํ๋ ๋ฐฉ๋ฒ
- ๋ถ์น Booch : ๋ฏธ์์ Micro ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๊ฑฐ์์ Macro ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ ๋ถ์ ๋ฐฉ๋ฒ, ํด๋์ค์ ๊ฐ์ฒด๋ค์ ๋ถ์ ๋ฐ ์๋ณํ๊ณ ํด๋์ค์ ์์ฑ๊ณผ ์ฐ์ฐ์ ์ ์
- Jacobson : Use Case ๊ฐ์คํ์ฌ ์ฌ์ฉ
- Coad์ Yourdon : E-R ๋ค์ด์ด๊ทธ๋จ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ํ์๋ฅผ ๋ชจ๋ธ๋ง
- Wirfs-Brock : ๋ถ์๊ณผ ์ค๊ณ ๊ฐ์ ๊ตฌ๋ถ ์๊ณ , ๊ณ ๊ฐ ๋ช ์ธ์๋ฅผ ํ๊ฐํด์ ์ค๊ณ ์์ ๊น์ง ์ฐ์์ ์ผ๋ก ์ํ
โจ ๋ผ๋ฐ์ฐ Rumbaugh ๋ถ์ ๊ธฐ๋ฒ
๋ชจ๋ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๋ฅผ ๊ทธ๋ํฝ ํ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ๋ชจ๋ธ๋งํ๋ ๊ธฐ๋ฒ = ๊ฐ์ฒด ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ OMT
(1) ๊ฐ์ฒด ๋ชจ๋ธ๋ง = ์ ๋ณด ๋ชจ๋ธ๋ง : ์์คํ ์์ ์๊ตฌ๋๋ ๊ฐ์ฒด๋ฅผ ์ฐพ์๋ด์ด ์์ฑ๊ณผ ์ฐ์ฐ ์๋ณ ๋ฐ ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ท์ ํ์ฌ ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํ์ํ๋ ๊ฒ
(2) ๋์ ๋ชจ๋ธ๋ง : ์ํ ๋ค์ด์ด๊ทธ๋จ์ ์ด์ฉํ์ฌ ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ฅธ ๊ฐ์ฒด๋ค ๊ฐ์ ์ ์ด ํ๋ฆ, ์ํธ ์์ฉ, ๋์ ์์ ๋ฑ์ ๋์ ์ธ ํ์๋ฅผ ํํ
(3) ๊ธฐ๋ฅ ๋ชจ๋ธ๋ง : ์๋ฃ ํ๋ฆ๋ DFD๋ฅผ ์ด์ฉํ์ฌ ๋ค์์ ํ๋ก์ธ์ค๋ค ๊ฐ์ ์๋ฃ ํ๋ฆ์ ์ค์ฌ์ผ๋ก ์ฒ๋ฆฌ ๊ณผ์ ์ ํํ
โจ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น SOLID
- S ๋จ์ผ ์ฑ ์ ์์น : ๊ฐ์ฒด๋ ๋จ ํ๋์ ์ฑ ์๋ง!
- O ๊ฐ๋ฐฉ-ํ์ ์์น : ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ
- L ๋ฆฌ์ค์ฝํ ์นํ ์์น : ์์ ํด๋์ค๋ ์ต์ํ ์์ ์ ๋ถ๋ชจ ํด๋์ค์์ ๊ฐ๋ฅํ ํ์๋ ์ํํ ์ ์์ด์ผ ํ๋ค!
- I ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น : ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ๊ฑฐ๋ ์ํฅ์ ๋ฐ์ง ์์์ผ ํ๋ค!
- D ์์กด ์ญ์ ์์น : ๊ฐ ๊ฐ์ฒด๋ค๊ฐ์ ์์กด ๊ด๊ณ๊ฐ ์ฑ๋ฆฝ๋ ๋, ์ถ์์ฑ์ด ๋ฎ์ ํด๋์ค๋ณด๋ค ์ถ์์ฑ์ด ๋์ ํด๋์ค์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ด์ผ ํ๋ค!
โจ ๊ฒฐํฉ๋ Coupling
๋ชจ๋ ๊ฐ์ ์ํธ ์์กดํ๋ ์ ๋
๋ ๋ชจ๋ ์ฌ์ด์ ์ฐ๊ด ๊ด๊ณ
- ๊ฒฐํฉ๋๊ฐ ์ฝํ ์๋ก ํ์ง์ด ๋๊ณ , ๊ฐํ ์๋ก ํ์ง์ด ๋ฎ๋ค.
- ๊ฒฐํฉ๋์ ์ข ๋ฅ
(์ฝํจ, ์ข์) ์๋ฃ ๊ฒฐํฉ๋ : ๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ์๋ฃ ์์๋ก๋ง ๊ตฌ์ฑ ๋ ๋
↓
์คํฌํ(๊ฒ์ธ) ๊ฒฐํฉ๋ : ๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๋ก ๋ฐฐ์ด์ด๋ ๋ ์ฝ๋ ๋ฑ์ ์๋ฃ ๊ตฌ์กฐ๊ฐ ์ ๋ฌ๋ ๋
↓
์ ์ด ๊ฒฐํฉ๋ : ์ด๋ค ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋ ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ํ๋ฆ์ ์ ์ดํ๊ธฐ ์ํด ์ ์ด ์ ํธ๋ฅผ ์ด์ฉํ์ฌ ํต์ ํ๊ฑฐ๋ ์ ์ด ์์๋ฅผ ์ ๋ฌ
↓
์ธ๋ถ ๊ฒฐํฉ๋ : ์ด๋ค ๋ชจ๋์์ ์ ์ธํ ๋ฐ์ดํฐ(๋ณ์)๋ฅผ ์ธ๋ถ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ฐธ์กฐํ ๋
↓
๊ณตํต ๊ฒฐํฉ๋ : ๊ณต์ ๋๋ ๊ณตํต ๋ฐ์ดํฐ·์์ญ์ ์ฌ๋ฌ ๋ชจ๋์ด ์ฌ์ฉํ ๋
↓
(๊ฐํจ, ๋์จ) ๋ด์ฉ ๊ฒฐํฉ๋ : ํ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ๋ด๋ถ ๊ธฐ๋ฅ ๋ฐ ๊ทธ ๋ด๋ถ ์๋ฃ๋ฅผ ์ง์ ์ฐธ์กฐํ๊ฑฐ๋ ์์ ํ ๋
โจ ์์ง๋ Cohesion
์ ๋ณด ์๋ ๊ฐ๋ ์ ํ์ฅํ ๊ฒ
๋ช ๋ น์ด๋ ํธ์ถ๋ฌธ ๋ฑ ๋ชจ๋์ ๋ด๋ถ ์์๋ค์ ์๋ก ๊ด๋ จ๋์ด ์๋ ์ ๋
๋ชจ๋์ด ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ์ ์๋์ด ์๋ ์ ๋
- ์์ง๋๊ฐ ๊ฐํ ์๋ก ํ์ง์ด ์ข๊ณ , ์ฝํ ์๋ก ํ์ง์ด ๋ฎ๋ค.
- ์์ง๋์ ์ข ๋ฅ
(๊ฐํจ, ์ข์) ๊ธฐ๋ฅ์ ์์ง๋ : ๋ชจ๋ ๋ด๋ถ์ ๋ชจ๋ ๊ธฐ๋ฅ ์์๋ค์ด ๋จ์ผ ๋ฌธ์ ์ ์ฐ๊ด๋์ด ์ํ๋ ๊ฒฝ์ฐ
↓
์์ฐจ์ ์์ง๋ : ๋ชจ๋ ๋ด ํ๋์ ํ๋์ผ๋ก๋ถํฐ ๋์จ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ทธ ๋ค์ ํ๋์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ
↓
๊ตํ(ํต์ )์ ์์ง๋ : ๋์ผํ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ตฌ์ฑ ์์๋ค์ด ๋ชจ์์ ๊ฒฝ์ฐ
↓
์ ์ฐจ์ ์์ง๋ : ๋ชจ๋์ด ๋ค์์ ๊ด๋ จ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ ๋ชจ๋ ์์ ๊ตฌ์ฑ ์์๋ค์ด ๊ทธ ๊ธฐ๋ฅ์ ์์ฐจ์ ์ผ๋ก ์ํํ ๊ฒฝ์ฐ
↓
์๊ฐ์ ์์ง๋ : ํน์ ์๊ฐ์ ์ฒ๋ฆฌ๋๋ ๋ช ๊ฐ์ ๊ธฐ๋ฅ์ ๋ชจ์ ํ๋์ ๋ชจ๋๋ก ์์ฑํ ๊ฒฝ์ฐ
↓
๋ ผ๋ฆฌ์ ์์ง๋ : ์ ์ฌํ ์ฑ๊ฒฉ์ ๊ฐ๊ฑฐ๋ ํน์ ํํ๋ก ๋ถ๋ฅ๋๋ ์ฒ๋ฆฌ ์์๋ค๋ก ํ๋์ ๋ชจ๋์ด ํ์ฑ๋๋ ๊ฒฝ์ฐ
↓
(์ฝํจ, ๋์จ) ์ฐ์ฐ์ ์์ง๋ : ๋ชจ๋ ๋ด๋ถ์ ๊ฐ ๊ตฌ์ฑ ์์๋ค์ด ์๋ก ๊ด๋ จ ์๋ ์์๋ก๋ง ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ
โจ ํฌ์ธ Fan-In / ํฌ์์ Fan-Out
- ํฌ์ธ : ์ด๋ค ๋ชจ๋์ ์ ์ด(ํธ์ถ)ํ๋ ๋ชจ๋์ ์
- ํฌ์์ : ์ด๋ค ๋ชจ๋์ ์ํด ์ ์ด(ํธ์ถ)๋๋ ๋ชจ๋์ ์
→ ํฌ์ธ : A๋ 0 / B,C,D,E,G๋ 1 / F,H,I๋ 2
→ ํฌ์์ : H,I๋ 0 / C,E,F,G๋ 1 / B,D๋ 2 / A๋ 3
โจ N-S ์ฐจํธ
Nassi-Schneiderman Chart
๋ ผ๋ฆฌ์ ๊ธฐ์ ์ ์ค์ ์ ๋ ๋ํ์ ์ด์ฉํ ํํ ๋ฐฉ๋ฒ
= ๋ฐ์ค ๋ค์ด์ด๊ทธ๋จ = Chapin Chart
โจ ๊ณตํต ๋ชจ๋
์ฌ๋ฌ ํ๋ก๊ทธ๋จ์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ชจ๋
๊ณตํต ๋ชจ๋์ ๊ตฌํํ ๋๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ํด๋น ๊ธฐ๋ฅ์ ๋ช ํํ ์ดํดํ ์ ์๋๋ก 5๊ฐ์ง ๋ช ์ธ ๊ธฐ๋ฒ์ ์ค์ํด์ผ ํ๋ค.
(1) ์ ํ์ฑ
(2) ๋ช ํ์ฑ
(3) ์์ ์ฑ
(4) ์ผ๊ด์ฑ
(5) ์ถ์ ์ฑ : ๊ธฐ๋ฅ์ ๋ํ ์๊ตฌ์ฌํญ์ ์ถ์ฒ, ๊ด๋ จ ์์คํ ๋ฑ์ ๊ด๊ณ๋ฅผ ํ์ ํ ์ ์๋๋ก ์์ฑ
โจ ํจ๊ณผ์ ์ธ ๋ชจ๋ ์ค๊ณ ๋ฐฉ์
- ๊ฒฐํฉ๋๋ ์ค์ด๊ณ ์์ง๋๋ ๋์ฌ์ ๋ชจ๋์ ๋ ๋ฆฝ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ธ๋ค.
- ๋ชจ๋์ ์ ์ด ์์ญ ์์์ ๊ทธ ๋ชจ๋์ ์ํฅ ์์ญ์ ์ ์ง
- ๋ณต์ก๋์ ์ค๋ณต์ฑ์ ์ค์ด๊ณ ์ผ๊ด์ฑ์ ์ ์ง
- ๋ชจ๋ ํฌ๊ธฐ๋ ์์คํ ์ ์ ๋ฐ์ ์ธ ๊ธฐ๋ฅ๊ณผ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ธฐ ์ฌ์ด ํฌ๊ธฐ๋ก ๋ถํด
- ํจ๊ณผ์ ์ธ ์ ์ด๋ฅผ ์ํด ๋ชจ๋ ๊ฐ์ ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ์๋ฃ๊ฐ ์ ์๋์ด์ผ ํ๋ค.
โจ ๋์์ธ ํจํด Design Pattern
๊ฐ ๋ชจ๋์ ์ธ๋ถํ๋ ์ญํ ์ด๋ ๋ชจ๋๋ค ๊ฐ์ ์ธํฐํ์ด์ค์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ค์ ์ธ๋ถ์ ์ธ ๊ตฌํ ๋ฐฉ์์ ์ค๊ณํ ๋ ์ฐธ์กฐํ ์ ์๋ ์ ํ์ ์ธ ํด๊ฒฐ ๋ฐฉ์ ๋๋ ์์
- ๋ฌธ์ ๋ฐ ๋ฐฐ๊ฒฝ, ์ค์ ์ ์ฉ๋ ์ฌ๋ก, ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ํ ์ฝ๋ ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ๊ฐ๋ฐ ๊ณผ์ ์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์๋ก ํด๊ฒฐ์ฑ ์ ๊ตฌ์ํ๋ ๊ฒ๋ณด๋ค ๋ฌธ์ ์ ํด๋นํ๋ ๋์์ธ ํจํด์ ์ฐธ๊ณ ํ์ฌ ์ ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ !
- GoF์ ๋์์ธ ํจํด์ ์ ํ์ ๋ฐ๋ผ ์์ฑ ํจํด 5๊ฐ, ๊ตฌ์กฐ ํจํด 7๊ฐ, ํ์ ํจํด 11๊ฐ ์ด 23๊ฐ์ ํจํด์ผ๋ก ๊ตฌ์ฑ
- ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ค๊ณ์ ๊ตฌํ์ ๋ค๋ฃจ๋ฏ๋ก ๋ค๋ฅธ ๊ธฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ ์ ํฉํ์ง ์๋ค.
โจ ์์ฑ ํจํด Creational Pattern
๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ด๋ จ๋ ํจํด, ์ด 5๊ฐ
๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฐธ์กฐ ๊ณผ์ ์ ์บก์ํ ํ์ฌ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋์ด๋ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ์ ์ํฅ์ ํฌ๊ฒ ๋ฐ์ง ์๋๋ก ํ์ฌ ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋ํด์ค๋ค.
- ์ถ์ ํฉํ ๋ฆฌ : ๊ตฌ์ฒด์ ์ธ ํด๋์ค์ ์์กดํ์ง ์๊ณ , ์ธํฐํ์ด์ค๋ฅผ ํตํด ์๋ก ์ฐ๊ด·์์กดํ๋ ๊ฐ์ฒด๋ค์ ๊ทธ๋ฃน์ผ๋ก ์์ฑํ์ฌ ์ถ์์ ์ผ๋ก ํํ, ์ฐ๊ด๋ ์๋ธ ํด๋์ค๋ฅผ ๋ฌถ์ด ํ ๋ฒ์ ๊ต์ฒดํ๋ ๊ฒ์ด ๊ฐ๋ฅ
- ๋น๋ : ์๊ฒ ๋ถ๋ฆฌ๋ ์ธ์คํด์ค๋ฅผ ๊ฑด์ถ ํ๋ฏ์ด ์กฐํฉํ๋ ค ๊ฐ์ฒด๋ฅผ ์์ฑ, ๊ฐ์ฒด๋ฅผ ์์ฑ ๊ณผ์ ๊ณผ ํํ ๋ฐฉ๋ฒ์ ๋ถ๋ฆฌํ๊ณ ์์ด, ๋์ผํ ๊ฐ์ฒด ์์ฑ์์๋ ์๋ก ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์์
- ํฉํ ๋ฆฌ ๋ฉ์๋ : ๊ฐ์ฒด ์์ฑ์ ์๋ธ ํด๋์ค์์ ์ปค๋ฆฌํ๋๋ก ๋ถ๋ฆฌํ์ฌ ์บก์ํํ ํจํด, ์์ ํด๋์ค์์ ์ธํฐํ์ด์ค๋ง ์ ์ํ๊ณ ์ค์ ์์ฑ์ ์๋ธ ํด๋์ค๊ฐ ๋ด๋นํจ, ๊ฐ์ ์์ฑ์ ํจํด์ด๋ผ๊ณ ๋ ํจ
- ํ๋กํ ํ์ : ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด, ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉฐ, ๋น์ฃต์ด ํฐ ๊ฒฝ์ฐ ์ฃผ๋ก ์ด์ฉ
- ์ฑ๊ธํค : ํ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ด๋์๋ ์ฐธ์กฐํ ์ ์์ง๋ง, ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฐธ์กฐํ ์๋ ์์, ํด๋์ค ๋ด์์ ์ธ์คํด์ค๊ฐ ํ๋๋ฟ์์ ๋ณด์ฅํ๋ฉฐ, ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ต์ํ ํ ์ ์์
โจ ๊ตฌ์กฐ ํจํด Structual Pattern
ํด๋์ค๋ ๊ฐ์ฒด๋ค์ ์กฐํฉํ์ฌ ๋ ํฐ ๊ตฌ์กฐ๋ก ๋ง๋ค ์ ์๊ฒ ํด์ฃผ๋ ํจํด, ์ด 7๊ฐ
๊ตฌ์กฐ๊ฐ ๋ณต์กํ ์์คํ ์ ๊ฐ๋ฐํ๊ธฐ ์ฝ๊ฒ ๋์์ค๋ค
- ์ด๋ํฐ : ๊ธฐ์กด์ ํด๋์ค๋ฅผ ์ด์ฉํ๊ณ ์ถ์ง๋ง ์ธํฐํ์ด์ค๊ฐ ์ผ์นํ์ง ์์ ๋
- ๋ธ๋ฆฌ์ง : ๊ตฌํ๋ถ์์ ์ถ์์ธต์ ๋ถ๋ฆฌํ์ฌ, ์๋ก๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅํ ์ ์๋๋ก ๊ตฌ์ฑํ ํจํด, ๊ธฐ๋ฅ๊ณผ ๊ตฌํ์ ๋๊ฐ์ ๋ณ๋ ํด๋์ค๋ก ๊ตฌํ
- ์ปดํฌ์งํธ : ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ๋ณตํฉ ๊ฐ์ฒด์ ๋จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ์์ด ๋ค๋ฃจ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ํจํด
- ๋ฐ์ฝ๋ ์ดํฐ : ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ์ ํตํด ๋ฅ๋์ ์ผ๋ก ๊ธฐ๋ฅ๋ค์ ํ์ฅํ ์ ์๋ ํจํด
- ํผ์ธ๋ Facade : ๋ณต์กํ ์๋ธ ํด๋์ค๋ค์ ํผํด ๋ ์ฌ์ฐ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํจ์ผ๋ก์จ ์๋ธ ํด๋์ค๋ค์ ๊ธฐ๋ฅ์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ํจํด, ์๋ธ ํด๋์ค๋ค ์ฌ์ด์ ํตํฉ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ Wrapper ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
- ํ๋ผ์ด์จ์ดํธ : ์ธ์คํด์ค๊ฐ ํ์ํ ๋๋ง๋ค ๋งค๋ฒ ์์ฑํ๋ ๊ฒ์ด ์๋๊ณ ๊ฐ๋ฅํ ํ ๊ณต์ ํด์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ ํจํด
- ํ๋ก์ Proxy : ์ ๊ทผ์ด ์ด๋ ค์ด ๊ฐ์ฒด์ ์ฌ๊ธฐ์ ์ฐ๊ฒฐํ๋ ค๋ ๊ฐ์ฒด ์ฌ์ด์์ ์ธํฐํ์ด์ค ์ญํ ์ ์ํํ๋ ํจํด
โจ ํ์ ํจํด Behavioral Pattern
ํด๋์ค๋ ๊ฐ์ฒด๋ค์ด ์๋ก ์ํธ์์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ ์ฑ ์ ๋ถ๋ฐฐ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ํจํด, ์ด 11๊ฐ
ํ๋์ ๊ฐ์ฒด๋ก ์ํํ ์ ์๋ ์์ ์ ์ฌ๋ฌ ๊ฐ์ฒด๋ก ๋ถ๋ฐฐํ๋ฉด์ ๊ฒฐํฉ๋๋ฅผ ์ต์ํ ํ ์ ์๋๋ก ๋์์ค๋ค.
- ์ฑ ์ ์ฐ์
- ์ปค๋งจ๋ : ์์ฒญ์ ๊ฐ์ฒด์ ํํ๋ก ์บก์ํํ์ฌ ์ฌ์ด์ฉํ๊ฑฐ๋ ์ต์ํ ์ ์๋๋ก ์์ฒญ์ ํ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ก๊ทธ์ ๋จ๊ธฐ๋ ํจํด
- ์ธํฐํ๋ฆฌํฐ : ์ธ์ด์ ๋ฌธ๋ฒ ํํ์ ์ ์ํ๋ ํจํด, SQL์ด๋ ํต์ ํ๋กํ ์ฝ๊ณผ ๊ฐ์ ๊ฒ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ
- ๋ฐ๋ณต์ : ์๋ฃ ๊ตฌ์กฐ์ ๊ฐ์ด ์ ๊ทผ์ด ์ฆ์ ๊ฐ์ฒด์ ๋ํด ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ํจํด
- ์ค์ฌ์ : ์๋ง์ ๊ฐ์ฒด๋ค ๊ฐ์ ๋ณต์กํ ์ํธ์์ฉ์ ๋งต์๋กํํ์ฌ ๊ฐ์ฒด๋ก ์ ์ํ๋ ํจํด
- ๋ฉ๋ฉํ : Ctrl+Z ๊ฐ์ ๋๋๋ฆฌ๊ธฐ ๊ธฐ๋ฅ
- ์ต์๋ฒ : ํ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณํํ๋ฉด ๊ฐ์ฒด์ ์์๋์ด ์๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์๊ฒ ๋ณํ๋ ์ํ๋ฅผ ์ ๋ฌํ๋ ํจํด
- ์ํ : ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ๋์ผํ ๋์์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํ ๋ ์ฌ์ฉ
- ์ ๋ต : ๋์ผํ ๊ณ์ด์ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๊ฐ๋ณ์ ์ผ๋ก ์บก์ํํ์ฌ ์ํธ ๊ตํํ ์ ์๊ฒ ์ ์ํ๋ ํจํด
- ํ ํ๋ฆฟ ๋ฉ์๋ : ์์ ํด๋์ค์์ ๊ณจ๊ฒฉ์ ์ ์ํ๊ณ , ํ์ ํด๋์ค์์ ์ธ๋ถ ์ฒ๋ฆฌ๋ฅผ ๊ตฌ์ฒดํํ๋ ๊ตฌ์กฐ์ ํจํด
- ๋ฐฉ๋ฌธ์ : ๊ฐ ํด๋์ค๋ค์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๋์ ํด๋์ค๋ก ๊ตฌ์ฑํ๋ ํจํด, ๋ถ๋ฆฌ๋ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๊ฐ ํด๋์ค๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ํํ๋ค.
โจ ์๊ตฌ์ฌํญ ๊ฒ์ฆ ๋ฐฉ๋ฒ
- ์๊ตฌ์ฌํญ ๊ฒํ : ์๊ตฌ์ฌํญ ๋ช ์ธ์์ ์ค๋ฅ ํ์ธ ๋ฐ ํ์ค ์ค์ ์ฌ๋ถ ๋ฑ์ ๊ฒฐํจ ์ฌ๋ถ๋ฅผ ์ปดํ ๋ด๋น์๋ค์ด ์์์ ์ผ๋ก ๋ถ์
(1) ๋๋ฃ๊ฒํ : ๋ช ์ธ์ ์์ฑ์๊ฐ ๋ช ์ธ์ ๋ด์ฉ์ ์ง์ ์ค๋ช ํ๊ณ ๋๋ฃ๋ค์ด ์ด๋ฅผ ๋ค์ผ๋ฉด์ ๊ฒฐํจ์ ๋ฐ๊ฒฌ
(2) ์ํฌ์ค๋ฃจ : ๊ฒํ ํ์ ์ ์ ๋ช ์ธ์๋ฅผ ๋ฏธ๋ฆฌ ๋ฐฐํฌํ์ฌ ์ฌ์ ๊ฒํ ํ ํ, ์งง์ ๊ฒํ ํ์๋ฅผ ํตํด ๊ฒฐํจ์ ๋ฐ๊ฒฌ
(3) ์ธ์คํ์ : ๋ช ์ธ์ ์์ฑ์๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๊ฒํ ์ ๋ฌธ๊ฐ๋ค์ด ์๊ตฌ์ฌํญ ๋ช ์ธ์๋ฅผ ํ์ธํ๋ฉด์ ๊ฒฐํจ์ ๋ฐ๊ฒฌ
- ํ๋กํ ํ์ดํ : ์ค์ ๊ฐ๋ฐ๋ ์ํํธ์จ์ด์ ๋ํ ๊ฒฌ๋ณธํ(Prototype)์ ๋ง๋ค์ด ์ต์ข ๊ฒฐ๊ณผ๋ฌผ ์์ธก
- ํ ์คํธ ์ค๊ณ : ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ์ฌ ์ดํ์ ์๊ตฌ์ฌํญ์ด ํ์ค์ ์ผ๋ก ํ ์คํธ ๊ฐ๋ฅํ์ง ๊ฒํ
- CASE ๋๊ตฌ ํ์ฉ : ์ผ๊ด์ฑ ๋ถ์์ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ ๋ฐ ๋ถ์, ๊ด๋ฆฌํ๊ณ , ํ์ค ์ค์ ์ฌ๋ถ ํ์ธ
โจ ๋ฏธ๋ค์จ์ด Middleware
Middle + Software
์ด์์ฒด์ ์ ์์ฉ ํ๋ก๊ทธ๋จ, ๋๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์์ ๋ค์ํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์ํํธ์จ์ด
- DB : DB๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ ๋ณดํต 2-Tier ์ํคํ ์ฒ๋ผ๊ณ ํจ
- RPC : Remote Procedure Call ์๊ฒฉ ํ๋ก์์ ํธ์ถ
- MOM : ๋ฉ์ธ์ง ์งํฅ ๋ฏธ๋ค์จ์ด, ์จ๋ผ์ธ ์ ๋ฌด๋ณด๋ค๋ ์ด๊ธฐ์ข ๋ถ์ฐ ๋ฐ์ดํฐ ์์คํ ์ ๋ฐ์ดํฐ ๋๊ธฐ๋ฅผ ์ํด ๋ง์ด ์ฌ์ฉ
- TP-Monitor : ํธ๋์ญ์ ์ฒ๋ฆฌ ๋ชจ๋ํฐ, ์ฌ์ฉ์ ์๊ฐ ์ฆ๊ฐํด๋ ๋น ๋ฅธ ์๋ต ์๋๋ฅผ ์ ์งํด์ผํ๋ ์ ๋ฌด์ ์ฃผ๋ก ์ฌ์ฉ (ํญ๊ณต๊ธฐ๋ ์ฒ ๋ ์์ฝ ์ ๋ฌด)
- ORB : ๊ฐ์ฒด ์์ฒญ ๋ธ๋ก์ปค, ๊ฐน์ฒด ์งํฅ ๋ฏธ๋ค์จ์ด๋ก ์ฝ๋ฐ(CORBA) ํ์ค ์คํ์ ๊ตฌํํ ๋ฏธ๋ค์จ์ด
- WAS : ์ฌ์ฉ์์ ์๊ตฌ์ ๋ฐ๋ผ ๋ณํ๋ ๋์ ์ธ ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ, ํด๋ผ์ด์ธํธ/์๋ฒ ํ๊ฒฝ๋ณด๋ค๋ ์น ํ๊ฒฝ์ ๊ตฌํํ๊ธฐ ์ํ ๋ฏธ๋ค์จ์ด