객체 지향 설계와 분석을 위한 UML 기초와 응용(지은이 : 한정수, 김귀정) 정리 본입니다.
모델링을 왜하는 것일까?
모델링은 개발하고자 하는 프로그램을 시각적으로 표현하는 것이며, 결론적으로 개발 생산성을 위해 의뢰자가 원하는 것을 서로가 이해할 수 있는 공통의 언어로 표현하여 의뢰자의 요구에 맞게 개발 간 수정 및 유지보수를 함을 목적으로 한다고 할 수 있다.
간단한 연산 등의 프로그램이라면 개인이 제어할 수 있는 작업이지만, 보통의 소프트웨어 개발이라고 한다면 많은 인력을 요구하는 커다란 건축물을 짓는 것과 같으므로 다양한 관점에서 설계도가 있어야 개발 생산성을 높일 수 있고 이를 UML을 통해 설계도를 표현할 필요가 있다.
컴포넌트란 무엇이냐?
의미: 논리적 요소들이 물리적으로 패키지화??
물리적으로 패키지화 = 실행 가능한 파일
가장 많이 쓰는 컴포넌트는 xxx.dll
dll : dynamic linked library(동적으로 연결된 라이브러리)
Ex. 게임을 "실행 중"에 업그레이드를 하면 사각형 아이콘 -> 오각형 아이콘
사각형 : k.dll -> k.dll이 업데이트 -> 오각형으로 변경됨.
"실행 중" 이라는 말이 dynamic.
HTML도 컴포넌트라고 할 수 있음.
.hwp는 실행 가능한 파일이 아님. 내용을 바꿀 수 없기 때문에 컴포넌트가 아님.
정적의 대표적인 것은 C언어.
c 언어로 덧셈, 뺄셈 연산을 짜고 컴파일 시키면 ***.exe(실행 파일) 가 만들어짐.
여기서 나눗셈과 곱셈 연산을 추가하고 싶지만 이미 만들어진 exe 파일은 할 수 없음. 소스를 다시 열고 나눗셈, 곱셈을 추가하여 다시 컴파일 후 exe 파일 생성하면 해당 연산을 할 수 있음.
즉, 실행 중에 바뀌는 것이 아니라 정적으로 한번 만들면 바꿀 수 없는 것을 정적이다라고 표현한다.
소프트웨어를 개발 시 컴포넌트 단위로 개발됨. 예를 들어 블럭으로 배를 만든다고 가정했을 때 하나의 블럭이 컴포넌트. 즉, 블럭 단위로 만든 것이 컴포넌트.
게임은 컴포넌트 단위로 많이 만들어 업그레이드 시킴 ~ 게임을 많이 파는게 목적이 아니라 게임을 많은 사람이 하는 것이 목적.
아래 한글은 버전 단위로 만들어 관리. 편집기이기 때문에 버전으로 관리하고
아래 그림과 같이 Component A는 의존 관계인 3개의 클래스가 가진 1,2 / 3,4 / 5,6 operation 들 중 인터페이스가 맞는 2 / 3 / 5. 6 만 가질 수 있음.
user_interface.exe
컴포넌트 : 사용자 인터페이스를 처리item_search.exe
컴포넌트 : 부품을 검색item_database.tbl
컴포넌트 : DB 관리item.dll
: 부품의 종류를 관리interface_search
: 사용자 인터페이스와 부품 검색 컴포넌트를 연결user_interface.exe
컴포넌트가 item_search.exe
컴포넌트에 접근하려면 반드시 interface_search
인터페이스를 거치도록 함.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와 인터페이싱 되어 실현