http://images.amazon.com/images/P/0471958697.01.PE_PIm.arrow,TopLeft,-2,-19_SCMZZZZZZZ_.jpg
0471958697 http://images.amazon.com/images/P/0471606952.01.PE_PIm.arrow,TopLeft,-2,-19_SCMZZZZZZZ_.jpg
0471606952


1. μκ° ¶
- 3κ°μ§ λ€λ₯Έ λ 벨(μννΈμ¨μ΄ ꡬ쑰,λͺ¨λ λμμΈ, idioms)μμ μ΄λ»κ² ν¨ν΄μ΄ λ°μνλμ§ μ΄ μ±
μ μμΈν λμ μλ€. μ΄λ¬ν ν΅ν©μ μΈ μ κ·Ό λ€μ μ΄λ‘ μ μΌκ±° κ°μ΄ 보μ΄μ§λ§, μ μλ 12κ°μ ν¨ν΄κ³Ό μ€μ λ‘ μ¬μ©λλ μμ λ₯Ό λ§μ΄ λ³΄μ¬ μ€λ€.
- μμΈν μκ°λ μλ§μ‘΄ μ¬μ΄νΈλ₯Ό μ°Έκ³ νλ©΄ μ’μ΅λλ€.
- λꡬλ κ°μ΄ μ°Έμ¬ νμλ λΆμ λ νμμ
λλ€.
- μ€κ° μ€κ°μ ν΄μμ΄ μλλ λΆλΆμ΄λ μλͺ» κΈ°μ ν λΆλΆ μμΌλ©΄ μμ ν΄μ£Όμλ©΄ κ°μ¬ νκ² μ΅λλ€. ^^;
2.1. 1. Patterns ¶
- ν¨ν΄μ λνμκ°μ μ΄μ±
μ ꡬμ±μ λν κ²λ±μ λ΄μ©μ΄ λμ¨λ€.
2.2. 2. Architectual Patterns ¶
- μννΈμ¨μ΄ ꡬ쑰μ μΈ κ΄μ μμ μ¬μ©λλ ν¨ν΄λ€μ΄ λμ¨λ€.
- ν¬κ² λ€κ°μ κ·Έλ£ΉμΌλ‘ λλ μ μλ€.
κ·Έλ£Ή | μ¬λ‘ ν¨ν΄ | μ€λͺ |
From Mud to Structure | Layer, Blackboard Pattern | μ 체μ μΈ μμ€ν μ μνΈ νλ ₯νλ νλΆ κ·Έλ£ΉμΌλ‘ λλμ΄μ κ΄λ¦¬ νλ€. |
Distributed Systems | Broken Patterns | use in distributed application |
Interactive Systems | Model-View-Controlled, Presentation-Abstraction-Control Pattern | - |
Adaptable Systems | Microkernel pattern | - |
2.2.1. Layers ¶
- μμ (Example) : μ΄ ν¨ν΄μ μ°λ¦¬κ° μ£Όμμμ νν λ§μ΄ λ³Ό μ μλ ν¨ν΄μ΄λ€. TCP/IPκ° κ·Έ λνμ μΈ μμΌ κ²μ΄λ€.
- νκ²½(Context) : λΆν΄κ° νμν ν° μμ€ν
- μκ° ν΄μΌν λ¬Έμ (Problem - balance in following forces)
- μ΅κ·Όμ μμ λλ μμ€λ κ·Έκ²μ΄ μν componentμλ§ μν₯μ μ£Όμ΄μΌμ§ λ€λ₯Έ componentμκΉμ§ μν₯μ λΌμ³μλ μλλ€.
- interfaceλ μμ μ μ΄μ΄μΌ νλ€.
- μμ€ν
μ κ° λΆλΆμ κ΅ν κ°λ₯ν΄μΌ νλ€. (Design for change in general is a major facilitator of graceful system evolution - μΌλ°μ μΌλ‘ λ³νμ λλΉν λμμΈμ νλκ²μ μ°μν μμ€ν
κ°λ°μ μ£Όμν μ΄μ§μμ΄λ€.)
- It may be necessary to build other systems at a later date with the same low-level issues as the system you are currently designing ( μ νν μλ―Έλ λͺ¨λ₯΄κ² μ, λκ° ν΄μμ’....)
- μ΄ν΄νκΈ° μ½κ³ μ μ§λ³΄μλ νκΈ° μ½κ² νκΈ° μν΄μ μ μ¬ν νμν κΈ°λ₯(responsibilities)μ κ·Έλ£Ήν νλ€.
- κΈ°μ€μ΄ λλ component λͺ¨μμ μλ€.
- component κ²½κ³κ° κ΅μ°¨ νλκ²μ μ±λ₯μ μ νλ₯Ό μ΄λνλ€. μλ₯Ό λ€μ΄ λ§μ μμ λ°μ΄ν°κ° λ μ΄μ΄λ₯Ό μ§λ λ λν μμ λ§μ κ΅μ°¨νλ component κ²½κ³λ₯Ό μ§λκ² λκΈ° λλ¬Έμ΄λ€.
- μ΄λ κ² λ μ΄μ΄λ‘ κΉ¨λμ΄ λλμ΄μ νλ‘κ·Έλ¨μ μ§λ©΄ νμΌλ‘ μμ
μ ν λ μ’λ λ₯λ₯ μ μ΄λ€.
- μ΅κ·Όμ μμ λλ μμ€λ κ·Έκ²μ΄ μν componentμλ§ μν₯μ μ£Όμ΄μΌμ§ λ€λ₯Έ componentμκΉμ§ μν₯μ λΌμ³μλ μλλ€.
- ν΄κ²°μ±
(Solution) : μμ μ μμ€ν
μ μ λΉν μ«μμ λ μ΄μ΄λ‘ λλκ³ κ° λ μ΄μ΄λ₯Ό μλ§λ μμμ λ§κ² μλλ€
- ꡬ쑰(Structure) : λ μ΄μ΄λ λ€μκ³Ό κ°μ κΈ°λ³Έ ꡬ쑰λ₯Ό κ°μ§κ³ μλ€.
- Class : λ μ΄μ΄ J
- ν΄μΌν κΈ°λ₯(responsibility)
- λ μ΄μ΄ J+1μ μν΄μ μ¬μ©λ μλΉμ€λ₯Ό μ 곡νλ€.
- νλΆ μμ
μ λ μ΄μ΄ J-1μκ² λκΈ΄λ€.(μμνλ€)
- λ μ΄μ΄ J+1μ μν΄μ μ¬μ©λ μλΉμ€λ₯Ό μ 곡νλ€.
- νλ ₯μ(collaborator) : λ μ΄μ΄ J-1
- λ μ΄μ΄ ν¨ν΄μ μ€μν ꡬ쑰μ μΈ νΉμ§μ λ μ΄μ΄ Jλ μ€μ§ λ μ΄μ΄ J+1μ μν΄μλ§ μ¬μ©λ μ μλ€λ μ μ΄λ€. (μ€νμ΄λ μνμ λΉκ΅ν μ μλ€)
- Class : λ μ΄μ΄ J
- Dynamics
- Scenario1 - top-down communication, κ°μ₯ μ μλ €μ§κ²μ΄λ€. ν΄λΌμ΄μΈνΈκ° λ μ΄μ΄ Nμκ² μμ²μ νλ€. κ·Έλ¬λ©΄ λ μ΄μ΄ Nμ νλ‘ λͺ¨λ μμ
μ ν μ μκΈ° λλ¬Έμ νλΆ μμ
μ λ μ΄μ΄ N-1μκ² λκΈ΄λ€. κ·Έλ¬λ©΄ λ μ΄μ΄ N-1μ μμ μ μΌμ νκ³ λ μ΄μ΄ N-2μκ² νλΆ μμ
μ λκΈ°κ³ , μ΄λ°μμ κ³Όμ μ΄ λ μ΄μ΄ 1μ λλ¬ν λκΉμ§ μ΄λ£¨μ΄ μ§λ€. κ·Έλμ κ°μ₯ λμ μμ€μ μλΉμ€κ° μνλλ€. λ§μ½ νμνλ€λ©΄ λ€μν μμ²μ λν μλ΅λ€μ΄ λ μ΄μ΄ 1μμ λ μ΄μ΄ 2, μ΄λ°μμΌλ‘ λ μ΄μ΄ Nμ λλ¬ν λκΉμ§ μ΄λ£¨μ΄μ§λ€. μ΄λ¬ν top-down μν΅μ νΉμ§μ λ μ΄μ΄ Jλ μ’
μ’
λ μ΄μ΄ J+1λ‘λΆν° μ¨ νλμ μμ²μ μ¬λ¬κ°μ μμ²μΌλ‘ λ°κΏμ λ μ΄μ J-1μκ² μ νλ€. μ΄λ λ μ΄μ΄ Jκ° λ μ΄μ΄ J-1λ³΄λ€ λ μΆμμ μ΄κΈ° λλ¬Έμ΄λ€. λ μΆμμ μΈκ²μ΄ μ¬λ¬κ° λͺ¨μ¬μ λ μΆμμ μΈκ²μ΄ λλ κ²μ μκ°ν΄λ³΄λ©΄ μ΄ν΄κ° κ°κ²μ΄λ€.(μλ₯Ό λ€μ΄ 볡μ‘ν μμΌ νλ‘κ·Έλλ°μ μλ°μμλ κ°λ¨ν λͺ
λ Ήμ΄λ‘ κΈλ°© νλ€.)
- Scenario2 - bottom-up communication, λ μ΄μ΄ 1μμ μμνλ μ°μμ μΈ λμλ€μ΄λ€. top-down communicatinκ³Ό ν·κ°λ¦΄ μλ μλλ° top-down communicationμ μμ²(requests)μ μν΄μ λμνμ§λ§, bottom-up communicationμ ν΅μ§(notifications)μ μν΄μ λμνλ€. μλ₯Ό λ€μ΄μ μ°λ¦¬κ° ν€λ³΄λ μνμ μΉλ©΄, λ 벨1 ν€λ³΄λμμ μ΅μμ λ 벨 Nμ μ
λ ₯μ λ°μλ€κ³ ν΅μ§λ₯Ό νλ€. bottom-up communicatinμμλ top-down communicationκ³Όλ λ°λλ‘ μ¬λ¬κ°μ bottom-up ν΅μ§λ€(notifications)μ νλμ ν΅μ§λ‘ μμΆλμ΄μ μμ λ μ΄μ΄λ‘ μ λ¬λκ±°λ κ·Έλλ‘ μ λ¬λλ€.
- Scenario3 - λ μ΄μ΄ N-1μ΄ cacheλ‘ μμ©νμ¬μ, λ μ΄μ΄ Nμ μμ²μ΄ λ μ΄μ΄ N-1μκ²λ§ μ λ¬λκ³ λμ΄μ νμ λ μ΄μ΄λ‘ μ λ¬λμ§ μλλ€. μμ²μ 보λ΄κΈ°λ§ νλ λ μ΄μ΄λ€μ΄ μνκ° μλ(stateless) λ°λ©΄μ μ΄λ¬ν cache λ μ΄μ΄λ μν μ 보λ₯Ό μ μ§νλ€. μνκ° μλ λ μ΄μ΄λ€μ νλ‘κ·Έλ¨μ κ°λ¨νκ² νλ€λ μ΄μ μ΄ μλ€.
- Scenario4 - λ μ΄μ΄ 1μμ eventκ° κ°μ§λμμ§λ§ λ μ΄μ΄ 3κΉμ§λ§ κ°κ³ λμ΄μ κ°μ§ μλ κ²½μ°μ κ°μ κ²½μ°, μλ₯Ό λ€μ΄μ μ±κ²© κΈν ν΄λΌμ΄μΈνΈκ° λ°μ΄ν°λ₯Ό μμ²νκ³ , λͺ» κΈ°λ€λ¦¬κ³ κΈλ°© λ€μ μμ²νλ κ²½μ°μ 첫λ²μ§Έ μμ²μΌλ‘ μλ΅ λ°μ΄ν°κ° κ°λ€κ° λλ²μ§Έ μμ²μ΄ μ€λκ²κ³Ό κ΅μ°¨νκ² λλ€. μ΄λ λλ²μ§Έ μμ²λ 첫λ²μ§Έ μμ²κ³Ό κ°μ κ²μ΄κΈ°μ μ΄λ μ΄ μμ²μ΄ λμ΄μ κ°μ§ μκ² νλ€.
- Scenario 5 - Nκ°μ λ μ΄μ΄λ€λ‘ μ΄λ£¨μ΄μ§ 2κ°μ stack λ€μ΄ μλ‘ μν΅ νλ κ²½μ°μ΄λ€. ν΅μ νλ‘ν μ½μ΄ λνμ μΈ μμ΄λ€. νμͺ½μ λ μ΄μ΄ Nμμ 보λ΄λ μμ²μ κ²°κ΅ νμ λ μ΄μ΄ 1(νλμ¨μ΄ λ 벨)μ ν΅ν΄μ μλνΈ νμ λ μ΄μ΄1λ‘ μ ν΄μ§κ³ , μ΄κ²μ λ N λ μ΄μ΄λ‘ μ μ¬λΌκ°λ€.
- Scenario1 - top-down communication, κ°μ₯ μ μλ €μ§κ²μ΄λ€. ν΄λΌμ΄μΈνΈκ° λ μ΄μ΄ Nμκ² μμ²μ νλ€. κ·Έλ¬λ©΄ λ μ΄μ΄ Nμ νλ‘ λͺ¨λ μμ
μ ν μ μκΈ° λλ¬Έμ νλΆ μμ
μ λ μ΄μ΄ N-1μκ² λκΈ΄λ€. κ·Έλ¬λ©΄ λ μ΄μ΄ N-1μ μμ μ μΌμ νκ³ λ μ΄μ΄ N-2μκ² νλΆ μμ
μ λκΈ°κ³ , μ΄λ°μμ κ³Όμ μ΄ λ μ΄μ΄ 1μ λλ¬ν λκΉμ§ μ΄λ£¨μ΄ μ§λ€. κ·Έλμ κ°μ₯ λμ μμ€μ μλΉμ€κ° μνλλ€. λ§μ½ νμνλ€λ©΄ λ€μν μμ²μ λν μλ΅λ€μ΄ λ μ΄μ΄ 1μμ λ μ΄μ΄ 2, μ΄λ°μμΌλ‘ λ μ΄μ΄ Nμ λλ¬ν λκΉμ§ μ΄λ£¨μ΄μ§λ€. μ΄λ¬ν top-down μν΅μ νΉμ§μ λ μ΄μ΄ Jλ μ’
μ’
λ μ΄μ΄ J+1λ‘λΆν° μ¨ νλμ μμ²μ μ¬λ¬κ°μ μμ²μΌλ‘ λ°κΏμ λ μ΄μ J-1μκ² μ νλ€. μ΄λ λ μ΄μ΄ Jκ° λ μ΄μ΄ J-1λ³΄λ€ λ μΆμμ μ΄κΈ° λλ¬Έμ΄λ€. λ μΆμμ μΈκ²μ΄ μ¬λ¬κ° λͺ¨μ¬μ λ μΆμμ μΈκ²μ΄ λλ κ²μ μκ°ν΄λ³΄λ©΄ μ΄ν΄κ° κ°κ²μ΄λ€.(μλ₯Ό λ€μ΄ 볡μ‘ν μμΌ νλ‘κ·Έλλ°μ μλ°μμλ κ°λ¨ν λͺ
λ Ήμ΄λ‘ κΈλ°© νλ€.)
- μ€ν(implementation) - μλ κ³Όμ μ λͺ¨λ applicationμ λ°λμ κ°μ₯ μ’μ λ°©λ²μ΄λΌκ³ ν μλ μλ€. μ’
μ’
bottom-upμ΄λ yo-yo λ°©λ²μΌλ‘ μ κ·Όνλκ²μ΄ λ μ’μμ§λ λͺ¨λ₯Έλ€. μμ μ applicationμ νμνλ€ μΆμ κ³Όμ μ μ§μ΄μ νλ©΄ λλ€.
- task(κ³Όμ
,μΌ) λ€μ λ μ΄μ΄μ λ°°μΉνκΈ° μν μΆμμ μΈ κΈ°μ€μ μ μ νμ¬λΌ. μ€μ μ μΈ μννΈμ¨μ΄ κ°λ°μμ μ°λ¦¬λ μ’
μ’
μΆμμ μΈ κΈ°μ€λ€μ νΌν©μ μ¬μ©νλ€. μλ₯Όλ€μ΄μ νλμ¨μ΄μ μΈ κ΄μ μμ μ μμ€μ λ 벨λ€μ λͺ¨μ΅μ μ νκ³ , κ°λ
μ μΈ λ³΅μ‘μ±μΌλ‘ κ³ μμ€μ λ 벨μ μ νλ€.
- λΉμ°μ μΆμμ μΈ κΈ°μ€μ λ°λΌμ μΆμ λ 벨λ€μ κ°―μλ₯Ό μ νμ¬λΌ. trade-offλ₯Ό μκ°ν΄λ³΄λ©΄μ λ μ΄μ΄λ₯Ό ν΅ν©νκ±°λ λΆλ¦¬ν΄λΌ. λ무 λ§μ λ μ΄μ΄λ νλ‘κ·Έλ¨μ κ³Όμ€ν λΆλ΄μ΄ λκ³ , λ무 μ μ λ μ΄μ΄λ ꡬ쑰μ μΌλ‘ μ’μ§ μκ² λλ€.
- λ μ΄μ΄λ€μ μ΄λ¦μ μ νκ³ κ° λ μ΄μ΄μ tasks(κ³Όμ
)μ μ ν΄ μ£Όμ΄λΌ. λͺ¨λ λ μ΄μ΄μ tasksλ μμ λ³΄λ€ λμ λ μ΄μ΄λ₯Ό λμμΌ νλ€.
- services λ€μ λͺ
νν νμ¬λΌ. κ°μ₯ μ€μν ꡬν μμΉμ λ μ΄μ΄λ€μ΄ μ격νκ² κ°μ λΆλ¦¬ λμ΄μΌ νλ€λ μ μ΄λ€. λ μ΄μ΄λ€ μ¬μ΄μ 곡μ λλ λͺ¨λμ μ격ν layering μ½νκ² νλ€. κ·Έλ¦¬κ³ λμ λ μ΄μ΄λ³΄λ€ λμ λ μ΄μ΄μ λ λ§μ serviceλ₯Ό λ£λκ²μ΄ λ λλ€.
- Refine layering. μμ 1~4λ² κ³Όμ μ λ°λ³΅ νμ¬λΌ.
- task(κ³Όμ
,μΌ) λ€μ λ μ΄μ΄μ λ°°μΉνκΈ° μν μΆμμ μΈ κΈ°μ€μ μ μ νμ¬λΌ. μ€μ μ μΈ μννΈμ¨μ΄ κ°λ°μμ μ°λ¦¬λ μ’
μ’
μΆμμ μΈ κΈ°μ€λ€μ νΌν©μ μ¬μ©νλ€. μλ₯Όλ€μ΄μ νλμ¨μ΄μ μΈ κ΄μ μμ μ μμ€μ λ 벨λ€μ λͺ¨μ΅μ μ νκ³ , κ°λ
μ μΈ λ³΅μ‘μ±μΌλ‘ κ³ μμ€μ λ 벨μ μ νλ€.
~cpp μ»΄ν¬λνΈλ μλΉμ€κ° μ¬μ©λλ κ΄κ³ | λ μ΄μ΄λ€ |=> μ΄κ²λ€μ μκ° νκ³ λμ define components and service λ μ΄μ΄λ€μ μλΉμ€ | μ΄ μμκ° λ°λλ κ²μ μλͺ»λ κ³Όμ μ΄λ€.
- κ° λ μ΄μ΄μ λν μΈν°νμ΄μ€λ₯Ό λͺ
νν ν΄λΌ (κ°λ₯νν black-box μ κ·Όμ μ¬μ©νλ κ²μ΄ μ’λ€, μ΄κ²μ΄ μμ€ν
λ°μ μ λμμ£ΌκΈ° λλ¬Έμ΄λ€. ν¨μ¨μ΄λ λ€λ₯Έ λ μ΄μ΄μ λ΄λΆμ μ κ·Όν νμκ° μμλλ μμΈμ΄λ€.)
- κ° λ μ΄μ΄λ₯Ό 체κ³ν νμ¬λΌ. μ΄λ€ λ μ΄μ΄κ° 볡μ‘νλ©΄ componentλ€λ‘ λλμ΄ μ ΈμΌ νλ€.
- μΈμ ν λ μ΄μ΄λ€ μ¬μ΄μ μν΅μ λͺ
νν νμ¬λΌ.
- Decouple adjacent layers
- λ³ν(variants)
- Relaxed Layered System : μ΄μμ€ν
μ ν΅ν΄μ μ»μ μ μ°μ±κ³Ό μ±λ₯μ ν₯μμ μ μ§λ³΄μ λ₯λ ₯μ μ νλ₯Ό κ°μ Έμ¨λ€. application μννΈμ¨μ΄ λ³΄λ€ infrastructure(μꡬμ μΈ) μμ€ν
μμ μμ£Ό λ³Έλ€. UNIX, X Window Systemκ° κ·Έμμ΄λ€.
- Layering Through Inheritance : μμ κ΄κ³λ‘ λ μ΄μ΄ ν¨ν΄μ ꡬν. νμ¬ λ¨λ OOPλ‘ ν μ μλ€.
- Relaxed Layered System : μ΄μμ€ν
μ ν΅ν΄μ μ»μ μ μ°μ±κ³Ό μ±λ₯μ ν₯μμ μ μ§λ³΄μ λ₯λ ₯μ μ νλ₯Ό κ°μ Έμ¨λ€. application μννΈμ¨μ΄ λ³΄λ€ infrastructure(μꡬμ μΈ) μμ€ν
μμ μμ£Ό λ³Έλ€. UNIX, X Window Systemκ° κ·Έμμ΄λ€.
- μ΄ ν¨ν΄μ μλ €μ§ μ¬μ©μ (Known Uses)
- Virtual Muchines
- APIs
- Information System(IS)
- Windows NT
- Virtual Muchines
- κ²°λ‘
- μ₯μ
- λ μ΄μ΄μ μ¬νμ© - νλ‘κ·Έλλ¨Έλ€μ νμ¬ μ‘΄μ¬νλ λ μ΄μ΄κ° μμ μ λͺ©μ μ λ§μ§ λ³λλ€κ³ μ΄λ―Έ μλκ²μ μ¬μ¬μ© ν기보λ€λ μλ‘ μ§λ κ²½μ°κ° λ§λ€. κ·Έλ¬λ νμ¬ μ‘΄μ¬νλ λ μ΄μ΄λ₯Ό μ¬μ¬μ©(black-box reuse)νλ κ²μ κ°λ°μ λλ λ
Έλ ₯κ³Ό νλ‘κ·Έλ¨μ κ²°μ λ€μ κ·Ήμ μΌλ‘ κ°μ μν¬ μ μλ€.
- κΈ°μ€μ μ§μνλ€.
- Dependescies are kept local : μμ‘΄μ±μ΄ νΉμ λΆλΆμλ§ κ±Έμ³ μκΈ° λλ¬Έμ μ΄λ κ² λλ€. λ°λΌμ μμ€ν
μ΄ portabilityνκ² λλ€.
- Exchangeability : νΉμ λ μ΄μ΄λ₯Ό μ½κ² λ°κΏ μ μλ€. κ·Έκ²μ λ°κΏλ μ 체μ μΌλ‘ λ€λ₯Έ λΆλΆμ μλ°κΏλ λλ€. λ°κΎΈλ κ²μ λΉμ°ν κ·Έ λ°κΏ λμ λ μ΄μ΄μ μΈν°νμ΄μ€λ°λ‘ ꡬνλμ΄ μλ κ²μ΄μ΄μΌ νλ€.
- λ μ΄μ΄μ μ¬νμ© - νλ‘κ·Έλλ¨Έλ€μ νμ¬ μ‘΄μ¬νλ λ μ΄μ΄κ° μμ μ λͺ©μ μ λ§μ§ λ³λλ€κ³ μ΄λ―Έ μλκ²μ μ¬μ¬μ© ν기보λ€λ μλ‘ μ§λ κ²½μ°κ° λ§λ€. κ·Έλ¬λ νμ¬ μ‘΄μ¬νλ λ μ΄μ΄λ₯Ό μ¬μ¬μ©(black-box reuse)νλ κ²μ κ°λ°μ λλ λ
Έλ ₯κ³Ό νλ‘κ·Έλ¨μ κ²°μ λ€μ κ·Ήμ μΌλ‘ κ°μ μν¬ μ μλ€.
- λΆλ¦¬ν μ (liability)
- cascades of changing behavior : λ μ΄μ΄λ₯Ό λ°κΎΈλκ²λΏλ§ μλλΌ κ·Έ μΈν°νμ΄μ€λ₯Ό λ°κΏκ²½μ°μ λ€λ₯Έ λΆλΆκΉμ§ μμ ν΄μ€μΌ νλ€λ λ§ κ°λ€.
- lower efficiency : μ¬λ¬κ°μ λ μ΄μ΄λ₯Ό μ§λμΌ νλκΉ μκ°μ΄ λ 걸리λ κ²μ λΉμ°ν μΌμ΄λ€.
- Unnecessary work : νμμλ μΌλ νλ κ²½μ°κ° μλ€.
- λ μ΄μ΄λ₯Ό μ νν ꡬμΆνλκ²μ΄ μ΄λ €μ΄ μΌμ΄λ€.
- cascades of changing behavior : λ μ΄μ΄λ₯Ό λ°κΎΈλκ²λΏλ§ μλλΌ κ·Έ μΈν°νμ΄μ€λ₯Ό λ°κΏκ²½μ°μ λ€λ₯Έ λΆλΆκΉμ§ μμ ν΄μ€μΌ νλ€λ λ§ κ°λ€.
- μ₯μ
- μ견 : μ΄ layer ν¨ν΄μ μ¬νμ μΈ κ²κ³Ό κ²°λΆμμΌμ μκ°νλ©΄ κ΄λ£μ μ λΉμ·νλ€κ³ μκ°νλ€. κ΅μ²΄ κ°λ₯νκ³ , λ¨κ³μ μΌλ‘ μ¬λΌκ°κ³ , λ΄λ €κ°κ³ λ μ¬λ¬κ°μ§ μ μ΄ μ μ¬νλ€. μ΄ ν¨ν΄μ΄ μ¬μ©νλ μ¬λλ€μ΄ κ΄λ£μ μμ μ°©μν΄μ μ΄ ν¨ν΄μ μ¬μ©νλ κ²μ μλκ² μ§λ§ νμ¬νΌ κ·Έλ¬ν μ μ¬μ μ λ°κ²¬νλκΉ μ κΈ°νλ€.
2.2.2. Pipes and Filters ¶
- μμ : μ¬κΈ°μλ νλ‘κ·Έλλ° μΈμ΄λ₯Ό μλ‘ λ€μ΄μ μ€λͺ
νλ€.
- νκ²½ : λ°μ΄ν° νλ¦μ μ²λ¦¬
- μκ°ν΄μΌν λ¬Έμ
- μΆνμ μμ€ν
ν₯μμ΄ μ¬μ©μμ μν΄μ μ‘°μ°¨, μ²λ¦¬ λ¨κ³(step)λ€μ λ°κΎΈκ±°λ μ¬μ‘°ν© νλκ²μΌλ‘μ κ°λ₯ν΄μΌ νλ€.
- μμ μ²λ¦¬ λ¨κ³κ° ν° components λ³΄λ€ λ€μν νκ²½μ μ¬μ¬μ© νκΈ° μ’λ€.
- μΈμ νμ§ μμ λ¨κ³λ μ 보λ₯Ό 곡μ νμ§ μλλ€.
- μλ₯Ό λ€μ΄μ λ€νΈμν¬ μ°κ²°μ΄λ μ¨λ μ 보λ₯Ό μ 곡νλ μΌμμ κ°μ΄ λ€μν μ
λ ₯ λ°μ΄ν source κ° μ‘΄μ¬νλ€.
- μ΅μ’
κ²°κ³Όλ₯Ό λ€μν λ°©λ²μΌλ‘ μ μ₯νκ±°λ λνλ΄λ κ²μ΄ κ°λ₯ν΄μΌ νλ€.
- λ± μ¬λ¬κ°μ§..
- μΆνμ μμ€ν
ν₯μμ΄ μ¬μ©μμ μν΄μ μ‘°μ°¨, μ²λ¦¬ λ¨κ³(step)λ€μ λ°κΎΈκ±°λ μ¬μ‘°ν© νλκ²μΌλ‘μ κ°λ₯ν΄μΌ νλ€.
- μ΄ ν¨ν΄μ : data source - filter - pipes - filter - data sink, μ μμλ‘ λμ΄ μκ³ , κ° νν°μμλ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ ν¨μκ° μμ μ μλ€. λ μ΄μ΄ ν¨ν΄κ³Ό λΉμ·ν μ λ 보μ΄μ§λ§, μ΄ ν¨ν΄μ νΉμ§μ μ¬μ΄ μ¬μ‘°ν©κ³Ό μ¬μ¬μ©μ±μ΄λ€. μλ¬λ₯Ό μ²λ¦¬νλ κ΄μ κ³Ό μμ€ν
μ μ λ’°μ±μ λ°μ§λ©΄ λ μ΄μ΄κ° λ λλ€.
- μ견 : μ΄ ν¨ν΄μ μ°μ²΄κ΅κ³Ό λΉμ·ν΄ 보μλ€. γ
‘γ
‘;,
2.2.3. BlackBoard ¶
- μμ : μ¬κΈ°μλ μμ±μΈμ μμ€ν
μ μλ‘ λ€μλ€. μμ±μΈμ νλ‘κ·Έλ¨μ λ¨μ§ νλμ λ¨μ΄λ₯Ό λ°μλ€μΌ λΏλ§ μλλΌ κ΅¬λ¬Έκ³Ό λ¨μ΄κ° νΉμ ν applicationμ νμν λ¨μ΄λ κ΅¬λ¬Έλ‘ μ λ§λ κ²μΌλ‘ μ νλ λ¬Έμ₯ μ 체λ₯Ό λ°μ λ€μΈλ€. μνλ outputμ κ·Έ μμ± μΈμνκ²μ λ§λ κΈ°κ³μ μΈ ννμΌλ‘ λ°κΎΈλ κ²μΈλ° μ΄ λ³ν κ³Όμ μλ μμ±μ μνμ μΌλ‘ μΈμνλ κ²κ³Ό, μΈμ΄νμ μΈ λ©΄μμ μΈμνλκ²κ³Ό, ν΅κ³μ μΈ μ λ¬Έμ±μμ μΈμνλ κ²μ΄ νμνλ€.
- νκ²½ : μ λΉν solutionμ΄ μμ§ μλ μ±μνμ§ μμ μμ
- μκ°ν΄μΌν λ¬Έμ : κ°κ°μ λ¬Έμ μ λν ν΄κ²°μ±
μ λ€λ₯Έ ννμ΄λ paradigms μ΄ νμνλ€. λ§μ κ²½μ°μ μ΄λ»κ² 'λΆλΆμ μΈ λ¬Έμ λ€μ νμ΄μ£Όλ ν΄κ²°μ±
'μ΄ μ΄λ»κ² μ‘°ν©λμ΄μΌ νλμ§μ λν΄μ 미리 μ μλ μ λ΅μ μλ€. μλμ λ΄μ©μ μ΄λ° μ’
λ₯μ λ¬Έμ λ₯Ό νΈλλ° μν₯μ λΌμ§μΉλ force(μ΄ ν¨ν΄μ΄ μ¬μ©λλ κ²½μ°?)λ€μ΄λ€.
- μ λΉν μκ°μ μμ ν ν΄κ²°μ±
μ μ°Ύλ κ²μ΄ λΆκ°λ₯ νλ€ - 10κ°μ λ¨μ΄(1000κ°μ€ νλ)λ₯Ό μ‘°ν©νμ¬ κ°λ₯ν ꡬ문μ μ=>(1000)μ 10μΉ κ³Ό κ°μ μ
- κ·Έ μμμ΄ λ―Έμ±μν΄μ, κ°μ νλΆ taskμ μ¬λ¬κ°μ§ μκ³ λ¦¬μ¦μ μ¬μ©νλ€.
- κ° λΆλΆμ λ¬Έμ λ₯Ό νλ λ€μν μκ³ λ¦¬μ¦μ΄ μ‘΄μ¬νλ€.
- inputμ intermediate μ λ§μ§λ§ resultμ λ§μ°¬κ°μ§λ‘ λ€μν ννμ΄ μλ€. μκ³ λ¦¬μ¦λ€μ λ€μν paradigmλ€μ μν΄μ μνλλ€.
- νλμ μκ³ λ¦¬μ¦μ λ³΄ν΅ λ€λ₯Έ μκ³ λ¦¬μ¦μ κ²°κ³Ό μμμ μλνλ€.
- λΆμ νν λ°μ΄ν°μ κ·Όμ¬μ μΈ ν΄κ²°μ±
(solution)λ€μ΄ ν¬ν¨λλ€.
- κ°κ° λΆλ¦¬λ μκ³ λ¦¬μ¦μ μ±μ©νλ μ±μ©νλ κ²μ μ μ¬μ μΈ νν κ΄κ³λ₯Ό μ λνλ€.
- λͺ¨λ λΆλΆμ μΈ λ¬Έμ λ€μ κ°μ knowledge ννμ μ¬μ©νμ¬ ν΄κ²°λλ€. κ·Έλ¬λ inputμΌλ‘ λ€μν ννμ΄ μ¬ μ μλ€.
- μ λ¬Έμ μΈ μμ€ν
ꡬ쑰λ application of knowledgeμ λν΄μ λ¨μ§ νλμ μΆλ‘ μμ§μ μ 곡νλ€. λ€μν ννμ λν λ€μν λΆλΆμ μΈ λ¬Έμ λ€μ λΆλ¦¬λ μΆλ‘ μμ§μ νμλ‘ νλ€.
- -
- μ λΉν μκ°μ μμ ν ν΄κ²°μ±
μ μ°Ύλ κ²μ΄ λΆκ°λ₯ νλ€ - 10κ°μ λ¨μ΄(1000κ°μ€ νλ)λ₯Ό μ‘°ν©νμ¬ κ°λ₯ν ꡬ문μ μ=>(1000)μ 10μΉ κ³Ό κ°μ μ
- ν΄κ²°μ±
(solution) : Blackboard ꡬ쑰μ λ°νμ κΉλ¦° κ°λ
μ 곡λμ λ°μ΄ν° ꡬ쑰μ λν΄μ νλμ μΌλ‘ μλνλ λ
립λ νλ‘κ·Έλ¨λ€μ μ§ν©μ΄λ€. κ·Έ λ
립μ μΈ νλ‘κ·Έλ¨λ€μ μλ‘ λ€λ₯Έ νλ‘κ·Έλ¨μ νΈμΆνμ§ μκ³ λν κ·Έκ²μ νλμ λν΄ λ―Έλ¦¬ μ μλ μμλ μλ€. λμ μ μμ€ν
μ λ°©ν₯μ μ£Όλ‘ νμ¬μ μνλ μ§ν(progress)μ μν΄ κ²°μ λλ€. λ°μ΄ν°-κ΄λ¦¬ μ‘°μ’
체κ³(data-directed control regime)λ opportunistic problem solving μ΄λΌκ³ λ λΆλ¦°λ€. moderator(μ€μ¬μ) componentλ λ§μ½ νλ μ΄μμ componentκ° contributionμ λ§λ€μ μλ€λ©΄ νλ‘κ·Έλ¨λ€μ΄ μ€νλλ μμλ₯Ό κ²°μ νλ€.
- ꡬ쑰 : μμ μ μμ€ν
μ blackboard(knowledge sourceλ€μ μ§ν©, control components)λΌκ³ λΆλ¦¬μ°λ componentλ‘ λλμ΄λΌ. blackboardλ μ€μ λ°μ΄ν° μ μ₯μμ΄λ€. solution spaceμ control dataλ€μ μμλ€μ΄ μ¬κΈ°μ μ μ₯λλ€. νλμ hypothesisλ λ³΄ν΅ μ¬λ¬κ°μ§ μ±μ§μ΄ μλ€. κ·Έ μ±μ§λ‘λ μΆμ λ 벨과 μΆμΈ‘λλ κ°μ€μ μ¬μ€ μ λ λλ κ·Έ κ°μ€μ μκ° κ°κ²©(걸리λ μκ°μ λ§νλκ±° κ°λ€.)μ΄λ€. 'part-of'λλ'in-support of'μ κ°μ΄ κ°μ€λ€ μ¬μ΄μ κ΄κ³λ₯Ό λͺ
νμ΄ νλ κ²μ λ³΄ν΅ μ μ©νλ€. blackboard λ 3μ°¨μ λ¬Έμ 곡κ°μΌλ‘ λ³Ό μλ μλ€. XμΆ - time, YμΆ - abstraction, ZμΆ - alternative solution. knowledge sourceλ€μ μ§μ μ μΌλ‘ μν΅μ νμ§ μλλ€. κ·Έλ€μ λ¨μ§ blackboardμμ μ½κ³ μΈλΏμ΄λ€. κ·Έλ¬λ―λ‘ knowledge source λ€μ blackboard μ vocabularyλ€μ μ΄ν΄ν΄μΌ νλ€. κ° knowledge sourceλ€μ conditionλΆλΆκ³Ό actionλΆλΆμΌλ‘ λλ μ μλ€. condition λΆλΆμ knowledge sourceκ° κΈ°μ¬λ₯Ό ν μ μλμ§ κ²°μ νκΈ° μν΄μ blackboardμ μ μΌλ©΄μ νμ¬ solution process μ μνλ₯Ό κ³μ°νλ€. action λΆλΆμ blackboardμ λ΄μ©μ λ°κΏ μ μλ λ³νλ₯Ό μΌμΌν¨λ€. control component λ 루νλ₯Ό λλ©΄μ blackboardμ λνλλ λ³νλ₯Ό κ΄μ°°νκ³ λ€μμ μ΄λ€ actionμ μ·¨ν μ§ κ²°μ νλ€. blackboard componentλ inspectμ updateμ λκ°μ§ procedureλ₯Ό κ°μ§κ³ μλ€.
~cpp Class : BlackBoard Responsibility : Manages central data Collaborators : - Class : Knowledge Source Responsibility : Evaluates its own applicability, Computes a result, Updates Black board Collaborators : Blackboard Class : Control Responsibility : Monitors Blackboard, Schedules Knowledge Source activations Collaborator : Blackboard, Knowledge Source
- Dynamices(λμ)
- λ€μ μλμ λ΄μ©λ€μ blackboard ꡬ쑰μ νλμ λν μμ μ΄λ€.
- control componentμ main loofκ° μμλλ€.
- nextSource() λ¨Όμ blackboardλ₯Ό κ΄μ°°ν¨μΌλ‘μ¨ μ΄λ€ knowledge sourceκ° μ μ¬μ±μλ 곡νμμΈμ§ κ²°μ νλ€.
- nextSource() κ° ν보 knowledge sourceμ condition λΆλΆμ λΆλ¬λΈλ€.
- control componentλ λΆλ¬λΌ knowledge sourceμ μμΌλ‘μ μμ
μ μ¬μ©λ νλμ hypothesisλ hypothesis μ§ν©μ μ ννλ€. μμ μμλ condition λΆλΆμ κ²°κ³Όμ μν΄μ κ·Έ μ νμ΄ μ΄λ£¨μ΄μ‘λ€.
- control componentμ main loofκ° μμλλ€.
- λ€μ μλμ λ΄μ©λ€μ blackboard ꡬ쑰μ νλμ λν μμ μ΄λ€.
- ꡬν(implementation) : blackboard patternμ ꡬννλ €λ©΄ λ€μκ³Ό κ°μ λ¨κ³λ₯Ό μννμ¬λΌ.
- 1.λ¬Έμ (problem)λ₯Ό μ μ νμ¬λΌ
- λ¬Έμ μ μμκ³Ό knowledgeμ μΌλ°μ μΈ μμλ€μ λͺ
νν νλ κ²μ ν΄κ²°μ±
(solution)μ λ°κ²¬νλλ° νμνλ€.
- μμ€ν
μ λν inputμ μ λ°νκ² μ‘°μ¬νμ¬λΌ.
- μμ€ν
μ outputμ μ μνμ¬λΌ
- μ¬μ©μκ° μμ€ν
κ³Ό μ΄λ»κ² μλ‘ μμ©νλμ§ μμΈν λ§νμ¬λΌ.
- λ¬Έμ μ μμκ³Ό knowledgeμ μΌλ°μ μΈ μμλ€μ λͺ
νν νλ κ²μ ν΄κ²°μ±
(solution)μ λ°κ²¬νλλ° νμνλ€.
- 2.κ·Έ λ¬Έμ μ λν solution space(ν΄κ²° 곡κ°)μ μ μνμ¬λΌ.
- 1.λ¬Έμ (problem)λ₯Ό μ μ νμ¬λΌ
~cpp top-level solution - highest abstraction level imtermediate solution - other level(except highest abstraction level) complete solution - solution which solve whole problem partial solution - solution which solve part of the problem complete solutionμ intermediate λ 벨μ μν μ μκ³ , partial solutionμ μλ§λ top λ λ²¨μΌ κ²μ΄λ€.(무μ¨λ§μ΄μ§?γ ‘γ ‘;)