E D R , A S I H C RSS

Pattern Oriented Software Architecture

NoSmok:OpeningStatement ๋ถ€๋ถ„

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


1. †Œ๊ฐœ

  • 3๊ฐ€ง€ ๋‹ค๋ฅธ ๋ ˆ๋ฒจ(†Œ”„Šธ›–ด ๊ตฌกฐ,๋ชจ๋“  ๋””žธ, idioms)—„œ –ด๋–ป๊ฒŒ Œจ„ด ๋ฐœƒ•˜๋Š”ง€ ด …— ž„žˆ ๋‚˜™€ žˆ๋‹ค. ด๋Ÿฌ•œ †ต•ฉ ธ  ‘๊ทผ ๋‹ค†Œ ด๋ก  ผ๊ฐ ๊ฐ™ด ๋ณดดง€๋งŒ,  €ž๋Š” 12๊ฐœ˜ Œจ„ด๊ณผ ‹ค œ๋กœ ‚ฌšฉ๋˜๋Š” ˜ˆ œ๋ฅผ ๋งŽด ๋ณด—ฌ ค€๋‹ค.

  • ž„•œ †Œ๊ฐœ๋Š” •„๋งˆกด ‚ฌดŠธ๋ฅผ ฐธ๊ณ  •˜๋ฉด ข‹Šต๋‹ˆ๋‹ค.
  • ˆ„๊ตฌ๋‚˜ ๊ฐ™ด ฐธ—ฌ •˜‹œ๋Š” ๋ถ„€ ๋Œ€ ™˜˜ž…๋‹ˆ๋‹ค.
  • ค‘๊ฐ„ ค‘๊ฐ„— •ด„ด •ˆ๋˜๋Š” ๋ถ€๋ถ„ด๋‚˜ ž˜๋ชป ๊ธฐˆ •œ ๋ถ€๋ถ„ žˆœผ๋ฉด ˆ˜ ••ดฃผ‹œ๋ฉด ๊ฐ‚ฌ •˜๊ฒ Šต๋‹ˆ๋‹ค. ^^;


2. Volume1

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 ๊ฒฝ๊ณ„๋ฅผ ง€๋‚˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธด๋‹ค.
    • ด๋ ‡๊ฒŒ ๋ ˆด–ด๋กœ ๊นจ๋—ด ๋‚˜๋ˆ„–ด„œ ”„๋กœ๊ทธ๋žจ„ งœ๋ฉด Œ€œผ๋กœ ž‘—…„ • ๋•Œ ข€๋” ๋Šฅ๋ฅ  ด๋‹ค.
  • •ด๊ฒฐ…(Solution) : ž‹ ˜ ‹œŠค…œ„  ๋‹น•œ ˆž˜ ๋ ˆด–ด๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ๋ ˆด–ด๋ฅผ •Œ๋งž๋Š” ˆœ„œ— ๋งž๊ฒŒ Œ“๋Š”๋‹ค
  • ๊ตฌกฐ(Structure) : ๋ ˆด–ด๋Š” ๋‹คŒ๊ณผ ๊ฐ™€ ๊ธฐ๋ณธ ๊ตฌกฐ๋ฅผ ๊ฐ€ง€๊ณ  žˆ๋‹ค.
    • Class : ๋ ˆด–ด J
    • •ด•ผ•  ๊ธฐ๋Šฅ(responsibility)
      • ๋ ˆด–ด J+1— ˜•ด„œ ‚ฌšฉ๋  „œ๋น„Šค๋ฅผ  œ๊ณต•œ๋‹ค.
      • •˜๋ถ€ ž‘—…„ ๋ ˆด–ด J-1—๊ฒŒ ๋„˜๊ธด๋‹ค.(œ„ž„•œ๋‹ค)
    • ˜‘๋ ฅž(collaborator) : ๋ ˆด–ด J-1
    • ๋ ˆด–ด Œจ„˜ ค‘š”•œ ๊ตฌกฐ ธ Šนง•€ ๋ ˆด–ด J๋Š” ˜คง ๋ ˆด–ด J+1— ˜•ด„œ๋งŒ ‚ฌšฉ๋  ˆ˜ žˆ๋‹ค๋Š”  ด๋‹ค. (Šคƒด๋‚˜ –‘ŒŒ™€ ๋น„๊ต•  ˆ˜ žˆ๋‹ค)
  • 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 ๋ ˆด–ด๋กœ ญ‰ ˜ฌ๋ผ๊ฐ„๋‹ค.

  • ‹ค–‰(implementation) - •„๋ž˜ ๊ณผ •€ ๋ชจ๋“  application— ๋ฐ˜๋“œ‹œ ๊ฐ€žฅ ข‹€ ๋ฐฉ๋ฒ•ด๋ผ๊ณ  •  ˆ˜๋Š” —†๋‹ค. ข…ข… bottom-upด๋‚˜ yo-yo ๋ฐฉ๋ฒ•œผ๋กœ  ‘๊ทผ•˜๋Š”๊ฒƒด ๋” ข‹„ง€๋„ ๋ชจ๋ฅธ๋‹ค. ž‹ ˜ application— •„š”•˜๋‹ค ‹ถ€ ๊ณผ •„ งš–ด„œ •˜๋ฉด ๋œ๋‹ค.
    • task(๊ณผ—…,ผ) ๋“ค„ ๋ ˆด–ด— ๋ฐฐน˜•˜๊ธฐ œ„•œ ถ”ƒ ธ ๊ธฐค€„  •˜ •˜—ฌ๋ผ. ‹ค œ ธ †Œ”„Šธ›–ด ๊ฐœ๋ฐœ—„œ šฐ๋ฆฌ๋Š” ข…ข… ถ”ƒ ธ ๊ธฐค€๋“ค˜ ˜ผ•ฉ„ ‚ฌšฉ•œ๋‹ค. ˜ˆ๋ฅผ๋“ค–ด„œ •˜๋“œ›–ด ธ ๊ด€ —„œ  € ˆ˜ค€˜ ๋ ˆ๋ฒจ๋“ค˜ ๋ชจŠต„  ••˜๊ณ , ๊ฐœ๋… ธ ๋ณตžก„œผ๋กœ ๊ณ  ˆ˜ค€˜ ๋ ˆ๋ฒจ„  ••œ๋‹ค.
    • ๋‹น‚ฐ˜ ถ”ƒ ธ ๊ธฐค€— ๋”ฐ๋ผ„œ ถ”ƒ ๋ ˆ๋ฒจ๋“ค˜ ๊ฐฏˆ˜๋ฅผ  ••˜—ฌ๋ผ. trade-off๋ฅผ ƒ๊ฐ•ด๋ณด๋ฉด„œ ๋ ˆด–ด๋ฅผ †ต•ฉ•˜๊ฐ๋‚˜ ๋ถ„๋ฆฌ•ด๋ผ. ๋„ˆ๋ฌด ๋งŽ€ ๋ ˆด–ด๋Š” ”„๋กœ๊ทธ๋žจ— ๊ณผค‘•œ ๋ถ€๋‹ดด ๋˜๊ณ , ๋„ˆ๋ฌด  € ๋ ˆด–ด๋Š” ๊ตฌกฐ œผ๋กœ ข‹ง€ •Š๊ฒŒ ๋œ๋‹ค.
    • ๋ ˆด–ด๋“ค˜ ด๋ฆ„„  ••˜๊ณ  ๊ฐ ๋ ˆด–ด— tasks(๊ณผ—…)„  ••ด ฃผ–ด๋ผ. ๋ชจ๋“  ๋ ˆด–ด˜ tasks๋Š” ž‹  ๋ณด๋‹ค ๋†’€ ๋ ˆด–ด๋ฅผ ๋„™€•ผ •œ๋‹ค.
    • services ๋“ค„ ๋ช…™•žˆ •˜—ฌ๋ผ. ๊ฐ€žฅ ค‘š”•œ ๊ตฌ˜„ ›น™€ ๋ ˆด–ด๋“คด —„๊ฒฉ•˜๊ฒŒ ๊ฐž ๋ถ„๋ฆฌ ๋˜–ด•ผ •œ๋‹ค๋Š”  ด๋‹ค. ๋ ˆด–ด๋“ค ‚ฌด— ๊ณตœ ๋˜๋Š” ๋ชจ๋“ˆ€ —„๊ฒฉ•œ layering •ฝ•˜๊ฒŒ •œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ฎ€ ๋ ˆด–ด๋ณด๋‹ค ๋†’€ ๋ ˆด–ด— ๋” ๋งŽ€ service๋ฅผ ๋„ฃ๋Š”๊ฒƒด ๋” ๋‚ฎ๋‹ค.
    • Refine layering. œ„˜ 1~4๋ฒˆ ๊ณผ •„ ๋ฐ˜๋ณต •˜—ฌ๋ผ.

~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๋กœ •  ˆ˜ žˆ๋‹ค.
  • ด Œจ„˜ •Œ๋ ค„ ‚ฌšฉ˜ˆ (Known Uses)
    • Virtual Muchines
    • APIs
    • Information System(IS)
    • Windows NT
  • ๊ฒฐ๋ก 
    • žฅ 
      • ๋ ˆด–ด˜ žฌ™œšฉ - ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค€ ˜„žฌ กดžฌ•˜๋Š” ๋ ˆด–ด๊ฐ€ ž‹ ˜ ๋ชฉ — ๋งžง€ ๋‚ณ๋Š”๋‹ค๊ณ  ด๋ฏธ žˆ๋Š”๊ฒƒ„ žฌ‚ฌšฉ •˜๊ธฐ๋ณด๋‹ค๋Š” ƒˆ๋กœ งœ๋Š” ๊ฒฝšฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ˜„žฌ กดžฌ•˜๋Š” ๋ ˆด–ด๋ฅผ žฌ‚ฌšฉ(black-box reuse)•˜๋Š” ๊ฒƒ€ ๊ฐœ๋ฐœ— ๋“œ๋Š” ๋…ธ๋ ฅ๊ณผ ”„๋กœ๊ทธ๋žจ˜ ๊ฒฐ ๋“ค„ ๊ทน œผ๋กœ ๊ฐ†Œ ‹œ‚ฌ ˆ˜ žˆ๋‹ค.
      • ๊ธฐค€„ ง€›•œ๋‹ค.
      • Dependescies are kept local : ˜กด„ด Šน • ๋ถ€๋ถ„—๋งŒ ๊ณ žˆ๊ธฐ ๋•Œ๋ฌธ— ด๋ ‡๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ„œ ‹œŠค…œด portability•˜๊ฒŒ ๋œ๋‹ค.
      • Exchangeability : Šน • ๋ ˆด–ด๋ฅผ ‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ˆ˜ žˆ๋‹ค. ๊ทธ๊ฒƒ„ ๋ฐ”๊ฟ”๋„  „ฒด œผ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„€ •ˆ๋ฐ”๊ฟ”๋„ ๋œ๋‹ค. ๋ฐ”๊พธ๋Š” ๊ฒƒ€ ๋‹น—ฐžˆ ๊ทธ ๋ฐ”๊ฟ€ ๋Œ€ƒ ๋ ˆด–ด˜ ธ„Ž˜ดŠค๋ฐ๋กœ ๊ตฌ˜„๋˜–ด žˆ๋Š” ๊ฒƒด–ด•ผ •œ๋‹ค.
    • ๋ถˆ๋ฆฌ•œ  (liability)
      • cascades of changing behavior : ๋ ˆด–ด๋ฅผ ๋ฐ”๊พธ๋Š”๊ฒƒ๋ฟ๋งŒ •„๋‹ˆ๋ผ ๊ทธ ธ„Ž˜ดŠค๋ฅผ ๋ฐ”๊ฟ€๊ฒฝšฐ— ๋‹ค๋ฅธ ๋ถ€๋ถ„๊นŒง€ ˆ˜ ••ดค˜•ผ •œ๋‹ค๋Š” ๋ง ๊ฐ™๋‹ค.
      • lower efficiency : —ฌ๋Ÿฌ๊ฐœ˜ ๋ ˆด–ด๋ฅผ ง€๋‚˜•ผ •˜๋‹ˆ๊น ‹œ๊ฐ„ด ๋” ๊ธ๋ฆฌ๋Š” ๊ฒƒ€ ๋‹น—ฐ•  ผด๋‹ค.
      • Unnecessary work : •„š”—†๋Š” ผ๋„ •˜๋Š” ๊ฒฝšฐ๊ฐ€ žˆ๋‹ค.
      • ๋ ˆด–ด๋ฅผ  •™•žˆ ๊ตฌถ••˜๋Š”๊ฒƒด –ด๋ คšด ผด๋‹ค.
  • ˜๊ฒฌ : ด layer Œจ„„ ‚ฌšŒ ธ ๊ฒƒ๊ณผ ๊ฒฐ๋ถ€‹œผœ„œ ƒ๊ฐ•˜๋ฉด ๊ด€๋ฃŒ œ™€ ๋น„Šท•˜๋‹ค๊ณ  ƒ๊ฐ•œ๋‹ค. ๊ตฒด ๊ฐ€๋Šฅ•˜๊ณ , ๋‹จ๊ณ„ œผ๋กœ ˜ฌ๋ผ๊ฐ€๊ณ , ๋‚ด๋ ค๊ฐ€๊ณ  ๋ญ —ฌ๋Ÿฌ๊ฐ€ง€  ด œ ‚ฌ•˜๋‹ค. ด Œจ„ด ‚ฌšฉ•˜๋Š” ‚ฌ๋žŒ๋“คด ๊ด€๋ฃŒ œ—„œ ฐฉ•ˆ•ด„œ ด Œจ„„ ‚ฌšฉ•˜๋Š” ๊ฒƒ€ •„๋‹ˆ๊ฒ ง€๋งŒ •˜—ฌŠผ ๊ทธ๋Ÿฌ•œ œ ‚ฌ „ ๋ฐœ๊ฒฌ•˜๋‹ˆ๊น ‹ ๊ธฐ–ˆ๋‹ค.

2.2.2. Pipes and Filters

  • ˜ˆ œ : —ฌ๊ธฐ„œ๋Š” ”„๋กœ๊ทธ๋ž˜๋ฐ –ธ–ด๋ฅผ ˜ˆ๋กœ ๋“ค–ด„œ „ค๋ช…–ˆ๋‹ค.
  • ™˜๊ฒฝ : ๋ฐด„๋ฆ„˜ ฒ˜๋ฆฌ
  • ƒ๊ฐ•ด•ผ•  ๋ฌธ œ
    • ถ”›„˜ ‹œŠค…œ –ฅƒด ‚ฌšฉž— ˜•ด„œ กฐฐจ, ฒ˜๋ฆฌ ๋‹จ๊ณ„(step)๋“ค„ ๋ฐ”๊พธ๊ฐ๋‚˜ žฌกฐ•ฉ •˜๋Š”๊ฒƒœผ๋กœ„œ ๊ฐ€๋Šฅ•ด•ผ •œ๋‹ค.
    • ž‘€ ฒ˜๋ฆฌ ๋‹จ๊ณ„๊ฐ€ ฐ components ๋ณด๋‹ค ๋‹ค–‘•œ ™˜๊ฒฝ— žฌ‚ฌšฉ •˜๊ธฐ ข‹๋‹ค.
    • ธ ‘•˜ง€ •Š€ ๋‹จ๊ณ„๋Š”  •๋ณด๋ฅผ ๊ณตœ •˜ง€ •Š๋Š”๋‹ค.
    • ˜ˆ๋ฅผ ๋“ค–ด„œ ๋„Šธ›Œฌ —ฐ๊ฒฐด๋‚˜ ˜จ๋„  •๋ณด๋ฅผ  œ๊ณต•˜๋Š” „„œ™€ ๊ฐ™ด ๋‹ค–‘•œ ž…๋ ฅ ๋ฐดƒ€ source ๊ฐ€ กดžฌ•œ๋‹ค.
    • ตœข… ๊ฒฐ๊ณผ๋ฅผ ๋‹ค–‘•œ ๋ฐฉ๋ฒ•œผ๋กœ  €žฅ•˜๊ฐ๋‚˜ ๋‚˜ƒ€๋‚ด๋Š” ๊ฒƒด ๊ฐ€๋Šฅ•ด•ผ •œ๋‹ค.
    • ๋“ —ฌ๋Ÿฌ๊ฐ€ง€..
  • ด Œจ„€ : 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— ๋Œ€•ด„œ ๋‹จง€ •˜๋‚˜˜ ถ”๋ก  —”„„  œ๊ณต•œ๋‹ค. ๋‹ค–‘•œ ‘œ˜„— ๋Œ€•œ ๋‹ค–‘•œ ๋ถ€๋ถ„ ธ ๋ฌธ œ๋“ค€ ๋ถ„๋ฆฌ๋œ ถ”๋ก  —”„„ •„š”๋กœ •œ๋‹ค.
    • -
  • •ด๊ฒฐ…(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 ๋ถ€๋ถ„˜ ๊ฒฐ๊ณผ— ˜•ด„œ ๊ทธ „ ƒด ด๋ฃจ–ดกŒ๋‹ค.
  • ๊ตฌ˜„(implementation) : blackboard pattern„ ๊ตฌ˜„•˜๋ ค๋ฉด ๋‹คŒ๊ณผ ๊ฐ™€ ๋‹จ๊ณ„๋ฅผ ˆ˜–‰•˜—ฌ๋ผ.
    • 1.๋ฌธ œ(problem)๋ฅผ  •˜ •˜—ฌ๋ผ
      • ๋ฌธ œ˜ ˜—ญ๊ณผ knowledge˜ ผ๋ฐ˜ ธ ˜—ญ๋“ค„ ๋ช…™•žˆ •˜๋Š” ๊ฒƒ€ •ด๊ฒฐ…(solution)„ ๋ฐœ๊ฒฌ•˜๋Š”๋ฐ •„š”•˜๋‹ค.
      • ‹œŠค…œ— ๋Œ€•œ input„  •๋ฐ€•˜๊ฒŒ กฐ‚ฌ•˜—ฌ๋ผ.
      • ‹œŠค…œ˜ output„  •˜•˜—ฌ๋ผ
      • ‚ฌšฉž๊ฐ€ ‹œŠค…œ๊ณผ –ด๋–ป๊ฒŒ „œ๋กœ ž‘šฉ•˜๋Š”ง€ ž„žˆ ๋ง•˜—ฌ๋ผ.
    • 2.๊ทธ ๋ฌธ œ— ๋Œ€•œ solution space(•ด๊ฒฐ ๊ณต๊ฐ„)„  •˜•˜—ฌ๋ผ.

~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 ๋ ˆ๋ฒจผ ๊ฒƒด๋‹ค.(๋ฌดŠจ๋งดง€?ใ…กใ…ก;)




2.3. Thread

†Œ”„Šธ›–ด •„‚ค…ถฐ™€ Œจ„— ๊ด€‹ฌด žˆ๋Š” ‚ฌ๋žŒ๋“ค—๊ฒŒ ๊ฐ•๋ ฅ ถ”ฒœ•ฉ๋‹ˆ๋‹ค. 1, 2๊ถŒ„ ๋ชจ๋‘ ‚ฌ๊ธฐ ž˜๋“ค๋‹ค๋ฉด ผ๋‹จ€ 1๊ถŒ๋งŒด๋ผ๋„ ๊ฐ–ถ”๋Š” ๊ฒƒด ข‹„ ๊ฒƒž…๋‹ˆ๋‹ค. --JuNe

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:00
Processing time 0.0519 sec