개념 모델링(Conceptual Modeling)
개념 모델링
- 요구사항을 이해하기 쉽도록 실 세계의 상황을 단순화하여 개념적으로 표현한 것을 모델이라고 함
- 이렇게 표현된 모델을 생성해 나가는 과정을 개념 모델링이라고 함
- 모델은 문제가 발생하는 상황에 대한 이해를 증진하고 해결책을 설명하므로 소프트웨어 요구사항 분석의 핵심이라고 할 수 있음
- 개발 대상 도메인의 엔티티(Entity)들과 그들의 관계 및 종속성을 반영
- 요구사항별로 관점이 다르므로 개념 모델도 다양하게 표현되어야 함
- 대부분 UML(Unified Modeling Language)을 사용
개념 모델링의 종류
- Use Case Diagram
- Data Flow Model
- State Model
- Goal-Based Model
- User Interactions
- Object Model
- Data Model
❗️ UML(Unified Modeling Language)
- 객체 지향 소프트웨어 개발 과정에서 시스템 분석, 설계, 구현 등의 산출물을 명세화, 시각화, 문서화할 때 사용하는 모델링 기술과 방법론을 통합하여 만든 범용 모델링 언어
- Rumbaugh의 OMT 방법론과 Booch의 Booch 방법론, Jacobson의 OOSE 방법론을 통합하여 만든 모델링 개념의 공통 집합
- 객체 지향 분석 및 설계 방법론의 표준 지정을 목표로 제안된 모델링 언어
- OMG(Object Management Group)에서 표준화 공고 후 IBM, HP, Microsoft Oracle 등이 참여하여 1997.1버전 1.0을 Release함
❗️ 럼바우(Rumbaugh) 객체 지향 분석 기법
- 소프트웨어 구성 요소를 그래픽으로 모형화
- 객체 모델링 기법(Object Modeling Technique이라고도 함
- 모델링 종류
모델링 | 설명 |
---|---|
객체 모델링 | 정보 모델링이라고도 함 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들간의 관계를 규명하여 객체_를 다이어그램(Obejct Diagram)으로 표시 _실 세계 문제 영역으로부터 객체와 클래스를 추출해 그들 간의 관계를 연관화, 집단화, 일반화, 중심으로 규명하며 클래스의 송석과 연산을 함께 표현함으로써 시스템의 정적 구조를 생성함 |
동적 모델링 | 제어 흐름, 상호작용, 동작 순서 등의 상태를 시간 흐름에 따라 상태 다이어 그램(State Diagram)으로 표시함 |
기능 모델링 | 여러 프로세스 간의 _자료 흐름_을 자료흐름도(Data Flow Diagram)로 표시 어떤 데이터를 입력하여 어떤 결과를 가져올 수 있을 지를 표현 |
- 객체지향 분석 절차
객체모형 --> 동적모형 --> 기능모형
UML의 특성
특성 | 설명 |
---|---|
비주얼화 | 소프트웨어 구성 요소 간의 관계 및 상호작용을 시각화 한 것 |
문서화 | 소프트웨어 생명주기의 중요한 작업을 추적하고 문서화할 수 있음 개발 프로세스 및 언어와 무관하게 개발자 간의 의사소통 도구 제공 |
명세화 | 분석, 설계, 구현의 완벽한 모델을 제공 [분석 단계] 기능 모델 --> [설계 단계] 동작 수준 모델 --> ㅡ[구현 단계] 상호작용 모델 수준으로 명세화 가능 단순 표기법이 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세 제공 |
구축 | 객체 지향 언어와 호환되는 프로그래밍 언어는 아니지만 모델이 객체 지향 언어로 매핑 가능 |
UML 소프트웨어에 대한 관점
- 기능적 관점
- _사용자 측면_에서 본 소프트웨어의 기능을 나타냄
- 사용 사례 모델링이라고도 함
- 요구분석 단계에서 사용
- UML 에서는 Use Case Diagram 사용
- 정적 관점
- 소프트웨어 내부의 구성 요소 사이의 구조적 관계를 나타냄
- 객체, 속성, 연관 관계, 오퍼레이션이 시스템 구조를 나타냄
- UML에서는 Class Diagram을 사용함
- 클래스 사이의 관계, 클래스 구성과 패키지 사이의 관계
- 동적 관점
- 시스템의 내부동작을 의미
- UML에서는 Sequence Diagram, State Diagram, Activity Diagram을 사용함
UML의 기본 구성
구성 | 설명 |
---|---|
사물 (Things) |
객체 지향 모델을 구성하는 기본 요소 객체 간의 관계 형성 대상 |
관계 (Relationship) |
객체 간의 연관성을 표현 종류: 연관, 집합, 포함, 일반화, 의존, 실체화 |
다이어그램 (Diagram) |
객체의 관계를 도식화 다양한 관점에서 의사소통할 수 있도록 view를 제공 정적 모델: 구조 다이어그램 동적 모델: 행위 다이어 그램 |
스테레오 타입
- UML에서 제공하는 기본 요소 외에 추가적인 확장 요소를 표현할 때 사용
- UML 확장 모델에서 스테레오 타입 객체를 표현할 때 사용하는 기호는 쌍 꺾쇠와 비슷하게 생긴 길러멧(Guillemet)
<<>>
이며, 길러멧 안에 확장 요소를 작성
UML 접근 제어자
접근 제어자 | 표기 | 설명 |
---|---|---|
Public | + |
어떤 클래스의 객체에서 든 접근 가능 |
Private | - |
해당 클래스로 생성된 객체만 접근 가능 |
Protected | # |
해당 클래스와 동일 패키지에 있거나 상속 관계에 있는 하위 클래스의 객체들만 접근 가능 |
Package | ~ |
동일 패키지에 있는 클래스의 객체들만 접근 가능 |
연관관계 다중성 표현(실기)
표기 | 의미 |
---|---|
1 |
1 개체 연결 |
* 또는 0..* |
0이거나 그 이상 객체 연결 |
1..* |
1이거나 1 이상 객체 연결 |
0..1 |
0이거나 1객체 연결 |
1,3,6 |
1이거나 3이거나 6 객체 연결 |
n |
n개 객체 연결 |
n..* |
n이거나 n개 이상 객체 연결 |
UML 다이어 그램의 분류
구조적 다이어그램(Structure Diagram)
- 정적이고 구조 표현을 위한 다이어그램
다이어그램 유형 | 목적 |
---|---|
클래스 다이어그램(Class Diagram) | 시스템 내 클래스의 정적 구조를 표현하고 시스템을 구성하는 클래스들 사이의 관계를 포현 |
객체 다이어그램(Object Diagram) | 객체 정보를 보여줌 |
복합체 구조 다이어그램(Composite Structure Diagram) | 복합 구조의 클래스와 컴포넌트 내부 구조를 표현 |
배치 다이어그램(Deplyment Diagram) | 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현 |
컴포넌트 다이어그램(Component Diagram) | 컴포넌트 구조 사이의 관계를 표현 |
패키지 다이어그램(Package Diagram) | 클래스나 유스케이스 등을 포함한 여러 모델 요소를 그룹화해 패키지를 구성하고 패키지들 사이의 관계를 표현 |
행위 다이어그램(Behavior Diagram)
- 동적이고 순차적인 표현을 위한 다이어 그램
다이어그램 유형 | 목적 | |
---|---|---|
유스케이스 다이어그램 (Use Case Diagram) |
사용자 관점에서 시스템 행위를 포현 | |
활동 다이어그램 (Activity Diagram) |
업무 처리 과정이나 연산이 수행되는 과정을 표현 | |
상태 머신 다이어그램 (State Machine Diagram) |
객체의 생명주기 표현, 동적 행위를 모델링하지만 특정 객체만을다룸 실시간 임베디드 시스템, 게임, 프로토콜 설계에 이용 |
|
Collaboration Diagram | Sequence Diagram과 같으며 모델링 공간에 제약이 없어 구조적인 면을 중시함 | |
상호작용 다이어그램 (Interaction Diagram) |
순차 다이어그램 (Sequence Diagram) |
시스템의 동작을 정형화하고 객체이 메세지 교환을 쉽게 표현하고 시간에 따른 메세지 발생 순서를 강조 요소: 생명선(Life Line), 통로(Gate), 상호작용(Interaction Fragment), 발생(Occurrence), 실행(Execution), 상태 불변(State Invariant), 메세지(Message), 활성(Activations), 객체(Entity), Actor |
상호작용 개요 다이어그램 | 여러 상호작용 다이어그램 사이의 제어 흐름을 표현 | |
통신 다이어그램 (Communication Diagram) |
객체 사이의 관계를 중심으로 상호작용 표현 | |
타이밍 다이어그램 (Timing Diagram) |
객체 상태 변화와 시간 제약을 명시적으로 표현 |
클래스 다이어그램 관계 표현
class diagram
- 시스템을 구성하는 객체 간의 관계를 추상화한 모델을 논리적 구조로 표현
- 객체 지향 개발에서 공통으로 사용됨
- 분석, 설계, 구현 단계 전반에 지속해서 사용됨
Operation
: 클래스의 동작을 의미하며, 클래스에 속하는 객체에 대하여 적용될 메소드를 정의한 것
class Rectangle{
+int height
+int width
+getArea(): int
+resize(int, int)
}
UML 관계 표현
구성 | 설명 |
---|---|
단방향 연관 관계 | 한쪽은 알지만 반대쪽은 상대방 존재를 모름 |
양방향 연관관계 | 양쪽 클래스 객체들이 서로의 존재를 인식 |
의존 관계 | 연관 관계와 같지만 메소드를 사용할 때와 같이 매우 짧은 시간만 유지 |
일반화 관계 | 객체 지향에서 _상속관계(IS-A)_를 표현 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 사용 |
집합관계 | 클래스 사이 전체나 부분이 같은 관계 |
포함관계 | 전체/부분 객체 라이프타임 의존적(전체 객체 삭제 > 부분 객체 삭제) |
실체화 관계 | 책임 집합 인터페이스와 실제로 실현한 클래스들의 사이 |
UML 연관 관계(Association Relation)
- 한 사물의 객체가 다른 사물의 객체와 연결된 것을 포현
- 두 클래스가 서로 연관이 있다면 A, B 객체를 서로 참조할 수 있음을 표현
- 이름: 관계의 의미를 표현하기 위해 이름을 가질 수 있음
- 역할: 수행하는 역할을 명시적으로 이름을 가질 수 있음
UML 의존 관계(Dependency Relation)
- 연관 관계와 같지만 메서드를 사용할 때와 같이 매우 짧은 시간만 유지
- 영향을 주는 객체에서 영향을 받는 객체 방향으로 점선 화살표를 연결함
[운전자]--연관관계, 소유-->[자동차] -.의존 관계.-> [연료]
UML 일반화 관계(Generalization Relation)
- 객체 지향에서 _상속관계(Is A Kind Of)_를 표현
- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 사용
- 부모(슈퍼)클래스
- 자식(서브)클래스
A[가전제품]
건조기 --> A
세탁기 --> A
스타일러 --> A
UML 집합 관계(Aggregation Relation)
- A객체가 B객체에 포함된 관계
부분
을 나타내는 객체를 다른 객체와 공유할 수 있음전체
클래스 방향에빈
마름모로 표시하고,or
관계에 놓으면 선 사이를 점선으로 잇고{or}
를 표시
UML 포함관계(Composition Relation)
- 부분 객체가 전체 객체에 속하는 강한 집합 연관의 관계를 표현하는 클래스
부분
객체는 다른 객체와 공유 불가능전체
객체 방향에채워진
마름모로 표시
UML 실체화 관계(Realization Relation)
- 인터페이스와 실제 구현된 일반 클래스 간의 관계로 _존재하는 행동에 대한 구현_을 표현
- 한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정하는 의미적 관계
A[날다]
파리-.->A
미사일-.->A
나방-.->A
Use Case Diagram
Use Case Diagram의 개념
- 객체 지향 초창기 분석 작업에 작성되는 사용자의 요구를 기능적 측면에서 기술할 때 사용하는 도구
- Actor와 Use Case로 구성됨
- 얻어지는 결과는 개발 대상 시스템이 제공해야 하는 서비스 목록이 됨
Use Case Diagram 요소
요소 | 설명 |
---|---|
시스템 경계 (System Boundary) |
시스템이 제공해야 하는 사례(Use Case)들의 범위 큰 규모의 객체로 구현되는 존재 |
액터(Actor) | 서비스를 이용하는 외부 객체 시스템이 특정한 사례(Use Case)를 실행하도록 요구할 수 있는 존재 |
유스 케이스 (Use Case) |
시스템이 제공해야 하는 개별적인 서비스 기능 서비스는 특정 클래스의 멤버 함수로 모데링됨 |
접속 관계 (Communication Association) |
Actor/Use Case 또는 Use Case/ Use Case 사이에 연결되는 관계 Actor나 Use Case가 다른 Use Case의 서비스를 이용하는 상호아을 표현 |
사용 관계 (Uses Association) |
여러 개의 유스케이스에서 공통으로 수행해야 하는 기능을 모델링하기 위해 사용 |
확장 관계 (Extends Association) |
확장 기능 유스 케이스와 확장 대상 유스 케이스 사이에 형성되는 관계 해당 유스 케이스에 부가적인 유스케이스를 실행할 수 있을 때의 관계 확장 대상 유스케이스를 수행할 때 특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우에 적용 |
Use Case Diagram 작성 단계
[액터식별]--> [use case 식별] --> [관계 정의] --> [use case 구조화]
단계 | 설명 |
---|---|
액터 식별 | 모든 사용자 역할과 상호작용하는 타 시스템을 식별 정보를 주고받는 하드웨어 및 지능형 장치를 식별 |
use case 식별 | 액터가 요구하는 서비스와 정보를 식별 액터가 시스템과 상호작용하는 행위를 식별 |
관계 정의 | 액터와 액터 그리고 액터와 유스케이스의 관계 분석을 정의 유스 케이스와 유스케이스 간의 관계 분석을 정의 |
use case 구조화 | 두개의 상위 Use Case에 존재하는 공통 서비스를 추출 추출된 서비스로 Use Case를 정의 추출된 서비스를 사용하는 Use Case와 관계를 정의 조건에 따른 서비스 수행 부분 분석하여 구조화 |
'EIP준비' 카테고리의 다른 글
#6 소프트웨어 설계6 - 소프트웨어 아키텍처 (0) | 2023.03.29 |
---|---|
#4 소프트웨어설계4 - 요구사항 개발 (0) | 2023.03.25 |
#3 소프트웨어 설계 - 현행 시스템 분석 (0) | 2023.03.24 |
#2 소프트웨어 설계 - 애자일과 스크럼 (0) | 2023.03.23 |
#1 소프트웨어 설계 (0) | 2023.03.21 |
댓글