[ 모델 검증 ]
요구 검증이 ‘사용자 요구가 요구 분석 명세서에
올바르게 기술되었는지’를 확인하는 활동이라면,
모델 검증은 ‘그 요구를 모델로 표현하는 과정이
올바르게 모델링되었는지’를 확인하는 단계다.
모델링 오류를 구현 이후에 발견하면
수정 비용이 급격히 커지기 때문에,
구현 전에 모델 자체를 검증하는 절차가 필요하다.
모델 검증 방법
모델을 검증하는 방법은
대표적으로 다음과 같다.
| 방법 | 핵심 아이디어 | 특징 |
| 리뷰 (워크스루/인스펙션) |
사람이 눈으로 확인 | 체크리스트 기반으로 누락/모순을 빠르게 찾음 |
| 테스팅 | 모델로부터 테스트를 도출 | 모델 자체는 실행 불가하므로, 모델 기반 테스트 데이터를 설계하고 구현 후 검증 |
| 정형적 방법 | 수학적으로 정확성/일관성 증명 | 상태 다이어그램의 상태 조건을 식으로 표현해 변환 과정 검증 |
| 프로토타이핑 | 모델 기반으로 동작을 ‘보이기’ | 예상대로 동작하는지 빠르게 확인 |
| 요구 추적 | 모델에서 요구를 거꾸로 추적 | 모델 ↔ 요구 간 연결을 확인해 누락/불일치 탐지 |
리뷰나 요구 추적은 수작업으로도 가능하지만,
모델이 복잡하거나 규모가 큰 경우
일일이 눈으로 확인하는 건 한계가 있다.
그래서 일부 모델링 도구는
요구 추적과 일관성 자동 체크 기능을 제공한다.
일관성 체크가 중요한 이유
모델 검증의 핵심은 관련된 모델 사이에
모순이 없는지 확인하는 것이다.
- UML 다이어그램 한쪽에 표현된 사실이
다른 다이어그램과 충돌하면 안 된다. - 따라서 모델 간 정보를 교차 검토(크로스체크)하면서
불일치를 찾아야 한다.
대표적인 크로스체크 3가지
1) 유스케이스 다이어그램 ↔ 시퀀스 다이어그램
유스케이스와 시퀀스는
‘기능’과 ‘상호작용 흐름’이 연결되어야 한다.
- 각 유스케이스를 구동하는 액터가 존재하는가
- 각 액터는 적어도 하나 이상의 유스케이스와 연결되는가
- 각 유스케이스는 명세가 작성되어 있는가
- 유스케이스마다 매칭되는 시퀀스 다이어그램이 존재하는가
핵심은 유스케이스가 문서로만 있고
실제 흐름(시퀀스)으로 내려오지 않은 상태를 방지하는 것이다.
2) 시퀀스 다이어그램 ↔ 클래스 다이어그램
시퀀스에는 ‘등장 클래스/메시지(메서드 호출)’가 나오고,
클래스 다이어그램에는 ‘정의(구조/메서드)’가 있어야 한다.
- 시퀀스에 등장하는 클래스(객체)가
클래스 다이어그램에 빠지지 않았는가 - 시퀀스에 표현된 메시지(메서드)에 대해
- 보내는 클래스와 받는 클래스가
연관 관계로 연결되어 있는가 - 보내는 클래스 내부에
메서드 호출이 존재하는가 - 받는 클래스 내부에
해당 메서드 정의가 존재하는가
- 보내는 클래스와 받는 클래스가
특히 실무에서 가장 많이 터지는 포인트는
시퀀스에는 메시지가 있는데 클래스 쪽에
메서드 선언이 빠져 있는 경우다.
이때는 클래스 다이어그램에 메서드를 추가해야 한다.
3) 상태 다이어그램 ↔ 클래스 다이어그램
상태 전환은 보통 ‘이벤트/메서드 호출’로 발생하므로,
상태 전환을 유발하는 메서드는 클래스에 정의되어야 한다.
클래스 A가 어떤 상태에서 다른 상태로 전환될 때
- 그 전환이 클래스 A의 메서드 호출로 발생한다면
- 클래스 A 내부에 그 메서드가 정의되어 있어야 한다
즉, 상태 다이어그램에 등장하는 전환 이벤트가
클래스 다이어그램에서 누락되면 모델 불일치다.
모델 일관성 확인 체크리스트
아래는 다이어그램별로
자주 확인하는 핵심 체크 항목이다.
| 다이어그램 | 체크 항목 |
| 유스케이스 다이어그램 | • 각 유스케이스는 액터가 있는가? • 각 액터는 적어도 하나의 유스케이스가 있는가? • 유스케이스는 명세화되었나? • 시퀀스 다이어그램과 매치되는가? |
| 클래스 다이어그램 | • 다른 다이어그램에 있는 클래스가 모두 클래스 다이어그램에 있는가? • 모든 클래스가 속성에 대한 get/set 메서드가 있는가? |
| 시퀀스 다이어그램 | • 객체가 모두 클래스 다이어그램에 있는가? • 각 메시지가 호출되나? • 보내는 클래스와 받는 클래스가 연관되어 있나? • 메시지 보내는 클래스 안에 메서드 호출이 있는가? • 받는 클래스 안에 메시지가 정의되어 있나? |
| 상태 다이어그램 | • 상태 다이어그램의 클래스가 클래스 다이어그램에 있나? • 각 트랜지션을 구동하는 이벤트가 있는가? • 각 이벤트를 초기화하는 객체가 확실히 있나? • 상태는 속성 값의 서로 다른 조합인가? • 어떤 조합인지 분명한가? • 모든 속성이 클래스 다이어그램에 있나? • 트랜지션을 위한 메서드 호출이 있나? • 메서드 호출이 새로운 상태를 위하여 속성값이 바뀌나? • 메서드 호출에서 트랜지션에 대한 조건을 체크하는가? • 트랜지션에서 액션을 수행하는가? |
'개주 훈련일지 > 📚 코살대 교본 학습' 카테고리의 다른 글
| 설계 원리와 설계 기본 개념 (0) | 2026.01.26 |
|---|---|
| SQL) 서브쿼리 (0) | 2026.01.25 |
| 제어 모델링 (0) | 2026.01.24 |
| SQL) 계층형 질의와 셀프 조인 (0) | 2026.01.24 |
| SQL) 집합연산자 (0) | 2026.01.24 |