'UML'에 해당되는 글 2건

  1. 2007/10/20 Hybrid Association, Aggregation and Composition (7)
  2. 2007/08/03 Hybrid StarUML 써보는 중... (2)
Association과 aggregation, composition 은 UML 이나 design pattern 에 있어서 종종 혼돈되는 단어들이다. 배운다. 익히고 이해했다. 하지만 나중에 가서 또 헷깔린다. -_-;; (나만 그런가... -_-;;)

일단 이중에 association 은 가장 간단하다. '연관'되어 있다는 정도.
Aggregation과 composition 은 조금 다르다. 비슷하면서도 명백히 다르다.

Aggregation은 composition 보다는 느슨한 형태의 관계이다. Aggregation 의 경우 parent 가 삭제 되더라도 살아 있다. 위키에 있는 예로 예를 들으면 명백하다.[1]

예를 들자면, 'ABC 대학'은 'ABC 대학 물리학과'와 'ABC 대학 컴퓨터 학과가 있고 각 학과는 각각의 교수진이 있다. 여기서 만약, ABC 대학이 사라진다면, 물리학과와 컴퓨터 학과는 통채로 같이 사라진다. 이것은 Composition 이다. 반대로 물리학과가 없어진다고 해도 그 물리학과의 교수진은 없어지지 않는다. 그 교수진은 다른 대학에 가서 일을 하면 되는 것이지, '교수'라는 직책이라던가 사람 자체가 없어지는 것은 아니기 때문이다. 이것은 Aggregation 이다. 이때 가장 쉽게 구별할 수 있는 것이 lifetime 이다. Composition 은 상위 개념의 lifetime 을 이어 받는데 반해 aggregation 은 별개의 lifetime 을 갖는다. (Composition 과 aggregation 의 UML Notation 은 다음의 그림을 참고한다.)


뭐, 이 정도는 직접 위키를 봐도 되고 다른 곳에서도 많이 다루는 내용이다. 하지만 Design Patterns[2] 책에서는 aggregation 은 (알려진 것과는 다르게) Aggregation 은 상위 클래스와 동등한 lifetime 을 갖는다고 설명한다.[3] 이 부분은 Wiki에 나온 내용과도 다르고 다른 곳에서의 설명과도 다르다. 이 부분에 대해 저자 중 한명에게 메일을 보냈고 답변을 받았다.

Our book was written ten years before wikipedia was created.
And who wrote that article?  There didn't seem to be any references.

정말 그렇다, 위키에는 출처가 표시되어 있지 않다. [4]

I think we took that vocabulary from OMT.  It was not standardized at
the time of the book,   I think it is still not standardized, which means that
wikipedia is wrong because it gives one point of view as the only point of view.

OMT 에서 단어를 가져 왔다는 의미는 뭔지 알 수 없었다.  OMT 관련되서 여러가지를 검색해봤지만 적절한 정보를 찾는건 실패했다. 어쨌거나, 이러한 의미가 아직 표준화 되어 있지 않다는것이 중요한 포인트인듯 하다.

결론을 짓자면, 현재는 대부분 위키의 표현(Aggregation 은 parent 와 별개의 lifetime 을 갖는 다는 것)은 내가 알기로 대중화되어 있다. 그런 의미에서 보면, Wiki 가 맞고 책이 틀릴 수도 있다. 하지만 저자의 말처럼, 아직 표준화되어 있지 않은 것을 그 관점을 제시하지 않고, 그것을 사실화해서 표현하는 것은 출처 표기도 없이 대충 써놓은 Wiki 가 틀렸다고 볼수도 있다. 판단은 개개인이 알아서 해야할듯...

ps. 혹시 OMT 용어의 표준화에 대한 정보나, 관련된 의견이 있다면 리플을......

  1. Object Composition - Aggregation, Wikipedia [본문으로]
  2. Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Ralph Johnson, Grady Booch, Addison Wesley, 1994 (번역서 제목 : GoF의 디자인 패턴) [본문으로]
  3. Aggregation implies that an aggregation object and its owner have identical lifetimes, pp 22 [본문으로]
  4. 덕분에 위키의 composition 페이지에 다음과 같은 메세지가 맨 상단에 추가되었다. 'This article does not cite any references or sources. (August 2007)' [본문으로]
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/10/20 10:37 2007/10/20 10:37

트랙백 주소 :: http://www.hybrid.pe.kr/tt/trackback/235

댓글을 달아 주세요

  1. 황상철 2007/10/20 23:24  댓글주소  수정/삭제  댓글쓰기

    혹시 OMT가 아니라 OMG가 아닐까요 ?

    • Hybrid 2007/10/21 09:50  댓글주소  수정/삭제

      OMG 사이트를 가봤더니 하단에,
      Copyright © 1997-2007 Object Management Group, Inc.
      라고 되어 있네요. 책은 1994년이라 더 먼저 나온거 같습니다.

  2. 이홍석 2008/01/20 00:27  댓글주소  수정/삭제  댓글쓰기

    OMT 는 Object Modeling Technique 의 약자로 UML 표기법에 많은 영향을 준 럼바우의 표기법으로 알고 있습니다

    • Hybrid 2008/01/20 01:34  댓글주소  수정/삭제

      저도 검색 후 그것도 발견이 되긴 했는데, 현재 문제의 해결책은 얻기 힘들더군요.
      http://en.wikipedia.org/wiki/Image:OMT_object_diagram.png
      이곳을 보면 Composition 은 아에 보이지도 않는데... 음... 확실히는 잘 모르겠습니다. 위의 위키에 나온 참고 문헌을 한번 읽어봐야지 알 수 있을듯 하네요. 학교 도서관에는 그 책이 있으니 언제 한번 가서 살펴봐야겠습니다.

  3. 이홍석 2008/01/20 23:18  댓글주소  수정/삭제  댓글쓰기

    저도 사실 듣기만 했지 럼바우의 원서적은 본 적이 없어서 정확한 출처는 밝히기 어렵네요
    다만 아래 링크의 OMT 표기법을 보면
    http://students.cs.byu.edu/~pbiggs/survey.html
    여기선 아예 집합화(aggregation)와 합성화(composition)의 구분 없이 모두 집합화로만 보며
    그것이 필수적인 것인가 부가적인 것인가로 구분하고 있는 것 같고

    제가 알기로도 집합화라고 해서 생명시간(lifetime) 자체가 주 객체와 별개로 살아남을 수는 없고
    다만 그 생명시간이 주 객체와 얼마나 밀접한가에 따라 구분하는 것으로 알고 있습니다

    제가 참고한 책은 'K교수의 객체지향 이야기' 252~254 페이지인데 여기선 이렇게 설명하고 있네요

    - 부속품 관계를 집합화와 합성화로 구별하는 조건은 주 객체와 부속 객체간의 생명 시간이 얼마나 밀접하게 연관되어 있는가에 대한 것이다.
    - 합성화의 경우 주객체 생성시 부속객체도 반드시 생성되어야 하며 주객체 소멸시 부속객체도 소멸되어야 한다. 즉, 합성화의 경우 주객체와 부속객체의 생명 시간은 정확히 일치한다.
    - 생명시간의 관점에서 볼 때 집합화로 모델링된 부속객체와 주객체의 생명시간이 정확히 일치하지는 않는다. 그러나 집합화의 경우에도 주객체가 소멸되면 부속객체도 없어진다는 사실을 인식해야 한다.

    이 책에선 사람의 몸에서 머리와 몸통은 필수적인 것으로 합성화에 비유하고, 팔이나 다리는 필요하지만 필수적이진 않다는 점에서 집합화에 비유하고 있습니다.

  4. 이홍석 2008/01/20 23:37  댓글주소  수정/삭제  댓글쓰기

    쓰고나서 보니 원문를 직접 찾아본 것도 아니고 어차피 알고 있던 한도 내에서 쓴거라
    출처가 불분명한 것 같아 삭제할까 했는데 비밀번호 없이 썼더니 삭제도 안되네요;
    그냥 참고만 하시구요 저도 이 기회에 럼바우 책이나 한번 찾아봐야겠네요..ㅇ.ㅇ

    • Hybrid 2008/01/21 00:03  댓글주소  수정/삭제

      일단 확실히 OMT 에서는 Composition 개념이 없는거 같습니다. 나중에 추가가 되느라 혼돈이 생긴건 아닌가 생각되네요.

      그런데, 제 생각엔 composition 을 팔과 다리로 예를 드는건 올바르지 않다고 생각합니다. 왜냐하면, 사람이 죽는다고 팔과 다리가 떼어져서 다른 사람으로 가지는 않으니까요. (아시다시피 composition 에서는 그게 가능하죠.) 오히려 aggregation 이 맞는거 같습니다. 어차피 aggregation 도 필수 여부와는 상관 없지요. 필수 여부는 UML 로 보면 Multiplicity 였나요? 그게 1부터 시작하느냐 0부터 시작하느냐로 결정되던데.... 이건 aggregation 이냐 composition 이냐와는 상관 없으니까요.

      어쨌건 저도 조만간 럼바우의 서적을 한번 봐야겠습니다. 아무래도 composition 은 OMT 에는 개념이 없을듯 하지만요.

[로그인][오픈아이디란?]