본문 바로가기

UML43

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.
UML - 상태 기계 다이어그램 - 내부 액티비티와 상태 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 상위 상태: https://8thlight.com/blog/micah-martin/2007/04/07/understanding-statemachines-part-4-superstates.html - 내부 액티비티 이전글에 상태 기계 다이어그램에서는 기본적인 요소들과 주로 상태간의 전이를 중심으로 알아보았다.(ocwokocw.tistory.com/67?category=844459) 전이를 통한 상태변화가 대부분의 경우겠지만 이벤트 발생시 전이 없이 반응하는 경우도 있다. 이때 내부 액티비티(internal activity)를 사용하는데, 상태 상자 속에 이벤트, 가드, 액티비티를 넣는다. 위의 그림은 문자 입력과 도움말에.. 2021. 2. 12.
[React 공식 Doc 가이드 #11] Lifting State Up - 이 글은 React 공식 홈페이지 Docs v16.8.3 (https://reactjs.org/docs) 에 기반하여 작성한 글입니다. - Lifting State Up 때로는 같은 data에 대하여 여러개의 Component가 영향을 받는 경우가 있다. 이런 경우에 해당 Component 들의 최소 공통 조상 레벨로 state 를 올려서 공유하면 유용하다. 이번 Section 에서는 주어진 온도에서 물이 끓을 수 있느냐를 판단하는 온도계산기를 만들면서 State를 올린다는게 무슨말인지 이해해보자. 처음에 BoilingVerdict 라는 Component 로 시작을 할 것이다. 섭씨 온도를 prop 으로 받아서 물이 끓을 수 있는지 여부를 출력하는 기능을 가지고 있다. function BoilingV.. 2021. 2. 11.
[React 공식 Doc 가이드 #4] Rendering Elements - 이 글은 React 공식 홈페이지 Docs v16.8.3 (https://reactjs.org/docs) 에 기반하여 작성한 글입니다. - Element 여태까지 간단한 element를 선언하고, 이를 Hello, world를 표현하는데 사용하였다. element란 무엇인가? element란 screen 에서 출력하는 바를 묘사하는 것이 element 라고 정의하고 있다. DOM element 와 다르게 React element는 plain object 라서 만드는데 비용이 싸다. React DOM은 DOM 을 변경할 때 React element 와 비교하여 DOM 을 업데이트 한다. - Component vs Element 일반적으로 element 와 component를 헷갈려 한다. element.. 2021. 2. 11.
UML - 상태 기계 다이어그램 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 상태 기계 다이어그램(State Machine Diagrams) 상태 기계 다이어그램은 시스템의 행동을 기술한다. 객체 지향 접근법에서 단일 객체가 활성인 시간동안 어떤 행동을 하는지 나타내기 위해서 단일 클래스에 대해 그리는 다이어그램이다. 아래와 같은 시나리오에 대해 해보자. 금고 자물쇠를 보려면 비밀 양초를 촛대에서 옮겨야 한다. 그리고 문이 닫혀있어야만 자물쇠가 나타난다. 일단 자물쇠가 나타나면 금고를 열기 위해서 열쇠를 꽂는다. 추가적인 안전장치로, 양초를 다시 그 자리에 놓아야만 금고를 열 수가 있다. 만약 도둑이 이 경고를 무시하면 괴물을 풀어서 도둑을 잡아먹도록 한다. 각 문장 단위로 이해하기에는 큰 어려.. 2021. 2. 11.
UML - 유스 케이스 - 기능(스토리) - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 유스 케이스와 기능(스토리) 많은 접근 방법에서 시스템의 기능을 요구사항을 설명하기 위해 사용한다.(Extreme Programming 에서는 유저 스토리라고 부른다.) 기능을 곧바로 기술할 수도 있겠지만 보통은 유스 케이스를 먼저 만들고 기능의 리스트를 만든다. 기능은 유스케이스에서 꼭 하나의 요소는 아니며 아래 요소가 모두 될 수 있다. 보통은 유스 케이스보다 더 작은 단위가 된다. 전체 유스케이스 유스 케이스의 시나리오 유스 케이스의 단계 유스 케이스에 포함되지 않는 다양한 행동 - 유스 케이스는 언제 사용하는가? 유스 케이스는 시스템의 외형을 나타내는 것이므로 작성하면서 "이 유스 케이스는 어떤 클래스하고 맵핑이.. 2021. 2. 11.
UML - 유스 케이스 - 다이어그램과 수준 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - https://en.wikipedia.org/wiki/Use_case#Cockburn_style - 유스 케이스 다이어그램 UML의 유스케이스 다이어그램이 유용하긴 하지만 필수적인 것은 아니다. 따라서 유스케이스 작업에 필요이상으로 몰두하면 본질을 넘어서 tool 사용에 집착하는것이 된다. 그러므로 유스케이스 다이어그램보다는 유스케이스 내용의 텍스트 작업에 정성을 쏟아야 한다. 유스케이스 다이어그램은 시스템의 영역을 나타내고 외부 세계와의 교류를 보여준다. 유스케이스 다이어그램에는 액터와 유스 케이스가 있으며 이 둘의 관계는 다음과 같다. 어떤 액터가 어떤 유스 케이스를 수행하는가? 어떤 유스케이스가 다른 유스 케이스를.. 2021. 2. 11.
UML - 유스 케이스 - 개요와 내용 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 유스 케이스 유스 케이스는 시스템의 기능적인 요구사항을 잡아내는 기술이다. 유스케이스는 시스템과 사용자간의 교류를 기술한다. 유스 케이스를 곧바로 판별해내는것은 사실 어려운일이다. 보통은 시나리오를 생각해본 뒤 유스케이스를 식별한다. 시나리오는 사용자와 시스템간의 교류를 단계적으로 나타낸것이다. 예를 들어 온라인 쇼핑몰에서 물건을 산다면 시나리오는 아래와 같다. 고객은 상품 목록을 보고 원하는것을 선택하여 장바구니에 담는다. 물건을 구매하기 위해 배송지 및 신용카드 정보를 기술한다. 시스템은 신용카드 승인을 확인하고 물건 구매 확정을 한다. 그리고 그 결과를 이메일로 발송한다. 위의 시나리오는 개발자가 구현하기 좋은 전.. 2021. 2. 10.