13.소프트웨어 공학 UML (다이어그램)
3. 클래스 다이어그램
클래스 다이어그램
- 소프트웨어의 기본 구성 단위인 시스템에서 사용하는 클래스를 정의
- 클래스들이 서로 어떻게 연결되어 있고 어떤 역할을 하는지 다이어그램으로 표현
클래스
- 데이터(속성)와 메서드를 묶어 놓은 것
- 세 칸의 직사각형 모양
- 첫 번째 칸에는 클래스 이름
- 두 번째 칸에는 클래스의 속성
- 마지막 칸은 클래스가 제공하는 기능인 메서드를 나타냄
클래스 이름
- 클래스는 다른 클래스와 구별되는 유일한 이름을 가짐
- 이름에 명사나 명사구를 사용하며 두 단어를 사용할 때는 붙여쓰되 각 단어의 첫 글자는 대문자로 씀
- 복수형, 소유격, 형용사는 가급적 쓰지 않음
속성
- 클래스가 갖는 정적인 특성
- 속성의 이름은 소문자로 나타내며 두 단어를 사용할 때는 두 번째 단어의 첫 글자는 대문자로 씀
메서드
- 클래스가 외부의 다른 객체에게 제공할 서비스와 기능
- 외부 클래스는 메서드를 통해 해당 클래스에 접근할 수 있음
- 외부에서 이 기능을 요구하는지에 따라 메서드로 도출할지 판단
가시성
- 속성과 메서드의 접근 권한을 지정하는 방식
가시성 | 설명 |
---|---|
공개(public, +) | 같은 시스템에 있는 모든 클래스에 접근할 수 있다. |
은닉(private, -) | 같은 시스템 내의 다른 클래스는 직접 접근할 수 없고 해당 클래스의 메서드를 통해서만 접근할 수 있다. 클래스에서 대부분의 속성은 private으로 설정한다. |
부분 공개(protected, #) | 다른 클래스가 접근할 수 없고 해당 클래스의 메서드와 클래스를 상속받은 하위 클래스만 접근할 수 있다. |
클래스 다이어그램의 예
- 학생은 여러 과목을 수강할 수 있음
- 학생은 하나의 학교에 소속되어 있음
- 교수는 하나의 학교에 소속되어 있음
- 교수 한 명은 여러 과목을 강의
- 교수 한 명은 여러 명의 학생을 상담
4. 순차 다이어그램
순차 다이어그램
순차 다이어그램
- 실행 시점에 객체들이 어떻게 상호 동작하는지를 메시지 순서에 초점을 맞춰 나타낸 것
- 어떠한 작업이 객체 간에 발생하는지를 시간 순서에 따라 쉽게 파악할 수 있음
순차 다이어그램의 구성요소
객체
- 순차 다이어그램에서 객체는 메시지를 보내고 받는 것
객체명: 클래스명
으로 나타내며 한쪽은 생략할 수 있음
객체 생명선
- 객체의 생존 기간을 나타내며 X 표시는 객체가 소멸하는 시점
- 위에서 아래로 내려가는 점선으로 나타냄
- 생명선을 따라 나타나는 직사각형은 활성 구간으로 객체의 메서드가 실행되고 있음을 나타냄
- 구간의 길이는 메서드 의 실행 시간을 나타냄
- 활성 구간은 반드시 존재하는 것은 아니며 생략 가능
순차 다이어그램의 구성요소
메시지
- 객체와 객체의 상호작용을 표현하는 것으로 화살표를 이용
- 화살표 위에는 수신 객체의 함수명을 명기
동기 메시지
- 송신 객체가 수신 객체에 서비스를 요청(메서드 호출)하면 메서드 실행이 완료될 때까지 기다림
- 실선과 속이 채워진 삼각형으로 나타냄
----‣
비동기 메시지
- 송신 객체가 수신 객체에 서비스를 요청(메서드 호출)할 때 메서드의 실행과 상관없이 다음 작업을 수행
- 수신 객체로부터의 반환도 기다리지 않는다.
- 일반 화살표 모양으로 나타냄
---->
재귀 메시지
- 수신 객체가 자신의 메서드를 호출할 때 사용
답신 메시지
- 호출 메서드의 결과를 반환할 때 사용한다. 점선과 속이 채워진 삼각형으로 나타냄
순차 다이어그램의 작성 과정
시나리오 정의
- 수정사항이 많이 발생할 우려가 있으므로 시나리오를 명확히 정의한 후에 그것을 토대로 순차 다이어그램을 작성
다이어그램과 시나리오의 1 : 1 대응
- 하나의 이벤트에 여러 개의 시나리오가 나올 경우 시나리오마다 각각의 다이어그램으로 표현
시나리오 분할
- 하나의 이벤트가 너무 길면 시나리오를 여러 개로 나누어 작성하는 것이 좋음
순차 다이어그램
순차 다이어그램의 작성 과정
5. 통신 다이어그램
통신 다이어그램
통신 다이어그램
- 객체 간 상호작용 관계에 주목
- 화살표 위에 적힌 번호로 순서를 알 수 있음
링크
- 객체 간에 메시지를 주고받는 관계
- 통신 다이어그램에서는 링크를 사용해 객체 간의 관계를 표현
6. 활동 다이어그램
활동 다이어그램
활동 다이어그램
- 흐름도와 비슷하나 객체의 행위를 나타낸다는 점에서 다름
- 상위 수준에서는 업무의 흐름을 표현하고 분석 단계에서는 유스케이스의 구체적인 흐름(이벤트 흐름)을 나타냄
- 설계 단계에서는 클래스 내부 동작에 대한 알고리즘이나 구체적인 로직을 표현
활동 다이어그램의 구성요소
시작/종료 상태, 활동
- 시작/종료 상태, 활동
- 시작점: 활동의 시작을 나타내며 속이 채워진 원으로 표기
- 종료점: 활동의 종료를 나타내며 이중 원으로 표기
- 활동: 일의 처리와 실행을 나타내며 모서리가 둥근 사각형으로 표기
- 전이: 활동 간의 이동을 나타내며 화살표로 표기
분기와 병합
분기
: 조건에 의해 두 가지 경로로 나뉘는 위치이며 마름모를 사용 / 조건문은 마름모 옆에 « » 기호로 작성병합
: 분기되어 각 활동을 수행하다가 합쳐지는 위치를 나타내며 분기와 같이 마름모를 사용 / 생략이 가능
활동 다이어그램
활동 다이어그램의 구성요소
- 동기화 막대
- 여러 활동을 병행할 때 사용하는 것으로 동시 처리의 시작과 끝을 나타냄
신호
- 활동 사이의 거래는 제어 신호를 보내는 방식으로 이루어짐
구획면
- 수영장의 레인을 의미하는데 수영 선수가 자신의 레인을 넘어가면 안 되는 것처럼 해당 레인을 책임지는 객체가 있음
7. 상태 다이어그램
상태 다이어그램
상태 다이어그램
- 이벤트 발생이나 시간의 흐름에 따라 바뀌는 객체의 상태를 나타냄
상태 다이어그램의 구성요소
상태
- 객체가 존재할 수 있는 조건
- 객체의 존재 가능한 모든 상태가 파악되어야 함
- 상태는 모서리가 둥근 사각형으로 표현
전이
- 객체의 상태가 바뀌는 것을 나타내며 화살표를 사용해 표현
이벤트
- 객체의 상태를 바뀌게 하는 자극
- 화살표로 나타낸 전이 위에 « » 기호를 사용해 작성
8. 컴포넌트 다이어그램
컴포넌트 다이어그램
컴포넌트 다이어그램
- 구현 관점에서 정적 모델링을 할 때 사용하는 것
- 어떤 실행 모듈이 존재하고 이들이 서로 어떤 연관성이 있는지의 종속 관계를 나타냄
- 사용자에게 논리적 또는 물리적 시스템의 구조를 볼 수 있게 해줌
컴포넌트 다이어그램의 구성요소
컴포넌트
- 컴포넌트는 시스템을 구성하는 물리적인 요소로 프로그램 코드를 포함
<<executable>>
: 실행 파일(.exe)<<library>>
: DLL 같은 정적 또는 동적 객체 라이브러리<<table>>
: 데이터베이스 테이블<<file>>
: 원시 코드를 포함하는 파일
인터페이스
- 클래스 모양으로 나타내거나 아이콘을 사용해 간략하게 표현할 수 있음
의존 관계
- 서로 영향을 주고받는 관계를 말함
- 컴포넌트 간 연결은 점선 화살표로 나타내며 의존하는 쪽으로 화살표가 연결
컴포넌트 다이어그램의 작성 과정
컴포넌트 대상 정의
- 무엇을 컴포넌트로 할지 정함
컴포넌트 찾기
- 컴포넌트 다이어그램에 포함할 컴포넌트를 식별
컴포넌트 배치
- 컴포넌트 다이어그램에 컴포넌트를 배치하고 이름을 붙여줌
- 필요하다면 인터페이스를 정의하고 컴포넌트와 실현 관계로 연결
의존 관계 정의
-
컴포넌트 간 의존 관계를 정의
-
각 컴포넌트의 인터페이스를 원으로 표시하고 인터페이스에 대한 실현은 컴포넌트와 연결
9. 배치 다이어그램
배치 다이어그램
배치 다이어그램
- 하드웨어 자원을 명시적으로 정의해 시스템의 물리적인 요소를 모델링하고 노드 간의 관계를 나타냄
- 노드: 시스템을 구성하는 처리 장치로 실행 파일 수준의 컴포넌트가 탑재된 하드웨어를 말함
- 노드를 연결하는 관계는 다양한 통신 방식을 의미
- 학사관리 서버는 교내 정보전산원에 설치
- 인사관리 서버는 교내 정보전산원에 설치
- 회계관리 컴포넌트는 국립대학교 전체가 동일한 것을 사용하고 서버는 국가 데이터센터에 배 치하는 것으로 간주
- 메일 서버는 교외의 데이터센터에 설치
댓글남기기