본문 바로가기
정보처리기사

[정처기실기] 7. UML - 1과목 소프트웨어 구축

by 공불러 2024. 3. 17.
728x90
반응형

[정처기실기] 7. UML - 1과목 소프트웨어 구축

UML 완전 정복

UML은 생각보다 자주 출현하는 문제입니다. 소프트웨어 1과목에서 가장 많이 출제되는 부분은 uml과 디자인 패턴입니다. 구성요소들이 많고 헷갈리게 출제할 수 있기 때문입니다.

이번 설명은 기존 암기를 위한 설명으로 기본 설명을 확인해보시고 본 글에서 주요 다이어그램을 상세하게 보실 것을 추천드립니다.

목차

    UML 기본 개념

    단순하게 보면 UML은 그냥 소프트웨어 설계에서 도면으로 나타내어 개발 전에 문서를 작성하기 위해 사용하는 도구로 보시면 됩니다.

    UML이 언급되는 개념에는 소프트웨어 아키텍처 설명에서 소프트웨어 특징의 의사소통, 4+1뷰가 있습니다. 

    아래 설명과 같이, UML은 사물(Thing), 관계(Relationship), 다이어그램(Diagram) 등 3가지로 구성되어 있습니다. 이중 출제 비중이 높은 것은 관계, 다이어그램입니다. 각 파트를 쉽게 외울 수 있도록 정리해두었으니 아래 글을 참고해보시길 바랍니다.

     

    사물(Thing)

    일반적으로 시스템 내에서 모델링하려는 대상을 가리킵니다. 구체적인 물리적 또는 개념적 개체일 수 있습니다.

    구조(Structure) 사물(Thing)

    시스템의 개념적 물리적 요소

    구조 사물 관련 개념 더 알아보기

    • UML에서의 구조는 시스템의 정적인 측면을 나타냅니다. 이는 시스템의 구성 요소와 요소 간의 관계를 포함합니다.
    • 객체지향 모델링에서는 클래스(Class)와 객체(Object)가 구조적 요소로 간주됩니다. 클래스는 시스템의 구성 요소를 정의하고, 객체는 클래스의 인스턴스로서 실제 존재하는 개체를 나타냅니다.
    • 클래스 다이어그램(Class Diagram)은 UML에서 구조를 표현하는데 주로 사용되며, 클래스와 클래스 간의 정적인 관계를 보여줍니다.
    • 관련 다이어그램 : 클래스, 유스케이스, 컴포넌트

    행동(Behavior) 사물(Thing)

    시간과 공간에 따른 요소들의 행위

    행동 사물 관련 개념 더 알아보기

    • 행동은 시스템의 동적인 측면을 나타냅니다. 이는 시스템 내에서 객체들이 상호작용하고 수행하는 행위를 포함합니다.
    • 시퀀스 다이어그램(Sequence Diagram), 활동 다이어그램(Activity Diagram), 상태 다이어그램(State Diagram) 등의 다이어그램이 행동을 표현하는데 사용됩니다.
    • 시퀀스 다이어그램은 객체 간의 상호작용을 시간적으로 나타내며, 활동 다이어그램은 객체의 동작 흐름을 보여줍니다. 상태 다이어그램은 객체의 상태 변화를 기술합니다.
    • 관련 다이어그램 : 상호작용

     그룹(Group) 사물(Thing)

    요소들을 그룹으로 묶은 것

    그룹 사물 관련 개념 더 알아보기

    • 그룹은 UML에서 객체를 논리적으로 묶는 방법을 나타냅니다. 이는 객체들 간의 관계를 그룹화하고 표현하는 것을 의미합니다.
    • 패키지 다이어그램(Package Diagram)은 UML에서 그룹을 표현하는데 사용됩니다. 패키지는 관련된 클래스나 다른 요소들을 묶어서 표현할 때 사용됩니다.
    • 관련 다이어그램 : 패키지

    주해(Annotation) 사물(Thing)

    부가적 설명이나 제약조건

    주해 사물 관련 개념 더 알아보기

    • 주해는 모델에 추가 정보나 설명을 제공하는데 사용됩니다. 이는 모델의 이해를 돕고 모델링의 의도를 명확히 전달하는데 도움이 됩니다.
    • 주해는 다이어그램에 주석(Annotation)을 추가하여 표현됩니다. 주석은 모델의 일부분에 대한 설명이나 추가 정보를 제공할 수 있습니다.
    • 관련 다이어그램 : 주석, 노트

    관계(Relationship)

    관계는 UML에서 사물들 간의 연결을 나타냅니다. 이것은 사물들 간의 상호작용이나 의존성을 나타내는 데 사용됩니다.

    일연 | 실의 | 집포 순으로 외워두기길 바랍니다. 화살표와 마름모가 비어 있고, 차있는 순서입니다.

    예를 들면 일연은 일반화 관계는 화살표가 비어 있고, 연관계는 차있는 것입니다.

    일연 | 실의는 모두 화살표 표기이지만 실선과 점선의 차이가 있습니다. 실의가 실선이 아닌 점선임도 기억하여야합니다.

    집포는 마름모로 표기하게 되었습니다.

    관계 설명

    관계(relationship)을 암기 할때는 무엇을 의미하는지, 영문명은 뭔지, 표기는 어떻게 되는지 아는 것이 중요합니다.

    ! 꿀팁 : 점선이 실선인지, 점선이지 화살표와 마름모가 비어 있는지, 차있는지에 따라 2개씩 그룹화할 수 있습니다

    직선 -▷ 일반화(Generaliztion), -▶ 연관관계 (Association)

    • -▷ 일반화는 상위개념으로 화살표, 상속관계 (일삼빈직)
      • 가전제품에는 tv, 에어컨 등이 있다.
    •  -▶ 연관관계는 관련된 기능을 사용할 때 (연삼꽉직)
      • 사람이 휴대폰을 사용한다.

     

    점선 --▷실체화(Realization) 관계,  ▶의존(Dependency)관계

    • --▷ 실체화 관계는 인터페이스를 구현받아 추상 메서드를 오버라이딩하는 것을 의미,다른 객체에게 오퍼레이션을 수행하도록 지정(실삼빈점)
      • 리모콘이라는 인터페이스를 만들고 기기마다 다른 기능을 넣는다.
      • 추상 메서드를 오버라이딩
    • --▶ 의존관계는 연관관계와 유사하지만, 두 클래스 관계가 한 메서드를 실행하는 동안, 아주 짧은 시간 동안만 유지, 한 글캐스의 명세가 바뀌면 다른 클래스에 영향을 줌, 다른 클래스를 오퍼레이션 매개변수로 사용 (의삼꽉점)
      • 컵에는 손잡이가 필요하다.
    더보기

    오버 라이딩이란?

    오버라이딩은 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 동일한 이름의 메서드 다시 정의하는 것

    !잠깐 오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것

    직선 -◇ 집합-집약(Aggregation) 관계, -◆포함(Composition)관계

    • -◇ 집합-집약 관계는 한 객체가 다른 객체를 소유하는 'has a' 관계, 부분 객체의 라이프타임은 독립적, 전체 객체가 사라져도 부분객체는 사라지지 않음 (집마빈실)
      • 전체가 사라지면 모두 사라짐
      • 상위 개념이 사라져도 아래는 살아있음
    • -◆ 집합-합성(포함)관계는 부분 객체가 전체 객체에 속하는 관계로 긴밀한 필수적 관계, 라이프 타임 의존적, 전체 객체가 사라지면 부분객체도 사라짐 (집마빈실)
      • 책상을 부수면 책상다리라는 개념도 사라짐

    관계 표

    관계 설명 화살표 기호
    연관
    (Association)
    사물들 간의 관련된 기능을 사용한다는 것을 나타냅니다.

    서로 다른 클래스 또는 객체 간의 관계를 나타내며, 보통 양방향으로 표현됩니다.

    양 끝의 끝점이 화살표로 표현되어 있습니다.
    -▶
    일반화
    (Generalization)
    클래스 간의 상속 관계를 나타냅니다.

    보다 추상화된 상위 클래스와 이를 상속받는 하위 클래스 간의 관계를 표현합니다.

    화살표가 비어있으며, 상위 클래스를 가리키는 방향으로 표시됩니다.
     -
    집합
    (Aggregation)
    포함되는 관계로, 상위 객체와 하위 객체 간의 포함 관계를 나타냅니다.

    상위 객체가 존재하지 않더라도 하위 객체는 독립적으로 존재할 수 있습니다.

    빈 마름모로 표현되며, 상위 객체에서 하위 객체를 포함하는 것을 의미합니다.
    -◇
    포함
    (Composition)
    집합 관계의 한 종류로, 상위 객체와 하위 객체 간의 강한 종속 관계를 나타냅니다.

    상위 객체가 존재하지 않으면 하위 객체도 존재하지 않습니다.

    꽉 찬 마름모로 표현되며, 상위 객체에서 하위 객체를 포함하고 있음을 나타냅니다.
    -◆
    의존
    (Dependency)
    하나의 클래스나 객체가 다른 클래스나 객체에 종속적인 관계를 나타냅니다.

    한 객체의 변경이 다른 객체에 영향을 줄 수 있음을 의미합니다.

    점선으로 표시되며, 의존하는 객체가 화살표를 향해 표시됩니다.
    --▶
    실체화
    (Realization)
    인터페이스와 구현체 간의 관계를 나타냅니다.

    한 클래스가 인터페이스를 실체화하여 해당 인터페이스의 기능을 구현함을 나타냅니다.

    점선으로 표시되며, 실체화되는 클래스가 화살표를 향해 표시됩니다.
    --▷

    다이어그램

    다이어그램은 UML에서 시스템을 시각적으로 표현하는 데 사용됩니다. 시스템의 구조, 동작 및 상호작용을 다양한 관점에서 보여줍니다.

    각 다이어그램은 특정한 관점에서 시스템을 표현하며, 사물들과 관계를 시각적으로 보여줍니다.

     

    각 다이어그램은 한 번에 보기보단 구조 다이어그램과 행위 다이어그램을 따로 암기해보는 것이 좋습니다.

    아래 내용을 확인해보시기 바랍니다.

    구조 다이어그램

    떠올려야할 장면 : 스타크래프트 컴퓨터와 싸우는 장면

    암기 키워드 : 컵복클패배객

    컴(포넌트)퓨터에게 복(합체)수하려다 클라스가 달라서 패(키지)배(치)했다. 이런 개객(체).

     

     

    [정처기 실기] UML - 구조적 다이어그램을 이해하고 외우는 방법

    다이어그램(Diagram) - 구조(Steuctural)/행위(behavioral) 사물하고 관계를 도형으로 표현하는 것 앞서 설명한 연관관계에 대한 다이어그램이다. GPT가 그려준건데, 양쪽 화살표가 되어있어 틀린 것 같다.

    shareknowledge-top.tistory.com

     

     

    행위 다이어그램

    떠올려야할 장면 : 영화 나우유시미를 평가하는 장면

    암기 키워드 : 유시상타상커활

    나우 유시미를 보고 이건 상타야 하는 영화인데 생각했다.

    받는게 당연하다고 말하고 싶어서 뮤니티를 발하게 방문했었다.

     

    [정처기 실기] UML- 행위 다이어그램(Behavioral Diagram) 유스케이스, 시퀀스,커뮤니케이션, 상태, 활동

    행위 다이어그램(Behavioral Diagram) 더보기 나우 유시미를 보고 이건 상타야 하는 영화인데 생각했다. 상받는게 당연하다고 말하고 싶어서 커뮤니티를 활발하게 방문했었다. 유스케이스 다이어그

    shareknowledge-top.tistory.com

     

    주요 다이어그램

    정보처리기사 시험에 자주 등장하는 다이어그램들이 있습니다. 위에선 단순히 다이어그램에 대해 암기 했다면, 각 다이어그램 중 상세 내용까지 알아야하는 다이어그램들을 정리해보겠습니다.

    클래스 다어그램 - 구조다이어그램

    클래스 다어그램

    접근 제한자 설명

    래스 다이어그램에서 쓰이는 접근제한자에 대한 내용은 꼭 한번 보고 지나가셔야합니다. -, +까지는 쉽고, #이 protected로 상속된 패키지에서 접근할 수 있다는 것을 기억하세요.

    접근제한자는 java에 적용되는 부분입니다.

    접근 제한자 멤버 설명
    - privateAttribute 해당 클래스 내에서만 접근 가능
    # protectedMethod() 상속, 동일 패키지 내에서만 접근 가능
    + publicMethod() 어디서든 접근 가능

     

    주요 다이어그램

    유스클래스 다이어그램 - 행위 다이어그램

    시스템과 사용자의 상호작용을 다이어그램으로 표현.

    사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 고나련한 외부 요소를 보여준다.

    요구사항을 정의하고 세부 기능을 분석 (4+1 뷰)

     

    유스케이스 다이어그램 구성요소

    액터(Actor)

    유스케이스 액터(Actor)

    시스템 외부에 있고 시스템과 상호작용을 하는 시스템 혹은 사람

    시스템(System)

    유스케이스 시스템(System)

    만들고자하는 시스템의 명칭 

    유스케이스(Use Case)

    유스케이스 Usecase

    사용자 입장에서 바라본 기능

     

    유스케이스 내 관계

    유스케이스만의 관계가 있는데, 이 개념은 앞서 배운 관계들과 혼동을 주기 위해 출제할 확률이 높습니다.

    연관(Association) 관계

    예시 1. 사용자가 로그인한다.

    위와 같이 actor 사용자가 로그인한다라고 표현할 수 있습니다. 서로 상호작용하는 노드끼리 연결했다고 볼 수 있습니다.

    화살표없이 실선으로 연결되어 있는 관계가 Association(연관) 관계입니다.

    포함(incluse) 관계

    앞서 uml의 큰 주제에서 포함관계는 -◆ 집합-합성(포함)관계로 표현되었지만, USECASE에서는 점선과 화살표를 사용합니다.

    반드시 실행되어야하는 기능을 표현합니다.

    반드시 해야하는 쪽이 화살표를 받는 다는 것을 기억해야합니다. 

    확장(Extend) 관계

    특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우.

    해도 되고 안해도 되는 기능입니다.

    로그인 후에 구독을해도되고 되면 위와 같이 해당됩니다. 

    (가능하시다면 구독해주시면 참 행복한 하루가 될 것 같습니다)

    일반화 관계(Generalization)

    유사한 유스케이스 또는 액터를 모아 추상화한 케이스

     -▷로 표현했던 일반화 관계와 동일합니다.

     

    시퀀스 다이어그램

    객체 간의 상호작용 메시지 시퀀스를 시간 흐름에 따라 나타내는 다이어그램

     

    객체와 생명선(Object and Lifeline)

    객체가 태어나서 사라지는 시간

    활성화 박스

    생명선상에서 기다란 직사각형으로 표현

    현재 객체가 어떤 활동을 하고 있는 지 의미

    메시지

    인스턴스 간 주고 받은 데이터

     

    동기메시지 : 전달 후에 반응이 올때 까지 대기

    비동기 메시지 : 전달 후에 다른 활동 가능

    반환 메시지 : 반환해주는 메시지

    자체메시지 : 자신이 자신을 호출하는 메시지

    728x90
    반응형

    댓글