본문 바로가기

SW core/UML38

UML - 협력 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-uml-collaboration-diagram/ - 협력(Collaborations) 경매에는 한 명의 판매자와 여러 명의 구매자들, 많은 상품들 그리고 부르는 가격이 있다. 위의 다이어그램은 이런 요소들을 클래스 다이어그램으로 나타낸것이다. 클래스다이어 그램에서 구매자나 부르는 가격등을 클래스라고 부르지만 협력에서는 다른 이름으로 부른다. 협력 다이어그램의 요소를 하나씩 살펴보자. 경매 협력(Collaboration): 점선의 타원으로 표시된 부분이다. 역할(role): 구매자, 부르.. 2021. 5. 9.
UML - 컴포넌트 다이어그램 - 이 글은 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 P.. 2021. 5. 6.
UML - 복합 구조(Composite structure) - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-composite-structure-diagram/ - 복합 구조(Composite Structure) UML2 에서는 클래스를 계층적인 내부 구조로 분해할 수 있다. 내부 구조로 분해한다는것은 복잡한 객체를 여러 개의 부분으로 나눌 수 있도록 해준다는 의미가 된다. TV 뷰어 클래스가 특정 인터페이스를 필요로 하는 상황을 생각해보자. 이때 공-소켓 표기법과 인터페이스의 리스트를 기록하는 방법 2가지가 있는데 StarUML 5.0 에서는 공-소켓 표기법을 지원하고 있으니 공-소켓 표기법.. 2021. 5. 5.
UML - 커뮤니케이션 다이어그램 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 커뮤니케이션 다이어그램 교류 다이어그램의 일종으로 요소들 간의 데이터 연결을 강조한다. 시퀀스 다이어그램은 모든 참여 요소들의 생명선을 있고, 수직방향으로 메시지의 순서를 표시한다. 반면 커뮤니케이션 다이어그램에서는 번호를 붙여 메시지의 순서를 나타낸다. 위 그림은 중앙 집중 제어방식의 커뮤니케이션 다이어그램이다. 커뮤니케이션 다이어그램을 통해서 참여 요소들이 어떻게 연결되었는지 보여줄 수 있다. 연관에서의 링크 뿐만 아니라 흐름상에서 발생하는 임시 링크(transient link)도 나타낼 수 있다. 주문에서 상품을 보면 이라고 되어있는데, 이는 지역 변수를 의미한다. 나 도 있는데 UML2 에서는 없어졌지만 유용하므.. 2021. 4. 21.
UML - 액티비티 다이어그램 - 플로우 끝과 조인조건 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - token 이미지 출처: https://www.ionos.com/digitalguide/websites/web-development/uml-activity-diagram/ - 플로우 끝 확장 영역처럼 토큰이 여러개 있는 경우 전체 액티비티가 끝나지 않았어도 플로우를 멈춰야 하는 경우가 있다. 플로우 끝은 전체 액티비티를 중단하지 않으면서 특정한 플로우를 끝내는것을 표현한다. 기사의 출판이 거부되면 토큰은 플로우끝에서 파괴된다. 하지만 나머지 액티비티는 계속 진행된다. 원래는 주제리스트를 여러개의 핀으로 표현할 수 있지만, StarUML 5.0 무료버전에서는 확장영역과 핀을 지원하지 않는듯하다. 아래에서 Expansion.. 2021. 4. 12.
UML - 액티비티 다이어그램 - 플로우와 엣지 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 커넥터 diagram 출처: https://forum.plantuml.net/2407/connector-in-activity-diagram - 플로우와 엣지 UML 2 에서는 두 액션의 연결을 플로우와 엣지라고 표현하며 이 둘은 같은 의미이다. 보통의 경우에는 아래처럼 두 액션을 화살표로만 이어도 충분하다. - 커넥터 복잡한 다이어그램에서는 선을 연결하기 힘든 경우가 있는데 이때 커넥터를 활용할 수 있다. 들어오는 플로우와 나가는 플로우에 하나씩 쌍을 이루며 같은 이름을 가져야 한다. 하지만 화살표로 표현하는 경우보다는 시각적인 인지력이 떨어질 수 있기 때문에 특별한 경우가 아니면 사용을 자제해야 한다. StarUML .. 2021. 4. 12.
UML - 액티비티 다이어그램 - 시그널 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 시그널 시간 시그널과 수신&전송 시그널이 존재한다. 시간 시그널은 시간흐름에 따라 발생하는 시그널이며, 외부 프로세스로 부터 이벤트를 수신하는 수신 시그널, 메시지를 보내고 더 진행하기전 응답이 올 때 까지 기다려야 할 때 유용한 송신 시그널이 있다. - 시간 시그널(time signal) 시간 시그널은 시간의 흐름에 따라 발생하는 시그널이라고 하였다. StarUML 5.0 커뮤니티 버전에서는 Time Signal이 존재하지 않는다. 아래 다이어그램 중에서 모래시계 마크로 "every monday" 라고 되어있는것이 바로 시간 시그널이다. - 수신 시그널 수신 시그널은 외부 프로세스로부터 이벤트를 수신하는것을 나타낸다... 2021. 2. 22.
UML - 액티비티 다이어그램 - 분해와 파티션 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 액션 위의 다이어그램에서 배송 로직을 아래처럼 독립적인 액티비티로 정의할 수 있다. 위처럼 독립적인 액티비티로 정의한것을 액션으로 부른다. 아래 다이어그램에서 주문 배송 오른쪽 하단에 SubMachine을 포함하는 표시가 생겼다. 사실 UML 에서 하위 액티비티를 나타내는 다이어그램에는 갈퀴 심볼을 나타내야 한다. 하지만 StarUML 5.0 (무료버전) 에서는 갈퀴 심볼은 없는 것 같다. 이것을 다르게 표현할 수도 있다. 송장 발송을 보면 클래스명::메소드명 형식으로 나타내면 메소드 호출로서 이를 표현할 수 있다. - 파티션 위의 다이어그램들을 살펴보면 어떤 액티비티들이 일어나는가는 잘 보이지만 누가 하는지 보이지 않.. 2021. 2. 17.
UML - 액티비티 다이어그램 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 액티비티 다이어그램 액티비티 다이어 그램은 순차로직, 업무절차, 워크 플로우를 기술하는 방법이다. 플로우차트와 비슷하지만 액티비티 다이어그램은 병렬 행동을 지원한다. 액티비티 다이어그램은 위의 그림처럼 생겼다. 위에서 아래의 방향으로 차례차례 요소들을 살펴보자. '초기노드' 액션에서 시작하여 주문 접수 액션을 수행한다. 초기노드액션은 시작점이 되며 액션은 액티비티 다이어그램의 아주 기본적인 요소이다. 주문접수 액션 수행 후 '포크'라는 것을 만난다. 포크는 이름에서 유추할 수 있듯이 하나의 들어오는 플로우와 여러개의 나가는 플로우로 이어져있다. 포크에서 나가는 플로우가 만나는 주문서 작성과 주문발송 액션간에는 순서없이 .. 2021. 2. 17.
UML - 상태 기계 다이어그램 - 구현 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 상태 다이어그램의 구현 상태 다이어그램을 구현하는 방법은 크게 내장 스위치, 상태 패턴, 상태 표 세 가지가 있다. 상태 기계 다이어그램 가장 초반에 그린 아래 다이어그램을 가지고 각 방식으로 구현한 예제를 살펴보도록 하자. - 내장 스위치 가장 직접적이고 간단한 방법이다. 하지만 간단한 상태 다이어그램도 이 방식으로 구현하면 장황해지는 단점이 있다. public enum PanelState { WAIT, OPEN, LOCKED, FINAL } public enum PanelEvent { CANDLE_MOVED, KEY_TURNED, SELF_CLOSED } public class StateController { pri.. 2021. 2. 12.