“우리가 생각한 게 이게 맞나요?” 프로젝트의 청사진, 개념 모델링 완벽 이해

안녕하세요! 복잡한 비즈니스 요구와 사용자 니즈를 명확한 제품으로 빚어내야 하는 Product Owner(PO), PM 여러분, 그리고 시스템의 뼈대를 설계하는 방법을 배우는 정보처리기사 수험생 여러분. 오늘은 모두가 같은 그림을 보게 만드는 강력한 도구, ‘개념 모델링(Conceptual Modeling)’에 대해 이야기해 보겠습니다.

프로젝트 초반, 모두가 동의했다고 생각했는데 개발이 한창 진행된 후에야 “어? 우리가 생각했던 것과 다른데요?”라는 말이 터져 나오는 아찔한 경험, 있으신가요? 이런 대참사는 대부분 프로젝트의 가장 중요한 ‘개념’에 대한 합의가 없었기 때문에 발생합니다. 개념 모델링은 바로 이 문제를 해결하는 ‘프로젝트의 청사진’입니다. 복잡한 현실 세계의 비즈니스 규칙과 데이터, 사용자의 요구사항을 단순화하고 명확하게 시각화하여, 이해관계자와 개발팀 모두가 오해 없이 소통하고 동일한 목표를 향해 나아가도록 돕는 핵심 과정입니다. 이 글을 통해 성공적인 시스템의 첫 단추인 개념 모델링의 세계를 함께 탐험해 보겠습니다.

목차

  1. 개념 모델링이란? (What)
  2. 개념 모델링, 왜 중요한가? (Why)
  3. 핵심 개념 모델링 기법 1: 개체-관계 다이어그램 (ERD)
    • ERD의 3가지 핵심 요소
    • ERD 작성 예시: 간단한 도서 관리 시스템
  4. 핵심 개념 모델링 기법 2: 유스케이스 다이어그램 (Use Case Diagram)
    • 유스케이스 다이어그램의 2가지 핵심 요소
    • 유스케이스 다이어그램 작성 예시: 온라인 뱅킹 시스템
  5. 성공적인 개념 모델링을 위한 제언: 기술이 아닌 소통의 도구

개념 모델링이란? (What)

개념 모델링은 우리가 만들려는 시스템이 다루어야 할 중요한 개념들과 그들 사이의 관계를 정의하고 시각적으로 표현하는 활동입니다. 여기서 가장 중요한 키워드는 ‘개념(Concept)’입니다. 이는 특정 기술이나 구현 방법을 논하기 전에, 비즈니스 자체의 본질과 핵심 규칙을 이해하는 데 초점을 맞춘다는 의미입니다.

예를 들어 ‘온라인 서점’을 만든다고 할 때, 개념 모델링은 “어떤 데이터베이스를 쓸까?”나 “어떤 프로그래밍 언어로 개발할까?”를 고민하는 것이 아닙니다. 대신 “회원도서주문이라는 중요한 개념이 존재하고, 회원은 여러 도서를 주문할 수 있다”와 같이 시스템의 핵심이 되는 대상(개념)과 그들 간의 관계를 명확히 하는 데 집중합니다. 이렇게 만들어진 개념 모델은 기술에 독립적이기 때문에, 비전문가인 이해관계자도 쉽게 이해하고 검토에 참여할 수 있는 강력한 의사소통 도구가 됩니다.


개념 모델링, 왜 중요한가? (Why)

개념 모델링은 단순히 다이어그램 몇 개를 그리는 작업이 아닙니다. 이 과정은 프로젝트의 성패를 좌우할 만큼 중요한 여러 가치를 제공합니다.

첫째, 모두의 이해를 통일시킵니다. 같은 ‘고객’이라는 단어를 두고도 영업팀은 ‘잠재 고객’을, CS팀은 ‘기존 구매 고객’을 떠올릴 수 있습니다. 개념 모델은 이러한 용어와 개념의 모호함을 제거하고, 모든 이해관계자가 동일한 의미로 소통하게 만들어 오해로 인한 비용을 줄여줍니다.

둘째, 시스템의 안정적인 뼈대를 제공합니다. 비즈니스의 핵심 개념과 규칙은 기술이나 UI처럼 자주 변하지 않습니다. 탄탄한 개념 모델을 기반으로 시스템을 설계하면, 향후 요구사항이 변경되거나 기능이 확장될 때 시스템 전체를 뒤흔들지 않고 안정적으로 대응할 수 있습니다.

셋째, 요구사항의 누락과 오류를 조기에 발견하게 합니다. 개념들 간의 관계를 시각적으로 표현하는 과정에서 “회원이 주문 없이 리뷰를 작성할 수 있나?” 또는 “비회원도 장바구니를 사용할 수 있어야 하지 않나?”와 같이 미처 생각지 못했던 비즈니스 규칙이나 예외 케이스를 발견하고 논의할 수 있습니다. 개발이 시작되기 전에 오류를 찾는 것은 나중에 찾는 것보다 수십, 수백 배의 비용을 절감하는 효과가 있습니다.


핵심 개념 모델링 기법 1: 개체-관계 다이어그램 (ERD)

개념 모델링, 특히 데이터 관점에서 가장 널리 사용되는 기법이 바로 개체-관계 다이어그램(Entity-Relationship Diagram, ERD)입니다. ERD는 시스템에서 관리해야 할 데이터의 종류(개체)와 그 데이터들 간의 관계를 시각적으로 표현하여 데이터베이스의 청사진을 만드는 데 사용됩니다.

ERD의 3가지 핵심 요소

  • 개체 (Entity): 시스템에서 관리하고자 하는 정보의 대상이자, 구별되는 사물이나 개념을 의미합니다. 명사형으로 표현되며, 사각형으로 나타냅니다. (예: 회원상품게시글)
  • 속성 (Attribute): 각 개체가 갖는 구체적인 정보 항목들입니다. 개체가 어떤 데이터들로 구성되는지를 설명합니다. (예: 회원 개체는 아이디이름연락처 등의 속성을 가짐)
  • 관계 (Relationship): 개체와 개체 사이에 존재하는 연관성이나 상호작용을 의미합니다. 동사형으로 표현되며, 마름모나 선으로 나타냅니다. 관계는 일대일(1:1)일대다(1:N)다대다(M:N) 등의 대응 관계로 표현됩니다. (예: 한 명의 회원은 여러 개의 게시글을 작성한다 – 1:N 관계)

ERD 작성 예시: 간단한 도서 관리 시스템

“회원은 여러 권의 도서를 대출할 수 있고, 한 권의 도서는 여러 회원에게 대출될 수 있다”는 규칙을 가진 간단한 도서 관리 시스템의 개념을 ERD로 표현하면 다음과 같습니다.

  • 개체:회원도서
  • 회원의 속성:회원번호이름연락처
  • 도서의 속성:도서번호제목저자
  • 관계:회원과 도서는 ‘대출’이라는 다대다(M:N) 관계를 맺습니다. (한 회원이 여러 책을, 한 책이 여러 회원에게 대출될 수 있으므로)

이러한 관계를 시각화하면 데이터 구조를 한눈에 파악할 수 있으며, 이를 바탕으로 실제 데이터베이스 테이블을 설계하게 됩니다.


핵심 개념 모델링 기법 2: 유스케이스 다이어그램 (Use Case Diagram)

ERD가 데이터의 구조와 관계를 모델링하는 데 중점을 둔다면, 유스케이스 다이어그램(Use Case Diagram)은 사용자의 관점에서 시스템이 제공해야 할 기능, 즉 기능적 요구사항을 모델링하는 데 사용됩니다. 시스템이 무엇을 하는지를 사용자와의 상호작용 중심으로 표현하는 기법입니다.

유스케이스 다이어그램의 2가지 핵심 요소

  • 액터 (Actor): 시스템 외부에 있으면서 시스템과 상호작용하는 사람이나 다른 시스템을 의미합니다. 보통 사람 모양의 아이콘으로 표현합니다. (예: 회원관리자결제 시스템) 액터는 시스템의 사용자를 나타내는 경우가 많습니다.
  • 유스케이스 (Use Case): 액터가 시스템을 통해 달성하고자 하는 목표를 의미합니다. 즉, 사용자에게 가치를 제공하는 하나의 완전한 기능 단위를 말합니다. ” ~한다” 형태의 동사구로 표현되며, 타원형으로 나타냅니다. (예: 로그인한다상품을 주문한다강의를 수강한다)

유스케이스 다이어그램 작성 예시: 온라인 뱅킹 시스템

온라인 뱅킹 시스템을 사용하는 고객이라는 액터를 중심으로 유스케이스 다이어그램을 그려보면 다음과 같습니다.

  • 액터:고객
  • 유스케이스:
    • 로그인한다
    • 계좌를 조회한다
    • 자금을 이체한다
    • 거래 내역을 확인한다

고객이라는 액터가 로그인한다계좌를 조회한다 등의 유스케이스들과 선으로 연결된 다이어그램을 통해, 우리는 시스템이 어떤 주요 기능들을 제공해야 하는지 전체적인 범위를 한눈에 파악할 수 있습니다. 이는 Product Owner가 제품 백로그를 구성하고 기능의 우선순위를 정하는 데 매우 유용한 자료가 됩니다.


성공적인 개념 모델링을 위한 제언: 기술이 아닌 소통의 도구

개념 모델링은 고도로 기술적인 전문가만이 할 수 있는 어려운 작업이 아닙니다. 오히려 프로젝트에 관련된 다양한 사람들이 함께 참여하여 생각을 맞추어 나가는 소통과 합의의 과정입니다.

성공적인 개념 모델링을 위해 Product Owner와 PM은 다음을 기억해야 합니다. 첫째, 완벽함보다 명확성을 추구해야 합니다. 처음부터 모든 세부사항을 담으려 하기보다, 가장 핵심적인 개념과 규칙을 중심으로 단순하고 명료하게 시작하는 것이 중요합니다. 둘째, 다양한 이해관계자를 참여시켜야 합니다. 현업 전문가, 개발자, 디자이너 등 다양한 관점이 모일 때, 놓치기 쉬운 부분을 발견하고 더 견고한 모델을 만들 수 있습니다.

개념 모델은 살아있는 문서입니다. 프로젝트가 진행됨에 따라 새로운 사실을 발견하고 이해가 깊어지면서 모델은 계속해서 발전하고 진화해야 합니다. 이 청사진을 기반으로 흔들림 없는 제품을 만들어나가시길 바랍니다.