개념 모델링(Conceptual Modeling)
개념 모델링
- 요구사항을 이해하기 쉽도록 실 세계의 상황을 단순화하여 개념적으로 표현한 것을 모델이라 함
- 이렇게 표현된 모델을 생성해 나가는 과정을 개념 모델링이라 함
- 모델은 문제가 발생하는 상황에 대한 이해를 증진하고 해결책을 설명하므로 소프트웨어 요구사항 분석의 핵심이라 할 수 있음
- 개발 대상 도메인의 엔티티(Entity)들과 그들의 관계 및 종속성을 반영함
- 요구사항별로 관점이 다르므로 개념 모델도 다양하게 표현되어야 함
- 대부분 UML(Unified Modeling Langauge)을 사용함
- 종류 : Use Case Diagram, Data Flow Model, State Model, Goal-Based Model, User Interactions, Object Model, Data Model
UML(Unified Modeling Language)
UML
- 객체지향 소프트웨어 개발 과정에서 시스템 분석, 설계, 구현 등의 산출물을 명세화, 시각화, 문서화 할 때 사용하는 모델링 기술과 방법론을 통합하여 마나든 범용 모델링 언어
- Rumbaugh의 OMT 방법론과 Booch의 Booch 방법론, Jacobson의 OOSE 방법론을 통합하여 만든 모델링 개념의 공통 집합으로 객체지향 분석 및 설계 방법론의 표준 지정을 목표로 제안된 모델링 언어임
- OMG(Object Management Group)에서 표준화 공고 후 IBM, HP, Microsoft, Oracle 등이 참여하여 1997.1 버전 1.0을 Release함
럼바우(Rumbaugh) 객체지향 분석 기법
- 소프트웨어 구성 요소를 그래픽으로 모형화 함
- 객체 모델링 기법이라고도 함
객체 모델링 | 정보 모델링이라고도 함. 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체를 다이어그램으로 표시 |
동적 모델링 | 제어 흐름, 상호작용, 동작 순서 등의 상태를 시간 흐름에 따라 상태 다이어그램으로 표시 |
기능 모델링 | 여러 프로세스 간의 자료 흐름을 표시. 어떤 데이터를 입력하여 어떤 결과를 가져올 수 있을지를 표현 |
UML의 특성
- 비주얼화 : 소프트웨어 구성 요소 간의 관계 및 상호작용을 시각화한 것
- 문서화 : 소프트웨어 생명주기의 중요한 작업을 추적하고 문서화할 수 있음. 개발 프로세스 및 언어와 무관하게 개발자 간의 의사소통 도구를 제공
- 명세화 : 분석, 설계, 구현의 완벽한 모델을 제공함. 분석 단계 - 기능 모델, 설계 단계 - 동작 수준 모델, 구현 단계 - 상호작용 모델 수준으로 명세화할 수 있음. 단순 표기법이 아닌 구현에 필요한 개발적 요소 및 기능에 대한 명세를 제공함
- 구축 : 객체지향 언어와 호환되는 프로그래밍 언어는 아니지만, 모델이 객체지향 언어로 매핑될 수 있음
UML 소프트웨어에 대한 관점
- 기능적 관점 : 사용자 측면에서 본 소프트웨어의 기능을 나타냄. 사용 사례 모델링이라고도 함. 요구분석 단계에서 사용함. UML에서는 Use Case Diagram을 사용함.
- 정적 관점 : 소프트웨어 내부의 구성 요소 사이의 구조적 관계를 나타냄. 객체, 속성, 연관 관계, 오퍼레이션의 시스템 구조를 나타내며, UML에서는 Class Diagram을 사용함.
- 예) 클래스 사이의 관계, 클래스 구성과 패키지 사이의 관계
- 동적 관점 : 시스템의 내부 동작을 말하며, UML에서는 Sequence Diagram, State Diagram, Activity Diagram을 사용함.
UML의 기본 구성
구성 | 설명 |
사물 (Things) |
- 객체지향 모델을 구성하는 기본 요소 - 객체 간의 관계 형성 대상 |
관계 (Relationship) |
- 객체 간의 연관성을 표현하는 것 - 종류 : 연관, 집합, 포함, 일반화, 의존, 실체화 |
다이어그램 (Diagram) |
- 객체의 관계를 도식화한 것 - 다양한 관점에서 의사소통할 수 있도록 view를 제공 - 정적 모델 : 구조 다이어그램 - 동적 모델 : 행위 다이어그램 |
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개 이상 객체 연결 |
728x90
반응형