본문 바로가기

카테고리 없음

[UML]UML.. 우물?을 공부해봅시다.

OMG에서 UML소개하는 사이트

About the Unified Modeling Language Specification Version 2.5.1

Version 2.5.1 공식문서 PDF 파일

 

UML이란 무엇인가 ? (시스템의 직관적 표현수단)

통합 모델링 언어 (UML : Unified Modeling Language)는 소프트웨어 공학에서 사용되는 표준화된 범용 모델링 언어이다. 라고 위키백과에서 확인할 수 있따.

사용 목적 - 객체지향 프로그래밍 소프트웨어 집약 시스템을 개발할때 산출물을 명세화, 시각화, 문서화 할때 사용함

견해) 코드로 프로젝트의 전체흐름을 파악하려면 번거롭고 직관성이 떨어짐으로 한눈에 구조와 흐름을 파악하기가 어려울 수있는데 UML 언어로 표현하면 개발구조를 보다 직관적으로 파악할 수 있다. 직관적으로 보기위한 개발청사진이라고 생각한다.

목적)

  • 협업할때 의사소통 또는 설계논의
    • 나 자신 → 전체구조 및 클래스 의존성 파악
    • 같이 일하는 사람 → 의사소통 및 설계 논의
    • 미래에 이 프로그램을 맡을 사람 → 문서화
    ⇒ 미래의 나 혹은 다른 사람에게 코드 전달 및 파악

UML의 역사

경쟁자들 사이에서 항상 탁월한 위치에 있었던 그래디 부치, 제임스 럼머, 이바 콥슨이라는 분들이 80~90 년대 초반까지 객체지향분석설계분야에서 각자의 영역의 방법론을 연구하여 UML이라는 전략을 만들었다.

업계에서 좋은반응이 나오자 UML 연합체를 발족하게 되었다.

(UML 컨소시엄의 멤버 - 디지컬이퀍먼트코퍼레이션, 휴렛팩커드, 인텔리캅, 마이크로 소프트, 오라클, 텍사스 인스트루먼트, 래셔널 소프트웨어 등이 있었다.)

1997년도 UML 컨소시엄 1.0이 나오자 OMG이 표준 모델링 언어의 제안서를 내라는 요구에 맞추어 표준모델링으로 채택이되었다. 지속적으로 수정 보안하며 발전되어 2005년에는 버전 2.0이 OMG에 의해 승인되었다.

UML구성요소 (Model, Diagram)

개발방법은 아니지만 객지소 개발방법론과 잘 어울리도록 설계되되었따. UML발전해 감에 따라 UML의 장점을 취하기 위해 몇몇 다른 방법론이 개선됨

구조 다이어그램은 시스템의 개념관계 등의 측면에서 요소들을 나타내고 각 요소들의 정적인 면을 보기위한 것이다.

행위 다이어그램은 각 요소들 혹은 요소들간의 변화나 흐름, 주고 받는 데이터 등의 동작을 보기 위한 것으로, 클래스 다이어그램은 구조 다이어그램에 해당합니다.

클래스 다이어그램은 클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기하는 다이어그램으로 시스템의 일부 또는 전체의 구조를 나타낼 수 있다. 그리고 의존관계를 명확히 보게 해주며, 순환의존이 발생하는 지점을 찾아낵서 어떻게 이 순환 고리를 깨는 것이 가장 좋은지 결정할 수 있게 해줍니다.

Model) ⇒ 시스템자체의 "목적 행동"을 설명하는 언어

UML 모델은 시스템 자체의 “목적 행동”을 설명하는 언어이다. UML 모델은 시스템의 “구현 방법을 설명하는 수단”이 아니다.

UML의 여러가지 그래픽 요소는 하나의 큰그림, 즉 다이어 그램을 그리는데 사용된다.

UML은 언어이기 때문에, 이들 그래픽 요소들이 맞추는 데에는 규칙이 필요함

Diagram 목적 - 시스템을 여러가지 시각에서 볼 수 있는 View를 제공하는 것인데 이런한 뷰의 집합을 Model이라고 한다.

Diagram)

대부분 사물은 속성과 행동 수단을 지니고있다. 이러한 행동을 Operation의 집합으로 생각 할 수 있다.

diagram 사용시 규칙)

  • 두단어 이상으로 이루어진 클래스 이름은 단어사이의 공백을 없앤다. 각 단어는 UpperCamelCase로 작성함
  • 변수와 함수는 LowCamelCase

==============================================================

UML은 시스템에 직관적인 표현수단이다.

시스템 업무 모델링 산출물을 규정하고 시각화 문서화하는 언어이다.

건물을 지을때 청사진을 만드는것과 같은 비슷한원리

UML 유트브 강의 참고자료

https://www.youtube.com/watch?v=abvh6bKw_SA

UML은 크게 구조와 행위 다이어그램이있다

구조 다이어그램 [시스템의 구조 관계인 정적인 면을 보기위함]

  • 클래스 다이어그램 ***
  • 객체 다이어그램
  • 패키지 다이어그램
  • 컨포넌트 다이어그램
  • 복합구조 다이어그램
  • 복합구조 다이어그램
  • 디폴로이먼트 다이어그램
  • 프로파일 다이어그램

행위다이어그램 [각 요소들 또는 요소들간의 흐름 데이터를 파악하기 위함 동적인 면을 보기위함]

  • 유스케이스 다이어그램
  • 액티비티 다이어그램
  • 스테이트 머신 다이어그램
    • 상호작용 다이어그램
      • 시퀀스다이어그램 ***
      • 커뮤니케이션 다이어그램
      • 인터렉션 오버뷰 다이어그램
      • 타이밍 다이어그램

UML 표기 방식)

참고자료 https://www.nextree.co.kr/p6753/

UML의 관계 유형 )

    • 연관관계
      • 연관관계(실선으로 표현함) - 서로다른객체의 참조를 가지는 필드를 표현함 ex) 게시물은 댓글목록을 가지고있고 댓글은 어떤게시글에대한 댓글을 달았는지 확인할 수있다.
      • 직접연관관계(화살표) - ex) 댓글은 게시글들의 포함이되지만 댓글은 어떤 게시글을 달았는지에 대한 정보는 가지고 있지않음
      • 집합연관관계(속이빈 마름모) - 전체와 구분의 관계 예시) 댓글은 게시글에 포함되지만 게싣글을 삭제해도 댓글은 내가쓴 목록에서 확인가능
      • 합성연관관계(속이찬 마름모)→ 강한 결합을 의미 → 참조한 객체가 사라지면 존속한 객체도 사라진다. 예시 ) 게시글을 삭제하면 댓글도 삭제됨
    • 의존관계
      • 확장의존관계(점선으로 사용하고 Extend표시) 어떤일을 수행할때 선택적으로 수행할 수 있는관계를 나타냄 예시) 글을 등록할떄 파일을 첨부하는기능을 선택적으로 수행할 수 있음
      • 포함의존관계(점선 화살표 include 표시) - 포함하는관계를 나타냄 예시로) 로그인을 해야만 글등록을 확인할 수있음
      • 일반화관계(빈 삼각형화살표로 표시함) 부모와 자식의 상속관계를 나타냄 예시) 동물의 타입을 고양이 강아지 햄스터가 상속을 밭는걸 의미함
      • 실체화 관계(점선의 빈삼각현 화살표) 예시) 동물이 무엇을 하는지 정의만해놓고 속성과 실제 동작하는 메서드를 자식 클래스에서 구현하는걸 표현함

class Diagram

일반화 = 상속관계 (상위클래스를 가르키는 방식으로 작성해야함)

의존 - 서로다른 타입을 한 함수내에서 사용하는것

집약 → 대학이 없어져도 학생일 수 있다.

합성 → 대학이 없어지면 더이상 학생이 아니다 (=강한의존관계)

Sequence Diagram = 순서를 파악하고 싶을 때

 

그리는방법 - 무슨툴러쓸까요?

  1. gliffy ***아주 그림톤과 기능의 조화가 좋음
  2. draw.io
  3. miro

예시코드)

https://gist.github.com/daheenallwhite/9858250a2c81f8bb97946cbde6a6d167

참고)

프로토콜이란 - 자격요건을 명시해서 좀더 구체화된 메소드나 프로퍼티를 만드는 방식이다.

오버라이드는 명시해준다. ⇒ 재정의한다는 명확함

static을 표시할땐 밑줄은 치던 어떠한표기법이던 알아볼수있게 표시만해주면될것같다

 

코드를 참고하여 그려보았는데 속성을 표현하는게 아직 이해가가질 않는다. 1..* 이런식으로 선과함께 표기하는데 그 기준이 한개 한개이상사용할 수 있는건지 파악하기가 어렵다..