클래스 다이어그램
- 클래스의 구성 요소
클래스의 구성 요소로는 클래스 이름(class name), 속성(attribute), 메서드(method) 등이 있다. 클래스는 [그림 1]과 같이 표현된다. 클래스에서는 해당 구성 요소의 외부 노출 여부를 결정할 수 있다(이를 가시성 또는 투명성(visibility)라 한다). 즉, 프로그램 내의 여러 클래 스나 함수들에서 해당 구성 요소에 접근할 수 있는지 결정할 수 있다는 의미이다. +(public) 기호는 외부에서 자유롭게 접근할 수 있다는 속성 또는 메서드라는 뜻이며, -(private) 기호는 내부에서만 선언되어 외부에서는 이용할 수 없는 속성 또는 메서드라는 뜻이며, #(protected) 기호는 자신에게서 상속된 자식 클래스는 접근할 수 있지만 외부에 서는 접근할 수 없는 속성 또는 메서드라는 뜻이며, ~(package) 기호는 같은 패키지 안에 있는 모든 클래스에서는 접근할 수 있지만 그 외의 외부에서는 접근할 수 없는 속성 또는 메서드라는 뜻이다.
- 관계의 표현
시스템 안의 객체는 서로 관계를 맺고 메시지를 주고받는 상호 관계를 통하여 시스템의 기능을 제공한다. 따라서 설계 작업에서는 객체가 속하는 클래스 사이의 관계를 찾아내어 표시해야 한다. 클래스 사이에는 대표적으로 연관, 집합, 상속이라는 세 가지 관계가 있다.
(1) 연관 관계
하나의 클래스가 다른 클래스와 관련이 있다는 뜻이다. 연관 관계는 하나의 클래스가 여러 개의 클래스와 연관 관계를 맺을 수도 있다. [그림 2(a)]에서 클래스 1은 클래스 2와 연관 관계를 맺고 있음을 표현한다. 선 위의 1은 1개의 클래스와만 연관 관계를 맺고 있다는 것을 표현한다. 반면 [그림 2(b)]의 클래스 1은 1..*로 표현하여 1개 이상의 클래스와 연관을 맺고 있음을 표현한다. 만약 2개의 클래스와 연관 관계를 맺고 있다면, 1..2로 표현하면 된다. 클래스 2와 클래스 3 은 각각 1개의 클래스와만 연관을 맺고 있기에 클래스 1과만 연관 관계에 있다고 표현한다.
(2) 집합 관계
집합 관계는 두 클래스 간의 관계로서, 한 클래스가 다른 클래스의 부분이 될 때를 말한다. [그림 3]에서 클래스 1과 클래스 2는 연관 관계에 있다. 반면, 클래스 3과 클래스 4는 클래스의 1과 집합 관계에 있다고 표현한다. 집합의 개념은 다음과 같은 예로 생각해 볼 수 있다. 예로 클래스 1을 차량이라고 하면, 차량의 중요한 속성 중의 하나는 브레이크와 윈도우가 있다. 또 차가 운행하기 위해서는 차량의 하부 시스템인 샤시 시스템과 바디 시스템이라는 클래스가 필요하다. 샤시 시스템의 속성에는 브레이크가 들어갈 수 있으며, 바디 시스템의 속성에는 윈도우가 들어갈 수 있다. 바퀴와 핸들 클래스는 차량 클래스의 부분집합이 된다.
(3) 상속 관계
상속 관계는 두 클래스 간의 관계로서, 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 것을 말한다. [그림 4-4]에서 클래스 5와 클래스 6은 클래스 1과 상속 관계에 있다고 표현한다. 상속의 개념은 다음과 같은 예로 생각해 볼 수 있다. 예로, 클래스 1을 차량이라고 하면, 차량의 속성에는 브레이크와 윈도우가 있다. 클래스 5를 승용차라고 하고, 클래스 6을 트럭이라고 한다면, 클래스 5와 클래스 6은 차량이 가진 다수의 속성과 메서드를 바로 사용할 수 있다. 즉, 브레이크와 윈도우는 승용차와 트럭에서도 사용되는 속성이 다. 그러나 승용차에서만 사용되는 충돌 방지 시스템 등과 같은 것은 클래스 5만 가지는 고유의 속성이 된다. 이러한 이유로 클래스 1은 모든 차량에서 사용되는 속성과 메서드들만을 기재해야 한다.
상태 다이어그램
- 상태 다이어그램
상태 다이어그램은 이벤트 기반으로 시스템의 행위를 표현하는 다이어그램이다. 즉, 외부 이벤트에 대해 객체들이 어떻게 반응하는가를 보여주기 위한 다이어그램이다. 상태 다이 어그램은 실시간 시스템(real-time system) 또는 이벤트 기반 시스템(event-driven system) 을 모델링하는 데 매우 유용하다. 여기서 이벤트 기반 시스템이란 것은 모바일 로봇과 같이 어떤 이벤트가 발생할 때 어떤 일을 수행하는가를 정의한 시스템을 말한다. 소규모의 펌웨어 시스템의 경우 클래스 다이어그램을 작성하지 않고 상태 다이어그램만으 로도 펌웨어 프로그램을 개발하기에 충분할 때도 있다.
- 상태와 이벤트, 전이
(1) 상태(state)
상태(state)란 객체가 존재할 수 있는 조건 중의 하나로서, 특정 시간 간격 동안에 특정한 형태로 존재하고 있는 것을 의미한다. 예로 모바일 로봇에서 장애물을 감지한 상태와 장애물을 감지하지 않은 상태가 있을 수 있다. 충돌을 감지한 상태는 초음파 센서가 장애물을 감지한 상태인 반면, 충돌을 감지하지 않은 상태란 초음파 센서가 OFF 인 상태라고 볼 수 있다.
상태에서 중요한 것은 객체가 가질 수 있는 모든 가능한 경우가 상태로 파악되어야 한다는 점이다. 즉, 객체는 파악된 상태들 이외의 상태를 가질 수 없어야 한다. 또 객체는 특정 순간에는 오직 하나의 상태로만 존재해야 한다.
상태에는 시작 상태와 종료 상태가 있다. 시작 상태는 상태 다이어그램의 시작점으로 모든 상태 다이어그램에서 존재한다. 반면, 종료 상태는 특정한 이벤트가 발생되었을때 상태 다이어그램이 종료되는 상태로 있을 수도 있고 없을 수도 있다.
상태 다이어그램에서 상태는 [그림 5]와 같이 둥근 모서리를 가진 사각형이나 원형 또는 타원형으로 표시한다.
(2) 이벤트(event)와 전이(transition)
상태는 외부의 자극에 의하여 다른 상태로 바뀔 수 있다. 이때 객체의 상태가 다른 상태로 변경되는 것을 전이(transition)라고 부르며, 객체의 전이를 유발하는 자극을 이벤 트(event)라고 부른다. 이벤트가 발생하여 상태가 전이되면 그에 대응되는 작업이 수행 되어야 한다. 이것을 활동(action)이라고 한다. 활동은 이벤트에 반응하여 시스템이 수행하는 작업을 말한다. 상태 다이어그램에서 전이는 [그림 6]과 같이 상태와 상태 사이를 연결하는 화살표로 표시한다. 또 이벤트는 화살표 아래에 표시한다.
활동 다이어그램 작성
- 활동 다이어그램
활동 다이어그램은 펌웨어 시스템의 실행과 행위의 흐름을 표현하기 위한 다이어그램이 다. 활동 다이어그램은 제어 순서도(flowchart)와 모양이 비슷하다. 다만, 제어 순서도는 문제를 해결하는 데 필요한 논리적인 흐름을 나타내지만, 활동 다이어그램은 이를 객체의 관점에서 도식화한 것이다.
활동 다이어그램은 주로 유즈 케이스 수준에서 비즈니스 프로세스를 표현하거나, 유즈 케이스 내부에 대한 구체적인 흐름을 표현하기 위하여 사용된다. 또 활동 다이어그램은 설계 단계에서 클래스 내부 메서드에 대한 알고리즘이나 구체적인 로직을 표현하기 위하여 사용될 수도 있다.
펌웨어 시스템에서 독립적인 제어 흐름을 가지는 경우 독립적인 활동 다이어그램으로 나타내어야 한다. 따라서 하나의 펌웨어 시스템에서 여러 개의 독립적인 활동 다이어그램을 가질 수 있다. 또 이러한 독립적인 활동 다이어그램 간의 상호 작용에 대해서도 표현을할 수 있다.
활동 다이어그램은 순차 다이어그램이나 상태 다이어그램에서는 나타내기 어려운 상황을 표현할 수 있는 다이어그램으로, 조건에 따른 활동의 선택이나 병행적인 활동 등과 같은 활동의 흐름을 나타내는 데 사용되거나 사용자 인터페이스를 위하여 사용되는 화면들 간의 흐름 관계를 나타내는 데 사용될 수 있다. 활동 다이어그램은 상태 다이어그램과 마찬 가지로 소규모의 펌웨어 시스템을 설계할 때 자주 이용된다.
- 활동(activity)과 천이(transition)
(1) 활동과 천이
활동은 펌웨어 시스템에서 특정한 일들의 처리와 실행을 의미하며, [그림7]과 같이 모서리가 둥근 사각형으로 나타낸다. 활동 다이어그램은 검은색 동그라미로 표현되는 시작점이 있으며, 이중 동그라미로 표현되는 종료점이 있다. 이는 상태 다이어그램의 시작점 및 종료점과 동일하다. 활동 다이어그램에서는 하나의 활동이 처리되고 나면 다음의 활동으로 자동적으로 옮겨지게 되는데, 이를 천이라고 한다. 천이는 상태 다이어그램과 마찬가지로 화살표로 표현한다. 일반적으로 활동 다이어그램은 활동의 선후에 따라 수직 방향으로 작성한다.
(2) 결합(join)과 분기(fork), 결정(decision)과 병합(merge)
결합과 분기는 [그림 8]과 같이 동기화 막대(synchronization bar)를 사용하여 표현한 다. 여기에서 동기화 막대는 2개 이상의 활동이 동시에 마쳐야 하거나, 동시에 시작해야 한다는 의미이다. 결합은 2개의 활동이 동시에 끝난 경우에 다음 활동으로 넘어간 다는 의미이며, 분기는 2개의 다음 활동이 동시에 시작한다는 의미이다.
결정과 병합은 [그림 9]와 같이 제어 구조를 뜻하는 마름모꼴을 사용하여 표현한다. 여기에서 제어 구조는 2개의 활동 중에서 하나를 선택한다는 의미이다. 결정은 여러 개의 활동이 종료되고 나면 다음 활동이 시작한다는 의미이며, 병합은 하나의 활동이 끝나고 난 후, 다음 활동 중에서 하나가 선택된다는 의미이다.
(3) 신호(signal)
신호는 독립적인 활동 다이어그램 간의 상호 작용을 표현하기 위하여 사용된다. 신호는 [그림 10]과 같이 뾰족한 오각형 모양의 송신 시그널과 쐐기 모양으로 파인 다각 형의 수신 시그널로 표현된다.
'Robotics : 로봇공학 > Certificate : 자격증' 카테고리의 다른 글
3-1-1 경로계획 소프트웨어 개발 1/3 (0) | 2023.08.10 |
---|---|
필기 시험 노트 현황 업데이트 v230810 - 로봇 소프트웨어 기사 (0) | 2023.07.23 |
2-3-3 소프트웨어 아키텍처 정의하기 (0) | 2023.07.23 |
2-3-2 로봇 작업 요구사항 분석 2/2 (0) | 2023.07.22 |
2-3-1 로봇 작업 요구사항 분석 1/2 (0) | 2023.07.22 |