* 모델링
☞ 실세계 물리현상을 특정 목적에 맞춰 이용하기 쉬운 형식으로 표현하는 일 의미
▶ 개념 모델링 (Conceptual Modeling)
- 실세계 문제에 대한 모델링이 SW 요구사항 분석 핵심
- 문제 도메인의 엔티티들과 그들의 관계 및 종속성 반영
▶ UML (Unified Modeling Language)
- 객체 지향 SW 개발 과정에서 산출물을 명세화, 시각화, 문서화 할 때 사용되는 모델링 기술과 방법론 통합해 만든 표준화된 범용 모델링 언어
■ UML 특징
□ 가시화 언어
- 개념 모델 작성 시 오류 적고 의사소통 용이케 함
□ 구축 언어
- 다양한 객체지향 프로그램 언어로 변환 가능 (순공학, 역공학)
□ 문서화 언어
- 시스템에 대한 평가, 통제, 의소소통 문서
□ 명세화 언어
- 단순 표기법 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세 제공
■ UML 구성과 내용
□ View
- 모델화된 시스템의 서로 다른 모형 제공
□ Diagram
- View 내용을 나타내기 위한 9가지 다이어그램 제공
□ 모델요소 (Model Element)
- 객체 지향 개념을 표현하기 위해 사용되는 요소. 클래스, 속성, 오퍼레이션으로 구성
□ General Mechanism
- 모델 요소에 대해 주석 정보와 의미 제공
■ UML 다이어그램 종류별 설명
□ 구조적 (Structural) 다이어그램
≫ Class
- 시스템 내 클래스들 정적 구조 표현
- 클래스는 객체들 집합으로 속성과 동작으로 구성
≫ Object
- 클래스의 여러 Object 인스턴스 나타내는 대신 실제 클래스 사용
- 관계있는 모든 인스턴스 표현
≫ Component
- 코드 컴포넌트에 바탕을 둔 코드의 물리적 구조 표현
- 논리적 클래스 혹은 클래스 자신의 구현에 대한 정보 포함하고, 실질적인 프로그래밍 작업에 사용
≫ Deployment
- 시스템 HW와 SW 간 물리적 구조 표현하며, 실질적인 컴퓨터와 Device 간 관계 표현하는데 이용
- 컴포넌트 사이의 종속성 표현
≫ Package (UML 2.0에서 추가)
- 시스템 계층적인 구조 표현
- 클래스들로 이루어진 패키지와 그들 간 의존 관계 보여줌
≫ Composite Structure (UML 2.0에서 추가)
- 사용자 입장에서 본 시스템 행동 표현
- 클래스 내부 구조 파악에 용이
□ 행위 (Behavioral) 다이어그램
≫ Use Case
- 사용자 입장에서 본 시스템 행동 표현
- Use Case들은 시스템 기능적인 요구 정의
≫ State
- 클래스 객체가 가질 수 있는 모든 가능한 상태와 상태 간 전이 표현
- 진입 조건, 탈출 조건, 상태 전이에 필요한 사건 등 자세한 사항 기술
- 설계 단계에서 클래스 객체의 동적인 행동 방식 표현하는데 사용
≫ Activity
- 행위의 순서적 흐름 표현
- 순서도나 병렬적인 처리 요하는 해우이 표현할 때 사용
□ 상호작용 (Interaction) 다이어그램
≫ Sequence
- 객체와 객체 간 상호작용을 메시지 흐름으로 표현
- 오브젝트 사이에 메시지 보내는 시간 또는 순서 보여주기 위해 사용
≫ Conmmunication
- 상호작용에 참여하는 객체/컴포넌트 간 관계 명시적으로 표현
-
≫ Interaction Overview (UML 2.0.에서 추가)
- Activity Diagram과 Sequence Diagram 혼합
- 상호작용에 대한 제어 흐름 표현
≫ Timing (UML 2.0에서 추가)
- 시간적 제약과 객체 상태 변화 표현
- 인스턴스 간 상태 전이와 상호 작용을 시간 제약으로 표현
ㄱ. 클래스 다이어그램
- 객체 지향 모델링에서 가장 자주 사용되는 방법
- 객체 멤버, 연산의 구성과 객체들과의 연관, 의존, 상속 등 정적인 관계 나타내는 UML 다이어그램
● 클래스 구성 요소
○ 클래스 명 (Class Name)
- 공통 속성, 연산, 관계, 의미를 객체들의 집합으로 정의
○ 속성 (Attribute)
- 클래스 속성, 접근지정자, 데이터 타입 등 구조적 특징 표현
○ 연산 (Operation)
- 메서드라고도 하며 클래스에서 정의한 동작 호출하는 연산자, 접근지정자, 리턴타입, 파라미터 표현
● 클래스 다이어그램 표기법
○ -
- Private : 해당 클래스 내에서만 접근 가능
○ #
- Protected : 동일 패키지 내에서만 접근 가능
○ +
- Public : 어디서든 접근 가능
○ 명칭 Attribute
- 의미있는 명사형으로 표시
○ 명칭 Operation
- 행위 나타내는 동사형으로 표시
● JAVA 접근 제한자
○ private
- 클래스 선언하고, 그 클래스 구성하는 객체에 대해 외부에서는 사용 불가하고 해당 클래스에서만 접근 가능
○ public
- 클래스 선언하고, 그 클래스 구성하는 객체에 대해 외부에서는 사용 가능
○ protected
- 클래스 선언하고, 그 클래스 구성하는 객체에 대해 동일 패키지 내에서만 접근 가능
● 클래스 간 관계
구분 | 설명 | 표기법 |
일반화 관계 Generalization (IS-A) |
- 객체지향 개념에서 상속관계 - UML에서는 일반화 관계로 모델링 - 한 클래스가 다른 클래스를 포함하는 상위 개념 - 상위와 하위 관계 의미하며 하위는 상위의 공통점 상속 - 클래스를 상속받아 자식 클래스에서 사용 예) 지우개, 노트, 연필 → 학용품 Class 학용품 { } Class 지우개 extends 학용품 { } 지우개 Class는 학용품 Class 속성과 행위를 상속 받음 |
|
연관 관계 Association (HAS-A) |
- 클래스들이 상호 메시지 주고 받는 관계 표현 한 클래스가 다른 클래스와 영속적인 연관성 맺을 때 사용 예) 부서 → 부서원 Public Class 부서원 { } Public Class 부서 { Private 부서원 employee; employee.setName("kkk"); } Class 부서는 내부에 Class 부서원 생성하여 행위 호출 |
|
의존 관계 Dependency (use) |
- 연관 관계의 특수 형태로 한 클래스가 다른 클래스에 의존적인 연관 관계 나타낼 때 사용 예) 주문 → 제품 Public Class 제품 { int cnt; String name; } Public Class 주문 { 제품 prod = new 제품(); prod.setCnt(100); prod.setName("apple"); } Class 주문은 Class 제품에 의존 관계에 있음. 만일 Class 제품 속성이 바뀌면 Class 주문 역시 행위 수정해야 함 |
|
집합 관계 (집단/집약 관계) Aggregation |
- 연관 관계의 특수 형태로 클래스들 사이의 전체와 부분의 관계 (part of) 나타냄 - 하나의 클래스가 다른 클래스를 포함하는 관계 - 전체 객체 라이프타임과 부분 객체 라이프타임은 독립적이며, 전체 객체가 사라져도 부분 객체는 계속 생존 가능 예) 컴퓨터 - 마우스, 모니터, 키보드, 본체 Public Class 컴퓨터 { Private Vector <모니터> vertorM; } Class 모니터 { } Class 컴퓨터는 Class 모니터를 Vector 형태로 많이 소유 가능 |
|
합성 관계 (복합/포함 관계) Composition |
- 연관 관계의 특수 형태로 클래스들 사이 전체와 부분의 관계 (part of) 나타냄 - 전체 객체 라이프타임과 부분 객체 라이프타임 동일하여, 전체 객체 없어지면 부분 객체도 없어짐 예) 본체 - CPU, RAM, 메인보드 Public Class 본체 { Private Vector<CPU> vectorCPU; vectorCPU.close(); return; } Class CPU { } |
|
실체화 관계 Realization (implement) |
- 하나의 클래스가 다른 클래스를 보다 구체적으로 실체화하는 관계 - 인터페이스 클래스를 다른 클래스가 구현해주는 관계가 좋은 관계 예) 빌딩 컨셉 → 설계도면 Public Class interface 설계도면 { } Public Class 빌딩컨셉 implements 설계도면 { } |
ㄴ. 시퀀스 다이어그램
- 문제 해결에 필요한 객체 정의하고 객체 간 주고받는 메시지 순서를 시간 흐름에 따라 보여줌
● 시퀀스 다이어그램 구성요소
구성요소 | 설명 | 표기법 |
액터 (Actor) |
시스템과 상호작용하는 사용자, 외부 시스템 표현 | |
활성 객체 (Object) |
메시지 상호 작용에 참여하는 대상 표현 | |
메시지 (Message) |
액터, 활성 객체 간 의사소통 표현 | |
생명선 (Life Line) |
객체 생존기간 의미 | |
제어 사각형 (Control Rectangles) |
- 객체가 활성화 되어 있는 기간 표현 - 객체가 제어를 가지고 정보 처리하거나 다른 정보 기다리고 있는 것 표현 |
● 시퀀스 다이어그램 메시지 동작 종류
종류 | 설명 | 표기법 |
동기 (Synchronous) |
메시지로부터 전송된 임의 메시지들이 전송 완료 시 중단됨 표현 | |
반환 (Return) |
제어 흐름이 호출 활성화 객체로 반환됨 표현 | |
비동기 (Asynchronous) |
활성 객체가 응답 기다리지 않고 메시지 전송하는 것 표현 | |
평판 (Flat) |
동기와 비동기 구분 없음 |
ㄷ. 액티비티 다이어그램
- 객체 상태가 아닌 로직이나 조건에 따른 처리 흐름을 순서에 따라 정의
- 순서도와 모양 비슷하지만 객체 지향 모델링에 필요한 객체 행위 구체적 표현하기 위해 개선시킨 형태
- 시퀀스 다이어그램에서 표현하지 못한 객체나 시스템 역할에 대한 행위 구체적 표현 가능
● 액티비티 다이어그램 구성요소
구성요소 | 설명 | 표기법 |
활동 상태 (Active State) |
행위나 작업 등 활동 상태 표현 | |
초기 상태 (Initial State) |
처리 흐름 시작 지점 표현 | |
종료 상태 (Final State) |
처리 흐름 종료되는 지점 표현 | |
전이 (Transition) |
하나의 상태에서 다른 상태로 제어 흐름 표현 | |
동기화 (Synchronization) |
병렬 수행 시작되거나 모여짐 표현 | |
분기 (Decision) |
활동 흐름 조건에 따라 분기됨 표현 | |
구획면 (Swimlane) |
시스템이나 업무 담당자 역할 구분 표현 | |
신호 (Signal) |
활동 진행 중 신호 보내는 방식 표현 - 송신 신호 : 객체로 신호를 송신하여 객체 조작 - 수신 신호 : 객체에서 신호 수신하여 처리 흐름 시작 |
☞☞☞ Part01-01-3. 분석모델 확인 (2)
'정보처리기사 > 필기' 카테고리의 다른 글
[정보처리기사] Part01-02-1. UI 요구사항 확인 (0) | 2022.02.24 |
---|---|
[정보처리기사] Part01-01-3. 분석모델 확인 (2) (0) | 2022.02.24 |
[정보처리기사] Part01-01-2. 요구사항 확인 (2) (0) | 2022.02.24 |
[정보처리기사] Part01-01-2. 요구사항 확인 (1) (0) | 2022.02.24 |
[정보처리기사] Part01-01-1. 현행 시스템 분석 (0) | 2022.02.21 |
댓글