컴포넌트 다이어그램

Kiwoong Park·2022년 11월 2일
0

객체 지향 설계와 분석을 위한 UML 기초와 응용(지은이 : 한정수, 김귀정) 정리 본입니다.

UML의 이해

2. UML과 모델링

모델링을 왜하는 것일까?
모델링은 개발하고자 하는 프로그램을 시각적으로 표현하는 것이며, 결론적으로 개발 생산성을 위해 의뢰자가 원하는 것을 서로가 이해할 수 있는 공통의 언어로 표현하여 의뢰자의 요구에 맞게 개발 간 수정 및 유지보수를 함을 목적으로 한다고 할 수 있다.

간단한 연산 등의 프로그램이라면 개인이 제어할 수 있는 작업이지만, 보통의 소프트웨어 개발이라고 한다면 많은 인력을 요구하는 커다란 건축물을 짓는 것과 같으므로 다양한 관점에서 설계도가 있어야 개발 생산성을 높일 수 있고 이를 UML을 통해 설계도를 표현할 필요가 있다.

9. 컴포넌트 다이어램

컴포넌트 개념

컴포넌트란 무엇이냐?
의미: 논리적 요소들이 물리적으로 패키지화??
물리적으로 패키지화 = 실행 가능한 파일
가장 많이 쓰는 컴포넌트는 xxx.dll
dll : dynamic linked library(동적으로 연결된 라이브러리)
Ex. 게임을 "실행 중"에 업그레이드를 하면 사각형 아이콘 -> 오각형 아이콘
사각형 : k.dll -> k.dll이 업데이트 -> 오각형으로 변경됨.
"실행 중" 이라는 말이 dynamic.
HTML도 컴포넌트라고 할 수 있음.
.hwp는 실행 가능한 파일이 아님. 내용을 바꿀 수 없기 때문에 컴포넌트가 아님.

정적의 대표적인 것은 C언어.
c 언어로 덧셈, 뺄셈 연산을 짜고 컴파일 시키면 ***.exe(실행 파일) 가 만들어짐.
여기서 나눗셈과 곱셈 연산을 추가하고 싶지만 이미 만들어진 exe 파일은 할 수 없음. 소스를 다시 열고 나눗셈, 곱셈을 추가하여 다시 컴파일 후 exe 파일 생성하면 해당 연산을 할 수 있음.
즉, 실행 중에 바뀌는 것이 아니라 정적으로 한번 만들면 바꿀 수 없는 것을 정적이다라고 표현한다.

소프트웨어를 개발 시 컴포넌트 단위로 개발됨. 예를 들어 블럭으로 배를 만든다고 가정했을 때 하나의 블럭이 컴포넌트. 즉, 블럭 단위로 만든 것이 컴포넌트.
게임은 컴포넌트 단위로 많이 만들어 업그레이드 시킴 ~ 게임을 많이 파는게 목적이 아니라 게임을 많은 사람이 하는 것이 목적.
아래 한글은 버전 단위로 만들어 관리. 편집기이기 때문에 버전으로 관리하고

  • UML에서의 컴포넌트
    - 가상의 모델을 실제로 구현하여 나타내는 요소
    • 객체 지향의 원리에 따라 기능과 관련 데이터를 하나의 단위로 처리
  • CBD관점의 컴포넌트
    - 인터페이스에 의해 기능이 정의된, 독립적으로 "개발, 배포, 조립"이 가능한 시스템의 구성 단위
    • J2EE 플랫폼의 JAR 파일과 닷넷 플랫폼의 DLL 파일 등
  • 인터페이스
    - 컴포넌트가 실현하고자 하는 여러 오퍼레이션의 모임
  • 의존 관계
    - 한 컴포넌트에 어떤 변경이 발생했을 때 그 변경으로 인해 다른 컴포넌트도 영향받음을 의미 (TV 컴포넌트는 리모컨 컴포넌트에 의존한다 : TV ------> RemoteController)
    • 한 컴포넌트에 변경이 발생한 경우, 그 변경의 범위를 추적해서 파악하고 싶을 때 매우 유용
      - 컴포넌트와 컴포넌트 간의 관계
    • 컴포넌트와 인터페이스 간의 관계
  • 실체화 관계
    - 컴포넌트와 인터페이스 간의 관계

컴포넌트와 클래스

  • 컴포넌트와 클래스의 공통점
    - 둘 다 이름이 있으며 정해진 인터페이스를 실현할 수 있음.
    • 의존성이 있고 일반화가 가능함.
    • 연관 관계와 교류에 참여할 수 있고 중첩이 가능하며 인스턴스를 가질 수 있음
  • 컴포넌트와 클래스의 차이점
    - 클래스는 논리적인 추상화 vs 컴포넌트는 물리적인 요소(=실행 가능한 요소)
    - 컴포넌트는 클래스나 통신과 같은 서로 다른 논리적 요소들을 물리적으로 패키지화
    - 클래스는 속성과 오퍼레이션을 직접 가질 수 있지만, 컴포넌트는 자신의 인터페이스를 통해 접근할 수 있는 오퍼레이션들만 가질 수 있음(= 인터페이스가 맞아야 실행 가능함.)

    아래 그림과 같이 Component A는 의존 관계인 3개의 클래스가 가진 1,2 / 3,4 / 5,6 operation 들 중 인터페이스가 맞는 2 / 3 / 5. 6 만 가질 수 있음.

예제 - 재고 조회 응용 프로그램의 구성

  • 실행 컴포넌트
  1. user_interface.exe 컴포넌트 : 사용자 인터페이스를 처리
  2. item_search.exe 컴포넌트 : 부품을 검색
  3. item_database.tbl 컴포넌트 : DB 관리
  • 라이브러리 컴포넌트
  1. item.dll : 부품의 종류를 관리
  • 공유 인터페이스
  1. interface_search : 사용자 인터페이스와 부품 검색 컴포넌트를 연결
    • user_interface.exe 컴포넌트가 item_search.exe 컴포넌트에 접근하려면 반드시 interface_search 인터페이스를 거치도록 함.
  2. interface_data : 부품 검색 컴포넌트와 데이터베이스 관리 컴포넌트를 연결
    - item_search.exe 컴포넌트가 item_database.tbl 컴포넌트에 접근하려면 반드시 interface_data 인터페이스를 거치도록 함.


클래스 기반의 컴포넌트 다이어그램 생성

  • 클래스로부터 컴포넌트를 구성할 때는 클래스 중에서 서로 연관되어 분류가 가능한 것들을 컴포넌트에 포함시킬 수 있음.

    입고 - 현황 관리 - 출고 의 클래스 다이어그램과 데이터베이스 컴포넌트를 연관시켜 컴포넌트 다이어그램을 그림

    위의 다이어그램을 아래와 같이 확장할 수 있다.
    <<executable>> 컴포넌트를 생성하기 위해 여러 클래스를 묶어 컴파일

    즉, 여러 클래스를 묶어서 하나의 실행 파일로 컴파일할 수 있음.

  • 단일 클래스로 구성되는 컴포넌트도 있음

    present_state.exe 컴포넌트를 실행하기 위해 deliver.dll과 entering.dll에 의존하고, user_interface.exe 컴포넌트는 interface1을 통해 present_state.exe와 인터페이싱 되어 실현

profile
You matter, never give up

0개의 댓글

관련 채용 정보