1과목. 소프트웨어 설계 > 1장. 요구사항 확인 > UML(Unified Modeling Language) : UML 구성 요소, UML 다이어그램, UML 확장 모델, 구조(정적) 다이어그램, 유스케이스 다이어그램, 클래스 다이어그램, 행위(동적) 다이어그램
- UML의 개요
- UML의 개념
- 시스템 개발 과정에서 개발자와 고객, 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
- Rumbaugh, Booch, Jacobson 등의 객체지향 방법론의 장점 통합
- UML의 기능
- 시스템의 구조를 표현하는 6개의 구조 다이어그램, 시스템의 동작을 표현하는 7개의 행위 다이어그램 작성
- 다이어그램을 통해 사물과 사물 간의 관계를 용도에 맞게 표현
- UML의 개념
- UML의 구성 요소
- 사물(Things)
- 사물의 개념
- UML 모델을 구성하는 가장 중요한 기본 요소
- 다이어그램 안에서 관계가 형성될 수 있는 대상
- 사물의 종류
- 구조 사물(Structural Things)
- 시스템의 개념적, 물리적 요소 표현
- 관련 요소 : 클래스, 유스케이스, 컴포넌트, 노드 등
- 행동 사물(Behavioral Things)
- 시간과 공간에 따른 요소들의 행위 표현
- 관련 요소 : 상호 작용, 상태 머신 등
- 그룹 사물(Grouping Things)
- 요소들을 그룹으로 묶어서 표현
- 관련 요소 : 패키지
- 주해 사물(Annotation Things)
- 부가적인 설명이나 제약 조건 등을 표현
- 관련 요소 : 노트
- 구조 사물(Structural Things)
- 사물의 개념
- 관계(Relationships)
- 관계의 개념
- 사물과 사물 사이의 연관성을 표현하는 것
- 관계의 종류
- 연관(Association)
- 클래스들이 상호 메시지를 주고 받는 관계를 표현
- 한 클래스가 다른 클래스와 영속적인 연관성을 맺을 때 사용
- 표기법 : 실선(양방향), 실선 화살표(단방향,방향 표현)
- 다중도 : 연관에 참여하는 객체의 개수, 선 위에 표기
- 1 : 1개의 객체 연관
- n : n개의 객체가 연관
- 0_1 : 연관된 객체가 없거나 1개만 존재
- 0..* 또는 * : 연관된 객체가 없거나 다수
- 1..* : 연관된 객체가 적어도 1개 이상
- n..* : 연관된 객체가 적어도 n개 이상
- n..m : 연관된 객체가 최소 n개에서 최대 m개
- 코드 : Class Circle는 내부에 Class Point를 생성하여 행위 호출
//양방향 public Class Point { private Circle[] circleOBJ; } public Class Circle { private Point[] pointOBJ; } //단방향 public Class Poin { } public Class Circle { private Point[] pointOBJ; }
- 집합연관(Aggregation), 집약
- 연관 관계의 특수한 형태, 클래스들 사이의 전체와 부분의 관계를 나타냄
- 하나의 사물이 다른 사물에 포함되어 있는 관계 표현
- 포함하는 쪽(전체, Whole)과 포함되는 쪽(부분,Part)은 서로 독립적 : 전체가 사라져도 부분은 계속 생존할 수 있음
- 표기법 : 속이 빈 마름모 - 포함되는 쪽(부분,Part)에서 포함하는 쪽(전체,Whole)으로 속이 빈 마름모를 연결하여 표현
- 코드 : Class A는 Class B를 Vector 형태로 많이 소유할 수 있음
public Class A { Private Vector <B> vectorB; } Class B {}
- 포함(Compostition), 복합연관, 합성
- 집합 관계의 특수한 형태
- 포함하는 사물의 변화가 포함되는 사물에 영향을 미치는 관계를 표현
- 포함하는 쪽과 포함되는 쪽은 서로 독립될 수 없고 생명주기를 함게함 : 전체가 사라지면 부분 객체도 사라짐
- 표기법 : 속이 찬 마름모 - 포함되는 쪽에서 포함하는 쪽으로 속이 채워진 마름모를 연결하여 표현
- 코드
public Class A { Private Vector <B> vectorB; vectorB.close(); return; } Class B {}
- 일반화(Generalization) : IS-A
- 객체지향 개념에서 상속 관계
- UML에서는 일반화 관계로 모델링
- 한 클래스가 다른 클래스를 포함하는 상위 개념
- 상위와 하위 관계를 의미하며 하위는 상위의 공통점을 상속
- 클래스를 상속받아 자식 클래스에서 사용
- 표기법 : 속이 빈 화살표
- 코드 : B Class는 A Class의 속성과 행위를 상속 받음
Class A { } Class B extends A { }
- 의존(Dependency)
- 연관 관계의 특수한 형태 : 한 클래스가 다른 클래스에 의존적인 연관 관계를 나타낼 때 사용
- 연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계 표현
- 하나의 사물과 다른 사물이 소유 관계는 아니지만 사물의 변화가 다른 사물에도 영향을 미치는 관계
- 일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매개 변수로 사용하는 경우에 나타나는 관계
- 표기법 : 점선 화살표 - 영향을 주는 사물(사용자)이 영향을 받는 사물(제공자) 쪽으로 점선 화살표를 연결하여 표현
- 코드 : Class A는 Class VO에 의존 관계, 만일 Class VO의 속성이 바뀌면 Class A 역시 행위 수정이 필요
public Class VO { int age; String name; public void setAge(int Age) { this.age = Age; } public void setName(String Name) { this.name = Name } } public Class A { VO valueOBj = new VO(); public void test() { valueObj.setAge(6); valueObj.setName("test"); } }
- 실체화(Realization)
- 하나의 인터페이스가 다른 클래스를 구체적으로 실체화 하는 관계
- 사물이 할 수 있거나 해야하는 기능(오퍼레이션, 인터페이스)으로 서로를 그룹화할 수 있는 관계를 표현
- 한 사물이 다른 사물에게 오퍼레이션을 수행하도록 지정하는 의미적 관계
- 인터페이스 클래스를 다른 클래스가 구현해주는 관계가 좋은 관계
- 표기법 : 빈삼각형 + 점선 - 사물에서 기능 쪽으로 속이 빈 점선 화살표를 연결하여 표현
- 코드
Public Class interface A { } Public Class B implements A { }
- 연관(Association)
- 관계의 개념
- 다이어그램(Diagram)
- 다이어그램의 개념
- 사물과 관계를 도형으로 표현
- 다이어그램의 기능
- 시스템을 가시화한 뷰를 제공함으로써 의사소통에 도움을 줌
- 다이어그램의 종류
- 구조(정적) 다이어그램(Structural Diagram)
- 클래스(Class)
- 클래스와 클래스가 가지는 속성, 클래스 사이의 관계 표현
- 시스템의 구조를 파악하고 구조상의 문제점 도출
- 객체(Object)
- 인스턴스(클래스에 속한 객체)를 특정 시점의 객체와 객체 사이의 관계로 표현
- 관계 있는 모든 인스턴스를 표현
- 럼바우 객체 지향 분석 기법에서 객체 모델링에 활용
- 컴포넌트(Component)
- 실제 구현 모듈인 컴포넌트 간의 관계나 인터페이스 표현, 코드의 물리적 구조 표현
- 논리적 클래스, 클래스 자신의 구현에 대한 정보를 포함하고 있으며 실질적인 프로그래밍 작업에 사용됨
- 구현 단계에서 사용되는 다이어그램
- 배치(Deployment)
- 결과물, 프로세스, 컴포넌트 등의 물리적 요소들의 위치 표현, 하드웨어와 소프트웨어 간의 물리적 구조 표현
- 컴포넌트 사이의 종속성 표현
- 노드와 의사소통(통신) 경로로 표현
- 구현 단계에서 사용되는 다이어그램
- 복합체 구조(Composite Structure)
- 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
- 전체 클래스 안에 각 컴포넌트를 표현함으로서 클래스 내부 구조 파악에 용이
- 패키지(Package)
- 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현
- 시스템 계층 구조 표현을 통해 클래스들로 이루어진 패키지와 그들 간의 의존 관계를 보여줌
- 클래스(Class)
- 행위(동적) 다이어그램(Behavicral Diagram)
- 유스케이스(Use Case)
- 사용자의 입장에서 본 시스템의 행동을 표현하고 시스템의 기능적인 요구를 정리
- 사용자의 요구 분석, 기능 모델링 작업에 사용
- 사용자(Actor)와 사용 사례(Use Case)로 구성 : 사용 사례 간은 여러 형태의 관계로 이루어짐
- 상태(State)
- 클래스의 객체가 가질 수 있는 모든 가능한 상태와 상태 간의 전이 표현
- 진입 조건, 탈출 조건, 상태 전이에 필요한 사건 등 자세한 사항 기술
- 설계 단계에서 클래스 객체의 동적인 행동 방식을 표현하는데 사용
- 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현
- 이벤트에 의한 객체들의 상태 변화를 그림으로 표현
- 럼바우 객체지향 분석 기법에서 동적 모델링에 활용
- 활동(Activity)
- 행위의 순서적 흐름 표시
- 순서도나 병렬적인 처리를 요하는 행위를 표현할 때 사용
- 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현
- 오퍼레이션이나 처리 과정이 수행되는 동안 일어나는 일들을 단계적으로 표현
- 상호작용 다이어그램(Interaction Diagram)
- 순차(시퀀스, Sequence)
- 객체와 객체 간 상호 작용을 메시지 프름으로 표시
- 상호 작용하는 시스템이나 객체들이 주고 받는 메시지를 표현
- 오브젝트 사이에 메시지를 보내는 시간 또는 순서를 보여주기 위해 사용
- 커뮤니케이션(Communication)
- 상호작용에 참여하는 객체/컴포넌트 간의 관계를 명시적으로 표현
- 순차 다이어그램과 같이 동작에 참여하는 객체들이 주고 받는 메시지를 표현하는데, 메시지 뿐만 아니라 객체들 간의 연관까지 표현
- 상호작용 개요(Interaction Overview)
- Activity + Sequence
- 상호작용 다이어그램 간의 제어 흐름을 표현
- 타이밍(Timing)
- 객체 상태 변화와 시간 제약을 명시적으로 표현
- 인스턴스 간의 상태 전이와 상호 작용을 시간 제약으로 표현
- 순차(시퀀스, Sequence)
- 유스케이스(Use Case)
- 구조(정적) 다이어그램(Structural Diagram)
- 다이어그램의 개념
- 주요 다이어그램
- 유스케이스 다이어그램
- 유스케이스 다이어그램의 개념
- 개발될 시스템과 관련된 외부 요소들, 사용자와 다른 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현한 것
- 유스케이스 다이어그램의 기능
- 외부 요소와 시스템 간의 상호 작용 확인 가능
- 사용자의 요구사항을 분석하기 위한 도구로 사용
- 시스템의 범위를 파악할 수 있음
- 유스케이스 다이어그램의 구성 요소
- 시스템(System) / 시스템 범위(System Scope)
- 시스템 내부에서 수행되는 기능들을 외부 시스템과 구분하기 위한 표현
- 시스템 내부의 유스케이스들을 사각형으로 묶어 시스템의 범위 표현 : 해당 네모 박스 안이 유스케이스의 개발 범위임
- 액터(Actor)
- 시스템과 상호 작용을 하는 모든 외부 요소
- 사람이나 외부 시스템을 의미
- 주액터 : 시스템을 사용함으로써 이득을 얻는 대상 (주로 사람)
- 부액터 : 시스템 액터, 주액터의 목적 달성을 위해 시스템에 서비스를 제공하는 외부 시스템, 조직, 기관
- 유스케이스(Use Case)
- 사용자가 보는 관점에서 시스템이 액터에게 제공하는 서비스, 기능을 표현한 것
- 관계(Relationship)
- 유스케이스 다이어그램에서의 관계는 액터와 유스케이스, 유스케이스와 유스케이스 사이에서 나타날 수 있음
- 연관 관계, 포함 관계, 확장 관계, 일반화 관계를 표현할 수 있음
- 포함 관계 <<include>> : 두 개 이상의 유스케이스에 공통적으로 적용되는 기능을 별도로 분리하여 새로운 유스케이스로 만든 경우에 둘 사이 관계를 의미 (원래의 유스케이스 --(점선화살표)--> 새롭게 만든 유스케이스)
- 확장 관계 <<extends>> : 특정 조건에 부합되어 유스케이스의 기능이 확장될 때 원래의 유스케이스와 확장된 유스케이스와의 관계 (원래의 유스케이스 <--(점선 화살표)-- 확장될 유스케이스)
- 시스템(System) / 시스템 범위(System Scope)
- 유스케이스 구현에 필요한 분석 클래스
- 분석 클래스의 사용
- 하나의 유스케이스 실현을 위해서 3개 이상의 클래스가 역할 기준으로 도출되어야 함
- 유스케이스 별로 실현에 필요한 클래스가 추적 가능해야 클래스 누락 여부를 확인할 수 있음
- 유스케이스 별로 도출된 분석 클래스들이 역할 기준으로 경계, 엔터티, 제어 클래스가 도출되어 스테레오 타입으로 표시되었는지 확인
- 분석 클래스의 종류
- 엔터티 클래스 <<entity>> : 시스템에서 계속 추적해야 할 자료가 들어 있는 클래스
- 경계 클래스 <<boundary>> : 주로 시스템 외부의 액터와 상호작용하는 클래스, 사용자 인터페이스 제어, 액터와 연결된 시스템 인터페이스 표현, 액터로부터 정보를 수집하여 엔터티 객체나 제어 객체가 사용할 수 있는 형태로 변경
- 제어 클래스 <<control>> : 경계 클래스와 엔터티 클래스 사이의 중간 역할, 사용 사례 초기에 생성되고 끝까지 존재, 경계 클래스로부터 정보를 받아 엔터티 클래스에 전달
- 엔터티 클래스 <<entity>> : 시스템에서 계속 추적해야 할 자료가 들어 있는 클래스
- 분석 클래스의 사용
- 유스케이스 다이어그램의 개념
- 클래스 다이어그램
- 클래스 다이어그램의 개념
- 시스템을 구성하는 클래스, 클래스의 특성(속성, 오퍼레이션), 특성에 대한 제약 조건, 클래스 사이의 관계를 표현한 것
- 객체의 멤버, 연산(메서드)의 구성과 객체들과의 연관, 의존, 상속 등의 정적인 관계를 나타내는 다이어그램
- 객체지향 모델링에서 가장 자주 사용하는 방법
- 클래스 다이어그램의 기능
- 시스템을 구성하는 요소에 대해 이해할 수 있는 구조적 다이어그램
- 시스템 구성 요소를 문서화하는데 사용
- 코딩에 필요한 객체의 속성, 함수 등의 정보를 잘 표현하고 있어 시스템을 모델링하는데 자주 사용
- 클래스 다이어그램의 표현 방식
- 인터페이스 / 추상 클래스 : 이름 부분이 이탤릭체
- 멤버변수(hp)가 있으면 인터페이스가 아님
- 클래스 다이어그램의 구성 요소
- 클래스
- 각각의 객체들이 갖는 속성(상태, 정보)과 오퍼레이션(동작, 함수, 메소드) 표현
- 일반적으로 3개의 구획으로 나눠 클래스의 이름, 속성, 오퍼레이션 표기
- 제약조건
- 속성에 입력될 값에 대한 제약조건이나 오퍼레이션 수행 전후에 지정해야 할 조건이 있다면 이를 적음
- 관계
- 클래스와 클래스 사이의 연관성 표현
- 관계의 종류 : 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계
- 클래스
- 클래스 다이어그램의 개념
- 순차 다이어그램 (시퀀스 다이어그램)
- 순차 다이어그램의 개념
- 시스템이나 객체들이 메시지를 주고 받으며 시간의 흐름에 따라 상호 작용하는 과정을 액터, 객체, 메시지 등의 요소를 사용하여 그림으로 표현한 것
- 순차 다이어그램의 기능
- 문제해결을 위한 객체를 정의하고 객체 간 상호작용 메시지를 흐름으로 나타냄
- 시스템이나 객체들의 상호 작용 과정에서 주고 받는 메시지 표현
- 순차 다이어그램을 통해 각 동작에 참여하는 시스템이나 객체들의 수행 기간을 확인할 수 있음 : 순차 다이어그램의 수직 방향이 시간의 흐름을 나타냄
- 클래스 내부 객체들을 기본 단위로 하여 그들의 상호작용, 오퍼레이션을 표현
- 주로 기능 모델링에서 작성한 유스케이스 명세서를 하나의 표현 범위로 하지만, 하나의 클래스에 포함된 오퍼레이션을 하나의 범위로 표현하기도 함
- 순차 다이어그램의 구성 요소
- 액터(Actor) : 시스템으로부터 서비스를 요청받는 외부요소, 사람, 외부 시스템 등
- 객체(Object) : 메시지를 주고 받는 주체
- 생명선(Lifeline) : 객체가 메모리에 존재하는 기간, 객체 아래 쪽에 점선을 그어 표현
- 실행 상자(Active Box) : 객체가 메시지를 주고받으며 구동되고 있음을 표현
- 메시지(Message) : 객체가 상호작용을 위해 주고 받는 메시지
- 동기 메시지 : 요청 후 응답 대기
- 비동기 메시지 : 요청만 표시
- 자체 메시지 : 객체 자신에게 요청
- 반환 : 응답(회신) 메시지
- 회귀 메시지(Reply, Return Message) : 객체가 처리한 반환값이 담긴 메시지
- 제어 블록(Loop) : 반복 처리되는 영역 표시
- 순차 다이어그램의 개념
- 활동 다이어그램
- 활동 다이어그램의 노드의 종류
- Action / Activity : 어떤 Action이나 Action의 집합으로 동사, 명사로 명명
- Object Node : 한 Activity에서 다른 Activity로 이어지는 정보의 흐름을 나타냄
- Control Flow : 실행 순서를 나타내는 화살표
- Object Flow : Flow of Object
- Initial Node : 다이어그램의 시작점, 활동들의 시작점
- Final Node : 다이어그램의 종료점, Activity Flow들이 모두 끝나는 지점
- Decision Node : 분기점
- Merge Node : Decision Path들을 하나로 모으는 노드, Decision Node로 나눠진 Control flow를 다시 합침
- Fork Node : 평행적으로 수행되는 Flow를 나누는 노드
- Join Node : Fork Node로 나눠진 Control Flow를 다시 하나로 합치는 노드
- 활동 다이어그램의 노드의 종류
- 유스케이스 다이어그램
- 사물(Things)
- UML 확장 모델 : 스테레오 타입(Stereotype)
- UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하기 위해 사용
- 길러멧(겹화살괄호<<>>) 사이에 표현할 형태를 기술
- 스테레오 타입 표현 방법
- <<incluse>> : 연결된 다른 UML 요소에 대해 포함 관계에 있는 경우
- <<extend>> : 연결된 다른 UML 요소에 대해 확장 관계에 있는 경우
- <<interface>> : 인터페이스를 정의하는 경우
- <<exception>> : 예외를 정의하는 경우
- <<constructor>> : 생성자 역할을 수행하는 경우
800제-3번. 객체지향 기법에서 클래스들 사이의 '부분-전체(part-whole)'관계 또는 '부분(is-a-part-of)'의 관계로 설명되는 연관성을 나타내는 용어는?
① 일반화
② 추상화
③ 캡슐화
④ 집단화
정답 : 4
800제-106번. UML에서 시퀀스 다이어그램의 구성 항목에 해당하지 않는 것은?
① 생명선
② 실행
③ 확장
④ 메시지
정답 :3
800제-313번. 기본 유스케이스 수행 시 특별한 조건을 만족할 때 수행하는 유스케이스는?
① 연관
② 확장
③ 선택
④ 특화
정답 :2
800제-319번. UML 다이어그램 중 시스템 내 클래스의 정적 구조를 표현하고 클래스와 클래스, 클래스의 속성 사이의 관계를 나타내는 것은?
① Activity Diagram
② Model Diagram
③ State Diagram
④ Class Diagram
정답 :4
800제-415번. UML 모델에서 한 객체가 다른 객체에게 오퍼레이션을 수행하도록 지정하는 의미적 관계로 옳은 것은?
① Dependency
② Realization
③ Generalization
④ Association
정답 : 2
800제-508번. 클래스 다이어그램의 요소로 다음 설명에 해당하는 용어는?
<설명>
- 클래스의 동작을 의미한다.
- 클래스에 속하는 객체에 대하여 적용될 메서드를 정의한 것이다.
- UML에서는 동작에 대한 인터페이스를 지칭한다고 볼 수 있다.
① Instance
② Operation
③ Item
④ Hiding
정답 : 1
800제-516번. 순차 다이어그램(Sequence Diagram)과 관련된 설명으로 틀린 것은?
① 객체들의 상호 작용을 나타내기 위해 사용한다.
② 시간의 흐름에 따라 객체들이 주고 받는 메시지의 전달 과정을 강조한다.
③ 동적 다이어그램보다는 정적 다이어그램에 가깝다.
④ 교류 다이어그램(Interaction Diagram)의 한 종류로 볼 수 있다.
정답 : 3
800제-703번. UML 모델링을 위해 사용되는 다이어그램에 대한 설명이다. 해당 다이어그램으로 가장 적절한 것은?
<설명>
- 유즈케이스에서 흐름을 모델링하기 위해 사용된다.
- 객체의 연산에 대한 플로우차트로 활용될 수 있다.
- 비즈니스 프로세스나 작업 흐름을 모델링할 수 있다.
① 시퀀스 다이어그램(sequence diagram)
② 액티비티 다이어그램(activity diagram)
③ 상태 다이어그램(state diagram)
④ 협력 다이어그램(collaboration diagram)
정답 : 2
1000제-22번.
①
②
③
④
정답 :
1000제-44번.
①
②
③
④
정답 :
1000제-46번.
①
②
③
④
정답 :
1000제-49번.
①
②
③
④
정답 :
1000제-50번.
①
②
③
④
정답 :
1000제-52번.
①
②
③
④
정답 :
1000제-53번.
①
②
③
④
정답 :
1000제-54번.
①
②
③
④
정답 :
1000제-66번.
①
②
③
④
정답 :
1000제-67번.
①
②
③
④
정답 :
1000제-68번.
①
②
③
④
정답 :
1000제-69번.
①
②
③
④
정답 :
1000제-70번.
①
②
③
④
정답 :
1000제-71번.
①
②
③
④
정답 :
1000제-72번.
①
②
③
④
정답 :
1000제-156번.
①
②
③
④
정답 :
1000제-213번.
①
②
③
④
정답 :
1000제-214번.
①
②
③
④
정답 :
1000제-813번.
①
②
③
④
정답 :
1000제-903번.
①
②
③
④
정답 :
'정보처리기사 > 오답정리' 카테고리의 다른 글
[오답정리] 소프트웨어 설계 구조 (0) | 2025.04.29 |
---|---|
[오답정리] 디자인 패턴(Design Pattern) (0) | 2025.04.29 |
[오답정리] HIPO(시스템 분석 도구) (0) | 2025.04.28 |
[오답정리] Flynn의 컴퓨터 시스템 분류 제안(Flynn's classification) (0) | 2025.04.28 |
[오답정리] DBC(계약에 의한 설계, Design By Contract) (0) | 2025.04.28 |