[정처기 필기] 「1」 | 요구사항 확인 - (1.5) UML, 주요 UML 다이어그램
> 「1」 소프트웨어 설계
- > 요구사항 확인, 화면 설계, 애플리케이션 설계, 인터페이스 설계
「2」 소프트웨어 개발
「3」 데이터베이스 구축
「4」 프로그래밍 언어 활용
「5」 정보시스템 구축 관리
1 소프트웨어 생명 주기
2 스크럼(Scrum) 기법
3 XP(eXtreme Programming) 기법
4 현행 시스템 파악
5 개발 기술 환경 파악
6 요구사항 정의
7 요구사항 분석
8 요구사항 분석 CASE와 HIPO
> 9 UML(Unified Modeling Language)
> 10 주요 UML 다이어그램
9. UML(Unified Modeling Language)
UML(Unified Modeling Language)의 개요
시스템 개발 과정에서 상호 간의 의사소통이 원활히 이뤄지도록 표준화한 대표적인 객체지향 모델링 언어
- 객체지향 방법론의 장점을 통합, 국체표준화기구 OMG에서 표준으로 지정
- 시스템의 구조를 표현하는 6개의 구조 다이어그램, 시스템의 동작을 표현하는 7개의 행위 다이어그램
- 각각 다이어그램은 사물과 사물 간의 관계를 용도에 맞게 표현
- 사물(Things), 관계(Relationships), 다이어그램(Diagram) 등
사물(Things)
모델을 구성하는 가장 중요한 기본 요소, 다이어그램 안에서 관계가 형성될 수 있는 대상
- 구조 사물, 행동 사물, 그룹 사물, 주해 사물
구조 사물(Structural Things)
- 시스템의 개념적, 물리적 요소를 표현
- 클래스(Class), 유스케이스(Use Case), 컴포넌트(Component), 노드(Node) 등
행동 사물(Behaveioral Things)
- 시간과 공간에 따른 요소들의 행위를 표현
- 상호작용(Interaction), 상태 머신(State Machine) 등
그룹 사물(Grouping Things)
- 요소들을 그룹으로 묶어 표현
- 패키지(Package)
주해 사물(Annotation Things)
- 부가적인 설명, 제약조건 등 표현
- 노트(Note)
관계(Relationships)
사물과 사물 사이의 연관성 표현
- 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계, 실체화 관계 등
연관(Association) 관계
- 2개 이상의 사물이 서로 관련
- 사물 사이 실선, 방향성 화살표
- 양방향의 경우, 화살표 생략 후 실선
- 객체의 개수를 의미하는 다중도(Multiplicity)를 선 위에
- ex) '사람'과 '집', '선생님'과 '학생'
다중도 | 의미 |
1 | 1개의 객체가 연관 |
n | n개의 객체가 연관 |
0..1 | 연관된 객체가 없거나 1개만 |
0..* 또는 * | 연관된 객체가 없거나 다수 |
1..* | 연관된 객체가 적어도 1개 이상 |
n..* | 연관된 객체가 적어도 n개 이상 |
n..m | 연관된 객체가 최소 n개에서 최대 m개 |
집합(Aggregation) 관계
- 하나의 사물이 다른 사물에 포함되어 있는 관계
- 포함하는 쪽과 포함되는 쪽은 서로 독립적
- 포함되는 쪽에서 포함하는 쪽으로 속이 빈 마름모를 연결
- ex) '컴퓨터'와 '프린터'
포함(Composition) 관계
- 집합 관계의 특수한 형태, 서로 영향을 미치는 관계
- 포함하는 쪽과 포함되는 쪽은 서로 독립적이지 않고, 생명주기를 함께 함
- 포함되는 쪽에서 포함하는 쪽으로 속이 채워진 마름모를 연결
- ex) '문'과 '열쇠'
일반화(Generalization) 관계
- 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지 표현
- 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)
- 구체적(하위)에서 일반적(상위) 쪽으로 속이 빈 화살표를 연결
- ex) '커피'와 '아메리카노', '에스프레소'
의존(Dependency) 관계
- 짧은 시간동안만 연관을 유지하는 관계
- 소유관계는 아니지만 사물의 변화가 다른 사물에 영향을 미치는 관계
- 한 클래스가 다른 클래스를 오퍼레이션의 매개 변수로 사용하는 경우
- 영향을 주는 사물(이용자)이 영향을 받는 사물(제공자) 쪽으로 점선 화살표를 연결
- ex) '등급'과 '할인율'
실체화(Realization) 관계
- 사물이 할 수 있거나 해야 하는 기능으로 그룹화 할 수 있는 관계
- 한 사물이 다른 사물에게 수행하도록 지정하는 의미적 관계
- 사물이 기능 쪽으로 속이 빈 점선 화살표를 연결
- ex) '날 수 있는'과 '비행기', '새'
다이어그램(Diagram)
사물과 관계를 도형으로 표현
- 시스템을 가시화한 뷰(View)를 제공함으로 의사소통에 도움
- 정적 모델링은 구조적 다이어그램, 동적 모델링은 행위 다이어그램
구조적(Structural) 다이어그램 종류
클래스 다이어그램 (Class Diagram) |
- 클래스와 클래스, 클래스와 속성 사이의 관계를 표현 - 시스템의 구조 파악, 구조상 문제점 도출 |
객체 다이어그램 (Object Diagram) |
- 클래스에 속한 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현 - 럼바우(Rumbaugh) 객체지향 분석 기법에서 객체 모델링에 활용 |
컴포넌트 다이어그램 (Component Diagram) |
- 컴포넌트 간의 관계, 컴포넌트 간의 인터페이스를 표현 - 구현 단계에서 사용 |
배치 다이어그램 (Deployment Diagram) |
- 물리적 요소들의 위치를 표현 - 노드와 의사소통(통신) 경로로 표현 - 구현 단계에서 사용 |
복합체 구조 다이어그램 (Composite Structure Diagram) |
- 복잡 구조를 갖는 경우, 그 내부를 표현 |
패키지 다이어그램 (Package Diagram) |
- 모델 요소들을 그룹화한 패키지들의 관계 |
행위(Behavioral) 다이어그램 종류
유스케이스 다이어그램 (Use Case Diagram) |
- 요구를 분석, 기능 모델링 작업에 사용 - 사용자와 사용 사례로 구성, 사용 사례 간에 여러 형태의 관계로 표현 |
순차 다이어그램 (Sequence Diagram) |
- 상호작용하는 시스템이나 객체들이 주고 받는 메시지를 표현 |
커뮤니케이션 다이어그램 (Communication Diagram) |
- 동작에 참여하는 객체들이 주고 받는 메시지뿐만 아니라, 객체들의 연관까지 표현 |
상태 다이어그램 (State Diagram) |
- 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 상태가 어떻게 변화하는지 표현 - 이벤트(event)에 의한 객체들의 상태변화를 그림으로 표현 - 럼바우(Rumbaugh) 객체지향 분석 기법에서 동적 모델링에 활용 |
활동 다이어그램 (Activity Diagram) |
- 객체의 처리 로직이나 조건에 따른 처리 흐름을 순서대로 표현 - 처리 과정이 수행되는 동안 일어나는 일을 단계적으로 표현 |
상호작용 개요 다이어그램 (Interaction Overview Diagram) |
- 상호작용 다이어그램 간의 제어 흐름을 표현 |
타이밍 다이어그램 (Timing Diagram) |
- 객체 상태 변화와 시간 제약을 표현 |
>스테레오 타입(Stereotype)<
UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현
- 길러멧(Guilemet)이라 부르는 겹화살괄호(≪≫) 사이에 표현할 형태 기술
≪include≫ | 연결된 다른 UML 요소에 대해 포함 관계에 있는 경우 |
≪extend≫ | 연결된 다른 UML 요소에 대해 확장 관계에 있는 경우 |
≪interface≫ | 인터페이스를 정의하는 경우 |
≪exception≫ | 예외를 정의하는 경우 |
≪constructor≫ | 생성자 역할을 수행하는 경우 |
10. 주요 UML 다이어그램
유스케이스(Use Case) 다이어그램
사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현
- 외부 요소와 시스템 간의 상호작용 확인
- 요구사항을 분석하기 위한 도구
- 시스템의 범위 파악
유스케이스 다이어그램의 구성 요소
시스템 범위, 액터, 유스케이스, 관계
- 액터가 인식할 수 없는 시스템 내부의 기능을 하나의 유스케이스로 판단하면 안 됨
시스템(System) / 시스템 범위 (System Scope) |
- 시스템 내부에서 수행되는 기능들을 외부 시스템과 구분하기 위해 내부의 유스케이스들을 사각형으로 묶어 시스템의 범위를 표현 |
액터(Actor) | - 시스템과 상호작용 하는 모든 외부 요소, 사람이나 외부 시스템 - 주액터 : 시스템을 사용함으로 이득을 얻는 대상, 사람 - 부액터(시스템 액터) : 시스템에 서비스를 제공하는 외부 시스템, 조직이나 기관 |
유스케이스 (Use Case) |
- 사용자가 보는 관점에서 시스템이 액터에게 제공하는 서비스 or 기능 |
관계 (Relationship) |
- 액터와 유스케이스, 유스케이스와 유스케이스 사이에서만 포현 - 연관 관계, 포함 관계, 확장 관계(유스케이스가 특정 조건에 부합되어 확장될 때 - ≪extend≫), 일반화 관계 |
클래스(Class) 다이어그램
시스템을 구성하는 클래스, 속성, 오퍼레이션, 제약조건, 관계를 표현
- 시스템 구성 요소에 대해 이해할 수 있는 구조적 다이어그램
- 시스템 구성 요소를 문서화
- 코딩에 필요한 정보를 잘 표현, 시스템을 모델링하는데 자주 사용
클래스 다이어그램의 구성 요소
클래스, 제약조건, 관계 등
클래스 (Class) |
- 각각 객체들이 갖는 속성과 오퍼레이션을 표현 - 클래스의 이름, 속성, 오퍼레이션으로 표기 - 속성(Attribute) : 클래스의 상태나 정보 - 오퍼레이션(Operation) : 클래스가 수행할 수 있는 동작, 함수 |
제약조건 | - 속성값에 대한 제약조건, 오퍼레이션 지정 조건 |
관계 | - 클래스와 클래스 사이의 연관성 - 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계 |
>접근제어자<
속성과 오퍼레이션에 동일하게 적용
접근제어자 | 표현법 | 내용 |
public | + | 어떤 클래스에서라도 접근 가능 |
private | - | 해당 클래스 내부에서만 접근 가능 |
protected | # | 동일 패키지 내의 클래스 or 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근 가능 |
package | ~ | 동일 패키지 내부에 있는 클래스에서만 접근 가능 |
순차(Sequence) 다이어그램
시스템이나 객체들이 메시지를 주고받으며, 시간의 흐름에 따라 상호작용 하는 과정을 액터, 객체, 메시지 등의 요소로 그림으로 표현
- 각 동작에 참여하는 시스템, 객체들의 수행 기간을 확인할 수 있음
- 수직 방향은 시간의 흐름
- 객체들을 기본 단위, 객체들의 상호작용 표현
- 유스케이스 명세서를 하나의 표현 범위, 하나의 클래스에 포함된 오퍼레이션을 하나의 범위로 표현하기도 함
순차 다이어그램의 구성 요소
액터, 객체, 생명선, 실행, 메시지 등
액터 (Actor) |
- 서비스를 요청하는 외부 요소, 사람이나 외부 시스템 |
객체 (Object) |
- 메시지를 주고 받는 주체 |
생명선 (Liftline) |
- 객체가 메모리에 존재하는 기간, 객체 아래에 점선을 그어 표현 |
실행 상자 (Active Box) |
- 객체가 메시지를 주고 받으며 구동되고 있음을 표현 |
메시지 (Message) |
- 객체가 상호 작용을 위해 주고 받는 메시지 |
회귀 메시지 (Reply / Return Message) |
- 객체가 처리한 반환값이 담긴 메시지 |
제어 블록 (Loop) |
- 반복 처리되는 영역 표시 |
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 필기] 「1」 | 화면 설계 - (2.2) UI 상세 설계, HCI / UC / 감성공학 (1) | 2024.01.23 |
---|---|
[정처기 필기] 「1」 | 화면 설계 - (2.1) 사용자 인터페이스, UI 설계 도구, 품질 요구사항 (1) | 2024.01.22 |
[정처기 필기] 「1」 | 요구사항 확인 - (1.4) 요구사항 정의, 분석, CASE와 HIPO (0) | 2024.01.22 |
[정처기 필기] 「1」 | 요구사항 확인 - (1.3) 현행 시스템 파악, 개발 기술 환경 파악 (1) | 2024.01.21 |
[정처기 필기] 「1」 | 요구사항 확인 - (1.2) 스크럼 기법, XP 기법 (0) | 2024.01.21 |