본문 바로가기
Concepts/UML

UML - 컴포넌트 다이어그램

by ocwokocw 2021. 5. 6.

- 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다.

- Do Components Exist: http://wiki.c2.com/?DoComponentsExist

- 컴포넌트 다이어그램(Component diagram)

컴포넌트들은 구현하는 인터페이스와 필요로 하는 인터페이스를 통해서 서로 연결된다. 앞에서 사용한적이 있는 공-소켓 표기법을 사용하며, 복합 구조 다이어그램을 사용해서 컴포넌트를 분해할 수도 있다.

위의 컴포넌트 다이어그램에서 Till 은 sales message 인터페이스를 통하여 Sales Server 에 연결한다. Till은 Sales message 인터페이스를 사용하고(Till -> Sales message, Dependecy), Transaction Processor는 Sales meesage 인터페이스 기능을 제공한다.(Transaction Processor -> Sales message, Realization).

 

네트워크 유실을 대비해 메시지 큐 컴포넌트는 Till 이 네트워크가 연결되었을 때에는 서버와 통신하고 그렇지 않을 때에는 queue와 통신할 수 있게 한다.

 

Sales Server는 Transaction processor와 Accountinhg Driver 라는 2개의 컴포넌트로 나누어진다. Transaction Processor 는 sales message 인터페이스를 인식하며, Accounting Driver는 Accounting System과 통신한다.


- 컴포넌트란 무엇인가?

다이어그램은 UML에 익숙해지면 금방 그릴 수 있다. 중요한것은 UML을 그리는 기술이 아니라 어떤것들을 컴포넌트라는 요소로 인식할 수 있는가 하는 것이다. 아래는 Ralph Johnson이 Component 에 대해 말한 유명한 문구이다. (Do Components Exist: http://wiki.c2.com/?DoComponentsExist)

컴포넌트는 기술이 아니다. 기술에 종사하는 사람들은 이 말을 이해하기 어렵다. 컴포넌트는 고객이 어떻게 소프트웨어를 사고 싶어 하는 지에 대한 것이다. 그들은 마치 오디오를 업그레이드할 수 있는것처럼 한번에 일부분의 소프트웨어만을 사길 바란다. 새로 산 부분들이 예전에 쓰던 부분과 이상 없이 동작하길 원하며, 제조사의 일정이 아니라 자신들의 일정에 맞추어 업그레이드 할 수 있길 원한다. 그들은 다양한 제조사의 부품들과도 섞어서 쓸 수 있기를 바란다. 이런 요구사항은 매우 합리적이며, 만족 시키기 어려운것이다.

 

댓글