Tag Archives: 시스템

시스템 사고/ 전체 정리

시스템 사고의 조감도

시스템 사고의 뿌리

시스템 사고는 1950년대 말 MIT의 제이 포리스터 교수가 개발한 시스템 다이내믹스 (System Dynamics)라는 학문에 그 뿌리를 둔다.

시스템 다이내믹스는 시스템의 구조를 모델화하여 이를 컴퓨터에서 시뮬레이션 함으로써 정책효과를 분석하는 방법론으로 강력한 분석력에도 불구하고 사회전반으로 확산되는데 어려움을 겪었는데 이유는 시스템 다이내믹스가 너무 어려웠기 때문. 이를 극복하기 위해 시스템 다이내믹스를 쉽게 만들고자 하는 노력이 지속되었고 1980년대 중반 시스템 다이내믹스의 모델링을 도와 주기 위한 소프트웨어인 스텔라 (STELLA)가 개발되었지만 여전히 일반인들에게는 어려운 방법론으로 인식. 시스템 다이내믹스 학자들은 시스템 다이내믹스에서 일반인이 이해하기 어려운 컴퓨터 시뮬레이션 부분을 제외하고 일반인에게 전달하기 용이한 부분만 간추려서 ‘시스템 사고’라 부르기 시작(1980년대 이후).

시스템 다이내믹스를 딱딱한 방법론(Hard Methodology)라고 하고, 시스템 사고를 부드러운 방법론(Soft Methodology)라고 하기도 한다. 시스템 사고는 시스템 다이내믹스의 직관적인 지혜를 뽑아낸 것.

시스템 사고의 좋은 점

컴퓨터 시뮬레이션을 사용하지 않는 시스템 사고는 시스템에 대한 정확한 이해를 양보하는 대신 시스템에 대한 통찰력을 직관적으로 얻고자 한다

  • 시스템 사고의 장점
    • 배우기 쉽다
    • 적용이 쉽다
    • 본질을 다룬다. 시스템 사고는 직관(Insight)을 사용하여 현실 문제의 본질을 간파하도록 유도한다
    • 언제나 적용할 수 있다. 시스템 사고는 자료-독립적인(Data-Free) 분석방법으로 자료에 의존하는 분석도구가 아니라 상식과 지혜에 의존하는 분석도구이다
    • 어디에나 적용할 수 있다
    • 공유가 가능하다
    • 확장이 가능하다

시스템 사고의 구성 원리 : 주역의 관점

주역(周易)은 시스템의 변화를 다루는 가장 오래된 이론. 주역의 기본 원리는 태극도에서 찾을 수 있는데 태극도에 표현된 원리가 시스템 사고의 기본 원리와 동일하다

태극도와 시스템 사고를 구성하는 세 가지 구성 요소

  • 파동
  • 음양
  • 피드백

시스템 사고의 절차

시스템 사고의 기본적인 구성요소는

  • 파동의 사고 (Wave Thinking)
  • 인과적 사고 (Causal Thinking)
  • 피드백 사고 (Feedback Thinking)

시스템 사고를 현실에 적용하기 위해서는 한 가지 절차가 더 요구되는데 이것이 바로 전략의 발견 시스템 다이내믹스 학자는 효과적인 전략지점을 지렛대 지점(Leverage Point)라고 한다. 시스템 사고에서는 정태적인 문제보다 동태적인 문제를 중요시 한다.

파동의 사고

생명의 신호

살아 있는 생명은 파동을 지닌다. 그러나 사회과학에서 파동은 예외적인 현상으로 취급하여 균형(Equilibrium)을 중요시 했다. 시스템 사고에서는 직선이나 균형을 죽은 상태로 보고 곡선이나 파동을 살아 있는 상태로 본다.

엘리어트 파동이론

엘리어트 파동 이론은 증권시장에서 일어나는 주가 파동이 일련의 법칙을 따라 발생된다는 점을 보여준다. 주식의 파동은 주식시장의 장세에 변화를 가져오는 충격파동(Impulse Wave)과 그 변화에 저항하며 기존의 질서를 회복시키고자 하는 조정파동(Corrective Wave)로 구성된다. 재미있는 점은 추격파동은 다섯 개의 굴곡, 조정파동은 세 개의 굴곡으로 구성된다는 법칙이다. 충격파동은 세 번의 공격, 조정파동은 두 번의 방어로 구성된다고 이해할 수 있다.

파동경영

파동의 3가지 특징

  • 파동은 전파된다
    • 부동산 시장에서 발생된 주택가격은 건설시작으로 전파되고 급기야 주식시장을 거쳐 경제 시스템 전반에 전파된다.
  • 파동은 간섭한다
    • 연못에 두 개의 돌을 던지면 각각 파동이 발생되고 발생된 파동이 서로 교차하면서 간섭무늬가 생긴다.파동의 마루와 마루 또는 골과 골이 마주치는 경우에 더 큰 폭의 파동이 생기는데 이를 보강간섭이라 한다. 마루와 골이 마주치는 경우에는 파동이 사라져 버리는데 이를 상쇄간섭이라 한다.
  • 파동은 공명한다
    • 물체에는 각기 고유한 진동수가 있다. 물체의 고유한 진동수와 같은 파동이 밀려올 때 그 물체는 강하게 진동하는데 이를 공명이라 한다. 전자레인지에서 방출하는 마이크로파가 음식 속의 물분자를 공명시켜 온도를 높인다

이처럼 파동은 전파, 간섭, 공명하면서 강력한 에너지를 집중시키기도 분산시키기도 한다

인과적 사고

예측이 아니라 이해가 중요하다

시스템의 개선은 시스템에 대한 예측이 아니라 시스템에 대한 이해에서 나온다. 시스템에 대한 예측은 문제를 회피하는데 도움을 줄 뿐이다.

시스템 사고는 예측보다 이해를 중시한다. 시스템 사고는 꽃이 언제 필지를 예측하고자 하지 않는다 어떻게 하면 꽃을 피울 수 있는지를 이해하고자 한다.

구조와 행태

예측이 시스템의 행태 (Behavior)에 초점을 둔다면 이해는 시스템의 구조 (Structure)에 초점을 둔다.

시스템은 요소 (Element)와 그 요소 사이의 관계 (Relation)로 구성된다. 기업이라는 시스템은 사람, 자원, 건물 등의 요소와 이러한 요소 사이의 관계로 구성된다. 이 때 요소는 다양한 속성을 지닌다. 사람은 그의 재산, 지능, 인간성 등 여러 가지 속성으로 측정될 수 있다. 이러한 속성을 변수(Variable)라고 한다. 변수는 말 그대로 변화할 수 있는 값으로 시스템의 행태가 변화한다는 말은 그 시스템의 중요한 변수값이 변한다는 것을 의미한다.

요소와 요소 사이에는 관계가 존재한다. 비교적 오랫동안 지속되는 관계가 있는가 하면 일시적으로 형성되었다가 없어지는 관계도 있다.

시스템의 구조란 지속적인 관계를 의미한다. 요소와 요소 사이에 존재하는 관계는 다양하게 분류될 수 있다. 인과관계, 친소관계, 먹이사슬 관계 또는 의존관계 등. 이 중 시스템 사고의 핵심은 인과관계(Causal Relation)이다.

예측은 요소값, 즉 행태에 초점을 둔다. 이해는 시스템의 구조 즉 요소와 요소의 관계에 초점을 둔다. 전자를 행태주의, 후자를 구조주의라 한다.

시스템의 행태는 구조에 의해서만 발생한다. 이를 시스템의 제 1 원리라 한다. 시스템의 행태가 행태를 유발시키는 것이 아니라 시스템의 구조가 행태를 결정한다. 시스템의 과거행태는 미래행태를 예측하는데 도움이 되지만 과거행태가 미래행태를 유발시키는 원인은 아니다. 시스템의 구조가 행태를 유발시킬 뿐이다.

시스템 사고에서 구조를 말할 때는 요소보다는 관계를 의미하는데 이는 시스템 구조로서 요소는 그다지 큰 역할을 수행하지 못하기 때문이다. 석탄을 구성하는 요소와 다이아몬드를 구성하는 요소는 동일하다 다만 그 요소 사이의 관계가 다를 뿐이다.

구조가 행태를 결정한다고 할 때 행태는 반복되는 행동유형(Pattern of Behavior)을 나타낸다. 행태는 일시적인 사건(Event)와 반복적인 패턴(Pattern)으로 구분할 수 있다.

시스템 사고는 행태보다 구조, 요소보다 관계를 중시하지만 행태를 무시하지는 않는다. 시스템 사고에서는 반복하여 발생되는 행동패턴에 관하여 관심을 갖는다. 이러한 행동패턴은 구조에 의해 발생되는 법이며 그러한 구조를 발견하는 것이야말로 시스템 사고의 사명이기 때문이다. 결국 시스템 사고가 관심을 기울이는 초점은 반복되는 행동패턴과 이를 발생시키는 근본적 원인인 구조로서의 관계라고 할 수 있다

구조가 행태를 결정하고 행태가 구조를 변화시킨다

행태가 행태를 결정짓지 못한다 오로지 구조가 행태를 결정할 뿐이다. 공무원이 불친절하다든지 부정부패에 연루되는 행태를 보이면 행정구조에 문제가 있는 것이다.

구조는 지속적인 관계이다. 관계의 변화 없는 행태의 변화는 거짓 또는 착각일 뿐이다.

행태에 의해 구조가 변화될 때 이를 학습(Learning)이라 한다. 구조의 변화, 지속적인 관계의 변화가 없는 학습은 진정한 학습이라 할 수 없다.

구조가 행태를 결정짓는다는 원리가 이해의 맥락(Context of Understanding)에서 중요하다면 행태가 구조를 변화시킨다는 원리는 학습의 맥락(Context of Learning)에서 중요하다.

단순한 구조와 복잡한 행태

복잡한 행태가 단순한 구조에서 발생한다. 복잡성 과학(Complexity Theory)이 던져 주는 메시지의 핵심은 단순한 구조에서 예측 불가능한 복잡한 파동이 나올 수 있다는 점이다. 불규칙한 혼돈은 단순한 질서(Simple Order)의 구조에서 발생된다. 혼돈스러운 행태를 예측하는 것은 불가능하지만 그 혼돈이 어떠한 구조로 인해 발생되는지를 이해하는 것은 가능하다.

인과관계와 도식

질문은 크게 무엇(What)과 왜(Why)로 구분될 수 있다. 무엇(What)은 의미론에 해당되며 왜(Why)는 관계론에 해당된다. 복잡한 시스템을 이해하기 위해서는 두 가지 질문 모두 필요하다.

인과관계는 두 가지 종류가 있다. 원인과 결과가 같은 방향으로 변화하면 양(Positive)의 인과관계. 반대방향으로 변화하면 음(Negative)의 인과관계. 결과가 증가하면 양, 감소하면 음이 되는 것이 아니다

인과관계와 상관관계

인과 관계 (Causal Relation)와 상관 관계 (Corelation)은 다르다. 인과관계는 원인과 결과 간의 방향을 의미하지만 상관관계는 A와 B의 변화 사이에 관계성이 존재한다는 점을 의미한다. 상관관계가 +면 A와 B가 같은 방향으로 변화되며 -면 A와 B가 다른 방향으로 변화된다. 그러나 상관관계는 A가 B에 영향을 주는지 B가 A에 영향을 주는지는 말하지 않는다. 다만 두 변수의 변화가 관련된다는 점만을 말한다.

상관관계는 변수의 행태에 초점을 두지만 인과관계는 변수가 어떠한 방식으로 영향을 주고 받는가라는 구조에 초점을 둔다.

행태가 축적된 데이터(Data)를 통하여 드러나는 것이라면 구조는 이론(Theory)에 의해 밝혀진다.

데이터를 모으고 분석해서 추론하는 것을 귀납 (Induction)이라 하고 이론을 적용하여 추론하는 것을 연역 (Deduction)이라 한다. 상관관계가 귀납법에 해당된다면 인과관계는 연역법에 해당된다.

언어 속의 인과관계인과관계는 세 가지 요소로 구성된다. 원인변수, 결과변수 그리고 이 사이의 관계가 세 가지 핵심적인 구성요소 이다. 이 세 가지 구성요소가 언어를 통하여 표현되는데 일정한 규칙이 있다. 첫째. 원인과 결과라는 변수는 명사로 표현된다. 둘째. 인과관계의 부호는 동사로 표현된다.

인과관계를 분석할 때 변수는 반드시 명사여야 한다. 예를 들어 인구의 증가, 수익의 증가와 같은 변수는 잘못된 것이다.

정책결정자 또는 의사결정자의 어록을 분석하여 그들이 인지하고 있는 인과관계를 추출하여 정책에 대한 그들의 정신적인 모델(Mental Model)을 구성하는 분석방법을 인지지도(Cognitive Map) 분석이라 한다.

인과지도 Causal Map

전체를 보기 위해서는 요소보다는 요소 사이의 관계를 보아야 한다

시스템 사고에서는 인과관계에 관한 언어를 인과 지도 (Causal Map)라는 그림으로 바꾸어 종합한다. 인과지도란 여러 개의 인과관계를 서로 연결시켜 놓은 도식을 의미한다.

인과지도는 여러 개의 인과관계를 동시에 조망하도록 유도한다

비선형 인과관계

원인과 결과 사이의 관계가 직선적이면 선형적(Linear) 인과관계. 그렇지 않으면 비선형적(Nonlinear) 인과관계라고 한다

돈을 많이 모을수록 비례해서 기쁨이 증가하면 돈과 기쁨은 선형적인 인과관계이다. 그러나 돈을 모을수록 돈으로 인한 기쁨은 서서히 감소할 수 있다. 어느 정도 돈을 모으고 나면 돈을 모으는 기쁨보다는 가난한 사람에게 돈을 나눠 주는 기쁨이 더 클 수도 있다. 이런 경우 돈과 기쁨은 비선형적인 인과관계이다

비선형 인과관계와 비대칭적 인과관계

동일한 이익으로부터 얻는 효용보다 동일한 손실로부터 얻는 비효용이 훨씬 크다. 제로섬 게임에 참여하는 행위자의 심리는 네거티브섬 게임(Negative-Sum Game)으로 변화된다. 점유율을 10% 향상시킨 행위자의 만족보다 10% 잃은 행위자의 불만족이 더 크기 때문이다. 결국 제로섬 게임은 네거티브섬 게임으로 전락하게 되고 기대했던 것보다 훨씬 심각한 경쟁과 갈등으로 발전된다.

파국 이론 (Catastrophe Theory)이라는 학문에서도 비대칭적인 관계를 강조한다. 죄수를 강압적으로 다루면 죄수가 조용하게 순종한다. 조금 더 강압적으로 다루면 더 말을 잘 들을 것 같아 기상시간을 1시간 앞당겼더니 예상과 달리 죄수들이 폭동을 일으켰다. 이런 상황에서 앞당긴 기상시간을 원상회복 시키면 죄수가 잠잠해 질 것인가? 그렇지 않다 죄수에게 폭동을 일으키게 한 압력은 상당히 높은 상태에서 이루어지지만 폭동이 일어난 이후에 폭동을 잠재우기 위해서는 상당히 큰 폭으로 기존의 강압적인 조치를 취소해야 한다. 일단 폭동이 발생되면 상당한 수준의 양보를 해야만 그 폭동을 해제시킬 수 있다.

다른 예로 이미 환경이 파괴된 이후에는 이를 유발시킨 오염 행위를 근절시킨다고 해서 환경이 회복되지 않는 것이 있다

비선형 인과관계와 꽉 막힌 변수

원인변수가 일정 값에 도달하기 전에는 결과변수가 원인변수에 민감하게 반응하지만 일정 값을 넘어서게 되면 결과변수의 값이 여간 해서는 변화되지 않는 경우가 있다. 이러한 결과변수를 종종 ‘꽉 막힌 변수 (Uptight Variable)’라고 한다. 예컨대 초보 때는 운동 실력이 금세 느는데 어느 수준에 도달하고 나면 실력이 잘 늘지 않는다.

여러 원인과 결과 : 열등요인과 우등요인

여러 변수가 하나의 변수에 영향을 미치는 경우가 있다. 예컨대 기업의 생산성은 사기, 자원, 리더 등 여러 요인이 동시에 영향을 미친다

식물이 자라 꽃을 피우기 위해서 햇빛, 물과 영양분이 필요하고 이 중 어느 하나라도 없으면 식물은 자랄 수 없다. 이 때 식물의 성장은 가장 풍부한 요인에 의해 결정되는 것이 아니라 가장 부족한 요인에 의해 결정되는데, 이를 최소 요인의 법칙이라고 한다.

합창단의 성공과 실패는 가장 잘 부르는 사람이 아니라 가장 못 부르는 사람에 의해 결정된다. 이러한 시스템은 열등한 요인이 시스템의 성능을 결정하는 사례이다. 100km의 철로 중에서 단 1m의 고장으로 기차가 전복된다. 이렇게 여러 요인이 직렬적, 순차적으로 영향을 미치는 경우에도 열등 요인이 결정적일 수 있다.

반면 우등요인이 적용되는 경우도 많다. 모든 개미가 열심히 일하는 것 같아 보이지만 실상은 20%의 개미만 실질적인 일을 한다. 그 20%의 개미만을 모아 놓으면 다시 그 중에서 20%만 열심히 일하고 나머지 80%는 그냥 빈둥거린다. 이러한 경우는 소수의 우등 요인이 시스템의 성능을 결정짓는 요인이라고 할 수 있다.

기계적인 대량생산이 중요했던 산업사회에서는 열등요인이 중요했다면 한두 사람의 천재적인 아이디어에 의해 성공과 실패가 좌우되는 정보사회에서는 열등요인보다 우등요인이 강조된다.

역설적인 인과관계

교도소가 범죄의 학습장이 되기도 하고 학교가 창조성을 파괴하기도 한다. 현실은 종종 역설이 지배한다.

  • 창조적 파괴(Creative Destruction)
    • 스스로를 파괴함으로써 오히려 창조할 수 있다

인과관계 발견을 위한 태도 1 : 추상적 사고에서 구체적 사고로

추상적인 사고에 매몰된 정신을 가지고는 단순 명료한 인과관계를 인식하기 어렵다. 시스템 사고는 보다 더 구체적인 논의를 요구한다. 우리나라에 쿠테타가 자주 일어났던 이유는 민주주의 의식이 낮아서가 아니라 군대를 동원할 수 있었기 때문이고 그 군대를 동원할 수 있었던 중요한 지렛대는 고위군인사이의 사적인 모임이 지속적으로 유지되어 왔기 때문이다. 김영삼 대통령이 하나회를 척결한 후에 군대를 사사로이 동원할 수 없게 되었으며 쿠테타는 거의 불가능하게 되었다.

성형수술을 받는 사람의 숫자가 급속이 증가하는 이유는 외모를 중시하는 풍토 때문이라기보다 성형수술을 받을 수 있을 정도로 수입이 증가했기 때문이라는 것이 더 구체적인 답변.

인과관계 발견을 위한 태도 2 : 드러난 관계에서 숨겨진 관계로

극히 일부의 인과관계만이 겉으로 드러나 있는 경우가 많은데 숨겨져 있는 인과관계가 더 중요할 때가 많다.

노르웨이에 버드나무뇌조라는 새가 멸종 위험에 처해 뇌조의 천적인 매를 사냥했는데 매를 잡으면 잡을수록 뇌조는 더 빠른 속도로 사라졌다. 원인을 파악해 보니 코시디오스라는 기생충이 뇌조의 유행병이라는 점을 알게 되었다. 이 질병은 뇌조의 비행속도를 감소시켜 쉽게 매의 먹이가 되게 했고 매는 이 병에 걸린 뇌조를 먹어 치워 버림으로써 이 병이 모든 뇌조에게 전염되는 것을 막아줬던 것이다.

인과관계 발견을 위한 태도 3 : 원하는 인과관계에서 사실적 인과관계로

보고 싶은 것만 보는 왜곡된 눈을 가지고서는 진정한 인과관계를 볼 수 없다.

아프리카지역에서 많은 사람들이 굶어 죽고 있는데 이유는 음식이 부족하기 때문. 메도즈는 지구의 자원을 시뮬레이션 했던 여러 가지 모델을 검토한 적이 있는데 이들 시뮬레이션모델의 공통점은 지구의 식량자원은 인류를 먹여 살리는데 항상 충분하였다는 점이다. 과거에도 충분하였으며 미래에도 충분할 것이라는 점이다. 그렇다면 왜 이렇게 많은 사람이 굶어 죽는가? 여러 시뮬레이션모델의 결론은 한결 같았다. 자원부족이 문제가 아니라 가난한 국가와 사람에게 음식을 나누어 주는 시스템이 없다는 점이 문제였다. 하지만 이러한 사실은 사람들에게 도덕적 책임감을 주기 때문에 사람들은 부족한 자원이 문제라는 거짓된 인과관계를 믿고자 한다. 간디 “이 세상은 모든 사람을 먹여 살릴 수 있을 만큼 풍족하다 그러나 한 사람의 탐욕을 감당하기에는 부족하다”

인과관계의 혼돈 1 : 인과관계의 모순된 부호

자연과 달리 사회의 세계에서는 원인과 결과 사이에 보편적으로 고정된 관계는 존재하지 않는다. 동일한 원인에 대하여 사람들이 다르게 반응할 수 있기 때문이다. 사회시스템을 제대로 이해하기 위해서는 행위자가 어떠한 원인(자극)에 대하여 어떠한 결과(반응)를 보이는지 잘 분별해야 한다

이러한 혼돈에서 빠져 나오기 위해서는 세 가지 원칙을 명심해야 한다.

  • 원인과 결과의 부호는 항상 변화될 수 있다
  • 하나의 시스템에서는 단 하나의 인과관계만이 허용된다
  • 제 3의 변수가 원인과 결과를 매개하고 있는지 고려해야 한다

인과관계의 혼돈 2 : 인과관계 부호의 역전

두 변수 사이의 인과관계 부호가 변화되는 경우가 있다. 인과관계가 양에서 음으로 또는 음에서 양으로 변화될 수 있다. 아무리 좋은 음식이라도 매일 먹으면 질리게 마련이다.

처음에는 원인이 결과를 향상시키지만 어느 지점을 넘어서면 결과값을 감소시킨다. 이러한 관계를 보통 거꾸로 된 U커브(Inverted U-curve) 또는 역전되는 관계라 한다.

인과관계의 혼돈 3 : 인과관계의 방향성

시스템 사고에서 인과관계의 양방향성은 원칙적으로 인정된다. 즉, 하나의 시스템에서 인과관계의 부호는 어느 한 가지만 허용되지만 인과관계의 방향은 A => B, B => A 모두 동시에 있을 수 있다는 것이다.

상호의존성

양방향 인과관계는 상호 의존성 (Interdependence), 상호 작용성 (Interaction)과 깊은 관련이 있다. 두 변수가 서로에게 원인이 되는 동시에 결과가 되는 경우 두 변수는 상호의존적인 관계에 있다.

상호의존성은 사회과학에서 핵심적인 단어이다. 상호의존적이기 때문에 사회관계에는 역동성이 있다. 겉으로 볼 때는 적대적, 경쟁적인 관계로 보이지만 그 이면에는 상호의존적인 관계가 형성되어 있는 경우가 많다. 부자는 빈자가 있음으로 존재하고 강자는 약자가 있음으로 존재한다.

피드백 사고

피드백이 동력이다

피드백 구조는 시스템 사고의 핵심이다. 피드백 구조야말로 시스템에 생명력을 제공하는 원천이기 때문이다. 여러 개의 인과관계가 피드백을 형성하지 못하는 경우가 있다. 이 때에는 시스템에 지속적인 변화가 발생하지 않고 이 변화는 단 한번 일어나는 것으로 그친다

부분과 전체의 상이성 : 돌발적으로 나타나는 특성

전체는 부분의 합 이상이다. 전체는 부분이 갖지 못하는 독특한 성질을 갖는다. 이를 종종 ‘돌발적으로 나타나는 특성(Emergent Property)’이라고 한다.

음의 피드백 루프와 양의 피드백 루프

음의 피드백 루프는 변화를 억제하는 루프이고, 양의 피드백 루프는 변화를 촉진하는 루프이다.

양의 피드백 루프는 ‘자기강화(Self-Reinforcing)’ 루프라고도 한다. 한 변수가 변화되면 그 변화하는 방향으로 영향이 되돌아 오기 때문에 변화가 더욱더 강화된다 양의 피드백 루프는 일탈강화(Deviation Amplifying) 루프라고도 한다. 균형점으로부터 벗어나는 변화가 일단 발생되면 그 변화를 더욱더 강화시키는 성질이 있기 때문이다. 양의 피드백 루프를 지닌 시스템은 일단 성장하기 시작하면 계속 성장하고 쇠퇴하기 시작하면 끝도 없이 쇠퇴하게 된다.

음의 피드백 루프는 ‘자기균형(Self-Balancing)’ 루프 또는 일탈억제(Deviation Counteracting) 루프라고도 한다. 음의 피드백 루프는 각 변수를 균형상태로 유지시키는 성질을 지닌다.

지배적 피드백 루프

하나의 피드백 루프로만 구성되는 시스템은 거의 존재하지 않는다. 대부분의 시스템은 수십 개 또는 수백 개의 피드백 루프가 상호 연결되어 있는 복합적인 시스템이다. 특정 피드백 루프가 전체 시스템의 특성을 결정할 때 이를 지배적 피드백 루프(Dominant Feedback Loop)라고 한다.

음의 피드백 루프와 양의 피드백 루프가 동시에 작용하기도 한다. 음의 피드백 루프가 균형을 유지하려는 힘이라면 양의 피드백 루프는 균형에서 벗어나려는 힘이다.

구성요소는 동일하지만 이것이 어떻게 연결되어 있는가에 따라 시스템의 특성이 달라진다. 영국에서 죄수를 수용할 교도소가 부족해지자 죄수를 대량으로 호주로 보냈지만 호주는 해적국가가 되기는커녕 가장 질서를 잘 지키고 평화로운 나라 중에 하나가 됐다. 어렸을 때부터 착하고 공부 열심이해서 명문대학을 졸업하고 출세한 사람만을 뽑은 국회의원들이 선량한 집단이라 할 수 없다.

지배적 피드백 루프의 전환

음과 양의 피드백 루프가 교대로 시스템을 지배하는 경우가 있다. 강하게 군림하던 피드백 루프의 힘이 약해지고 약하던 피드백 루프가 강해지면서 시스템을 지배하는 피드백 루프가 바뀌는 현상을 지배적 피드백 루프의 전환(A Shift of Dominant Feedback Loops)이라고 한다.

지배적 피드백 루프의 전환은 정권의 변동과 마찬가지의 효과를 가져온다. 정치에서 정권변동이 가장 중요한 주제이듯이 시스템 사고에서도 지배적 피드백 루프가 언제, 왜 변화하는가는 매우 중요한 주제이다.

양의 피드백 루프의 지배에서 음의 피드백 루프의 지배로 전환되는 경우 S커브라고도 하고 시그모이드 커브 (Sigmoid Curve)라고도 하는 행태를 보인다. 즉 초기에는 서서히 증가하고 어느 시점에 이르면 급격히 증가하다가 서서히 증가세가 꺾이면서 안정국면에 접어드는 행태이다. 이러한 곡선이 발생하는 원인은 지배적인 피드백 루프의 전환이라는 구조적인 변화에서 찾을 수 있다. 즉 초기에는 양의 피드백 루프가 시스템을 지배하여 시스템의 성장을 견인하고 후기에는 음의 피드백 루프가 시스템을 지배하여 안정화 시키는 것이다. 이러한 S커브는 거의 모든 성장시스템에서 공통적으로 발견되는 현상이다.

양의 피드백 루프 지배에서 음의 피드백 루프의 지배로 바뀌는 지점을 변곡점(Turning Point)라고 한다. 양의 피드백 루프가 힘을 잃는 변곡점 이후에도 시스템의 성장은 지속적으로 이루어진다.

시장의 가격 조절 메커니즘은 수요부문과 공급부문 모두 음의 피드백 루프에 의해 작동된다. 대기 행렬 시스템도 서버의 수와 신규 고객이 모두 음의 피드백 루프에 의해 작동된다. 투기 시장의 경우 양의 피드백 루프에 의해 작동된다

미미한 원인

미미한 원인을 증폭시키는 구조는 양의 피드백 루프이다. 아무 힘도 없는 재야인사의 시국선언과 아무런 무기도 들지 않은 학생의 데모로 인하여 집권세력이 무너지기도 하고 한 사람의 실수로 인해 거대 기업이 무너지기도 한다.

1.0000001이라는 숫자의 30번째 제곱은?
207017133996671569721067
이 숫자의 23번째 제곱수는?
1.5211

양의 피드백 루프와 임계질량 : 티핑 포인트

양의 피드백 루프가 언제 성장하고 언제 쇠퇴할 것인가를 분석하는 도구로서 임계 질량 (Critical Mass)이라는 개념이 있다. 2차 대전이 한창일 때 원자탄을 연구하면서 이 개념이 중요하게 부각되었는데 임계질량 이하의 우라늄은 아무리 충격을 가해도 폭발하지 않는다. 그러나 일단 우라늄 덩어리가 임계질량 이상으로 되면 우라늄은 순식간에 엄청난 에너지를 분출하면서 폭발한다. 임계질량을 초과하는 바로 그 순간 우라늄 붕괴는 연쇄반응(Chain of Reaction)을 일으키면서 우라늄 덩어리 모두가 폭발하고 일순간에 거대한 에너지를 방출한다

임계질량이란 특정한 변수값을 의미한다. 이 값에 도달하기 전의 변수행태와 이 값을 넘어선 후의 변수행태는 현격하게 달라진다. 영하의 온도에서 물은 얼음이라는 고체로 존재하다 0도를 넘어서면 갑자기 액체로 변하고 100도가 넘으면 다시 증기로 변화된다. 임계질량을 전후하여 시스템의 행태는 급격히 변화된다.

임계질량과 비슷한 개념으로 티핑 포인트 (Tipping Point)가 있다

선순환과 악순환

시간이 흐를수록 점점 더 나빠지는 시스템을 악 순환 (Vicious Circle)에 빠졌다고 하고 거꾸로 시간이 흐를수록 자꾸만 좋아지는 시스템은 선 순환 (Virtuous Circle)을 탄다고 표현한다. 한쪽 방향으로만 변화가 계속해서 증폭되기 때문에 선순환과 악순환 모두 양의 피드백 루프에서 나온다.

성장의 한계 Limits to Growth

실세계에서는 성장이나 쇠퇴가 무한정 하지 않고 한계가 존재한다.

음의 피드백 루프와 통제 Control

전통적으로 음의 피드백루프는 통제, 제어를 위한 장치로 간주되어 왔다. 음의 피드백 루프의 가장 전형적인 시스템이 난방시스템의 자동온도조절기구.

음의 피드백 루프 + 시간지연 = 과잉행동 Overaction

음의 피드백 루프에 시간지연이 내재된 인과관계가 존재할 때 균형점에서 벗어나게 하는 과도한 행동이 발생하는데 이를 과잉행동 (Overshoot)이라 한다. 예컨대 술만 먹으면 취하고 취하면 술을 안 먹게 되지만, 술을 먹고 취하는데 시간지연이 존재하기 때문에 술을 마시는 사람은 자신이 아직 술에 취하지 않은 줄 알고 과음하게 되고 얼마 지나지 않아 술에 취한 자신을 발견하게 되지만 이미 때는 늦어 점점 더 술에 취하고 비틀거리기 시작한다

음의 피드백 루프 + 시간지연 = 요동 Fluctuation

음의 피드백 루프에 시간지연이 개입되는 경우 시스템은 불안정해진다. 시간지연이 있는 음의 피드백루프는 시스템에 요동 (Fluctuation) 또는 파동 (Wave)을 가져온다. 예컨대 샤워를 하려 할 때, 샤워꼭지를 왼쪽으로 돌리지만 기대와 달리 차가운 물이 나와 샤워꼭지를 더 왼쪽으로 돌리면 서서히 따스한 물이 나오지만 조금만 지나면 물이 너무나 뜨거워지고 다시 샤워꼭지를 오른쪽으로 돌리게 된다.

음의 피드백루프에 시간지연이 결합되어 있을 때의 과잉행동과 이로 인한 파동이 발생한다는 것은 피드백 사고의 법칙에 해당될 정도로 중요한 원리이다. 인과지도를 살펴보다가 시간지연 표식이 있는 음의 피드백 루프를 발견하면 틀림없이 이 시스템에 파동이 발생하겠구나라고 추론할 수 있다.

시장실패의 두 가지 메커니즘 : 투기와 파동

시장실패 두 가지 메커니즘인 투기와 파동. 투기는 양의 피드백 루프에 의해 발생하는 실패로서 수요부문에서 발생한다. 파동은 음의 피드백루프와 시간지연에 의해 발생하는 실패로서 공급부문에서 발생한다. 이러한 두 가지 시장 실패는 상호보완적으로 증폭될 가능성이 있다.

처방의 부작용과 희생양

단기적으로 효과적인 처방이 장기적으로 예상하지 못한 결과를 초래하는 경우 문제는 이전보다 더 악화된다. 시스템 다이내믹스 학자는 이와 같은 상황을 실패하는 처방(Fixes that fail)이라고 한다.

문제가 발생하면 처방이 증가하고 문제가 해결된다. 이는 윗부분의 음의 피드백 루프에서 이루어지는 작용이다. 그러나 장기적으로 보다 큰 원을 그리는 양의 피드백 루프가 돌아가면서 예상치 못한 부작용이 나타난다.

목표의 후퇴 : 개구리 신드롬

뜨거운 물에 개구리를 넣으면 개구리는 금방 뛰어 나오지만 미지근한 물에 개구리를 넣고 서서히 데우면 물이 끓어도 개구리는 뛰어 나오지 못하고 죽는다. 이를 개구리 신드롬이라 한다. 시스템 사고에서 개구리 신드롬은 두 개의 음의 피드백 루프로 표현한다.

현실을 개선하는 노력이 효과를 보기 위해서는 많은 노력과 시간이 걸리기 때문에 목표를 후퇴해 버리곤 한다.

과열경쟁으로 인한 앙등효과

목표후퇴와 반대로 치열한 경쟁관계에 의해 목표가 지속적으로 향상되는 경우를 앙등 효과 (Escalation Effect)라 한다. 앙등효과의 전형적인 예는 냉전시대의 무기경쟁(Arm’s Race)이다.

빈익빈 부익부

빈익빈 부익부 시스템은 두 개의 양의 피드백 루프로 구성된다. 빈익빈 부익부 시스템보다 더 무서운 것이 빈익부 부인빈 시스템으로 정경유착으로 왜곡된 자본주의의 병폐라 할 수 있다. 국가가 방만한 운영을 한 대기업에 계속적으로 세금 지원을 하는 것. 빈익빈 부익부 시스템은 어느 한쪽으로 부를 몰아 주지만 끊임없이 부를 창출하는 반면. 빈익부 부익빈 시스템은 사회의 부를 까먹는 메커니즘

자기실현적 예언

자기실현적 예언 (Self-Fullfilling Prophecy)이란 시스템에 대한 예언이 스스로 또는 저절로 성취된다는 뜻. 증권가에서 중소기업이 곧 망할 것이라는 악성 루머가 돌면 기업의 주가가 하락하고 이에 따라 그 기업의 자금여력이 악화되고 실제로 돌아오는 채무를 변제하지 못함으로써 부도에 직면하게 되는 상황.

자기실현적 예언의 시스템은 두 가지 특성

  • 양의 피드백 루프에 의해 움직인다
    • 초기의 예언이 피드백 루프를 타면서 계속해서 강화되기 위해서는 양의 피드백 루프여야 하기 때문
  • 인식의 세계와 실제의 세계가 상호 결합되는 구조를 지닌다

자기실패적 예언

자기실패적 예언 (Self-Failing Prophecy)이란 시스템이 예언과 반대로 이루어진다는 것. 알코올중독이나 흡연중독에 빠진 사람이 쉽게 금주, 금연을 할 수 있을 것이라 믿는 것

자기실패적 예언 역시 인식세계와 실제세계 사이의 피드백 루프로 구성된다. 그런데 자기실현적 예언과 달리 자기실패적 예언은 음의 피드백 루프로 구성된다.

자기실패적 예언은 집단적인 행동(Collective Action)에서 보다 쉽게 관찰될 수 있다. 교통방송에서 특정 지역의 소통이 원활하다고 방송하는 즉시 그 지역으로 차량이 몰리기 시작하여 오히려 교통이 악화되는 경우

피그말리온 효과

피그말리온 효과는 자기실현적 예언에 속하지만 자기자신보다는 타인에 관한 관념 또는 기대에 초점을 맞춘다. 교사가 학생을 ‘너는 똑똑한 아이이기 때문에 열심히 공부하면 잘할 것’ 이라는 말을 듣는 학생은 실제로 공부를 잘하게 된다. ‘남자는 다 도둑놈’ 이라는 말을 듣고 자란 여성은 남자를 만날 때마다 의심을 한다.

전략의 발견

전략의 다섯 가지 주제

다섯 가지 전략의 구성요소

  • 전략의 객체로서 시스템을 알아야 한다
  • 전략의 주체를 논의한다
  • 상대방을 공격할 수 있는 전략지점(Strategic Point)을 발견하여야 한다
  • 상대방을 공격할 전략시점(Strategic Timing)을 발견하여야 한다
  • 전략은 창조적으로 시스템을 디자인하는 수준까지 갈 수도 있다

시스템 다이내믹스의 창시자인 제이 포리스터 교수의 사회시스템의 반상식적 행태

  • 사회시스템은 근본적으로 정책 변화에 저항적이다
  • 사회시스템에는 몇 가지 민감한 통제지점이 존재하지만 상식으로 생각하는 장소에 존재하지 않는다 더군다나 민감한 통제지점의 효과는 상식적으로 생각하는 것과 반대인 경우가 많다
  • 사회시스템에서 장기적인 정책효과와 단기적인 정책효과는 상호 충돌하는 경우가 많다

전략의 객체 1 : 변화에 저항하는 시스템

시스템은 존재하고 있다는 사실 자체만으로도 변화하지 않으려는 관성을 가지고 있다. 모든 시스템이 변화에 저항한다는 점은 음의 피드백 루프를 지닌다는 점을 의미한다. 시스템을 강제로 변화시킨다 해도 원래의 상태로 회귀하는 음의 피드백 루프가 작동하기 때문에 겉으로 볼 때 시스템이 저항하는 것처럼 보인다.

전략의 객체 2 : 저항의 최소화

가장 우수한 전략은 싸우지 않고 승리하는 전략이며, 그 다음으로 우수한 전략은 상대방의 전략을 최소화 시키는 전략.

전략의 주체 1 : 약자의 겸손 = 물처럼 흐르는 전략

훌륭한 전략의 필수조건은 약자여야 한다. 오직 겸손하고 낮은 자만이 전략을 발견할 수 있다.

전략의 주체 2 : 약자의 비폭력 = 불처럼 희생하는 전략

약자의 비폭력운동은 양의 피드백 루프를 형성한다. 양의 피드백 루프를 통하여 약자의 미약한 힘이 강력하게 증폭된다.

전략개입지점 1 : 양의 피드백 루프와 과감한 전략

정책 지렛대 (Policy Leverage)란 작은 힘으로 큰 변화를 가져올 수 있는 정책개입지점을 의미한다. 정책지렛대를 찾는 원리는 단순하다. 작은 힘을 증폭시킬 수 있는 양의 피드백 루프를 활용해야 하고 변화를 거부하는 음의 피드백 루프를 피하는 것이 그 원리이다.

네트워크 경제학자는 임계질량을 초과하여 성장하는 양의 피드백 루프에 주목하여 이를 네트워크 외부성 (Network Externality)이라고 한다. 네트워크 외부성이란 네트워크의 가치가 높을수록 네트워크에 접속하는 가입자가 증가하고 네트워크의 가입자가 증가할수록 다시 네트워크의 가치가 증가하는 양의 피드백 루프를 의미한다. 팩스의 가치는 팩스의 사용자가 많을수록 증가한다.

네트워크 재화와 관련된 산업에서는 선두주자(First Mover)가 유리하다. 시장을 선점한 기업이 사용자를 꼭 잡고 있는 현상을 포획(Lock-In)이라고 한다. 포획 현상이 발생하는 중요한 이유는 사용자가 다른 네트워크 재화로 이동하는데 큰 비용을 지불해야만 하기 때문이다.

전략개입지점 2 : 음의 피드백 루프와 기다림

음의 피드백 루프에 시간지연이 결합되어 파동을 일으키는 샤워기 시스템의 해결책

  • 시간지연이 없는 순간 온수기로 바꾼다
  • 샤워의 물을 대야에 받아서 쓴다
  • 샤워의 물을 틀어놓고 적당한 온도가 될 때까지 기다린다

첫째 방법은 가장 완벽하지만 비용이 가장 크다. 둘째 방법은 재고창고를 의미한다. 이 역시 재고창고는 큰 비용을 유발한다. 셋째 방식은 기다리면서 두고 보는(Wait and See) 방법으로 가장 널리 사용되는 방식이다. 음의 피드백 루프에 시간지연이 결합된 시스템이 발생시키는 파동에 대처하는 훌륭한 방법 중의 하나가 바로 기다리는 전략.

전략개입지점 3 : 떠벌리기와 몸사리기

양의 피드백 루프를 활용하라는 정책지렛대 원리에 의하면 무엇보다도 먼저 자기실현적 예언의 피드백 루프를 활용하여야 할 것이다. 반면 음의 피드백 루프를 피하라는 정책지렛대 원리에 의하면 자기실패적 예언의 구조를 조심스럽게 다루어야 한다.

전략개입시점 1 : 타이밍의 중요성

만사가 적기를 놓치면 목표를 달성할 수 없다. 적기에 구사되는 전략이야말로 가장 훌륭한 전략이다. 정책개입의 타이밍을 서둘러야 할 때도 있지만 늦추면서 적절한 때를 기다려야 할 때도 있다

전략개입시점 2 : 타이밍의 포착과 피드백 루프

양의 피드백 루프가 지배하는 시스템에서는 초기에 빠른 정책개입이 요청된다고 할 수 있다. 임계질량을 넘어선 양의 피드백 루프는 스스로 증가하는 특징이 있기 때문에 정책의 초점은 정책 변수의 값을 임계질량 이상으로 올리는데 두어진다. 그리고 이러한 정책은 시스템 형성의 초기에 강력하게 집행되어야 한다.

음의 피드백 루프가 지배하는 시스템은 성급한 정책개입보다는 기다리는 정책이 강조된다. 성급한 정책개입을 시도하기보다는 시스템이 스스로 안정화되기를 기다리는 정책이 권고된다.

피드백 루프가 양에서 음으로 또는 음에서 양으로 변화하는 시스템은 그러한 변화가 언제 발생하였는지 인식하는 것이 중요하다. 이러한 시스템에서 성장을 지속한다거나 균형을 유지하는 정책을 펼치기는 어렵다. 다만 파동의 폭을 줄이려는 정책이 시도된다

피드백 루프의 특성 시스템의 특성 정책문제와 목표 정책 개입시기
양의 피드백 루프 성장 또는 쇠퇴 성장 초기(임계점)
음의 피드백 루프 + 시간지연 파동 균형 기다림
양과 음의 피드백 루프의 전환 성장과 쇠퇴의 반복 지나친 성장이나 지나친 쇠퇴 억제 지배적 피드백 루프가 전환되는 시점의 근방

적절한 타이밍은 살아 있는 시스템 속에서 살아 있는 사람들과의 상호작용을 통해 발견되기 때문에 항상 유동적으로 변화한다. 적절한 타이밍은 적절한 피드백에서 나온다.

수동적, 일방적인 타이밍을 정적인 타이밍이라고 하면 보다 적극적인 상호작용을 통해 만들어지는 역동적인 타이밍(Dynamic Timing)이 있다. 역동적인 타이밍에는 단순히 기다리기보다는 상호간에 만들어 낸다는 적극적인 의미가 들어있다.

시스템 재설계 1 : 피드백 루프의 창조적 설정

현실에 존재하지 않는 메커니즘을 창출하는 전략을 구조적인 전략이라 할 수 있다. 구조적인 전략은 시스템의 이해를 넘어 시스템의 구조를 재설계(Redesign)하고자 한다.

고객을 지속적으로 관리함으로써 고객에 의해 고객이 증가하는 선순환 효과가 창출되는 양의 피드백 루프를 구전효과(Word of Mouth)라고 한다.

음의 피드백 루프를 통하여 상대방의 공격을 상대방에게 되돌리는 메커니즘을 부메랑효과라고 한다.

UML 객체지향 설계/ 전체 정리

객체지향을 이해합시다

객체

하나의 객체는 구조 (Structure)를 가지고 있다. 쉽게 말해서 속성 (Attribute)과 행동 (Behavior)을 가지고 있다는 뜻이다. 객체의 행동은 자신이 수행하는 오페레이션 (Operation)으로 구성되어 있다. 속성과 오퍼레이션을 모두 합쳐서 특성 (Feature)이라고 한다.

객체는 클래스의 인스턴스이다. 클래스는 동일한 속성과 오퍼레이션을 가지고 있는 객체의 일반적인 범주를 뜻한다. 클래스는 객체를 생성하는 틀, 혹은 템플릿 (Template)이기도 하다.

객체지향의 목적은 실세계의 일부 혹은 전체를 본 뜨는 것(이것을 모델링이라고 한다)이라는 점이다. 속성과 오퍼레이션들이 좀 더 많이 반영된 클래스일수록 실세계에 더 가까운 모델이 만들어진다.

객체지향을 이루는 몇 가지 개념들

추상화

추상화 (Abstraction)란 객체를 모델링할 때 여러분이 필요로 하는 만큼의 속성과 오퍼레이션을 추출해 내는 것이다. 전문가들은 추상(모델에 무엇을 포함하고 무엇을 뺄 것인지를 아는 것)이 모델을 만드는 사람에게 있어 가장 중요한 기술이다라고 주장한다.

상속

세탁기, 냉장고, 전제레인지 등은 모두 가전제품이다. 이들은 각각 가전제품이라는 클래스의 서브클래스 (Subclass)라고 할 수 있으며, 가전제품이라는 클래스는 각각의 제품의 슈퍼클래스 (Superclass)가 된다.

객체지향에서 이러한 관계를 상속 (Inheritance)이라고 한다. 가전제품 클래스의 각 서브클래스(세탁기, 냉장고, 전자렌지 등)는 가전제품의 모든 특성을 물려받게 된다. 중요한 점은 각각의 서브클래스는 자신만의 속성과 행동을 추가한다는 것이다.

다형성

다른 클래스인데 같은 이름의 오퍼레이션을 가지게 되는 경우가 있다. 예를 들어 같은 Open인데도 문을 열고(Open Door), 창문을 열고(Open Window), 신문을 펼치고(Open Newspaper), 은행 계좌를 개설하고(Open Account), 대화를 시작하는 데(Open Conversation) 모두 이 동사를 사용할 수 있는 것이다. 행위의 대상이 모두 다르기 때문에 다른 오퍼레이션이 이루어지는 것이다. 객체지향 세계에서는 각각의 클래스마다 자신의 오퍼레이션이 어떻게 행동하는지를 알고 있다. 이것을 다형성 (Polymorphism)이라고 한다.

다형성은 동일한 이름의 오퍼레이션이라도 그 오퍼레이션이 일어나는 클래스에 따라 각기 다른 행동을 수행하도록 한다. 예컨대 같은 이동이라는 명령을 수행할 때 땅에서는 달리기를 하고 물에서는 수영을 한다.

캡슐화

객체는 자신의 오퍼레이션을 수행하고 결과를 내놓지만 그 오퍼레이션의 동작 원리는 가려져 있다.

객체는 자신의 동작 원리를 클래스라는 껍데기로 캡슐화 (Encapsulation)한다. 즉, 그 객체만이 자신의 오퍼레이션이 어떻게 작동하는지를 알고 있으며 외부에서는 알 수 없다. 이래서 캡슐화를 정보 은닉이라고도 부른다. 하지만 모든 것을 숨긴다면 객체는 아무 의미도 없다. 객체는 얼굴(face)만을 보임으로써 그 객체가 수행하는 오퍼레이션을 다른 객체나 외부 세계에서 지시할 수 있도록 한다. 이것을 인터페이스 (interface)라고 한다.

메세지 전송

시스템 안에서는 객체들이 서로 연결되어 행동한다. 객체들은 어떻게 서로 손발을 맞추어 행동하는 것일까? 바로 메세지를 사용하는 것이다. 한 객체가 다른 객체에게 메세지를 보내어 어떤 오퍼레이션을 수행하도록 하면 메세지를 받은 객체는 지시 받은 대로 해당 오퍼레이션을 수행하는 것이다.

연관

객체지향 세계에서 흔히 벌어질 수 있는 또 한 가지는 한 객체가 다른 객체와 관계를 맺는 것이다. 예를 들어 여러분이 TV를 켜는 일을 객체지향적으로 해석하면 여러분은 TV와 연관 (Association) 관계에 있게 되는 것이다.

TV를 켜는 것에 대한 연관은 단방향성(Unidirectional)이다. 결혼하는 것에 대한 연관은 양방향성(Bidirectional)이다.

한 객체가 다른 객체와 가지는 연관이 두 개 이상일 경우도 있다. 친구와 동업을 하고 있다면 친구라는 연관과 동업자라는 연관을 동시에 가지게 되는 것이다.

하나의 클래스는 한 개 이상의 다른 클래스와 연관될 수 있다. 사람은 자동차에 탈 수 있을 뿐만 아니라 버스에도 탈 수 있다.

다중성 (Multiplicity)은 객체 사이의 연관 관계를 설명할 때 매우 중요한 특징이다. 다중성은 특정한 집합 내에서 하나의 객체가 몇 개의 객체와 연관될 수 있는지를 알려준다.

집합연관

컴퓨터는 또 다른 타입의 연관 관계인 집합연관 (Aggregation) 관계에 있다. 컴퓨터는 수많은 구성요소로 이루어져 있기 때문이다.

집합체(Aggregate) 전체와 그 객체를 구성하는 컴포넌트 부분끼리 밀접한 관계를 가지는 집합연관의 한 형태가 있는데 이것을 복합연관 (Composition)이라고 한다. 복합연관의 열쇠는 바로 컴포넌트가 복합체(Composite)에서만 컴포넌트로써 존재한다는 점이다. 예를 들어 셔츠는 몸통, 칼라, 소매, 단추 등의 복합체이다. 셔츠와 칼라를 떼어 놓으면 아무 의미도 없다.

가끔 복합체 내의 컴포넌트는 복합체만큼 오래 가지 않는 경우도 있다. 나무에 붙어 있는 잎은 나무가 죽기 전에 떨어져 나갈 수 있는 것이다. 물론 나무를 찍어 넘어뜨리면 잎은 따라서 죽는다.

집합연관과 복합연관이 없으면 실세계의 객체를 그대로 모델링하기가 거의 불가능하다. 실세계의 객체는 여러 개의 부분이 모여서 전체를 이룬 형태가 부지기수이기 때문이다.

객체지향 개념을 적용해 봅시다

속성

속성 (Attribute)이란 클래스에 속한 특성에 이름을 붙인 것으로 이것이 가질 수 있는 값의 범위를 설정한다. 클래스는 0개 이상의 속성을 가질 수 있다

오퍼레이션

오퍼레이션 (Operation)이란 객체에게 요청할 수 있는 행동을 말한다.

오퍼레이션이름 뒤에 따라오는 괄호 안에 매개변수 (Parameter) 리스트를 넣어줄 수 있는데 하나의 매개변수는 “이름:타입”의 형태를 가진다. 오퍼레이션 중에 자신의 작업을 마친 후에 그 결과를 반환하는 형태가 있는데 이러한 오퍼레이션을 함수 (Function)이라고 한다

클래스 모델링은 이렇게 시작하자

몸담고 있는 업무에서 사용되는 명사(noun)에 특히 귀를 쫑긋이 세우고 있어야 한다. 이 명사들은 여러분이 모델링할 클래스의 이름이 될 가능성이 높다. 그들이 말하는 동사(verb)도 놓치지 말자. 그것들은 모델링한 클래스의 오퍼레이션이 될 후보들이다.

관계를 지어 봅시다

연관

클래스가 개념적으로 서로 연결되어 있을 때 이 관계를 연관 (Association)이라고 부른다.

연관에 대한 제약

두 클래스 사이의 연관 관계가 어떠한 규칙을 따라야 할 경우가 있다.

연관 클래스

연관은 클래스와 같이 속성과 오퍼레이션을 가질 수 있다. 속성과 오퍼레이션을 가진 연관은 연관 클래스 (Association Class)라는 이름으로 따로 구분한다. 예를 들어 만일 선수와 팀이 고용주와 고용자로서 계약이라는 연관을 가질 경우 계약은 연봉이나 기간 같은 속성과 오퍼레이션을 가질 수 있다. 이것이 연관 클래스가 된다.

링크

객체가 클래스의 인스턴스인 것처럼 연관도 자신의 인스턴스를 가질 수 있다. 어떤 특정한 선수가 특정한 팀에 소속되어 있는 관계를 생각하면 이 때의 Plays on 연관 관계를 링크 (Link)라고 부른다. 링크는 두 객체(인스턴스)를 선으로 이어서 나타낸다.

링크는 연관의 인스턴스로서 클래스가 아닌 객체 사이를 연결한다. 예를 들어 위의 선수와 팀이 맺은 계약의 경우 선수라는 클래스의 인스턴스인 박지성과 팀이라는 클래스의 인스턴스인 맨유가 있을 때 박지성과 맨유의 계약이 계약이라는 연관클래스의 인스턴스인 링크가 된다.

다중성

다중성 (Multiplicity)이란 연관되어 있는 두 클래스 사이에서 한 클래스의 객체와 관계를 가질 수 있는 다른 클래스의 객체 개수이다. 예컨대 축구 팀은 11명의 선수로 구성되므로 팀의 입장에서 보면 11명의 선수와 연관되어 있는 것이다.

수식연관

일대다의 다중성을 가진 연관 관계에서는 한 객체가 특정한 객체를 가려내어야 하는 상황(이를 Lookup 이라고 한다)이 발생한다. 한쪽 클래스의 객체가 다른 쪽 클래스의 객체를 선택하여 연관 관계 내에서의 역할을 만족시켜야 할 때 첫째 클래스는 자신이 원하는 객체를 찾기 위해 특정한 속성에 의존할 수 밖에 없는데 대게 이 특정한 속성은 ID 번호 같은 식별자에 해당된다.

예를 들어 하나의 예약 리스트는 여러 건의 예약을 갖고 있는데 여러분이 호텔에 방을 예약할 때 호텔로부터 확인 번호나 이름 등을 받게 된다. 예약과 관련하여 문의를 하고자 한다면 예약 리스트에서 해당 예약 건을 찾을 수 있도록 확인 번호나 이름을 불러주어야만 한다

반사연관

클래스는 자신과 연관 관계를 가질 수도 이으며 이것을 반사연관 (Reflexive Association)이라 한다. 여러 가지 역할을 맡을 수 있는 객체를 가지고 있을 떄 이런 경우가 발생한다. 탑승자는 운전자도 될 수 있고 승객도 될 수 있다.

상속과 일반화

한 클래스(자식클래스 혹은 서브클래스)는 다른 클래스(부모클래스 혹은 슈퍼클래스)로부터 속성과 오퍼레이션을 물려받을 수 있다. 슈퍼 클래스는 서브 클래스보다 일반적인 특성을 가진다.

슈퍼클래스를 가지지 않는 클래스는 기본 클래스(Base Class) 또는 루트 클래스 (Root Class)라고 하며 서브 클래스를 가지지 않는 클래스는 리프 클래스 (Leaf Class)라고 한다.

클래스가 단 하나의 슈퍼클래스를 가지는 상속을 단일 상속 (Single Inheritance)라고 하며두 개 이상의 슈퍼클래스를 가지는 상속은 다중 상속 (Multiple Inheritance)라고 한다.

추상 클래스

객체를 제공하지 않는 클래스는 추상 클래스 (Abstract Class)라고 한다.

의존관계

한 클래스가 다른 클래스를 사용하는 경우 의존관계 (Dependency)라고 한다. 의존관계가 가장 흔하게 드러나는 예는 다른 클래스를 사용하는 오퍼레이션의 시그너처를 보일 때이다.

집합연관, 복합연관, 인터페이스 그리고 실체화

집합연관

하나의 클래스가 여러 개의 컴포넌트 클래스로 구성되어 있는 경우가 있다. 이러한 상황은 집합연관 (Aggregation)이라 불리는 특수한 관계이다

복합연관

복합체 (Composite)는 강한 집합연관에 의해 만들어진 클래스이다. 복합체에서 각 컴포턴트 클래스는 오직 하나의 전체 클래스에만 속할 수 있다.

인터페이스와 실체화

자동차와 TV는 인터페이스 (Interface)를 통해 행동을 수행하라는 메세지를 받는다. 인터페이스란 클래스의 일정한 행동(Behavior)을 나타내는 오퍼레이션의 집합으로써 다른 클래스에서 사용될 수 있다.

세탁기를 예를 들면 세탁기의 조절 손잡이가 세탁기의 인터페이스가 된다. 사용자는 세탁기를 돌리기 위해 세탁기의 회로를 뜯어낼 필요 없이 세탁기의 조절 손잡이만 조절하면 세탁기를 돌릴 수 있다.

세탁기의 행동 중 일부가 조절 손잡이의 행동을 실체화 (Realize) 한 것이라고 한다. 클래스와 인터페이스가 가지는 이러한 관계를 실체화(Realization) 관계라고 한다.

인터페이스는 속성을 가지지 않는다

가시성

인터페이스와 실체화에 대하여 뗄래야 뗄 수 없는 관계를 가진 것이 바로 가시성이라는 개념이다. 가시성 (Visibility)이란 속성과 오퍼레이션에 적용되는 것으로 해당 클래스(혹은 인터페이스)의 속성과 오퍼레이션을 들여다 볼 수 있는 범위를 말한다.

  • Public 속성과 오퍼레이션은 다른 클래스가 마음껏 사용할 수 있다.
  • Protected 속성과 오퍼레이션은 원래 클래스와 여기서 상속 받은 클래스만이 사용할 수 있다.
  • Private 속성과 오퍼레이션은 원래의 클래스만이 사용할 수 있다.

왜 가시성이 실체화와 밀접한 관계를 가지고 있을까? 인터페이스를 실체화 하기 위해서는 인터페이스 안에 설정된 오퍼레이션들이 모두 Public 가시성을 가지고 있어야 한다. Protected, Private로 막힌 오퍼레이션은 아무런 의미가 없다. 왜냐하면 인터페이스는 많은 클래스들에 의해 실체화되기 위한 용도로 고안되었기 때문이다.

스코프

속성과 오퍼레이션이 가지고 있는 또 하나의 특성으로써 스코프 (Scope)가 있다. 스코프에는 두 가지 종류가 있는데 인스턴스 스코프 (Instance Scope)에서는 각각의 인스턴스에 속한 속성과 오퍼레이션들이 각자의 값을 가지도록 되어있다. 클래스 스코프 (Classifier Scope)에서는 해당 클래스에 대해 유일한 속성값과 오퍼레이션값을 가진다.

시스템 사고

이번에 소개해 드릴 책은 김동환 지음의 '시스템 사고' 입니다
예전에 퍼즐랩님과 복잡계에 대한 토론을 나누다 퍼즐랩님이 추천해 주셔서 기억해 두었었는데 근래에야 겨우 읽게 된 책입니다
이전에 소개해 드렸던 복잡계 개론에서도 시스템 사고에 대한 내용이 살짝 나오기는 하지만 이 책은 그 시스템 사고에 대해 좀 더 본격적으로 다루고 있는 책이라 할 수 있습니다

일단 책의 설명을 빌어 시스템 사고를 설명해 드리면 다음과 같습니다

시스템 사고는 시스템의 작동메커니즘을 직관적으로 파악하여 시스템을 효과적으로 변화시킬 수 있는 전략을 발견하기 위한 사고방식이다

말 그대로 사고방식에 대한 내용인 이 시스템 사고는 이 세상에 존재하는 모든 체계화된 시스템을 이해할 수 있는 방법 입니다
그다지 체계화 되어 있지 않게 보이는 행태들 또한 이 시스템 사고를 통해 체계적으로 바라 볼 수 있게 하지요

그럼 일단 책을 살펴 보겠습니다
이 책은 아래와 같이 총 5개의 부로 이루어져 있습니다
1부 시스템 사고의 조감도
2부 파동의 사고
3부 인과의 사고
4부 피드백 사고
5부 전략의 발견

1부에서는 시스템 사고에 대한 개괄적인 설명을 하고 그것을 바탕으로 2부부터 본격적으로 시스템 사고에 대해 설명합니다
2, 3, 4부는 시스템 사고의 3가지 구성인 파동, 인과, 피드백에 대해 설명하고
마지막 5부는 그것들을 활용하여 전략을 발견하는 것에 대해 설명하지요
 –파동, 인과, 피드백에 대한 자세한 설명을 드리고 싶지만 여기서는 생략하고 
    나머지 자세한 내용은 공부자료에서 정리해 보도록 하겠습니다

개인적으로 이런 분야에 흥미를 갖고 있기 때문에 무척 재미있게 읽었지만
책이 전달하는 내용이 무척이나 유용한데다가 책 자체가 마치 복잡계 개론처럼 이해하기 쉽게 쓰여져 있기 때문에 
누구나 한 번쯤 읽어 보면 괜찮을만한 책이라 생각됩니다

UML 객체지향 설계

간만에 책 소개해 드립니다
이번에 소개해 드릴 책은 'UML 객체지향설계' 입니다
UML을 좀 배워야겠다는 생각에 읽게 된 책인데 읽으면서 뜻밖의 수확을 얻게된 책이지요

그럼 일단 책을 살펴 보도록 하겠습니다
이 책은 부록을 포함한 4개 파트가 24개의 챕터로 이루어져 있습니다
PART 1 UML 입문
PART 2 사례 연구
PART 3 한 단계 앞서 보기
PART 4 부록

파트 1에서 UML에 대한 소개와 객체지향에 대한 소개, 그리고 UML 각 다이어그램에 대한 설명을 합니다
파트 2에서는 파트 1에서 소개된 내용을 기반으로하여 UML을 적용하는 방법을 레스토랑 사업에 대한 예시를 들어 설명합니다
파트 3은 UML로 적용 가능한 다른 것들에 대해 알아보고 
파트 4는 말 그대로 부록 파트로 본문에 있는 문제의 해답과 Visio 간략 사용법 등이 설명되어 있습니다

이 책을 읽는 내내 참 잘 쓰여진 책이다 라는 생각이 계속 들은 것이
제목에서부터 나타나듯 일단 '초보자'를 위해 최대한 설명을 쉽게 하는 것은 물론이고
 -실생활에서 사용하는 세탁기, 자판기 등을 예시로 설명하여 이해를 쉽게 합니다
설명에 유머를 곁들여 책을 쉽게 읽게 합니다
더불어 각 챕터마다 연습 문제를 첨부하여 책을 본 후에 문제를 풀어 확실히 이해할 수 있도록 유도합니다
때문에 UML에 대해 배우고자 하는 분이시라면 이 책을 통해 기본 개념을 충분히 이해하실 수 있을 듯합니다

개인적으로 게임 디자이너의 가장 중요한 능력이
'주어진 방향 내에서 최대한 게임의 재미를 만들어 내는 능력'이고
그 다음으로 중요한 능력은
'게임이란 소프트웨어의 완성도를 높이기 위한 시스템 설계 능력'이라고 생각합니다

이 책에서 다루는 UML은 사실 게임 개발에 적용하는 것에 대해 말이 많기 때문에
굳이 UML을 배우기 위해 이 책을 읽는다기보다는
'시스템 설계 능력을 기르기 위해 UML을 공부해 본다'는 생각으로 이 책을 읽어 보시면 좋을 듯합니다