다이어그램 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
3번째 줄: 3번째 줄:
 
==개요==
 
==개요==
 
다이어그램의 기능과 목적은 전달에 있으며, 강력한 전달력을 활용한 계몽적 측면과 의미를 빠르고 정확하게 알려야 하는 고지적 측면을 갖는 시각 언어이다. 다이어그램은 표현 내용에 따라 비교 통계 다이어그램(도표, 그래프, 통계도표 등), 기구 계통 다이어그램(조직도, 계보도, 계통도 등), 기능 및 해부 다이어그램(기상도, 구조도, 해부도 등), 행사 예정표 및 일람표(예정도표), 통계 지도 및 장식 지도(노선 안내도 등) 등이 있다.<ref name="네이버1"> 한글글꼴용어사전, 〈[https://terms.naver.com/entry.nhn?docId=784100&cid=41828&categoryId=41828 다이어그램]〉, 《네이버 지식백과》</ref>
 
다이어그램의 기능과 목적은 전달에 있으며, 강력한 전달력을 활용한 계몽적 측면과 의미를 빠르고 정확하게 알려야 하는 고지적 측면을 갖는 시각 언어이다. 다이어그램은 표현 내용에 따라 비교 통계 다이어그램(도표, 그래프, 통계도표 등), 기구 계통 다이어그램(조직도, 계보도, 계통도 등), 기능 및 해부 다이어그램(기상도, 구조도, 해부도 등), 행사 예정표 및 일람표(예정도표), 통계 지도 및 장식 지도(노선 안내도 등) 등이 있다.<ref name="네이버1"> 한글글꼴용어사전, 〈[https://terms.naver.com/entry.nhn?docId=784100&cid=41828&categoryId=41828 다이어그램]〉, 《네이버 지식백과》</ref>
 
==역사==
 
1990년대까지의 OOD/Booch, OMT, OOAD, RDD, GOOD, HOOD, OOSD, OOJSD 등과 같은 많은 방법론들은 실제 시스템을 구축하는데 있어서 각각의 객체지향 기술들이 갖는 방법과 심벌이 서로 달랐다. 그리고 1994년 소프트웨어 방법론의 선구자인 그래디 부치, 제임스 럼바, 이바 야콥스에 의해서 UML이 연구되었고 1995년 부치의 방법론과 럼바의 OMT 방법론이 통합되었다.
 
1996년 야콥슨의 OOSE 방법론이 추가되면서 1997년 객체관리그룹에서 여러 표기법을 통합해 UML을 발표했다.<ref name="자료6"> codedragon, 〈[https://codedragon.tistory.com/4005 모델링 언어의 발전]〉, 《개인블로그》</ref>
 
  
 
==특징==
 
==특징==
30번째 줄: 26번째 줄:
  
 
===컴포넌트 다이어그램===
 
===컴포넌트 다이어그램===
컴포넌트 다이어그램(Component Diagram)은 소프트웨어 컴포넌트 사이의 의존관계를 묘사한다. 소프트웨어 컴포넌트를 구성하는 요소들과 그것들을 구현하는 요소들도 모두 표현될 수 있다.<ref name="자료1"> Geunhee Zhang, 〈[https://ilovewoojin.wordpress.com/2015/04/24/%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8diagram-%EC%A2%85%EB%A5%98/ 다이어그램(Diagram) 종류]〉, 《개인블로그》, 2015-04-24</ref> 컴포넌트는 기존의 함수, 클래스 등에 비하여 보다 큰 규모이므로 재사용을 하는 경우 재사용의 효과가 보다 크게 된다. 그리고 매우 강한 수준의 정보 은닉 개념을 지원한다. 기존 컴포넌트를 수정하는 대신에 아예 새로운 컴포넌트로 기존 컴포넌트를 대체하는 것도 가능하다.
+
컴포넌트 다이어그램(Component Diagram)은 소프트웨어 컴포넌트 사이의 의존관계를 묘사한다. 소프트웨어 컴포넌트를 구성하는 요소들과 그것들을 구현하는 요소들도 모두 표현될 수 있다.<ref name="자료1"> Geunhee Zhang, 〈[https://ilovewoojin.wordpress.com/2015/04/24/%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8diagram-%EC%A2%85%EB%A5%98/ 다이어그램(Diagram) 종류]〉, 《개인블로그》, 2015-04-24</ref>
  
 
===배포 다이어그램===
 
===배포 다이어그램===
실행 상황에서 노드들의 구성을 보여주고 소프트웨어 요소들이 실제로 어떤 하드웨어에 배치되어 실행되는지를 보여준다.<ref name="자료3"> Phang's IT Blog, 〈[https://jihyehwang09.github.io/2019/05/19/se-15/ 기타 다이어그램(컴포넌트.배포, 패키지 다이어그램]〉, 《개인블로그》, 2019-05-19</ref> 컴포넌트 다이어그램과 같이 실세계의 개체를 다루며 컴포넌트 다이어그램이 소프트웨어 컴포넌트였다면 배포 다이어그램은 하드웨어에 중점을 둔 다이어그램이다.
+
실행 상황에서 노드들의 구성을 보여주고 소프트웨어 요소들이 실제로 어떤 하드웨어에 배치되어 실행되는지를 보여준다.<ref name="자료3"> Phang's IT Blog, 〈[https://jihyehwang09.github.io/2019/05/19/se-15/ 기타 다이어그램(컴포넌트.배포, 패키지 다이어그램]〉, 《개인블로그》, 2019-05-19</ref>
다시 말해 배포다이어그램은 컴퓨터를 기반으로 하는 시스템의 물리적 구조를 나타낸다. 컴퓨터와 부가장치, 그리고 각각의 연결 관계뿐만 아니라 각각의 기계에 설치된 소프트웨어까지 표시한다.<ref name="자료4"> plandis, 〈[https://dollipolly.tistory.com/entry/UML배포-다이어그램 배포 다이어그램]〉, 《개인블로그》, 2010-07-22</ref>
 
  
 
===객체 다이어그램===
 
===객체 다이어그램===
객체 다이어그램과 클래스 다이어그램을 서로 밀접한 관련이 있으며 거의 유사한 노테이션을 사용한다. 이 두 다이어그램 모두 시스템의 정적인 구조를 시각화하기 위해 사용된다. 클래스 다이어그램이 클래스를 보여주는 반면 객체 다이어그램은 클래스의 인스턴스를 표시한다. 객체 다이어그램은 클래스 다이어그램보다 더 구체적이다.<ref name="위키2"> 위키백과, 〈[https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8 객체 다이어그램]〉, 《위키피디아》</ref>
 
 
==활용==
 
UML은 기법을 결정하고 있을 뿐 그 사용법까지는 정의하고 있지 않다. 즉 UML 사용방법은 이용자에게 맡고 있기 때문에 기술 방법만 지키면 자유롭게 UML을 사용할 수 있다. 그렇다고는 해도 실제의 시스템 개발의 현장에서는 주로 3가지의 용도로 쓰이는 경우가 많다. <ref name="자료7"> Ogasawara Noriko, 〈[https://zdnet.co.kr/view/?no=00000039154123 UML은 무엇을 위해 있는 것일까?]〉, 《ZDNet Korea》, 2006-12-26</ref>
 
 
===모델링===
 
요건 정의 국면에서는, 현행 시스템을 이해하는 것이나 '무엇을 만들까?' 를 의식해 유저의 요건을 묻기 위해서 모델링이라고 하는 기법을 사용해 시스템의 전체상을 그리는 작업을 하는 일이 있다. 이 작업을 실시하는 사람을 모델러라고 부르고 모델링에 의해서 작성하는 그림을 개념 모델이라고 부른다.
 
개념 모델 자체는 어떠한 표현을 해도 상관없지만, 일반적으로는 UML의 클래스 다이어그램을 사용하는 것이 많은 듯하다. 그 이유 중 하나는 설계자가 이해하기 쉽기 때문이다.
 
UML을 사용한 모델링에서는 유저의 머릿속에 있는 요건을 정보로 정리하고 그 정보끼리의 관계를 정의해 도식화하는 것으로 시스템의 요건을 전체상으로서 파악한다. 실제로 이 작업을 보고 있으면, 마치 최초부터 거기에 존재했나 싶을 정도로 클래스 다이어그램이 완성되어 가는 모습에 매우 놀란다.
 
또 클래스 다이어그램의 읽는 법이 몇 가지는 결정돼 있긴 하지만 기억할 것은 많지 않다. 직감적으로 판단할 수 있기 때문에 UML에 익숙하지 않은 유저도 이해하기 쉬어서 클래스 다이어그램에 대한 평가는 대체로 높다.
 
만약 클래스 다이어그램을 사용하지 않고 말만으로 유저의 요건을 정리하려고 하면, 부분적인 요건의 상세화는 할 수 있지만 전체를 파악하는 것이 어려워 주제가 희미해져 버리는 약점이 있다.
 
한편 클래스 다이어그램을 유저와 함께 만들어내 가는 모델링에서는 전체상을 시각적으로 이해할 수 있어 유저 자신이 깨닫지 못했던 과제도 발견할 수 있다는 장점이 있다.
 
단지 모델링의 단계에서 작성하는 클래스 다이어그램은 다음에 설명하는 설계 레벨의 클래스 다이어그램에 비해 매우 입도가 엉성하고 정보도 부족한 것이 많기 때문에 그대로는 프로그래밍할 수 없다. 그 대신 유저와 개발자의 사이에 '대체로 이런 느낌' 이라고 하는 시스템에 대한 요구를 합의할 수 있어 요건 정의 국면에서는 매우 유효하다.
 
이와 같이 모델링에서는 UML의 클래스 다이어그램을 사용하는 것이 일반적입니다만 추상도가 높은 클래스 다이어그램의 정보를 구체화해 보충하는 스테이트 머신 다이어그램나 오브젝트 다이어그램도 잘 사용된다.<ref name="자료7"> Ogasawara Noriko, 〈[https://zdnet.co.kr/view/?no=00000039154123 UML은 무엇을 위해 있는 것일까?]〉, 《ZDNet Korea》, 2006-12-26</ref>
 
  
===설계===
 
요건 정의 국면에 UML을 사용해 작성한 그림은 설계에서 보다 구체화된다. 예를 들면, 클래스 다이어그램이나 스테이트 머신 다이어그램으로부터 데이터베이스의 논리 설계를 행하거나 실제 이미지에 접근하기 위해서 클래스의 상세화를 한다.
 
설계 국면에서는 '어떻게 만들까?'를 의식하지만, 자바 등의 객체 지향 언어로 개발하는 것이 전제가 되고 있는 경우 UML을 사용하고 설계도(클래스 다이어그램이나 순서도 등)를 쓰는 경우가 많다.
 
실제로 움직이는 물건을 만들기 위한 설계이므로, 모델링에 비해 보다 엄밀성이 요구되지만 이 때 표기 방법이 명확하게 정해져 있는 UML이 매우 도움이 된다.
 
설계에서 클래스 다이어그램을 사용하는 가장 큰 장점은 클래스 간 인터페이스를 빠른 단계에서 명확하게 할 수 있는 점이다. 설계에서 쓰는 클래스 다이어그램에는 클래스의 속성이나 관계뿐 아니라 조작도 나타내게 되어 있다.
 
예를 들면, 수주 클래스에 수주 등록이라는 조작을 하는 것으로 그 클래스를 사용해 수주 정보를 등록할 수 있는 것이다. 여기에서는 조작을 실행하기 위해서 필요한 입력 정보와 실행 결과의 출력 정보를 분명히 해 클래스의 인터페이스를 정의하지만, 그 조작 자체의 내용을 자세하게 나타내 보일 필요가 없기 때문에 필요한 정보를 최저한의 표기로 나타내 보일 수 있다.
 
덧붙여 설계 시에 클래스 다이어그램이나 순서도 등을 만드는 것은 필수가 아니고, 비교적 소규모의 시스템으로 개발 멤버 사이에 미리 설계 방법이 공유되어 있는 경우에는, 필요에 따라서 코딩제의 프로그램으로부터 리버스해 클래스 다이어그램 등을 작성해, 설계서를 나중에 작성하기도 한다. 리버스 기능은, 이후 설명하는 툴로 지원되고 있다.<ref name="자료7"> Ogasawara Noriko, 〈[https://zdnet.co.kr/view/?no=00000039154123 UML은 무엇을 위해 있는 것일까?]〉, 《ZDNet Korea》, 2006-12-26</ref>
 
  
===프로그래밍===
 
실행 환경에 의존하지 않는 UML 모델로부터 툴을 사용해 실제로 움직이는 프로그램으로 변환하는 기술을 MDA(Model Driven Architecture)라고 부른다. MDA에 준거하면, 모델링→설계→프로그래밍에의 변환을 모두 UML만으로 할 수 있게 된다.<ref name="자료7"> Ogasawara Noriko, 〈[https://zdnet.co.kr/view/?no=00000039154123 UML은 무엇을 위해 있는 것일까?]〉, 《ZDNet Korea》, 2006-12-26</ref>
 
  
 
{{각주}}
 
{{각주}}
69번째 줄: 41번째 줄:
 
* 한글글꼴용어사전, 〈[https://terms.naver.com/entry.nhn?docId=784100&cid=41828&categoryId=41828 다이어그램]〉, 《네이버 지식백과》
 
* 한글글꼴용어사전, 〈[https://terms.naver.com/entry.nhn?docId=784100&cid=41828&categoryId=41828 다이어그램]〉, 《네이버 지식백과》
 
* Geunhee Zhang, 〈[https://ilovewoojin.wordpress.com/2015/04/24/%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8diagram-%EC%A2%85%EB%A5%98/ 다이어그램(Diagram) 종류]〉, 《개인블로그》, 2015-04-24
 
* Geunhee Zhang, 〈[https://ilovewoojin.wordpress.com/2015/04/24/%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8diagram-%EC%A2%85%EB%A5%98/ 다이어그램(Diagram) 종류]〉, 《개인블로그》, 2015-04-24
* C1 SW, 〈[https://sfeg.tistory.com/339 다이어그램 종류와 개념에 대해 알아보자]〉, 《개인블로그》, 2017-07-02
 
 
* Phang's IT Blog, 〈[https://jihyehwang09.github.io/2019/05/19/se-15/ 기타 다이어그램(컴포넌트.배포, 패키지 다이어그램]〉, 《개인블로그》, 2019-05-19
 
* Phang's IT Blog, 〈[https://jihyehwang09.github.io/2019/05/19/se-15/ 기타 다이어그램(컴포넌트.배포, 패키지 다이어그램]〉, 《개인블로그》, 2019-05-19
* 위키백과, 〈[https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8 객체 다이어그램]〉, 《위키피디아》
 
* plandis, 〈[https://dollipolly.tistory.com/entry/UML배포-다이어그램 배포 다이어그램]〉, 《개인블로그》, 2010-07-22
 
* codedragon, 〈[https://codedragon.tistory.com/4005 모델링 언어의 발전]〉, 《개인블로그》
 
* Ogasawara Noriko, 〈[https://zdnet.co.kr/view/?no=00000039154123 UML은 무엇을 위해 있는 것일까?]〉, 《ZDNet Korea》, 2006-12-26
 
  
==같이 보기==
+
==같이보기==
* [[그래프]]
+
 
  
{{데이터|검토 필요}}
+
{{프로그래밍|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)