Overview
2022λ
ν ν΄λ₯Ό νκ³ ν΄λ³΄λ μΆμν
μ λμμΈ
μ 맀λ ₯μ λΉ μ Έμμλ€. κΈ°λκ°κ³Ό λλ €μμ λλΌλ©° μΈμμ κΈΈμ μ°Ύμκ°λ κ³Όμ μ μ±
κ³Ό κ²½νμ ν΅ν΄ μκ°ν΄λ³΄κ³ μ νλ€.
μ’μ λ°©λ² μ°Ύλ κΈΈ
λꡬμ 맀λ΄μΌμ κ΄ν κ²½ν
μ¬λλ€μ λꡬλ₯Ό κ°λ°νκ³ νμ©νμ¬ μΌμ μμ°μ±μ λμ¬μλ€. λꡬλ₯Ό μ νμ©νκΈ° μν΄μ κΈ°λ³Έ μμ€μ μ¬μ©λ²μ μ νμ νκ³ μμ΄μΌ νλ€. 맀λ΄μΌμ μ΄ μΈ‘λ©΄μμ κ°μ΄λλ₯Ό μ 곡ν΄μ£Όμ΄ μΈλ₯μ μκ°μ λ²μ΄μ£Όλ©° μ°λ¦¬ μΆμ΄ μ€νν΄μ§λλ‘ λμμ€λ€. νλ‘κ·Έλ¨μ κ°λ°μ μν΄ λ§€λ΄μΌμ μ½μΌλ©° μ½λ©νλ€ λꡬμ μΈκ° κ·Έλ¦¬κ³ κ²°κ³Όλ¬Όμ κ΄ν μκ°μ νκ² λμλ€.
μ§κ΄μν
νμ μ΅μ μ λꡬμ λ°©λ²μ μ¬μ©νμ¬ νλ‘κ·Έλ¨μ λ§λ€μλ€κ³ μκ°νλ€. κ·Έλ¬λ κ²°κ³Όλ¬Όμ 보면 λ§λ‘ νννκΈ° μ΄λ €μ΄ λΆμ‘±ν¨μ΄ λκ»΄μ‘λ€. μ νμ κ°λ°νλ κ³Όμ μλ λꡬλ₯Ό μ νμ©νλ κ² μ΄μΈμλ λ΄μμΌ ν μμκ° μμμ μΈμνκ² λμλ€.
νμκ° μ¬ν΄ νκ³ μΆμλ κ²μ "μ’μ μ΄μ λ₯Ό μ€λͺ ν μ μλ μ’μ μ νμ μ’μ λ°©λ²μΌλ‘ λ§λλ κ²" μ΄λ€. λͺ©νλ μλ¨μ΄λ μ’μ μ΄μ λ₯Ό μ€λͺ νκΈ° μν΄μλ μμμΌλ§ νλ€. νμκ° κ²½νν λΆμ‘±ν¨μ 무μμΈμ§ μλ³νκ³ λ³΄μνκΈ° μν λ μ λͺ¨νμ λ λκ² λμλ€.
μλ κ²μ΄ ν λ°°μμΌ μ°λ€ - μν μλ‘μ(1961) μ€
Agile Software Development
μννΈμ¨μ΄ μμ§λμ΄λ§ λΆμΌμ ꡬ루μ΄μ μν΄ λ°₯ μ μλκ»μ μ°μ λͺ μ μ΄λ€. μ’μ λ°©λ²μ ν₯ν μμΌλ₯Ό μ ν κ·Έ μ체λΆν° μΈκ° μ¬μ΄μ νμ κ³Όμ κΉμ§ κ³ λ―Όν΄λ³Ό μ μλλ‘ νμ₯μμΌ μ£Όμλ€.
κ³ κ° μ€μ¬ κ°μΉκ΄μΌλ‘μ μ ν
Agile-manifesto μ μΈμ ν΅ν΄ μννΈμ¨μ΄ μμ§λμ΄λ§ κ³Όμ μμ μΈκ°(κ³ κ°) μ€μ¬μ κ°μΉκ΄μ μ€μ νμλ€. κ³ κ°μ μ€μ¬μΌλ‘ λ³νλ₯Ό μμ©νλ©° 민첩ν νμ μ μ§ν₯νλ XP (μ΅μ€νΈλ¦Ό νλ‘κ·Έλλ°)μ ν΅ν΄ λΉ λ₯΄κ² λ³ννλ λΉμ¦λμ€μ μ μν μ μλ μννΈμ¨μ΄λ₯Ό κ°λ°νλ€.
μ ν΅μ μΈ μννΈμ¨μ΄ μμ§λμ΄λ§ λ°©μμ κ³μ½μ κΈ°λ°μΌλ‘ μννΈμ¨μ΄λ₯Ό κ³ν λ° κ΅¬νν ν λ©ννλ λ°©μμ΄μλ€. μ£Όλ‘ κ΅κ° κΈ°κ΄μ μλλ‘ μ¬μ©λ λ°©μμΈλ° λ³νμ λμνκΈ° μ΄λ €μ κ³ κ³ κ°μ μꡬμ¬ν λ³κ²½μ μκ·Ήμ μΈ νλλ‘ μ΄μ΄μ‘λ€.
κ³ κ°μ λΉμ¦λμ€ μꡬμ¬νμ μ λ°μνμ§ λͺ»ν λꡬλ λ¬Έμ λ₯Ό μ ν΄κ²°ν΄μ£Όμ§ λͺ»νλ€. κ³Όμ° μ΄λ° λ§₯λ½μ λꡬλ μ΄λ€ μ‘΄μ¬ κ°μΉλ₯Ό μ°Ύμ μ μμ κ²μΈμ§ μκ°ν΄λ³΄κ² λλ€.
μΆμνμ κ²½νμ κ΄κ³
μ½λμ OOP κΈ°μ μ μ λͺ©νμ¬ μΆμν μμ€μ λμ΄λ νμμμ λΉμ¦λμ€, μ‘°μ§ λ±μ μΈκ°μ μνΈμμ© κ²½νμ νμμ±μ μκ°ν μ μλλ‘ λμμ€λ€.
SOLID μμΉμ μκ°νλ©° λ³νμ μ μ°ν λμμΈμ μ½λλ‘ λ¦¬ν©ν°λ§ νλ κ³Όμ μ μκ°νλ€. μ½λ μ€κ³κ° μνλ μ νΈλ‘μ Code Smells
λ₯Ό μκ°νλ©° λ¬Έμ λ₯Ό μλ³νμ λ κ°μ²΄μ§ν₯ ν¨λ¬λ€μμ νμ©ν΄μ ν΄κ²°νλλ° νμν μμΉκ³Ό κ³Όμ μ μκ°νλ€.
κ°λ° μ΄κΈ°μ κ³Όλν λμμΈμ μ μ©νλ κ²μ μ§μνλ€. λΉμ¦λμ€μ λ³νκ° λ°μνμ λ μ μ ν λμμΈμ μ μ©νλ μ½λ 리ν©ν λ§μ μννλ€. νΉμ λ°©ν₯μΌλ‘ λμμΈνλλ° μ΄λ₯Έμ μ¬μ μΌλ‘ λ€λ₯Έ λ°©ν₯μΌλ‘ μμ ν΄μΌ νλ€λ©΄ μ΄κΈ°λ³΄λ€ λ§μ λΉμ©μ΄ νμν κ²μ΄λ€.
ν€λνΌμ€νΈ λμμΈ ν¨ν΄
Gang of Fourκ° μκ°ν λμμΈ ν¨ν΄ κ°λ μ λ³΄ν΅ μ¬λμ΄ μ½κ² μ΄ν΄ν μ μλλ‘ μ€λͺ ν λͺ μ μ΄λ€. μ€μ©μλ‘μ¨ λμμΈμ μ€κ° κ³Όμ μ μ΄ν΄λ³΄λ©° μ½λμ λν λ¬Έν΄λ ₯μ λμ΄κ³ μν΅ν μ μλ μ¬λμ΄ λλλ‘ λμμ μ£Όμλ€.
λμμΈ μ§μμ νμμμ μ΄μλ¨κΈ°
μ’μ κ°μ²΄μ§ν₯ λμμΈ μ¬λ‘λ₯Ό λ¬Έμ λ° ν΄κ²° κ³Όμ κ³Ό ν¨κ» λ³Ό μ μλ μ μ μ’μλ€. λ€λ§, λ§μ λμμΈ μμΉκ³Ό ν¨ν΄ μ§μλ€μ 보면μ λΉλ²ν κΈΈμ μμλ€. μ§λκ° νμν΄μ§ μμ μμ κ΅λ―Όλ κΉμΈκ· κ΅μλμ κ°μ’λ₯Ό ν΅ν΄ SOLID μμΉμ μ€μν κΉ¨μ°μΉ¨μ μ»κ² λμλ€. λμμΈ ν¨ν΄μ λ€μμ μλ¦¬λ‘ high cohesion loose couplingμ μ€μνλ λμμΈμ λ§λ€ μ μλλ‘ λλλ€.
OCPλ Goal, DIPλ Mechanism, LSPλ OCPμ Insurance
κ²°κ³Όλ₯Ό λ¨Όμ λ§λ³΄κ³ λ°μν λ¬Έμ μ
SOLID μμΉμ κ΄μ μΌλ‘ λμμΈ ν¨ν΄μ λ°λΌλ³΄μλ€. λ€λ₯Έ μ’ λ₯μ ν¨ν΄λ€μ μλ¦¬κ° λμΌνκ² λ³΄μΈλ€. μ΄ κ΄μ μ κ±°μμ μΈ μ리 μ΄ν΄λ₯Ό λμλ€κ³ μκ°νμ§λ§ κ° ν¨ν΄μ μΈλΆμ μΈ μμλ₯Ό μ΄ν΄νλλ° λ°©ν΄λκΈ°λ νμλ€.
λΉμ νμλ©΄ λ€λ₯Έ λ¬ΈνκΆ μ¬λλ€μ μΌκ΅΄μ 보μμ λ, μΌκ΅΄ μμ λ, μ½, μ κ³Ό μΌκ΅΄νμ μ¬λλ§λ€ λͺ¨λ λ€λ₯΄λ€. κ·Έλ€μ λ¨μν λμμΈ νΉμ μμμΈ κ΄μ μΌλ‘λ§ λ³Έλ€λ©΄ ν΄λΉ κ΄μ μμλ λ§μμ§λΌλ μΈλΆμ μΈ μΌκ΅΄μ λ―Έλ₯Ό λ³΄μ§ λͺ»νλ€κ³ μκ°νλ€.
μλ ¨ μμμ λμμΈ
λμμΈ ν¨ν΄ κ°λ μ μ§μμ μμμμ μλ ¨μ μμμΌλ‘ λ€λ£¨κ² λμλ€. μ± ν κΆ λ§μ μ½μ΄μ λͺ¨λ μ§μμ μ΄ν΄νκ³ Production μλμ κ·Ήμ μΌλ‘ λμ΄ μ¬λ¦΄ μ μλ€λ©΄ μ’μ κ²μ΄λ€. νμ§λ§ μ§μμ μ€μ λ‘ νμ©νλ €λ©΄ μ§μμ μΈ μλ ¨κ³Ό μμμ μΈ λ Έλ ₯μ΄ νμνλ€.
μ± μ μ½μΌλ©΄μ λͺ©νν μ μ νΉμ μ½λλ₯Ό λ³Ό λ μ μ©λ λμμΈ ν¨ν΄μ μ°Ύμ μ μκ³ μ¬λκ³Ό μν΅ν λ κ°λ μ μ΄ν΄ν μ μλλ‘ μ§μμ μλ κ²μ΄μλ€. μ μ°¨ λμμΈ ν¨ν΄μ νμν μμ μ μ μ νκ² μ¬μ©ν μ μλ μ¬λμ΄ λ μ μλλ‘ λ Έλ ₯ν κ²μ΄λ€.
μνμΌλ‘ μκ°νκΈ°
κΈ°μ μ λ¬Έμ λ₯Ό ν΄κ²°νλλ° λμ μ€λ€. μ¬λμ λ¬Έμ κ° ν¨κ³Όμ μΌλ‘ ν΄κ²°λ μ μλλ‘ κΈ°μ μ μ°½μ‘°νκ±°λ μ μ©νλ€. μ΄ μ± μ μ¬λμ΄ λ¬Έμ μ λ³Έμ§μ μ΄ν΄νκ³ ν΄κ²°ν μ μλ νμ ν€μμ£Όμλ€.
μΆμνλ₯Ό κ°λ₯νκ² νλ ν
μνμ μνλ μ¬λλ μ²μλΆν° μΆμμ κ°λ μ μκ°ν΄μ λ¬Έμ λ₯Ό νκΈ°λ μ½μ§ μλ€. ꡬ체μ μ¬λ‘λ₯Ό ν΅ν΄ μΌλ°νμμΌ λ¬Έμ λ₯Ό ν΄κ²°νλ κ·λ©μ μ¬κ³ λ₯Ό νλ©΄ λ¬Έμ λ₯Ό ν΄κ²°νλλ° λμλ°μ μ μλ€.
νΉν νλ‘κ·Έλλ¨Έμκ²λ λκ΅¬κ° λ¬Έμ λ₯Ό μ§μ ν΄κ²°ν΄μ£Όμ§ μκΈ° λλ¬Έμ κ·λ©μ μ¬κ³ κ° κ·Όμ‘κ³Ό κ°λ€κ³ μκ°νλ€. μ§μμ κ°λ₯νκ² νλ νμΌλ‘μ¨ μκ°νλ νμ μ€μμ±μ λλΌκ² λμλ€.
μ°Έμ‘°
- Agile Software Development, Principles, Patterns, and Practices - Robert C. Martin
- ν€λ νΌμ€νΈ λμμΈ ν¨ν΄ - μλ¦ ν리먼, μ리μλ² μ€ λ‘μ¨, μΌμ΄μ μμλΌ, λ²νΈ λ² μ΄μΈ μ μ(κΈ), μνμ λ²μ
- μνμΌλ‘ μκ°νκΈ° - μ€μ¦ν€ κ°νλ‘ μ μ(κΈ), μ΅μ§μ λ²μ, μ΅μ λ΄ κ°μ
'πΆ Experience > Life Story' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ°λ§ κ²°μ°] 2022λ 3λΆμ - 3λΆ μ’μ μκ° (0) | 2022.12.31 |
---|---|
[μ°λ§ κ²°μ°] 2022λ 3λΆμ - 2λΆ μ’μ μ ν (2) | 2022.12.30 |
[νκ³ ] νμ΄μ¬ ν μ΄ νλ‘μ νΈ μ½λ 리뷰 (2) | 2022.12.11 |
[μ΄μΌκΈ°] μΈκ° μ€μ¬μ λμμΈ μ€κ³ (0) | 2022.10.16 |
[νκ³ ] λμ μ΄μ μ€λ λ΄μΌ (0) | 2022.10.02 |