suyeonme
[λ μ] κ°μ²΄μ§ν₯μ μ¬μ€κ³Ό μ€ν΄ λ³Έλ¬Έ
μ± μ ν΅μ¬ λ΄μ© μ 리
νλμ΄ μνλ₯Ό κ²°μ νλ€.
μ΄λ³΄μλ€μ λ¨Όμ κ°μ²΄μ νμν μνκ° λ¬΄μμΈμ§λ₯Ό κ²°μ νκ³ κ·Έ μνμ νμν νλμ κ²°μ νλ€. μνλ₯Ό λ¨Όμ κ²°μ νκ³ νλμ λμ€μ κ²°μ νλ λ°©λ²μ μ€κ³μ λμ μν₯μ λΌμΉλ€. κ°μ²΄κ° μ ν©νμ§λ₯Ό κ²°μ νλ κ²μ κ·Έ κ°μ²΄μ μνκ° μλλΌ νλμ΄λ€. μ ν리μΌμ΄μ μμμ μ΄λ€ νλμ μνλλκ° μ΄λ€ κ°μ²΄κ° μ ν©νμ§λ₯Ό κ²°μ νλ€.
μνλ₯Ό λ¨Όμ κ²°μ ν κ²½μ°
- μνλ₯Ό λ¨Όμ κ²°μ ν κ²½μ° μΊ‘μνκ° μ ν΄λλ€. μνμ μ΄μ μ λ§μΆκ²½μ° μνκ° κ°μ²΄ λ΄λΆλ‘ κΉλνκ² μΊ‘μνλμ§ λͺ»νκ³ κ³΅μ© μΈν°νμ΄μ€μ κ·Έλλ‘ λ Ένλ νλ₯ μ΄ λμμ§λ€.
- κ°μ²΄λ₯Ό νλ ₯μκ° μλ κ³ λ¦½λ μ¬μΌλ‘ λ§λ λ€. μνλ₯Ό λ¨Όμ κ³ λ €ν κ²½μ°, νλ ₯μ΄λΌλ λ¬Έλ§₯μμ λ©λ¦¬ λ²μ΄λ μ± κ°μ²΄λ₯Ό μ€κ³ν¨μΌλ‘μ¨ μμ°μ€λ½κ² νλ ΅μ μ ν©νμ§ λͺ»ν κ°μ²΄λ₯Ό μ°½μ‘°νκ² λλ€.
- κ°μ²΄μ μ¬μ¬μ©μ±μ΄ μ ν΄λλ€. μνμ μ΄μ μ λ§μΆ κ°μ²΄λ λ€μν νλ ₯μ μ°Έμ¬νκΈ° μ΄λ ΅κΈ°λλ¬Έμ μ¬μ¬μ©μ±μ΄ μ νλ μ λ°μ μλ€.
μ± μ-μ£Όλ-μ€κ³(Responsibility-Driven-Design, RDD)
νλ ₯μμμ κ°μ²΄μ νλμ κ°μ²΄κ° νλ ₯μ μ°Έμ¬νλ©΄μ μμν΄μΌνλ μ± μμ μλ―Ένλ€. κ°μ²΄μ§ν₯ μ€κ³λ μ μ ν μ± μμ μ μ ν κ°μ²΄μκ² ν λΉνλ©΄μ λ©μΈμ§λ₯Ό κΈ°λ°μΌλ‘ νλ ₯νλ κ°μ²΄λ€μ κ΄κ³λ₯Ό λ°κ²¬νλ κ³Όμ μ΄λ€. λ°λΌμ μ΄λ€ μ± μμ΄ νμνκ°λ₯Ό κ²°μ νλ κ³Όμ μ΄ μ 체 μ€κ³λ₯Ό μ£Όλν΄μΌνλ€. μ± μ-μ£Όλ-μ€κ³λ μ± μμ μμνκΈ°μν΄ νλ ₯νλ κ°μ²΄λ€μ μ΄μ©ν΄ μμ€ν μ μ€κ³νλ λ°©λ²μΌλ‘, νλ ₯μ΄λΌλ λ¬Έλ§₯μμμ κ°μ²΄μ νλμ μκ°νλλ‘ λμμΌλ‘μ¨ μμ§λ λκ³ μ¬μ¬μ© κ°λ₯ν κ°μ²΄λ₯Ό λ§λ€ μ μκ² νλ€.
λ°μ΄ν°-μ£Όλ-μ€κ³(Data-Driven-Design, DDD)
λ©μΈμ§κ° μλλΌ λ°μ΄ν°λ₯Ό μ€μ¬μΌλ‘ κ°μ²΄λ₯Ό μ€κ³νλ λ°©μμ κ°μ²΄μ λ΄λΆ ꡬ쑰λ₯Ό κ°μ²΄ μ μμ μΌλΆλ‘ λ§λ€κΈ°λλ¬Έμ κ°μ²΄μ μμ¨μ±μ μ ν΄νλ€. κ°μ²΄μ λ΄λΆ ꡬ쑰λ κ°μΆ°μ ΈμΌνλ€.
'μ΄λ»κ²'κ° μλλΌ '무μ'μ
μμ¨μ μΈ μ± μμ νΉμ§μ 'μ΄λ»κ²(how)'ν΄μΌνλκ°κ° μλλΌ '무μ(what)'μ ν΄μΌνλκ°λ₯Ό μ€λͺ νλ κ²μ΄λ€. 'μ¦μΈ'νλ€λΌλ μ± μμ λͺ¨μ μ₯μκ° νλ ₯μ μν΄ '무μ'μ ν΄μΌνλμ§λ κ²°μ νμ§λ§ 'μ΄λ»κ²'ν΄μΌνλμ§μ λν΄μλ μ ν μΈκΈνμ§μλλ€. μ¦μΈν λ°©λ²μ λͺ¨μ μ₯μκ° μμ¨μ μΌλ‘ μ νν μ μλ€.
μ± μμ μμ¨μ μΌλ‘ λ§λ€μ΄λΌ
μμ¨μ μΈ μ± μμ,
- μμ¨μ μΈ μ± μμ νλ ₯μ λ¨μνκ² λ§λ λ€.
- κ°μ²΄μ μΈλΆμ λ΄λΆλ₯Ό λͺ ννκ² λΆλ¦¬νλ€.
- μ± μμ μννλ λ΄λΆμ μΈ λ°©λ²μ λ³κ²½νλλΌλ μΈλΆμ μν₯μ λ―ΈμΉμ§μλλ€.
- νλ ₯μ λμμ λ€μνκ² μ νν μ μλ μ μ°μ±μ μ 곡νλ€.
- κ°μ²΄κ° μννλ μ± μμ΄ μμ¨μ μΌμλ‘ κ°μ²΄μ μν μ μ΄ν΄νκΈ° μ¬μμ§λ€.
μ μ€μΌμ΄μ€(Use case)
μ¬μ©μμ λͺ©νλ₯Ό λ¬μ±νκΈ° μν΄ μ¬μ©μμ μμ€ν κ°μ μ΄λ€μ§λ μνΈμμ©μ νλ¦μ ν μ€νΈλ‘ μ 리ν κ²μ μ μ€μΌμ΄μ€λΌκ³ νλ€. μ μ€μΌμ΄μ€μ κ°μΉλ μ¬μ©μλ€μ λͺ©νλ₯Ό μ€μ¬μΌλ‘ μμ€ν μ κΈ°λ₯μ μΈ μꡬμ¬νλ€μ μ΄μΌκΈ° νμμΌλ‘ λ¬Άμ μ μλ€λ μ μ΄λ€. "μ¬μ©μ λͺ©νκ° μ μ€μΌμ΄μ€μ ν΅μ¬μ΄λ€. μ μ€μΌμ΄μ€λ 곡ν΅μ μ¬μ©μ λͺ©νλ₯Ό ν΅ν΄ κ°νκ² μ°κ΄λ μλ리μ€μ μ§ν©μ΄λ€.(by Martin Fowler)"
μ μ€μΌμ΄μ€λ,
- μ¬μ©μμ μμ€ν κ°μ μνΈμμ©μ 보μ¬μ£Όλ ν μ€νΈλ€.
- νλμ μλ리μ€κ° μλλΌ μ¬λ¬ μλ리μ€λ€μ μ§ν©μ΄λ€.
- λ¨μν feature λͺ©λ‘κ³Ό λ€λ₯΄λ€. featureλ μμ€ν μ΄ μνν΄μΌνλ κΈ°λ₯μ λͺ©λ‘μ λ¨μνκ² λμ΄ν κ²μ΄λ€. λ°λ©΄ μ μ€μΌμ΄μ€λ μ΄μΌκΈ°λ₯Ό ν΅ν΄ μ°κ΄λ κΈ°λ₯λ€μ ν¨κ» λ¬Άλλ€.
- μ¬μ©μ μΈν°νμ΄μ€μ κ΄λ ¨λ μΈλΆ μ 보λ₯Ό ν¬ν¨νμ§ λ§μμΌ νλ€.
- λ΄λΆ μ€κ³μ κ΄λ ¨λ μ 보λ₯Ό ν¬ν¨νμ§ μλλ€.
μ μ€μΌμ΄μ€ μμ
μ μ€μΌμ΄μ€λͺ
: μ€λ ν΄μ§ μ΄μμ‘μ κ³μ°νλ€.
μΌμ°¨ μ‘ν°: μκΈμ£Ό
μ£Όμ μ±κ³΅ μλ리μ€:
1. μκΈμ£Όκ° μ κΈ°μκΈ κ³μ’λ₯Ό μ ννλ€.
2. μμ€ν
μ μ κΈ°μκΈ κ³μ’ μ 보λ₯Ό 보μ¬μ€λ€.
3. μκΈμ£Όκ° κΈμΌ κΈ°μ€μΌλ‘ μκΈμ ν΄μ§ν κ²½μ° μ§κΈλ°μ μ μλ μ΄μ κ³μ°μ μμ²νλ€.
4. μμ€ν
μ μ€λ ν΄μ§ μ μ§κΈλ°μ μ μλ μ΄μλ₯Ό κ³μ°ν ν κ²°κ³Όλ₯Ό μ¬μ©μμκ² μ λ¬νλ€.
νμ₯:
3a. μ¬μ©μλ ν΄μ§ μΌμλ₯Ό λ€λ₯Έ μΌμλ‘ μ
λ ₯ν μ μλ€.
μΈν°νμ΄μ€μ ꡬνμ λΆλ¦¬ν΄λΌ(ISP, Interface Segregation Principle)
λͺ μΈ κ΄μ μ ν΄λμ€μ μμ μ μΈ μΈ‘λ©΄μ λλ¬λ΄μΌνλ€. ꡬν κ΄μ μ ν΄λμ€μ λΆμμ ν μΈ‘λ©΄μ λλ¬λ΄μΌνλ€. λͺ μΈ κ΄μ μ΄ μ€κ³λ₯Ό μ£Όλνκ²νλ©΄ μ€κ³μ νμ§μ΄ ν₯μλ μ μλ€. μΊ‘μνλ₯Ό μλ°ν΄μ ꡬνμ μΈν°νμ΄μ€ λ°μΌλ‘ λ ΈμΆν΄μλ μλκ³ μΈν°νμ΄μ€μ ꡬνμ λͺ ννκ² λΆλ¦¬νμ§ μκ³ νλ¦Ώνκ² μμ΄λμμλ μλλ€.
'λ μπ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ μ] κ°μλ©΄μ μ¬λ‘λ‘ λ°°μ°λ λκ·λͺ¨ μμ€ν μ€κ³ κΈ°μ΄ - μ¬μ©μ μμ λ°λ₯Έ κ·λͺ¨ νμ₯μ± (0) | 2024.06.22 |
---|