5장. 시스템 모델링
시스템 모델링
시스템 모델링
•
시스템의 추상 모델을 개발하는 프로세스
•
각각의 모델은 시스템의 서로 다른 뷰나 관점을 나타낸다.
•
보통 UML (Unified Modeling Language) 다이어그램 표기법을 이용하여 나타낸다.
모델의 용도
1. 요구공학 프로세스
시스템의 상세 요구사항을 이끌어 내기 위하여
2. 설계 프로세스
시스템을 구현할 엔지니어에게 시스템을 설명하기 위하여
3. 구현 후
시스템의 구조와 동작을 문서화하기 위해
시스템 모델은 완전한 표현인가?
•
시스템 모델은 시스템의 완전한 표현이 아니다.
•
모델은 시스템의 다른 표현이라기 보다는 검토 중인 시스템의 추상화이다.
시스템 관점
서로 다른 관점에서 시스템을 표현하기 위해 다른 모델들을 개발
시스템 관점 유형
1. 외부 관점 (External)
시스템의 컨텍스트나 환경을 모델링
2. 상호작용 관점 (Interaction)
시스템과 그 환경 사이의 상호 작용을 모델링
3. 구조 관점 (Structural)
시스템의 구성이나 시스템에 의해 처리되는 데이터의 구조를 모델링
4. 동작 관점 (Behavioral)
시스템의 동적인 행동을 모델링
그래픽 모델
그래픽 모델을 사용하는 방법
1. 시스템에 대해 토론하고 아이디어를 도출하는 용도
•
모델은 불완전 할 수 있으며 표기법을 약식으로 사용 가능하다
•
주로 애자일 기법에서 사용하는 방법
2. 기존 시스템을 문서화하는 용도
모델이 완전할 필요는 없으나 모델이 정확해야 한다.
3. 시스템 구현을 생성하는 모델 기반 프로세스의 입력
소스코드를 생성하는데 사용되기에 모델이 완전하고 정확해야 한다.
UML
UML (Unified Modeling Language)
•
소프트웨어 시스템을 모델링하는 데 사용될 수 있는 13가지 다이어그램 유형들의 집합
•
객체 지향 모델링의 표준 언어
시스템 모델 종류
1.
컨텍스트 모델 (Context)
2.
상호작용 모델 (Interaction)
3.
구조 모델 (Structural)
4.
동작 모델 (Behavioral)
UML 다이어그램 대표적 유형 5가지
1. 액티비티 다이어그램 (Activity) (= 순서도)
프로세스나 데이터 처리와 관련된 액티비티 흐름을 보여준다.
2. 유스케이스 다이어그램 (Use case)
시스템과 그 환경 간의 상호 작용을 보여준다.
3. 시퀀스 다이어그램 (Sequence)
액터와 시스템 간, 시스템 컴포넌트들 간의 상호 작용을 보여준다.
4. 클래스 다이어그램 (Class)
시스템의 객체 클래스들과 클래스들 간의 연관을 보여준다.
5. 상태 다이어그램 (State)
시스템이 내부 또는 외부 이벤트에 대해 어떻게 반응하는지 보여준다.
컨텍스트 모델
컨텍스트 모델
•
시스템의 운영 환경을 기술
•
시스템의 경계와 시스템과 연동되는 외부 시스템을 보여준다.
비즈니스 프로세스 모델
•
전반적인 업무의 흐름을 보여준다.
•
컨텍스트 모델과 함께 사용될 수 있다.
•
UML 액티비티 다이어그램 (=순서도)으로 표현 가능하다.
상호 작용 모델
상호 작용 모델의 용도
1. 사용자와 시스템 간 상호작용 모델
사용자 요구사항을 확인하는데 도움
2. 시스템 간 상호작용 모델
시스템 간 커뮤니케이션 문제 발생 가능성을 해결한다.
3. 컴포넌트 간 상호작용 모델
시스템의 구조가 성능과 확실성을 제공할 수 있는지 이해하는데 도움 준다.
상호 작용 모델 종류 (두가지 접근법)
1. 유스케이스 다이어그램
시스템과 외부 에이전트 (사람 사용자 or 다른 시스템들)와의 상호 작용을 모델링하는 데 주로 사용된다.
2. 시퀀스 다이어그램
시스템 컴포넌트들 간의 상호 작용을 모델링하는 데 사용되지만 외부 에이전트도 상호 작용에 포함 가능
유스케이스 다이어그램
유스케이스 다이어그램
상호 작용을 단순하게 개략적으로 보여주는 다이어그램
유스케이스 (Use case)
•
사용자가 어떤 인터페이스를 통하여 시스템에 무엇을 기대하는지에 대한 간단한 기술
•
시스템이 제공하는 기능
•
공통적인 사용자 목표와 관련된 시나리오의 집합
액터 (Actor)
시스템이 외부에서 시스템과 직접 상호작용하는 모든 (사용자, 외부 시스템, 장치 등) 것
연관 (Association)
액터가 유스케이스를 수행
시퀀스 다이어그램
시퀀스 다이어그램
•
액터와 시스템 객체들간의 상호 작용과 객체들간의 상호작용을 모델링하기 위해 사용
•
사용자와 시스템 간 상호작용을 나타내는 시퀀스 다이어그램
시퀀스 다이어그램 용도
•
특정 유스케이스나 유스케이스 인스턴스에서 일어나는 상호 작용의 순서를 보여준다.
•
코드 생성이나 상세 문서화에 사용하지 않는다면 모든 상호작용을 다이어그램에 포함시킬 필요는 없다.
시퀀스 다이어그램 용도
•
특정 유스케이스나 유스케이스 인스턴스에서 일어나는 상호 작용의 순서를 보여준다.
•
코드 생성이나 상세 문서화에 사용하지 않는다면 모든 상호작용을 다이어그램에 포함시킬 필요는 없다.
시퀀스 다이어그램 구성 요소
•
객체: :ClassName
•
메시지: message
•
반환: 점선 화살표
•
객체 생명선: 세로 점선
•
제어 포커스: 활성화 상자
•
생성: ClassName
•
상호작용 프레임: opt, alt, loop 등
구조 모델
구조 모델 (Structural Models)
시스템을 구성하는 컴포넌트들과 그들 간의 관계를 보여준다.
구조 모델 유형
1. 정적 모델
시스템 설계구조를 보여준다. → 객체 클래스의 정적 구조를 보여주기 위한 클래스 다이어그램 사용
2. 동적 모델
시스템이 실행 될 때 구성을 보여준다.
클래스 다이어그램 (Class Diagram)
시스템의 클래스들과 그들 간의 연관을 보여주는 객체지향 시스템 모델 개발 시 사용된다.
클래스
•
한 가지 종류의 시스템 개체를 일반적으로 정의한 것
•
같은 속성, 오퍼레이션, 관계, 의미를 가지는 객체 집합에 대한 설명
•
객체는 클래스의 인스턴스다.
연관
•
클래스들 사이에 어떤 관계가 있다는 것을 표시하는 클래스 사이의 연결
•
클래스 객체 간의 관계
•
연결은 연관의 인스턴스다.
Tip) 연관의 속성
이름, 다중성 (Multiplicity), 끝점 이름 (End Name), 도달성 (Navigability)
Tip) 클래스 구성
1.
클래스 이름
2.
속성: Java의 데이터 필드
3.
오퍼레이션: Java의 메서드
4.
속성과 오퍼레이션 접근 한정자
•
4-1. public (+)
•
4-2. private (-)
•
4-3. protected (#)
일반화 & 집합
일반화 (Generalization)
•
상속 (Inheritance)
•
Java의 extends
집합 (Aggregation)
•
한 객체(전체)가 다른 객체(부분)로 구성되는 것
•
복합(Composition) 관계는 집합 관계의 특수한 경우다.
동작 모델
동작 모델 (Behavioral Models)
•
시스템이 실행될 때의 동적 행동에 대한 모델
•
자극 (Stimulus)에 대한 시스템의 반응을 모델링
자극의 종류
1. 데이터
데이터가 오면 시스템에 의해 처리
2. 이벤트
이벤트가 발생하면 이에 대해 반응
상태 다이어그램
내부, 외부 이벤트에 대한 시스템의 반응을 보여준다.
데이터 주도 모델링 (Data-driven Modeling)
•
입력 데이터의 처리와 이와 연관된 출력 생성과 관련된 일련의 행동을 보여준다.
•
입력 → 처리 → 출력
데이터 흐름도 (Data Flow Diagram) (DFD)
•
데이터가 처리되는 과정을 보여준다.
•
액티비티 다이어그램을 이용한다.
•
자료 흐름 (객체)와 처리 (액티비티)로 구성된다.
이벤트 주도 모델링 (Event-driven Modeling)
•
어떻게 시스템이 외부와 내부 이벤트에 반응하는지를 보여준다.
•
시스템이 외부/내부 이벤트(자극)에 반응하는 방식
이벤트 주도 모델의 구성
1. 시스템은 유한한 개수의 상태 (State)를 가진다.
2. 이벤트(자극)가 한 상태에서 다른 상태로 전이 (Transition)된다.
상태 다이어그램
시스템의 상태와 한 상태에서 다른 상태로 전이를 일으키는 이벤트를 보여준다.
상태 다이어그램 구성 요소
•
시작 상태: ●
•
종료 상태: ⊙
•
상태: 상태이름 / do/행동
•
전이: 이벤트 [조건] / 효과
상위 상태와 하위 상태
1. 상위 상태
여러 개의 서로 다른 상태들을 포함
