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 ๋ ๋ฒจ์ผ ๊ฒ์ด๋ค.(๋ฌด์จ๋ง์ด์ง?ใ กใ ก;)