본문 바로가기

Concepts/UML38

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.
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.
UML - 배치 다이어그램 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 배치 다이어그램(Deployment Diagrams) 여기서 말하는 배치는 Batch가 아닌 Deployment 이다. 시스템의 물리적인 구조를 보여주며, 어떤 소프트웨어가 어떤 하드웨어에서 동작하고 있는지를 보여준다. 우선 배치다이어그램의 요소에 대해서 알아보자. 노드(node): 소프트웨어를 실행할 수 있는 어떤 것. 노드에는 두 가지 형태가 있는데 장치(device)는 하드웨어이며, 컴퓨터나 시스템과 연결된 더 단순한 하드웨어들이 있다. 실행 환경(execution environment): 스스로 실행하거나 다른 소프트웨어를 포함하는 소프트웨어이다. (ex - 운영체제, 컨테이너 프로세스) 아티팩트(artifact.. 2021. 2. 10.
UML - 패키지 다이어그램 - 구현 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 패키지 구현(Realization) 특정 패키지가 인터페이스를 정의하고 다른 몇 개의 패키지들이 구현하는 경우가 있다. 위의 다이어그램에서 데이터베이스 게이트웨이 패키지에서 인터페이스를 정의하고 나머지 Oracle, SQL Server, Test Stub 이 이를 구현하였다. 이렇게 사용자와 클래스 사이에 인터페이스가 낀다는건 의존성을 끊는다는 의미가 된다. 만약 여러가지 물건의 전원을 켜고 끄는 리모컨을 개발한다고 생각해보자. 여러가지 물건에 대해 작동이 되어야 하지만 의존성이 생기는것은 원하지 않을것이다. 위의 다이어그램에서 Button과 CheckBox는 OnOff 인터페이스에 의존하여 난로와 조명기구의 전원을 제.. 2021. 2. 10.
UML - 패키지 다이어그램 - 개요와 의존 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 패키지 다이어그램 UML 에서 패키지는 어떤 구성요소라도 더 높은 수준의 단위로 묶을 수 있도록 해주는 구조이다. 각각의 패키지는 네임스페이스를 나타내는데, 이는 모든 클래스가 자신이 속한 패키지내에서 유일해야 한다는 소리이다. 어떤 클래스가 어디에 속하는지를 완벽하게 알기 위해서는 완전한 이름(fully qualified name)을 사용해야 한다. UML 에서 패키지 이름을 나타낼때에는 :: 을 사용한다. Date는 System::Date 와 같이 될 것이다. - 패키지와 의존 규모가 큰 시스템에서는 패키지 다이어그램을 보아야 그 시스템의 구조를 제어할 수 있다. 패키지 다이어그램은 패키지간의 의존을 보여준다. A .. 2021. 2. 10.
UML - 객체 다이어그램 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 객체 다이어그램 객체 다이어그램은 객체들의 특정 순간의 모습이다. 클래스가 아닌 인스턴스를 보여주므로, 인스턴스 다이어그램이라고도 한다. 위의 다이어그램에서 모임,사람,조직으로 이루어진 윗 부분은 클래스의 세트를 보여주고 있고, 아래는 객체의 연관 세트를 보여준다. 객체의 연관 세트에서 이름 아래에 밑줄이 쳐져있으므로 이는 인스턴스임을 나타낸다. 표기는 [인스턴스명 : 클래스명]의 형태를 갖는다. 인스턴스명과 클래스명은 둘 다 선택사항이므로 클래스명만 나타내도 상관없다. 다만 인스턴스명만 나타낼 경우 콜론을 생략해도 되지만 클래스명만 나타낼 경우 콜론을 생략하면 인스턴스명과 구분이 되지 않으므로 [:클래스명]으로 표시해.. 2021. 2. 10.
UML - 클래스 다이어그램 고급 - 템플릿 클래스 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 템플릿(매개변수) 클래스 정의 몇몇 언어는 매개변수 클래스(템플릿)라는 개념이 있다. Java에서 Set의 코드를 보면 아래와 같이 템플릿을 볼 수 있다. public interface Set extends Collection { 이렇게 정의된 템플릿 클래스는 아래와 같이 사용할 수 있다. Set employeeSet = new HashSet(); UML 에서도 이런 템플릿 매개변수를 지원한다. 템플릿 매개변수 T를 갖는 Set 을 UML로 표현하면 아래와 같다. Set 오른쪽 위에 점선 박스는 템플릿 매개변수를 나타낸것이다. 여러개를 선언할 수 있으며, 여기서는 매개변수 이름은 T 이고, 타입은 Class 임을 표시하.. 2021. 2. 10.