Agile์ ์ฃผ์์
- ๋ณํ์ ๋ํ ๋ฅ๋์ ๋์ฒ : dependency์ ์ต์ํ
Application์ ์ฃผ์ ๋ฌธ์
| ๊ฒฝ์ง์ฑ(rigidity) | โช ํ๊ธ ํจ๊ณผ๋ก ์ธํ ๋ณ๊ฒฝ์ ๋ํด์ฑ. |
|---|---|
| ์ทจ์ฝ์ฑ(Fragility) | โช ๋ณ๊ฒฝ ํ๋๊ฐ ์ฌ๋ฌ ๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒฝํฅ. โช ๊ฐ๋ฐ์๊ฐ ์ฌ์ค๊ณ์ ํ์์ฑ์ ๋๋ผ๋ ๊ฒฝํฅ, ๊ณ ์น ์๋ก ์ ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๋ชจ๋ |
| ๋ถ๋์ฑ(immobility) | โช ํ ์์คํ ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง ๋ถ๋ฆฌ์ ์๊ณ ์ ์ํ์ฑ์ด ํฐ ๊ฒฝํฅ |
| ์ ์ฑ(viscosity) | โช ์ํํธ์จ์ด์ ์ ์ฑ : ๋ณ๊ฒฝ์ ๋ํด ์ค๊ณ ์์น์ ๋ฐํ๊ธฐ ์ฌ์ด ๊ฒฝํฅ โช ํ๊ฒฝ์ ์ ์ฑ : ๊ฐ๋ฐ ํ๊ฒฝ์ด ๋๋ฆฌ๊ณ ๋นํจ์จ์ ์ธ ๊ฒฝํฅ(ex. ์ฌ์ปดํ์ผ์ ๋๋ฆฐ ์๋) โช ์ด๋ค ๋ ์ ์ฑ ๋ชจ๋ ์ค๊ณ ์ ์ง์ ๋ฐํ๋๋ก ๊ฐ๋ฐ์๋ฅผ ์ด๋. |
| ๋ถํ์ํ ๋ณต์ก(needless complexity) | โช ์ค๊ณ๊ฐ ํ์ฌ ์์ ์์ ์ ์ฉํ์ง ์์ ์์๋ฅผ ํฌํจํ๋ ์ํ. โช ๋ณ๊ฒฝ์ ๋ํ ์ฌ์ ๊ณ ๋ ค๋ก ๋ง๋ค์ด์ง ์์๋ ์ข ์ข ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ณต์ก๋๋ง ์ ๋ฐ |
| ๋ถํ์ํ ๋ฐ๋ณต(needless repetition) | โช ์ค๋ณต ์ฝ๋ |
| ๋ถํฌ๋ช ์ฑ(opacity) | โช ๋ชจ๋์ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์ํ |
์๊ธฐ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฃผ์์์น (SOLID)
| SRP : The Single-Responsibility Principle | โช Cohesion(์์ง๋) ์ฆ๋ ์์น โช ํด๋์ค๋ ๋จ์ผ ์ฑ ์ ๋ง์ด ๋ฐ๋ฅด๋๋ก(๋จ ํ๊ฐ์ง์ ๋ณ๊ฒฝ ์ด์ ๋ง์ ๊ฐ์ง๋๋ก) |
|---|---|
| OCP : The Open Closed Principle | โช S/W ๊ฐ์ฒด(class, module, function ๋ฑ)๋ ํ์ฅ์ ์ด๋ ค์๊ณ , ์์ ์๋ ๋ซํ์์ด์ผ. โช ์ถ์ํ๋ฅผ ํตํ ๋ณ๊ฒฝ ์ฌํญ ๊ฒฉ๋ฆฌ, ๋คํ์ฑ์ ์ด์ฉํ ํ์ฅ์ ์ง์ |
| LSP : The Liskov Substitution Principle | โช ์์ ์ ๋ถ๋ชจ์ ์์์ ๊ด๊ณ๊ฐ ๋ฐ๋์ IS-A ๊ด๊ณ๋ฅผ ์ ์งํ๋๋ก โช Subtype์ base type์ ๋ํด ์นํ ๊ฐ๋ฅํ์ฌ์ผ. โช Base class์ ์ฌ์ฉ ์กฐ๊ฑด์ sub class์์ ๋ชจ๋ ๋ฐ๋ฅผ ์ ์๋๋ก |
| ISP : The Interface Segregation Principle | โช ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ์์ ์ด ์ฌ์ฉํ์ง ์๋ method์ ์์กดํ๋๋ก ๊ฐ์ ๋์ด์๋ ์๋๋จ โช ์ ์ฌํญ์ ์ํด ๋ค์์ interface๋ก ๋ถ๋ฆฌ ๋ฐ ํด๋น interface์ ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ์์กดํ๋๋ก ํจ. ์ด๋ก์ ์๋ก ๋ค๋ฅธ ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ์๋ก์ ๋ํด ๋ ๋ฆฝ์ ์ด ๋๋๋ก ํจ. |
| DIP : The Dependency Inversion Principle | โช ์์ ์์ค์ ๋ชจ๋์ด ํ์ ์์ค์ ๋ชจ๋์ ์์กดํ์ง ๋ง๋๋ก โช ์ด๋ค ๋ ๋ชจ๋ ๋ชจ๋ ์ถ์ํ์ ์์กดํ๋๋ก โช ์ฐธ๊ณ : inversion์ด๋ ์ดํ๋ ๊ตฌ์กฐ์ ๋ถ์ ์ค๊ณ ๋ฑ์ ์ ํต์ ๋ฐฉ๋ฒ์์ ์ ์ฑ ์ด ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ๋ ๊ฒฝํฅ์ด ์์ด, ์ด๋ค ์์กด ๊ด๊ณ๋ฅผ ์ญ์ (inversion) ์ํจ๋ค๋ ๋ป |
Conclusion
- ๋ณํ์ ๋ฅ๋์ ์ผ๋ก ๋์ฒํ๋ application design์ ํต์ฌ ์์น์ ์ ์
- Agile ํ์ ์ด์ ๋ถํฐ, OOD ๊ธฐ๋ฐ์ ๋ค์ํ practice๋ฅผ ํตํด ์์ฑ, ์ถ์ถ๋ ์์น๋ค.
- GOF์ ๋์ด๋ ์ฌ๋ฌ Design Pattern์ ๊ธฐ๋ฐ์ด ๋๋ ์ค๊ณ ์ฒ ํ.
References
- Agile Principles, Patterns, and Practices. Martine C. Robert, Martin Micah

Comments