[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 4μ₯ μλ²νλ‘κ·Έλ¨ κ΅¬ν
- -
μ΄λ²μλ 2022λ λ μ€κΈ° μν μ€λΉνλ©΄μ λ ΈνΈμ 리 νμλ λ΄μ©λ€μ ν¬μ€ν ν΄λ³΄κ² μ΅λλ€. λ΄μ©μ΄ λ§μ΄ λΆμ‘±νμκ² μ§λ§ μ΄λκΉμ§ μ°Έκ³ μ©μΌλ‘λ§ λ΄μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€. ππ
μ°Έκ³ λ‘, μκ° κ΄κ³μ μ λΆ μ 리λμ΄ μμ§λ μμ΅λλ€. μΆκ°λ‘ μ λ Cλ±κΈκ³Ό Dλ±κΈμ νμ΅ λͺ©νμμ μ μΈνμ΅λλ€.
ν΄λΉ λ΄μ©μ 2022λ λ μλ곡 μΆνμ¬μ μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ° μ± μ λ΄μ©μ΄ μ‘°κΈ ν¬ν¨λμ΄ μμ΅λλ€.
κ°κΈμ μ± μ ꡬ맀νμ μΌ νκ³ μΆνμ¬λ μλ곡 λλ μμ λΉλ‘ 곡λΆνμλ κ²μ μΆμ²λ립λλ€.
Aλ±κΈ
π’ κ°μ²΄μ§ν₯(Obejct-Oriented)
- κ°μ±μ§ν₯
- κ° μμλ€μ κ°μ²΄(Object)λ‘ λ§λ ν, κ°μ²΄λ€μ 쑰립ν΄μ μννΈμ¨μ΄λ₯Ό κ°λ°νλ κΈ°λ²
- κ°μ²΄μ§ν₯μ ꡬμ±μμ
- κ°μ²΄(Object)
- λ°μ΄ν°μ μ΄λ₯Ό μ²λ¦¬νκΈ° μν ν¨μλ₯Ό λ¬Άμ΄ λμ μννΈμ¨μ΄ λͺ¨λ
- λ°μ΄ν°: κ°μ²΄κ° κ°μ§κ³ μλ μ 보λ‘, μμ±μ΄λ μν, λΆλ₯ λ±
- ν¨μ: κ°μ²΄κ° μννλ κΈ°λ₯μΌλ‘ κ°μ²΄κ° κ°λ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μκ³ λ¦¬μ¦
- ν΄λμ€(Class)
- 곡ν΅λ μμ±κ³Ό μ°μ°μ κ°λ κ°μ²΄μ μ§ν©
- ν΄λμ€μ μν κ°κ°μ κ°μ²΄λ₯Ό μΈμ€ν΄μ€(Instance)λΌκ³ ν¨
- λ©μΈμ§(Message)
- κ°μ²΄λ€ κ°μ μνΈμμ©μ μ¬μ©λλ μλ¨μΌλ‘, κ°μ²΄μ λμμ΄λ μ°μ°μ μΌμΌν€λ μΈλΆμ μꡬ μ¬ν
- κ°μ²΄(Object)
- κ°μ²΄μ§ν₯μ νΉμ§
- μΊ‘μν(Encapsulation)
- μΈλΆμμμ μ κ·Όμ μ ννκΈ° μν΄ μΈν°νμ΄μ€λ₯Ό μ μΈν μΈλΆ λ΄μ©μ μλνλ κ²
- μΈλΆ λͺ¨λμ λ³κ²½μΌλ‘ μΈν νκΈ ν¨κ³Όκ° μ μ
- μμ(Inheritance)
- μμ ν΄λμ€μ λͺ¨λ μμ±κ³Ό μ°μ°μ νμ ν΄λμ€κ° λ¬Όλ €λ°λ κ²
- λ€νμ±(Polymorphism)
- νλμ λ©μΈμ§μ λν΄ κ°κ°μ κ°μ²΄κ° κ³ μ ν λ°©λ²μΌλ‘ μλ΅ν μ μλ λ₯λ ₯
- μ°κ΄μ±(Relationship)
- λ κ° μ΄μμ κ°μ²΄λ€μ΄ μνΈ μ°Έμ‘°νλ κ΄κ³
- μ°κ΄μ±μ μ’ λ₯
- μΊ‘μν(Encapsulation)
π’ κ°μ²΄μ§ν₯ λΆμ λ° μ€κ³
- κ°μ²΄μ§ν₯ λΆμ(OOA; Object Oriented Analysis)
- μ¬μ©μμ μꡬμ¬νκ³Ό κ΄λ ¨λ κ°μ²΄, μμ±, μ°μ°, κ΄κ³ λ±μ μ μνμ¬ λͺ¨λΈλ§νλ μμ
- κ°μ²΄μ μμ±, ν΄λμ€μ λ©€λ², μ 체μ λΆλΆ λ±μΌλ‘ λλμ΄μ λΆμ
- ν΄λμ€λ₯Ό μλ³νλ κ²μ΄ κ°μ²΄μ§ν₯ λΆμμ μ£Όμ λͺ©μ
- κ°μ²΄μ§ν₯ λΆμμ λ°©λ²λ‘
- λΌλ°μ°(Rumbaugh)μ λΆμ κΈ°λ² [κ°λκΈ°]
- λͺ¨λ μννΈμ¨μ΄ κ΅¬μ± μμλ₯Ό κ·Έλν½ νκΈ°λ²μ μ΄μ©νμ¬ λͺ¨λΈλ§νλ κΈ°λ²
- =κ°μ²΄ λͺ¨λΈλ§ κΈ°λ²(OMT, Object-Modeling Technique)
- λΆμ νλ [κ°μ²΄ → λμ → κΈ°λ₯ λͺ¨λΈλ§]
- κ°μ²΄ λͺ¨λΈλ§(Object Modeling) = μ 보 λͺ¨λΈλ§(Information Modeling)
- μμ€ν μμ μꡬλλ κ°μ²΄λ₯Ό μ°Ύμλ΄μ΄ μμ±κ³Ό μ°μ° μλ³ λ° κ°μ²΄λ€ κ°μ κ΄κ³λ₯Ό κ·μ νμ¬ νμνλ λͺ¨λΈλ§
- ex) ER λ€μ΄μ΄κ·Έλ¨(ERD)
- λμ λͺ¨λΈλ§(Dynamic Modeling)
- μκ°μ νλ¦μ λ°λ₯Έ κ°μ²΄λ€ κ°μ μ μ΄ νλ¦, μνΈ μμ©, λμ μμ λ±μ λμ μΈ νμλ₯Ό νννλ λͺ¨λΈλ§
- ex) μν λ³νλ(STD), μ¬κ±΄ μΆμ λ
- κΈ°λ₯ λͺ¨λΈλ§(Functional Modeling)
- λ€μμ νλ‘μΈμ€λ€ κ°μ μλ£ νλ¦μ μ€μ¬μΌλ‘ μ²λ¦¬ κ³Όμ μ ννν λͺ¨λΈλ§
- ex) μλ£νλ¦λ(DFD)
- κ°μ²΄ λͺ¨λΈλ§(Object Modeling) = μ 보 λͺ¨λΈλ§(Information Modeling)
- κ°μ²΄μ§ν₯ μ€κ³ μμΉ
- λ³κ²½μ΄λ νμ₯μ μ μ°ν μμ€ν μ μ€κ³νκΈ° μν΄ μ§μΌμ ΈμΌ ν μμΉ
- μμΉμ μ’
λ₯ [SOLID]
- λ¨μΌ μ± μ μμΉ(SRP): κ°μ²΄λ λ¨ νλμ μ± μλ§ κ°μ ΈμΌ νλ€λ μμΉ
- κ°λ°©-νμ μμΉ(OCP): κΈ°μ‘΄μ μ½λλ₯Ό λ³κ²½νμ§ μκ³ κΈ°λ₯μ μΆκ°ν μ μλλ‘ μ€κ³ν΄μΌ νλ€λ μμΉ
- 리μ€μ½ν μΉν μμΉ(LSP): μμ ν΄λμ€λ μ΅μν λΆλͺ¨ν΄λμ€μ κΈ°λ₯μ μνν μ μμ΄μΌ νλ€λ μμΉ
- μΈν°νμ΄μ€ λΆλ¦¬ μμΉ(ISP): μμ μ΄ μ¬μ©νμ§ μλ μΈν°νμ΄μ€μ μμ‘΄ κ΄κ³λ₯Ό λ§Ίκ±°λ μν₯μ λ°μ§ μμμΌ νλ€λ μμΉ
- μμ‘΄ μμ μμΉ(DIP): μμ‘΄ κ΄κ³ μ±λ¦½ μ μΆμμ±μ΄ λμ ν΄λμ€μ μμ‘΄ κ΄κ³λ₯Ό λ§Ίμ΄μΌ νλ€λ μμΉ
π’ λͺ¨λ
- λͺ¨λ(Module)
- λͺ¨λνλ₯Ό ν΅ν΄ λΆλ¦¬λ μμ€ν μ κ° κΈ°λ₯
- λͺ¨λμ κΈ°λ₯μ λ 립μ±μ μννΈμ¨μ΄λ₯Ό ꡬμ±νλ κ° λͺ¨λμ κΈ°λ₯μ΄ μλ‘ λ 립λ¨μ μλ―Έ
- λͺ¨λμ λ 립μ±μ κ²°ν©λμ μμ§λμ μν΄ μΈ‘μ
- κ²°ν©λ(Coupling)
- λͺ¨λ κ°μ μνΈ μμ‘΄νλ μ λ λλ λ λͺ¨λ μ¬μ΄μ μ°κ΄ κ΄κ³
- μμ§λ(Cohesion)
- λͺ¨λμ λ΄λΆ μμλ€μ΄ μλ‘ κ΄λ ¨λμ΄ μλ μ λ
- ν¬μΈ(Fan-In) / ν¬μμ(Fan-Out)
- ν¬μΈ
- μ΄λ€ λͺ¨λμ μ μ΄νλ λͺ¨λμ μ
- μκΈ° μμ μκ² λ€μ΄μ€λ κ°μ
- ν¬μμ
- μ΄λ€ λͺ¨λμ μν΄ μ μ΄λλ λͺ¨λμ μ
- μκΈ° μμ μμ λκ°λ κ°μ
- ν¬μΈ
- N-S μ°¨νΈ(Nassi-Schneiderman Chart)
- λ Όλ¦¬μ κΈ°μ μ μ€μ μ λκ³ λνμ μ΄μ©ν΄ νννλ λ°©λ²
- λ°μ€ λ€μ΄μ΄κ·Έλ¨, Chapin Chart
π’ λ¨μ λͺ¨λ
- ν κ°μ§ λμμ μννλ λͺ¨λμ ꡬν κ³Όμ
- ꡬν κ³Όμ
- λ¨μ κΈ°λ₯ λͺ μΈμ μμ± → μ μΆλ ₯ κΈ°λ₯ ꡬν → μκ³ λ¦¬μ¦ κ΅¬ν
- IPC(Inter-Process Communication)
- λͺ¨λ κ° ν΅μ λ°©μμ ꡬννκΈ° μν΄ μ¬μ©λλ λνμ μΈ νλ‘κ·Έλλ° μΈν°νμ΄μ€ μ§ν©
- λν λ©μλ 5κ°μ§
- Share Memory: 곡μ κ°λ₯ν λ©λͺ¨λ¦¬λ₯Ό ꡬμ±νμ¬ λ€μμ νλ‘μΈμ€κ° ν΅μ νλ λ°©μ
- Socket: λ€νΈμν¬ μμΌμ μ΄μ©νμ¬ λ€νΈμν¬λ₯Ό κ²½μ νλ νλ‘μΈμ€κ°μ ν΅μ νλ λ°©μ
- Semaphores: 곡μ μμμ λν μ κ·Ό μ μ΄λ₯Ό ν΅ν΄ ν΅μ νλ λ°©μ
- Pipes&named Pipes: μ μ μ μΆ ννλ‘ κ΅¬μ±λ λ©λͺ¨λ¦¬λ₯Ό μ¬λ¬ νλ‘μΈμ€κ° 곡μ νμ¬ ν΅μ νλ λ°©μ
- Message Queueing: λ©μΈμ§κ° λ°μνλ©΄ μ΄λ₯Ό μ λ¬νλ λ°©μμΌλ‘ ν΅μ νλ λ°©μ
- λ¨μ λͺ¨λ ν
μ€νΈ
- λͺ¨λμ΄ μ ν΄μ§ κΈ°λ₯μ μ νν μννλμ§ κ²μ¦νλ κ²
- ν
μ€νΈ μΌμ΄μ€(Test Case)
- μννΈμ¨μ΄κ° μ¬μ©μμ μꡬμ¬νμ μ ννκ² μ€μνλμ§λ₯Ό νμΈνκΈ° μν ν μ€νΈ νλͺ©μ λν λͺ μΈμ
π’ μ½λ
- μλ£μ λΆλ₯/μ‘°ν©/μ§κ³/μΆμΆμ μ©μ΄νκ² νκΈ° μν΄ μ¬μ©νλ κΈ°νΈ
- μ½λμ μ£Όμ κΈ°λ₯
- μλ³ κΈ°λ₯: λ°μ΄ν° κ°μ μ±κ²©μ λ°λΌ ꡬλΆμ΄ κ°λ₯
- λΆλ₯ κΈ°λ₯: νΉμ κΈ°μ€μ΄λ λμΌν μ νμ ν΄λΉνλ λ°μ΄ν°λ₯Ό κ·Έλ£Ήν ν μ μμ
- λ°°μ΄ κΈ°λ₯: μλ―Έλ₯Ό λΆμ¬νμ¬ λμ΄ν μ μμ
- νμ€ν κΈ°λ₯: λ€μν λ°μ΄ν°λ₯Ό κΈ°μ€μ λ§μΆμ΄ ννν μ μμ
- κ°μν κΈ°λ₯: 볡μ‘ν λ°μ΄ν°λ₯Ό κ°μνν μ μμ
- μ½λμ μ’
λ₯
- μμ°¨ μ½λ(Sequence Code)
- μλ£μ λ°μ μμ, ν¬κΈ° μμ λ± μΌμ κΈ°μ€μ λ°λΌμ μ΅μ΄μ μλ£λΆν° μ°¨λ‘λ‘ μΌλ ¨λ²νΈλ₯Ό λΆμ¬νλ λ°©λ²
- = μμ μ½λ = μΌλ ¨λ²νΈ μ½λ
- λΈλ‘ μ½λ(Block Code)
- 곡ν΅μ±μ΄ μλ κ²λΌλ¦¬ λΈλ‘μΌλ‘ ꡬλΆ
- λΈλ‘ λ΄μμ μΌλ ¨λ²νΈλ₯Ό λΆμ¬νλ λ°©λ²
- = κ΅¬λΆ μ½λ
- 10μ§ μ½λ(Decimal Code)
- 10μ§ λΆν ν νμν λ§νΌ λ°λ³΅νλ λ°©λ²
- = λμ λΆλ₯μ μ½λ
- κ·Έλ£Ή λΆλ₯ μ½λ(Group Classification Code)
- κ° κ·Έλ£Ή μμμ μΌλ ¨λ²νΈλ₯Ό λΆμ¬νλ λ°©λ²
- μ°μ μ½λ(Mnemonic Code)
- μ½λν λμ νλͺ©μ λͺ μΉμ΄λ μ½νΈμ κ΄κ³μλ μ«μλ λ¬Έμ, κΈ°νΈλ₯Ό μ΄μ©νμ¬ μ½λλ₯Ό λΆμ¬νλ λ°©λ²
- νμ μ«μ μ½λ(Significant Digit Code)
- μ½λν λμ νλͺ©μ μ±μ§, μ¦ κΈΈμ΄, λμ΄, λΆνΌ, μ§λ¦, λμ΄ λ±μ 물리μ μμΉλ₯Ό κ·Έλλ‘ μ½λμ μ μ©μν€λ λ°©λ²
- = μ ν¨ μ«μ μ½λ
- ν©μ± μ½λ(Combined Code)
- 2κ° μ΄μμ μ½λλ₯Ό μ‘°ν©νμ¬ λ§λλ λ°©λ²
- μμ°¨ μ½λ(Sequence Code)
π’ λμμΈ ν¨ν΄
- λμμΈ ν¨ν΄(Design Pattern)
- λͺ¨λ κ°μ κ΄κ³ λ° μΈν°νμ΄μ€λ₯Ό μ€κ³ν λ μ°Έμ‘°ν μ μλ μ νμ μΈ ν΄κ²° λ°©μ λλ μμ
- κ΅¬μ± μμ
- λ¬Έμ λ° λ°°κ²½
- μ€μ μ μ©λ μ¬λ‘
- μ¬μ¬μ©μ΄ κ°λ₯ν μν μ½λ
- μμ± ν¨ν΄(Creational Pattern): ν΄λμ€λ κ°μ²΄μ μμ±κ³Ό μ°Έμ‘° κ³Όμ μ μ μνλ ν¨ν΄
- μΆμ ν©ν 리(Abstact Factory)
- ꡬ체μ μΈ ν΄λμ€μ μμ‘΄νμ§ μκ³ , κ°μ²΄λ€μ κ·Έλ£ΉμΌλ‘ μμ±νμ¬ μΆμμ μΌλ‘ νν
- μ°κ΄λ μλΈ ν΄λμ€λ₯Ό λ¬Άμ΄ ν λ²μ κ΅μ²΄νλ κ²μ΄ κ°λ₯
- λΉλ(Builder)
- μκ² λΆλ¦¬λ μΈμ€ν΄μ€λ₯Ό κ±΄μΆ νλ―μ΄ μ’λ°νμ¬ κ°μ²΄λ₯Ό μμ±
- ν©ν 리 λ©μλ(Factory Method)
- κ°μ²΄ μμ±μ μλΈ ν΄λμ€μμ μ²λ¦¬νλλ‘ λΆλ¦¬νμ¬ μΊ‘μνν ν¨ν΄
- μμ ν΄λμ€μμ μΈν°νμ΄μ€λ§ μ μ, μ€μ μμ±μ μλΈ ν΄λμ€κ° λ΄λΉ
- = κ°μ μμ±μ(Virtual Constructor) ν¨ν΄
- νλ‘ν νμ
(Prototype)
- μλ³Έ κ°μ²΄λ₯Ό 볡μ νλ λ°©λ²μΌλ‘ κ°μ²΄λ₯Ό μμ±νλ ν¨ν΄
- μ±κΈν€(Singleton)
- νλμ κ°μ²΄λ₯Ό μμ±νλ©΄ μμ±λ κ°μ²΄λ₯Ό μ΄λμλ μ°Έμ‘°ν μ μμ§λ§, μ¬λ¬ νλ‘μΈμ€κ° λμμ μ°Έμ‘°ν μλ μμ
- ν΄λμ€ λ΄μμ μΈμ€ν΄μ€κ° νλλΏμμ 보μ₯
- λΆνμν λ©λͺ¨λ¦¬ λλΉ μ΅μν
- μΆμ ν©ν 리(Abstact Factory)
- ꡬ쑰 ν¨ν΄(Structural Pattern): ν΄λμ€λ κ°μ²΄λ€μ μ‘°ν©νμ¬ λ ν° κ΅¬μ‘°λ‘ λ§λλ ν¨ν΄
- μ΄λν°(Adapter)
- νΈνμ±μ΄ μλ ν΄λμ€λ€μ μΈν°νμ΄μ€λ₯Ό λ€λ₯Έ ν΄λμ€κ° μ΄μ©ν μ μλλ‘ λ³νν΄μ£Όλ ν¨ν΄
- λΈλ¦¬μ§(Bridge)
- ꡬνλΆμμ μΆμμΈ΅μ λΆλ¦¬νμ¬, μλ‘κ° λ 립μ μΌλ‘ νμ₯ν μ μλλ‘ κ΅¬μ±ν ν¨ν΄
- κΈ°λ₯κ³Ό ꡬνμ λ κ°μ λ³λ ν΄λμ€λ‘ ꡬν
- μ»΄ν¬μ§νΈ(Composite)
- μ¬λ¬ κ°μ²΄λ₯Ό κ°μ§ λ³΅ν© κ°μ²΄μ λ¨μΌ κ°μ²΄λ₯Ό κ΅¬λΆ μμ΄ λ€λ£¨κ³ μ ν λ μ¬μ©νλ ν¨ν΄
- λ°μ½λ μ΄ν°(Decorator)
- κ°μ²΄ κ°μ κ²°ν©μ ν΅ν΄ λ₯λμ μΌλ‘ κΈ°λ₯λ€μ νμ₯ν μ μλ ν¨ν΄
- νΌμΈλ(Facade)
- 볡μ‘ν μλΈ ν΄λμ€λ€μ νΌν΄ λ μμμ μΈν°νμ΄μ€λ₯Ό ꡬμ±ν¨μΌλ‘μ¨ μλΈ ν΄λμ€λ€μ κΈ°λ₯μ κ°νΈνκ² μ¬μ©ν μ μλλ‘ νλ ν¨ν΄
- νλΌμ΄μ¨μ΄νΈ(Flyweight)
- μΈμ€ν΄μ€κ° νμν λλ§λ€ λ§€λ² μμ νλ κ²μ΄ μλκ³ κ°λ₯νν 곡μ ν΄μ μ¬μ©ν¨μΌλ‘μ¨ λ©λͺ¨λ¦¬λ₯Ό μ μ½νλ ν¨ν΄
- νλ‘μ(Proxy)
- μ κ·Όμ΄ μ΄λ €μ΄ κ°μ²΄μ μ¬κΈ°μ μ°κ²°νλ €λ κ°μ²΄ μ¬μ΄μμ μΈν°νμ΄μ€ μν μ μννλ ν¨ν΄
- μ΄λν°(Adapter)
- νμ ν¨ν΄(Behavioral Pattern): ν΄λμ€λ κ°μ²΄λ€μ΄ μλ‘ μνΈμμ©νλ λ°©λ²μ΄λ μ±
μ λΆλ°° λ°©λ²μ μ μνλ ν¨ν΄
- μ±
μ μ°μ(Chaing of Responsibility)
- μμ²μ μ²λ¦¬ν μ μλ κ°μ²΄κ° λ μ΄μ μ‘΄μ¬νμ¬ ν κ°μ²΄κ° μ²λ¦¬νμ§ λͺ»νλ©΄ λ€μ κ°μ²΄λ‘ λμ΄κ°λ ννμ ν¨ν΄
- 컀맨λ(Command)
- μμ²μ κ°μ²΄μ ννλ‘ μΊ‘μννμ¬ μ¬μ΄μ©νκ±°λ μ·¨μν μ μλλ‘ μμ²μ νμν μ 보λ₯Ό μ μ₯νκ±°λ λ‘κ·Έμ λ¨κΈ°λ ν¨ν΄
- μμ²μ μ¬μ©λλ κ°μ’ λͺ λ Ήμ΄λ€μ μΆμν΄λμ€μ ꡬ체ν΄λμ€λ‘ λΆλ¦¬νμ¬ λ¨μνν¨
- μΈν°ν리ν°(Interpreter)
- μΈμ΄μ λ¬Έλ² ννμ μ μνλ ν¨ν΄
- λ°λ³΅μ(Iterator)
- μλ£ κ΅¬μ‘°μ κ°μ΄ μ κ·Όμ΄ μ¦μ κ°μ²΄μ λν΄ λμΌν μΈν°νμ΄μ€λ₯Ό μ¬μ©νλλ‘ νλ ν¨ν΄
- μ€μ¬μ(Mediator)
- μλ§μ κ°μ²΄λ€ κ°μ 볡μ‘ν μνΈμμ©(Interface)μ μΊ‘μννμ¬ κ°μ²΄λ‘ μ μνλ ν¨ν΄
- κ°μ²΄ μ¬μ΄μ μμ‘΄μ±μ μ€μ¬ κ²°ν©λλ₯Ό κ°μμν¬ μ μμ
- λ©λ©ν (Memento)
- νΉμ μμ μμμ κ°μ²΄ λ΄λΆ μνλ₯Ό κ°μ²΄νν¨μΌλ‘μ¨ μ΄ν μμ²μ λ°λΌ κ°μ²΄λ₯Ό ν΄λΉ μμ μ μνλ‘ λ릴 μ μλ κΈ°λ₯μ μ 곡νλ ν¨ν΄
- ‘Ctrl + Z’ μ κ°μ λλ리기 κΈ°λ₯μ κ°λ°ν λ μ£Όλ‘ μ΄μ©
- μ΅μλ²(Observer)
- ν κ°μ²΄μ μνκ° λ³ννλ©΄ κ°μ²΄μ μμλμ΄ μλ λ€λ₯Έ κ°μ²΄λ€μκ² λ³νλ μνλ₯Ό μ λ¬νλ ν¨ν΄
- μΌλλ€μ μμ‘΄μ±μ μ μ
- μν(State)
- κ°μ²΄μ μνμ λ°λΌ λμΌν λμμ λ€λ₯΄κ² μ²λ¦¬ν΄μΌ ν λ μ¬μ©νλ ν¨ν΄
- κ°μ²΄ μνλ₯Ό μΊ‘μννκ³ μ΄λ₯Ό μ°Έμ‘°νλ λ°©μμΌλ‘ μ²λ¦¬
- μ λ΅(Strategy)
- λμΌν κ³μ΄μ μκ³ λ¦¬μ¦λ€μ κ°λ³μ μΌλ‘ μΊ‘μννμ¬ μνΈ κ΅νν μ μκ² μ μνλ ν¨ν΄
- ν
νλ¦Ώ λ©μλ(template Method)
- μμ ν΄λμ€μμ 골격μ μ μνκ³ , νμ ν΄λμ€μμ μΈλΆ μ²λ¦¬λ₯Ό ꡬ체ννλ ꡬ쑰μ ν¨ν΄
- μ±
μ μ°μ(Chaing of Responsibility)
π’ λ°°μΉ νλ‘κ·Έλ¨
- λ°°μΉ νλ‘κ·Έλ¨(Batch Program)
- μ¬λ¬ μμ λ€μ 미리 μ ν΄μ§ μΌλ ¨μ μμμ λ°λΌ μΌκ΄μ μΌλ‘ μ²λ¦¬νλλ‘ λ§λ νλ‘κ·Έλ¨
- νμ μμ
- λμ©λ λ°μ΄ν°: λλμ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ±°λ, μ λ¬νκ±°λ, κ³μ°νλ λ±μ μ²λ¦¬κ° κ°λ₯ν΄μΌ ν¨
- μλν: μ¬κ°ν μ€λ₯κ° λ°μνλ μν©μ μ μΈνκ³ λ μ¬μ©μμ κ°μ μμ΄ μνλμ΄μΌ ν¨
- κ²¬κ³ μ±: μλͺ»λ λ°μ΄ν°λ λ°μ΄ν° μ€λ³΅ λ±μ μν©μΌλ‘ μ€λ¨λλ μΌ μμ΄ μνλμ΄μΌ ν¨
- μμ μ±/μ λ’°μ±: μ€λ₯κ° λ°μνλ©΄ μ€λ₯μ λ°μ μμΉ, μκ° λ±μ μΆμ ν μ μμ΄μΌ ν¨
- μ±λ₯: λ€λ₯Έ μμ© νλ‘κ·Έλ¨μ μνμ λ°©ν΄νμ§ μμμΌ ν¨. μ§μ λ μκ° λ΄μ μ²λ¦¬κ° μλ£ λμ΄μΌ ν¨
- λ°°μΉ μ€μΌμ€λ¬(Batch Scheduler)
- μΌκ΄ μ²λ¦¬ μμ μ΄ μ€μ λ μ£ΌκΈ°μ λ§μΆ° μλμΌλ‘ μνλλλ‘ μ§μν΄μ£Όλ λꡬ
- = μ‘ μ€μΌμ€λ¬(Job Scheduler)
- μ’ λ₯: μ€νλ§ λ°°μΉ(Spring Batch), Quartz, Cron
- crontab λͺ
λ Ήμ΄ μμ± λ°©λ²
- μμ μμ½ νμ
Bλ±κΈ
π’ μννΈμ¨μ΄ μν€ν μ²
- μννΈμ¨μ΄λ₯Ό ꡬμ±νλ μμλ€ κ°μ κ΄κ³λ₯Ό νννλ μμ€ν μ ꡬ쑰 λλ ꡬ쑰체
- λͺ¨λν(Modularity)
- μμ€ν μ κΈ°λ₯λ€μ λͺ¨λ λ¨μλ‘ λλλ κ²
- λͺ¨λμ ν¬κΈ°λ₯Ό λ무 μκ² λλλ©΄ κ°μκ° λ§μμ Έ λͺ¨λ κ°μ ν΅ν© λΉμ©μ΄ μ¦κ°
- λͺ¨λμ ν¬κΈ°λ₯Ό λ무 ν¬κ² λλλ©΄ κ°μκ° μ μ΄ ν΅ν© λΉμ©μ μ κ² λ€μ§λ§ λͺ¨λ νλμ κ°λ° λΉμ©μ΄ μ¦κ°
- μΆμν(Abstraction)
- μ 체μ μ΄κ³ ν¬κ΄μ μΈ κ°λ μ μ€κ³ν ν ꡬ체νμμΌ λκ°λ κ²
- μΆμνμ μ ν
- κ³Όμ μΆμν: μμΈν μν κ³Όμ μ μ μνμ§ μκ³ , μ λ°μ μΈ νλ¦λ§ νμ ν μ μκ² μ€κ³νλ λ°©λ²
- λ°μ΄ν° μΆμν: λ°μ΄ν°μ μΈλΆμ μΈ μμ±μ΄λ μ©λλ₯Ό μ μνμ§ μκ³ , λ°μ΄ν° ꡬ쑰λ₯Ό λνν μ μλ ννμΌλ‘ λ체νλ λ°©λ²
- μ μ΄ μΆμν: μ΄λ²€νΈ λ°μμ μ νν μ μ°¨λ λ°©λ²μ μ μνμ§ μκ³ , λνν μ μλ ννμΌλ‘ λ체νλ λ°©λ²
- λ¨κ³μ λΆν΄(Stepwise Refinement)
- μμμ μ€μ κ°λ μΌλ‘λΆν° νμμ κ°λ μΌλ‘ ꡬ체νμν€λ λΆν κΈ°λ²
- Niklaus Wirthμ μν΄ μ μλ νν₯μ μ€κ³ μ λ΅
- μ 보 μλ(Information Hiding)
- λͺ¨λ λ΄λΆμ ν¬ν¨λ μ μ°¨μ μλ£λ€μ μ λ³΄κ° κ°μΆμ΄μ Έ λ€λ₯Έ λͺ¨λμ΄ μ κ·Όνκ±°λ λ³κ²½νμ§ λͺ»νλλ‘ νλ κΈ°λ²
- μ 보 μλμ ν΅ν΄ λͺ¨λμ λ 립μ μΌλ‘ μν
- λ€λ₯Έ λͺ¨λμ μν₯ X, μμ /μν/μ μ§λ³΄μ μ©μ΄
- μμ μ€κ³μ νμ μ€κ³
- μννΈμ¨μ΄ μν€ν
μ²μ νμ§ μμ±
- νμ§ νκ° μμμ μ’
λ₯
- μμ€ν μΈ‘λ©΄: μ±λ₯, 보μ, κ°μ©μ±, κΈ°λ₯μ±, μ¬μ©μ±, λ³κ²½ μ©μ΄μ±, νμ₯μ± λ±
- λΉμ¦λμ€ μΈ‘λ©΄: μμ₯ μ μμ±, λΉμ©κ³Ό νν, μμ μμ€ν μλͺ , λͺ©ν μμ₯, κ³΅κ° μΌμ λ±
- μν€ν μ² μΈ‘λ©΄: κ°λ μ 무결μ±, μ νμ±, μκ²°μ±, κ΅¬μΆ κ°λ₯μ±, λ³κ²½μ±, μνμ± λ±
- νμ§ νκ° μμμ μ’
λ₯
- νμ½(Contract)μ μν μ€κ³
- μ»΄ν¬λνΈλ₯Ό μ€κ³ν λ ν΄λμ€μ λν μ¬λ¬ κ°μ μ 곡μ ν μ μλλ‘ λͺ μΈν κ²
- λͺ
μΈμ ν¬ν¨λ 쑰건
- μ ν 쑰건(Precondition): μ€νΌλ μ΄μ μ΄ νΈμΆλκΈ° μ μ μ°Έμ΄ λμ΄μΌ ν 쑰건
- κ²°κ³Ό 쑰건(Postcondition): μ€νΌλ μ΄μ μ΄ μνλ ν λ§μ‘±λμ΄μΌ ν 쑰건
- λΆλ³ 쑰건(Invariant): μ€νΌλ μ΄μ μ΄ μ€νλλ λμ νμ λ§μ‘±λμ΄μΌ ν 쑰건
π’ κ³΅ν΅ λͺ¨λ
- μ¬λ¬ νλ‘κ·Έλ¨μμ 곡ν΅μΌλ‘ μ¬μ©ν μ μλ λͺ¨λ
- κ³΅ν΅ λͺ¨λ λͺ
μΈ κΈ°λ²μ μ’
λ₯
- μ νμ±(Correctness): μμ€ν ꡬν μ ν΄λΉ κΈ°λ₯μ΄ νμνλ€λ κ²μ μ μ μλλ‘ μ νν μμ±
- λͺ νμ±(Clarity): ν΄λΉ κΈ°λ₯μ μ΄ν΄ν λ μ€μμ μΌλ‘ ν΄μλμ§ μλλ‘ λͺ ννκ² μμ±
- μμ μ±(Completeness): μμ€ν ꡬνμ μν΄ νμν λͺ¨λ κ²μ κΈ°μ
- μΌκ΄μ±(Consistency): κ³΅ν΅ κΈ°λ₯λ€ κ° μνΈ μΆ©λμ΄ λ°μνμ§ μλλ‘ μμ±
- μΆμ μ±(Traceability): κΈ°λ₯μ λν μꡬμ¬νμ μΆμ², κ΄λ ¨ μμ€ν λ±μ κ΄κ³λ₯Ό νμ ν μ μλλ‘ μμ±
- μ¬μ¬μ©(Reuse)
- μ΄λ―Έ κ°λ°λ κΈ°λ₯λ€μ μλ‘μ΄ μμ€ν μ΄λ κΈ°λ₯ κ°λ°μ μ¬μ©νκΈ° μ ν©νλλ‘ μ΅μ ννλ μμ
- μ¬μ¬μ© κ·λͺ¨μ λ°λ₯Έ λΆλ₯
- ν¨μμ κ°μ²΄: ν΄λμ€λ λ©μλ λ¨μμ μμ€ μ½λλ₯Ό μ¬μ¬μ©
- μ»΄ν¬λνΈ: μ»΄ν¬λνΈ μ체μ λν μμ μμ΄ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ ν΅μ νλ λ°©μμΌλ‘ μ¬μ¬μ©
- μ ν리μΌμ΄μ : 곡ν΅λ κΈ°λ₯λ€μ μ 곡νλ μ ν리μΌμ΄μ μ 곡μ νλ λ°©μμΌλ‘ μ¬μ¬μ©
- ν¨κ³Όμ μΈ λͺ¨λ μ€κ³ λ°©μ
- κ²°ν©λ μ€μ΄κ³ μμ§λλ λμ¬μ λͺ¨λμ λ 립μ±κ³Ό μ¬μ¬μ©μ λμ
- 볡μ‘λμ μ€λ³΅μ±μ μ€μ΄κ³ μΌκ΄μ± μ μ§
- λͺ¨λμ κΈ°λ₯ μμΈ‘ κ°λ₯. μ§λμΉκ² μ νμ μ΄μ΄μλ μλ¨
- μ΄ν΄νκΈ° μ¬μ΄ ν¬κΈ°λ‘ κΈ°λ₯κ³Ό ꡬ쑰λ₯Ό λΆν΄
# λ§μΉλ©°..
μλλ μ λ§ λ³΄λ €κ³ λ ΈνΈ μ 리νλ λ΄μ©μ΄λΌμ νμ ν μ μ΄ λ§κΈ°λ ν κ±°κ³ μ€νλ μμ μ μμ΅λλ€. μ°Έκ³ μ©μΌλ‘λ§ λ΄μ£ΌμΈμ π
λ§μ΄ λΆμ‘±ν λ΄μ©μ΄μ ¨κ² μ§λ§ λμμ΄ λμ ¨λ€λ©΄ λκΈ ν λ²μ© λ¨κ²¨μ£Όμλ©΄ λ§μ΄ λΏλ―ν κ² κ°μ΅λλ€. ππ
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 5μ₯ μΈν°νμ΄μ€ ꡬν
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 6μ₯ νλ©΄ μ€κ³
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 7μ₯ μ ν리μΌμ΄μ ν μ€νΈ κ΄λ¦¬
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 8μ₯ SQL μμ©
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 9μ₯ μννΈμ¨μ΄ κ°λ° 보μ ꡬμΆ
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 10μ₯ νλ‘κ·Έλλ° μΈμ΄ νμ©
μκ° κ΄κ³μ λ ΈνΈ μ 리 λμ λ¬Έμ νμ΄λ‘ λ체... π’π’
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 11μ₯ μμ© SW κΈ°μ΄ μΈμ΄ νμ©
μκ° κ΄κ³μ λ ΈνΈ μ 리 λμ λ¬Έμ νμ΄λ‘ λ체... π’π’
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 12μ₯ μ νμννΈμ¨μ΄ ν¨ν€μ§
μκ° κ΄κ³μ λ ΈνΈ μ 리 λμ λ¬Έμ νμ΄λ‘ λ체... π’π’
'μ격μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 6μ₯ νλ©΄ μ€κ³ (0) | 2023.02.07 |
---|---|
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 5μ₯ μΈν°νμ΄μ€ ꡬν (0) | 2023.02.07 |
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 3μ₯ ν΅ν© ꡬν (0) | 2023.02.07 |
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 2μ₯ λ°μ΄ν° μ μΆλ ₯ ꡬν (0) | 2023.02.07 |
[μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ°] 1μ₯ μꡬμ¬ν νμΈ (0) | 2023.02.07 |
μμ€ν κ³΅κ° κ°μ¬ν©λλ€. π