[태그:] 구조적다이어그램

  • UML 구조 다이어그램 완벽 정복: 클래스부터 배치까지, 시스템의 뼈대를 그리다

    UML 구조 다이어그램 완벽 정복: 클래스부터 배치까지, 시스템의 뼈대를 그리다

    소프트웨어 개발 프로젝트는 거대한 건축과 같습니다. 탄탄한 설계도 없이 지은 건물이 위태롭듯, 명확한 구조 설계 없는 소프트웨어는 유지보수가 어렵고 확장성이 떨어지는 문제에 봉착하게 됩니다. 바로 이때, 시스템의 청사진 역할을 하는 것이 UML(Unified Modeling Language) 다이어그램이며, 그중에서도 시스템의 정적인 뼈대를 정의하는 ‘구조적 다이어그램(Structural Diagrams)’은 프로젝트 성공의 핵심 열쇠입니다. 이 다이어그램들은 코드가 작성되기 전, 시스템을 구성하는 요소들과 그들 사이의 관계를 명확히 보여줌으로써 개발자, 기획자, 디자이너 등 모든 이해관계자가 동일한 그림을 보고 소통할 수 있는 강력한 기반을 제공합니다.

    이번 포스팅에서는 정보처리기사 시험의 단골 출제 주제이자, 실무에서도 프로젝트의 성패를 좌우하는 UML의 6가지 핵심 구조적 다이어그램(클래스, 객체, 컴포넌트, 배치, 복합체 구조, 패키지)에 대해 깊이 있게 탐구해 보겠습니다. 각 다이어그램의 핵심 개념을 최신 IT 서비스 사례와 함께 살펴보고, 이를 통해 복잡한 시스템의 구조를 시각적으로 이해하고 표현하는 능력을 완벽하게 마스터해 보세요. 단순한 암기를 넘어, 시스템의 본질을 꿰뚫어 보는 시야를 갖게 될 것입니다.


    클래스 다이어그램 (Class Diagram): 시스템의 핵심 설계도

    클래스 다이어그램이란?

    클래스 다이어그램은 객체 지향 시스템의 심장과도 같습니다. 이는 시스템을 구성하는 클래스(Class), 클래스가 가지는 속성(Attribute)과 기능(Operation), 그리고 클래스들 사이의 정적인 관계를 시각적으로 표현하는 가장 기본적이면서도 중요한 다이어그램입니다. 마치 건물의 설계도에서 각 방의 구조와 용도, 그리고 방들이 어떻게 연결되는지를 보여주는 것처럼, 클래스 다이어그램은 소프트웨어의 논리적 구조를 한눈에 파악할 수 있게 해줍니다. 이 다이어그램을 통해 개발팀은 시스템 전체의 청사진을 공유하고, 코드의 일관성과 재사용성을 높일 수 있습니다.

    클래스 다이어그램은 단순히 개발자만을 위한 도구가 아닙니다. 제품 책임자(PO)나 프로젝트 관리자(PM)는 이 다이어그램을 통해 시스템의 주요 기능 단위와 데이터 구조를 이해하고, 요구사항이 설계에 잘 반영되었는지 검토할 수 있습니다. 예를 들어, ‘사용자’ 클래스와 ‘주문’ 클래스의 관계를 보면, 한 명의 사용자가 여러 개의 주문을 할 수 있는지, 주문 시 반드시 사용자 정보가 필요한지 등의 비즈니스 규칙을 명확하게 확인할 수 있습니다. 이처럼 클래스 다이어그램은 기술적 설계와 비즈니스 요구사항을 연결하는 중요한 다리 역할을 수행합니다.

    핵심 관계와 표현법

    클래스 다이어그램의 진정한 힘은 클래스 간의 관계를 얼마나 명확하게 표현하느냐에 있습니다. 주요 관계들은 시스템의 복잡한 상호작용을 단순하고 직관적인 기호로 나타내며, 이를 이해하는 것은 다이어그램을 정확히 읽고 그리는 데 필수적입니다. 각 관계는 고유한 의미와 표기법을 가지며, 시스템의 제약 조건과 동작 방식을 정의합니다.

    이러한 관계들을 표로 정리하면 다음과 같습니다.

    관계 종류설명표현예시
    연관(Association)클래스들이 개념적으로 연결됨. 서로의 존재를 인지.실선학생 – 강의 (학생은 강의를 수강한다)
    집합(Aggregation)전체-부분 관계. 부분 객체가 전체 없이 독립적으로 존재 가능.속이 빈 다이아몬드컴퓨터 – 주변기기 (마우스는 컴퓨터 없이도 존재)
    복합(Composition)강한 집합 관계. 부분 객체의 생명주기가 전체에 종속됨.속이 채워진 다이아몬드집 – 방 (집이 사라지면 방도 사라진다)
    일반화(Generalization)‘is-a’ 관계. 자식 클래스가 부모 클래스의 속성과 기능을 상속.속이 빈 화살표동물 – 강아지 (강아지는 동물이다)
    의존(Dependency)한 클래스가 다른 클래스를 사용. 상대 클래스가 변경되면 영향 받음.점선 화살표운전자 – 자동차 (운전자는 자동차를 사용한다)
    실체화(Realization)인터페이스와 그를 구현한 클래스 간의 관계. ‘can-do’ 관계.점선 + 속이 빈 화살표비행기 – 날 수 있음(Flyable)

    최신 E-커머스 플랫폼 사례

    이해를 돕기 위해 오늘날 가장 흔히 볼 수 있는 E-커머스 플랫폼을 클래스 다이어그램으로 표현해 보겠습니다. 이 플랫폼에는 ‘고객(Customer)’, ‘주문(Order)’, ‘상품(Product)’, ‘장바구니(ShoppingCart)’와 같은 핵심 클래스들이 존재합니다. ‘고객’ 클래스는 ‘주문’ 클래스와 1 대 다(1..*)의 연관 관계를 가집니다. 즉, 한 명의 고객은 여러 개의 주문을 할 수 있지만, 하나의 주문은 반드시 한 명의 고객에게 속합니다.

    ‘주문’ 클래스와 ‘상품’ 클래스 역시 다 대 다(..) 연관 관계를 가질 수 있으며, 이 관계를 구체화하기 위해 ‘주문항목(OrderItem)’이라는 연관 클래스를 도입할 수 있습니다. ‘주문항목’은 특정 주문에 어떤 상품이 몇 개 포함되었는지와 같은 추가 정보를 가집니다. 한편, ‘고객’과 ‘장바구니’는 1 대 1 관계이며, ‘장바구니’는 ‘장바구니 항목(CartItem)’들을 부분으로 가지는 복합(Composition) 관계로 표현됩니다. 고객이 탈퇴하여 ‘장바구니’ 객체가 사라지면, 그 안의 ‘장바구니 항목’들도 함께 소멸되어야 하기 때문입니다. 이처럼 클래스 다이어그램은 복잡한 비즈니스 로직을 명료한 구조로 시각화하여 프로젝트의 기틀을 다집니다.


    객체 다이어그램 (Object Diagram): 시스템의 순간을 포착하다

    객체 다이어그램이란?

    클래스 다이어그램이 시스템의 청사진이라면, 객체 다이어그램은 특정 순간에 그 청사진을 기반으로 실제 생성된 개체들의 모습을 보여주는 스냅샷과 같습니다. 클래스는 개념적인 틀일 뿐이지만, 객체는 그 틀에서 생성되어 메모리에 실재하는 인스턴스입니다. 객체 다이어그램은 이처럼 시스템이 동작하는 어느 한 시점의 객체들과 그들 사이의 관계(링크)를 구체적인 데이터와 함께 보여줌으로써, 추상적인 클래스 다이어그램의 설계를 검증하고 이해하는 데 도움을 줍니다.

    예를 들어, 클래스 다이어그램에 ‘사용자’ 클래스가 정의되어 있다면, 객체 다이어그램에서는 user1:사용자와 같이 실제 존재하는 ‘user1’이라는 객체를 명시합니다. 또한, 이 객체가 name="홍길동"userId="gildong" 과 같은 구체적인 속성 값을 가지고 있다는 것도 표현할 수 있습니다. 이는 복잡한 시스템의 동작을 시나리오별로 분석하거나, 특정 로직이 실행될 때 객체들의 상태 변화를 추적하는 디버깅 과정에서 매우 유용하게 사용됩니다.

    클래스 다이어그램과의 차이점

    객체 다이어그램과 클래스 다이어그램의 가장 큰 차이점은 ‘추상성’과 ‘구체성’에 있습니다. 클래스 다이어그램은 시간의 흐름과 관계없이 항상 참인 시스템의 정적인 ‘구조’를 다룹니다. 반면, 객체 다이어그램은 시스템이 실행되는 특정 ‘시점’의 상태를 다룹니다. 따라서 클래스 다이어그램은 한 시스템에 대해 보통 하나 또는 몇 개만 존재하지만, 객체 다이어그램은 분석하고자 하는 시나리오나 시점에 따라 여러 개가 만들어질 수 있습니다.

    표기법에서도 차이가 드러납니다. 클래스는 클래스이름으로 표현되지만, 객체는 객체이름:클래스이름 형식으로 표기하고 밑줄을 긋습니다. 관계 또한 클래스 간의 관계는 ‘연관(Association)’이라 부르지만, 객체 간의 실제 연결은 ‘링크(Link)’라고 부릅니다. 이처럼 객체 다이어그램은 클래스 다이어그램이 제시한 규칙과 구조가 실제 상황에서 어떻게 구현되는지를 보여주는 실증적인 자료라고 할 수 있습니다.

    사용자 로그인 시점의 예시

    E-커머스 플랫폼에서 ‘홍길동’이라는 사용자가 막 로그인을 완료한 시점을 객체 다이어그램으로 그려본다고 상상해 봅시다. 이 순간, 시스템에는 gildong_user:고객 이라는 객체가 존재할 것입니다. 이 객체는 name="홍길동"level="VIP" 와 같은 속성 값을 가집니다. 동시에, 이 사용자를 위한 session123:세션 객체가 생성되었을 수 있으며, gildong_user 객체와 session123 객체 사이에는 링크가 형성되어 이 둘이 서로 연결되어 있음을 보여줍니다.

    만약 이 사용자가 이전에 담아두었던 장바구니가 있다면, cart_gildong:장바구니 객체도 존재할 것입니다. 그리고 이 장바구니 객체는 item1:주문항목 {product="노트북", quantity=1} 과 item2:주문항목 {product="마우스", quantity=1} 이라는 두 개의 객체와 링크로 연결되어 있을 수 있습니다. 이처럼 객체 다이어그램은 특정 상황을 구체적인 데이터와 함께 시각화함으로써, 개발자들이나 테스터들이 복잡한 시나리오를 이해하고 잠재적인 오류를 찾아내는 데 결정적인 역할을 합니다.


    컴포넌트 다이어그램 (Component Diagram): 시스템을 조립하는 레고 블록

    컴포넌트 다이어그램이란?

    컴포넌트 다이어그램은 복잡한 시스템을 물리적인 관점에서 어떻게 모듈화하고 조립하는지를 보여주는 설계도입니다. 현대 소프트웨어 개발의 핵심 패러다임인 컴포넌트 기반 개발(CBD)과 마이크로서비스 아키텍처(MSA)에서 특히 중요하게 사용됩니다. 여기서 컴포넌트란, 독립적으로 배포하고 교체할 수 있는 시스템의 물리적인 단위로, 실행 파일(.exe), 라이브러리(.dll, .jar), 웹 페이지, 데이터베이스 테이블 등이 모두 해당될 수 있습니다.

    이 다이어그램은 시스템을 여러 개의 독립적인 ‘레고 블록’으로 나누고, 이 블록들이 서로 어떻게 연결되어 하나의 완성된 시스템을 이루는지를 명확히 보여줍니다. 각 컴포넌트는 자신의 기능을 외부에 ‘인터페이스(Interface)’라는 약속을 통해 제공하고, 다른 컴포넌트가 필요로 하는 기능을 사용합니다. 이러한 구조는 시스템의 특정 부분만 독립적으로 개발, 테스트, 배포하는 것을 가능하게 하여 개발 효율성을 높이고 유지보수를 용이하게 만듭니다.

    주요 요소와 인터페이스

    컴포넌트 다이어그램을 구성하는 핵심 요소는 ‘컴포넌트’, ‘인터페이스’, 그리고 그들 사이의 ‘의존 관계’입니다. 컴포넌트는 시스템의 물리적인 부품을 나타내며, 사각형에 두 개의 작은 직사각형이 튀어나온 모양의 아이콘으로 표현됩니다. 인터페이스는 컴포넌트가 제공하거나 요구하는 서비스의 명세로, 일종의 ‘플러그 소켓’과 같습니다. 제공 인터페이스(Provided Interface)는 막대사탕 모양(Lollipop)으로, 요구 인터페이스(Required Interface)는 소켓 모양(Socket)으로 표현하여 둘이 딱 맞물리는 형태로 시각화합니다.

    예를 들어, ‘결제’ 컴포넌트는 ‘결제 처리’라는 제공 인터페이스를 가질 수 있습니다. 반면, ‘주문’ 컴포넌트는 외부의 결제 기능이 필요하므로 ‘결제 처리’라는 요구 인터페이스를 가질 것입니다. 다이어그램 상에서 ‘주문’ 컴포넌트의 소켓과 ‘결제’ 컴포넌트의 롤리팝이 연결됨으로써, 두 컴포넌트 간의 명확한 서비스 의존 관계가 형성됩니다. 이는 컴포넌트 간의 결합도를 낮추고, 나중에 ‘결제’ 컴포넌트를 다른 회사의 결제 모듈로 쉽게 교체할 수 있는 유연한 구조를 만듭니다.

    동영상 스트리밍 서비스의 예시

    최신 동영상 스트리밍 서비스(예: 넷플릭스, 유튜브)를 컴포넌트 다이어그램으로 모델링해 봅시다. 이 서비스는 여러 개의 독립적인 컴포넌트로 구성될 수 있습니다. 예를 들어, 사용자의 신원을 확인하는 사용자인증.jar, 동영상을 실제로 전송하는 스트리밍엔진.dll, 사용자에게 맞춤형 콘텐츠를 추천하는 추천엔진.war, 그리고 구독 결제를 처리하는 빌링API 와 같은 컴포넌트들이 존재할 것입니다.

    스트리밍엔진 컴포넌트는 사용자인증 컴포넌트가 제공하는 사용자정보확인 인터페이스를 요구하여, 인증된 사용자에게만 동영상을 전송합니다. 추천엔진 컴포넌트는 사용자의 시청 기록 데이터를 필요로 하므로, 스트리밍엔진이 제공하는 시청기록제공 인터페이스에 의존할 수 있습니다. 한편, 빌링API 컴포넌트는 독립적인 외부 서비스일 수 있지만, 우리 시스템의 사용자인증 컴포넌트와 연동하여 구독 상태를 확인합니다. 이처럼 컴포넌트 다이어그램은 마이크로서비스 아키텍처처럼 분산된 시스템의 전체적인 조립 구조와 각 서비스 간의 상호작용을 명확하게 파악하는 데 필수적인 도구입니다.


    배치 다이어그램 (Deployment Diagram): 소프트웨어는 어디에서 실행되는가?

    배치 다이어그램이란?

    배치 다이어그램은 소프트웨어가 완성된 후, 어떤 하드웨어 환경에서 어떻게 물리적으로 배치되어 실행되는지를 보여주는 아키텍처 설계도입니다. 클래스나 컴포넌트 다이어그램이 소프트웨어의 논리적, 기능적 구조에 초점을 맞춘다면, 배치 다이어그램은 시스템의 물리적 토폴로지(Topology), 즉 서버, 네트워크, 데이터베이스 등 인프라 관점의 구조를 다룹니다. 이는 시스템의 성능, 확장성, 안정성, 보안과 같은 비기능적 요구사항을 설계하고 검토하는 데 결정적인 역할을 합니다.

    이 다이어그램은 시스템을 구성하는 하드웨어 ‘노드(Node)’와 그 노드 위에 올라가는 소프트웨어 ‘아티팩트(Artifact)’를 핵심 요소로 사용합니다. 이를 통해 “웹 서버에는 어떤 애플리케이션이 설치되는가?”, “데이터베이스 서버와 웹 서버는 어떻게 연결되는가?”, “사용자의 모바일 앱은 어떤 서버와 통신하는가?”와 같은 구체적인 질문에 대한 답을 시각적으로 제공합니다. DevOps 엔지니어, 시스템 아키텍트, 운영팀에게는 이 다이어그램이 시스템 구축과 운영의 가장 중요한 가이드가 됩니다.

    노드와 아티팩트

    배치 다이어그램의 두 주인공은 ‘노드’와 ‘아티팩트’입니다. ‘노드(Node)’는 연산 능력을 가진 물리적 또는 가상화된 하드웨어 자원을 의미하며, 입체적인 상자 모양으로 표현됩니다. 예를 들어, 물리적인 웹 서버, 데이터베이스 서버, 사용자의 PC나 스마트폰, 그리고 AWS EC2 인스턴스와 같은 클라우드 가상 서버가 모두 노드에 해당합니다. 노드들은 서로 통신 경로(Communication Path), 즉 네트워크 연결을 통해 이어집니다.

    ‘아티팩트(Artifact)’는 개발 과정의 결과물로 생성된 소프트웨어의 물리적인 조각을 의미하며, 문서 모양의 아이콘으로 표현됩니다. 컴파일된 실행 파일(webapp.warapp.exe), 라이브러리 파일, 스크립트, 데이터베이스 스키마 등이 아티팩트의 예입니다. 배치 다이어그램에서는 특정 아티팩트가 어떤 노드 내부에 위치하는지를 보여줌으로써, 소프트웨어 컴포넌트가 실제 어느 서버에 배포되는지를 명시합니다.

    클라우드 기반 웹 애플리케이션 예시

    오늘날 널리 사용되는 클라우드 기반의 3-tier 웹 애플리케이션을 배치 다이어그램으로 그려보면 그 유용성이 명확해집니다. 먼저, 사용자의 디바이스를 나타내는 클라이언트 노드(예: 모바일 디바이스, PC 웹 브라우저)가 있습니다. 이 노드는 인터넷이라는 통신 경로를 통해 AWS 클라우드라는 더 큰 노드와 연결됩니다.

    AWS 클라우드 노드 내부에는 여러 개의 하위 노드가 존재할 수 있습니다. 예를 들어, 웹 애플리케이션 로직을 실행하는 EC2 웹 서버 노드와 데이터를 저장하는 RDS 데이터베이스 서버 노드가 있습니다. EC2 웹 서버 노드 안에는 my-app.war라는 아티팩트가 배포되어 있습니다. 그리고 이 EC2 노드는 내부 네트워크를 통해 RDS 데이터베이스 서버 노드와 통신합니다. 이 다이어그램을 통해 우리는 웹 서버와 DB 서버가 분리되어 있다는 점, 사용자는 인터넷을 통해서만 웹 서버에 접근할 수 있다는 점 등 시스템의 전체적인 물리적 아키텍처와 네트워크 구성을 한눈에 파악할 수 있어, 성능 병목 지점을 예측하거나 보안 정책을 수립하는 데 큰 도움을 줍니다.


    복합체 구조 다이어그램과 패키지 다이어그램: 구조를 더 체계적으로

    복합체 구조 다이어그램 (Composite Structure Diagram)

    복합체 구조 다이어그램은 클래스나 컴포넌트의 ‘내부’를 현미경으로 들여다보는 것과 같습니다. 이 다이어그램은 하나의 복잡한 분류자(Classifier)가 내부에 어떤 부분(Part)들로 구성되며, 그 부분들이 서로 어떻게 상호작용하여 전체의 기능을 수행하는지를 상세하게 보여줍니다. 즉, 외부에서 볼 때는 하나의 단일한 객체처럼 보이지만, 그 내부의 정교한 협력 구조를 설명하는 데 특화된 다이어그램입니다.

    이 다이어그램의 핵심 요소는 ‘부분(Part)’과 ‘포트(Port)’, 그리고 ‘커넥터(Connector)’입니다. ‘부분’은 전체 클래스 내부에 포함된 역할이나 인스턴스를 나타냅니다. ‘포트’는 클래스의 경계에 위치하여 외부와의 상호작용 지점을 정의하는 문(Gate)과 같은 역할을 합니다. 외부에서는 이 포트를 통해서만 내부 구조와 통신할 수 있어 캡슐화를 강화합니다. ‘커넥터’는 내부의 부분들 사이, 또는 부분과 포트 사이를 연결하여 협력 관계를 나타냅니다. 예를 들어, ‘자동차’라는 클래스는 내부에 엔진변속기바퀴라는 부분들을 가지며, 이들은 내부 커넥터를 통해 연결되어 함께 동작하는 복잡한 구조를 이 다이어그램으로 명확하게 표현할 수 있습니다.

    패키지 다이어그램 (Package Diagram)

    패키지 다이어그램은 대규모 시스템의 복잡성을 관리하기 위한 ‘정리 도구’입니다. 시스템의 규모가 커지면 수백, 수천 개의 클래스가 생겨날 수 있는데, 이를 하나의 다이어그램에 모두 표현하는 것은 불가능하며 비효율적입니다. 패키지 다이어그램은 관련된 클래스, 인터페이스, 유스케이스 등 다양한 모델 요소들을 ‘패키지’라는 그룹으로 묶어 시스템을 논리적인 단위로 계층화하고 구조화합니다. 이는 마치 컴퓨터에서 수많은 파일을 의미 있는 폴더로 정리하는 것과 같습니다.

    각 패키지는 폴더 모양의 아이콘으로 표현되며, 패키지 간에는 주로 ‘의존(Dependency)’ 관계가 형성됩니다. 예를 들어, E-커머스 시스템을 설계할 때 주문관리사용자관리상품관리와 같이 기능적으로 관련된 클래스들을 각각의 패키지로 묶을 수 있습니다. 주문관리 패키지는 주문을 생성할 때 사용자 정보와 상품 정보가 필요하므로, 사용자관리 패키지와 상품관리 패키지에 대해 의존 관계(import)를 가집니다. 이러한 구조화는 시스템의 전체적인 논리적 의존성을 큰 그림에서 파악하게 해주며, 각 팀이 담당할 개발 범위를 명확히 나누는 데도 도움을 줍니다.


    결론: 성공적인 프로젝트를 위한 필수 언어

    구조적 다이어그램의 중요성

    지금까지 살펴본 6가지 UML 구조적 다이어그램은 단순히 그림을 그리는 행위를 넘어, 복잡한 소프트웨어 시스템의 본질을 꿰뚫고 성공적인 프로젝트를 이끄는 핵심적인 소통 언어입니다. 클래스 다이어그램은 시스템의 논리적 뼈대를 세우고, 객체 다이어그램은 그 뼈대가 실제 어떻게 살아 움직이는지 보여줍니다. 컴포넌트 다이어그램은 시스템을 유연한 부품의 조합으로 설계하게 하고, 배치 다이어그램은 그 부품들이 어떤 물리적 환경에서 동작할지를 정의합니다. 마지막으로 복합체 구조와 패키지 다이어그램은 시스템의 내부와 전체를 더욱 체계적으로 정리해 줍니다.

    이러한 다이어그램들은 프로젝트 초기에 요구사항의 모호함을 제거하고, 모든 이해관계자가 동일한 비전을 공유하게 합니다. 개발 과정에서는 구현의 명확한 가이드라인이 되어 개발 생산성을 높이고 오류를 줄여줍니다. 또한, 프로젝트가 완료된 후에는 시스템을 유지보수하고 확장하기 위한 필수적인 문서 역할을 합니다. 특히 제품 책임자(PO)나 기획자 입장에서 이러한 구조적 설계를 이해하는 능력은 기술팀과 원활하게 소통하고, 비즈니스 요구사항이 기술적으로 올바르게 구현되고 있는지 검증하는 데 매우 강력한 무기가 됩니다.

    적용 시 주의사항

    구조적 다이어그램의 강력한 힘을 제대로 활용하기 위해서는 몇 가지 주의사항을 기억해야 합니다. 첫째, 과유불급입니다. 필요 이상으로 상세하거나 복잡한 다이어그램은 오히려 소통을 방해할 수 있습니다. 다이어그램을 작성하는 목적과 독자를 명확히 하고, 가장 중요한 정보 위주로 간결하게 표현하는 것이 중요합니다. 둘째, 다이어그램은 살아있는 문서여야 합니다. 프로젝트가 진행되면서 설계는 계속 변경될 수 있습니다. 다이어그램이 실제 코드와 동기화되지 않으면 쓸모없는 유물이 될 뿐이므로, 지속적으로 업데이트하고 관리하는 노력이 필요합니다.

    마지막으로, 다이어그램은 그 자체로 목적이 아니라 의사소통을 위한 ‘도구’라는 점을 잊지 말아야 합니다. 다이어그램을 앞에 두고 팀원들과 함께 토론하고, 설계를 개선해 나가는 과정 속에서 그 진정한 가치가 발현됩니다. 정보처리기사 자격증 취득을 넘어, 실무에서 성공적인 시스템을 만들고 싶다면, 이 구조적 다이어그램이라는 공용어를 자유자재로 구사하는 능력을 반드시 갖추시길 바랍니다.