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




