본문 바로가기

DataModeling

데이터 모델 vs. 프로세스 모델의 필수조건, 상관모델링

 

정보화 시스템에서의 데이터베이스는 DBMS에 데이터베이스를 생성하고, 적절한 업무 프로세스에 의해 데이터의 CREATE, READ, UPDATE, DELETE가 발생하는 것을 의미한다.
만약 데이터베이스가 구축됐을지라도 업무적인 요구사항에 아무런 행위가 발생하지 않는다면 이는 적절한 데이터베이스라고 할 수 없고, 분석 및 설계단계에서 무엇인가 잘못됐음을 뜻한다.
그러므로 프로세스모델링을 진행할 때는 엔티티 타입에 대해 어느 정도 검증하면서 모델링을 진행한다 할지라도 데이터 모델과 프로세스 모델에 대한 종합적인 상관관계를 검증하는 작업이 필요하다.

 

업무 분석과정에서 마련해야 하는 업무 모델은 업무 요구사항에서 발생하는 세 가지 관점을 통합함으로써 얻을 수 있다. 첫 번째는 업무를 하고 있는 또는 해야만 하는 것을 기록하는 업무 기능에 대한 ‘프로세스적 관점에서의 모델’이고, 두 번째는 업무가 필요로 하는 것을 기술하거나 필요로 하는 것들 간의 관계를 기술하는 ‘데이터 관점에서의 모델’이다. 그리고 세 번째는 프로세스 관점에서 나온 업무 방법과 데이터 관점에서 나온 업무가 필요로 하는 것이 어떻게 서로에게 영향을 미치는지에 대한 ‘영향 분석관점에서의 상관모델’이다.

이번 시간에는 프로세스 관점에서 나온 업무 방법과 데이터 관점에서 나온 업무가 필요로 하는 것이 어떻게 서로에게 영향을 주는가를 상호 검증하는지 알아본다. 다만, 전체적인 내용이 데이터베이스 구축과 관련돼 있으므로 프로세스를 검증하는 측면보다는 데이터 즉, 엔티티 타입과 속성에 대한 검증을 최우선적으로 고려해 설명하겠다. 그러니 상관모델링에 대한 자세한 내용은 정보공학이나 정보공학에 기반을 둔 방법론을 참조하고, 이 글에서는 데이터 모델에 좀더 집중하자. ERD의 엔터티 또는 속성과 단위 프로세스(ELEMENTARY PROCESS) 목록을 가지고 서로 관련 있는 내용을 검증하는 방식으로 전개한다.

 

 

◆ 상관모델링 정의

 

우선 상모델링(Interaction Modeling)이 무엇인지부터 짚고 넘어가자. 상관모델링이란 정보화 시스템을 구축하고자 해당 업무에 존재하는 어떤 것에 대해 무슨 일이 행해지고 있는지를 또는 무슨 일에 의해 어떤 것이 영향을 받는지를 분석하는 방법이다. 여기서 어떤 것은 데이터를 의미하고, 무슨 일은 프로세스를 뜻한다. 

 

상관모델링은 데이터모델링 작업에서 도출한 엔티티 타입과 프로세스모델링에서 도출한 단위 프로세스를 이용해 작업을 진행한다. 상관모델링 작업을 함으로써 데이터 모델과 프로세스 모델에 대한 품질을 향상시킬 수 있다. 또한 업무규칙을 좀더 정확하고 상세하게 마련할 수 있다. 그 밖에도 데이터 모델과 프로세스 모델에 동시에 접근하므로 데이터모델링에서 분석된 엔티티 타입을 이용하지 않는 프로세스를 다시 도출할지와 프로세스를 이용해 적절한 엔티티 타입이 도출됐는지 그리고 관계나 속성이 모두 적절한지 검증할 수 있다. 


프로젝트에서 데이터베이스를 설계할 때 가장 크게 우려하는 것이 ‘과연 자신이 도출한 데이터 모델이 업무적으로 정확하게 구현됐는지’다. 즉 자신의 모델링한 데이터 모델에 대해 무엇이든 명확하게 검증되고 또 검증된 데이터를 보기를 원한다. 물론 데이터모델링 검증을 가지고 자체적으로 검증하는 것도 가능하지만, 업무 프로세스와 연결해 데이터 모델까지 동시에 조명하는 작업이 절대적으로 요구된다. 그리고 검증된 자료는 지속적으로 보관돼 테스트 단계까지 이어져야 한다. 

프로세스 모델을 변경하는 것은 데이터 모델을 변경하는 것보다 자주 발생하며 발생할 때마다 업무적인 위험도(Risk)가 상대적으로 낮아진다. 하지만 데이터 모델의 경우 프로젝트가 진행될수록 변경에 대한 작업량이 기하급수적으로 증가할 수 있다. 이로 인해 작업량 증가를 염려해 잘못된 부분을 발견해도 수정하지 않는 경우가 종종 발생한다. 그러므로 상관모델링 단계에서의 작업 우선순위를 부여하자면, 첫 번째로 검증해야 할 대상은 데이터 모델이고 그 다음이 프로세스 모델이다. 

상관모델링 단계에서 검증해야 할 대상은 데이터 모델의 엔티티 타입, 속성, 관계가 될 수 있고 프로세스 모델의 각 업무 기능들 그리고 단위 프로세스들도 대상이 된다. 상관모델링을 진행하는 동안 첫 번째로 질문해봐야 할 내용은 하나의 프로세스가 엔티티 타입과 속성 그리고 관계에 대해 어떠한 영향을 미치는지다. 두 번째는 어떤 프로세스가 엔티티 타입을 이용하는지 검증해봐야 한다. 세 번째는 어떤 프로세스가 어떤 속성을 이용하는지를 검증해야 한다. 마지막으로 엔티티 타입이 상호 연관되는 관계에 대해 연결돼야 할지 끊어야 할지를 검증해야 한다. 

 

 

CRUD MATRIX 상관모델링

 

하나의 단위가 1차원 집합으로 이뤄지고 또 다른 하나의 단위가 1차원 집합으로 이뤄져 있을 때 두 개의 집합을 비교할 수 있는 가장 좋은 방법은 2차원 테이블에 표현한 다음 가로와 세로에 각각의 집합 단위를 표현해 비교하는 것이다. CRUD MATRIX는 엔티티 타입과 프로세스에 대한 비교뿐만 아니라 2차원 테이블로 비교할 수 있는 경우라도 모두 적용되는 방법이다. 상관모델링에서는 CRUD MATRIX를 엔티티 타입과 단위 프로세스 또는 속성과 단위 프로세스를 비교하는 방법을 이용한다. 

특히 단위 프로세스는 엔티티 타입에 영향을 주기 때문에 CREATE, READ, UPDATE, DELETE를 반드시 포함해야 한다. 그래서 이름이 CREATE의 C, READ의 R, UPDATE의 U, DELETE의 D를 가지고 온 CRUD MATRIX인 것이다. <그림 2>는 CRUD MATRIX를 표기하는 방법이다.

 

만일 업무에 모든 단위 프로세스들과 엔티티 타입을 배열하고 CRUD를 표기했다면 다음 사항을 꼭 점검해야 한다. 

- 모든 엔티티 타입에 CRUD가 한 번 이상 표기됐는가?
- 모든 엔티티 타입에 C가 한 번 이상 존재하는가?
- 모든 엔티티 타입에 R이 한 번 이상 존재하는가?
- 모든 단위 프로세스는 하나 이상의 엔티티 타입에 표기됐는가? 
- 두 개 이상의 단위 프로세스가 하나의 엔티티 타입을 생성하는가?

다섯 가지 사항이 모두 적절하다고 판단됐다면, 도출된 데이터 모델과 프로세스 모델은 적절한 관계를 가지고 있다고 규정할 수 있다. 이 내용을 좀더 자세히 설명하겠다. 

 

 

● 모든 엔티티 타입은 CRUD가 한 번 이상 표기됐는가?

 

모든 엔티티 타입은 반드시 자신과 관련된 단위 프로세스가 존재해야 한다. 위 그림과 같은 CRUD MATRIX는 데이터모델링의 필요에 의해 사원 엔티티 타입을 도출했지만, 업무 프로세스에서 전혀 사용되지 않고 있다. 그 원인을 세 가지 정도로 유추할 수 있는데, 쓸모없는 엔티티 타입이 도출됐거나 적절한 단위 프로세스가 도출되지 않아서 또는 단위 프로세스의 CRUD가 아직 충분히 정의되지 않았기 때문이다. 

 

● 모든 엔티티 타입에 C가 한 번 이상 존재하는가?

 

해당업무에서 소유권을 가진 모든 엔티티 타입은 반드시 생성되는 프로세스가 존재해야 한다. 만일 그렇지 않다면 데이터가 발생되지 않아 읽는 것이 불가능해질 수 있다. CRUD MATRIX는 제품이 ‘제품 주문을 신청한다’에 의해 읽혀지고 있지만, 제품 엔티티가 전혀 발생되지 않고 있다. 즉 CREATE에 해당하는 단위 프로세스가 도출되지 않았음을 의미한다. 따라서 CRUD MATRIX에 ‘제품을 등록한다’는 단위 프로세스가 존재해야 한다.

 

 

● 모든 엔티티 타입에 R이 한 번 이상 존재하는가?

 

엔티티 타입에 데이터가 생성만 되고 전혀 활용되지 않는다면 그 데이터는 쓸모없는 데이터이거나 활용하는 단위 프로세스가 도출되지 않았음에 틀림없다. 정보화 시스템에 구축된 모든 정보는 업무적인 규칙에 의해 어떤 식으로든 활용돼야만 한다. 데이터를 쌓아둔 다음 정기적으로 지우는 쓰레기 데이터만 쌓인다면 비용 손실만 초래하는 결과를 낳게 된다. 위 그림과 같은 경우는 ‘주문내용을 조회한다’는 단위 프로세스가 누락된 경우에 해당된다.

 

 

● 모든 단위 프로세스는 하나 이상의 엔티티 타입에 표기됐는가?

 

단위 프로세스는 도출됐는데 CRUD MATRIX에서 표기되지 않았다면 단위 프로세스가 해당 업무 외의 영역이거나 엔티티 타입이 도출되지 않았을 가능성이 많다. 만약 위 그림에서 납품업체 관리를 정보화 시스템 개발 주문을 접수하는 부서에서 담당하지 않고 별도의 부서에서 관리한다면 이 프로세스는 삭제돼야 한다. 만약 납품업체 관리를 주문접수 부서에서 담당한다면 납품업체라는 엔티티 타입이 추가돼야 한다.

 

 

● 두 개 이상의 단위 프로세스가 하나의 엔티티 타입을 생성하는가?

 

이 경우는 꼭 잘못됐다라고 판단되기보다는 업무 규칙에 비춰 다시 한 번 검토해야 한다는 의미다. 엔티티 타입이 병합됐거나 두 군데 이상에서 데이터를 생성할 수 있다는 업무 규칙이 존재한다면 CREATE가 여러 개의 단위 프로세스에 오는 것은 적절하다. 아래 그림에서는 제품을 등록하는 단위 프로세스와 제품을 주문하는 단위 프로세스에서 모두 제품 엔티티를 생성한다. 

만약 업무담당자가 제품 등록을 하지 않았다거나, 주문을 접수하는 시점에 제품이 존재하는 타 시스템의 정보를 이용해 제품을 등록할 수 있다면 이런 경우 유효하다. 그러나 만약 업무담당자가 제품을 등록하지 않고 반드시 시스템 간 인터페이스에 의해 제품에 대한 정보를 가져오고자 했다면 ‘제품을 등록한다’는 단위 프로세스는 잘못된 프로세스가 된다. 

 

 

 

속성 CRUD MATRIX

 

속성 대 단위 프로세스와의 상관관계에서도 엔티티 타입 대 단위 프로세스와의 관계를 검증한 것처럼 동일하게 검증작업을 진행하면 된다. 다만 한 업무에 대한 속성 개수가 너무 많은 경우라면 각각을 눈으로 추적하기가 쉽지 않다. 아래 그림은 속성 대 단위 프로세스와의 관계를 나타낸 것이다. 

 

여기서 ‘거래를 정지하다’라는 단위 프로세스를 보면 고객 엔티티 타입의 주 식별자인 고객번호를 읽어서 고객 정지여부라는 속성을 수정하는 일이 발생한다. 만약 이것을 엔티티 타입 레벨에서 기술했다면 ‘U’라고 표기했을 것이다. 즉, 속성은 각 단위 프로세스가 수행해야 할 엔티티 타입의 작업단위에 대해 보다 구체적이고 자세한 정보를 제공한다. 

이와 같이 상관모델링 단계에서의 CRUD MATRIX는 정보화 시스템을 구축하는 산출물 중 중요한 것에 속한다. 다시 말해 ERD가 데이터 모델의 중요한 산출물이고 업무기능 분해도가 프로세스 모델의 중요한 산출물이라면, CRUD MATRIX는 상관모델링 단계에서의 중요한 산출물로서 그 의미를 가지고 있다.

 

 

CRUD MATRIX의 도입 효과

 

그렇다면 CRUD MATRIX를 이용함으로써 프로젝트에서 얻을 수 있는 장점은 무엇일까? 첫 번째로 분석단계의 데이터 모델과 프로세스 모델에 대한 작업을 검증할 수 있다. 두 번째로 시스템 구축단계에서 애플리케이션을 개발하는 데 필요한 주요한 산출물이 된다. 왜냐하면 각각의 단위 프로세스를 수행하기 위한 PRE-CONDITION 또는 POST-CONDITION의 정보를 구체적으로 제공하기 때문이다. 

세 번째로 테스트 단계에서 개발된 애플리케이션을 객관적인 자료에 의해 테스트하는 데 활용할 수 있다. 네 번째로 전체 업무의 인터페이스를 파악할 수 있다. 이와 같이 시스템의 분석부터 테스트까지 주요하게 영향을 미치기 때문에 분석단계와 설계단계 말미에 CRUD MATRIX를 이용한 상관모델링 작업을 반드시 수행해야 한다. 

'DataModeling' 카테고리의 다른 글

기본 논리적 데이터 모델링 구조  (0) 2013.09.11