비개발자의 개발 공부 - UML편(정보처리기사 실기- UML을 이해하고 외우는 방법)
목차
UML은 정처기 실기에 자주 등장하는 문제이다.
큰 개념은 안나오고, 세부 내용들이 나온다.
아래 내용들은 꼭 영어 단어와 함께 천천히 읽어봐야한다.
잡담
교육에서는 매우 안좋은 방식이지만, 이해했는지에 대한 질문을 갑자기 영어 단어로 물어본다.
이건 이해가 아닌 암기했는지 물어보는 방식이기 때문에 교육 장면에서 분명 좋은 방향은 아니다.
UML은 무엇인가?
Unified Modeling Language의 약자이다.
한글로 직역하면, 표준화된 모델링 언어이다.
그럼, 무엇을, 왜 표준화 했을까?
왜 UML을 쓰는가?
소프트웨어, 웹(사실은 웹 서비스도 소프트웨어 속한다.) 등에서 JAVA라는 프로그램 언어를 쓴다.
이 언어는 객체 지향 언어 중 하나이다.
객체 지향 언어에 대해선 나중에 상세히 말하기로 하고, 짧게 설명하면, 프로그래밍을 객체 단위로 해서 재사용성을 높이고, 생산력을 높일 수 있는 언어이다.
장점이야 너무 많겠지만, 잘 모르겠다. 나는 소프트웨어를 만들어 본 적이 없어 쉽게 이해되는 부분은 아니다.
UML을 이해하는 것에 있어 객체 지향 언어를 몰라도 크게 문제는 없다.
특정 언어를 써서 프로그래밍을 했다고 생각해보자.
내가 썼지만 다른 사람에게 보여주는 순간이 생길 것이다.
만약, 서로 다른 식으로 설명하면 이해하는 데 문제가 생길 수 있을 것이다.
그러므로. 모두 다 동일한 언어를 쓰자는 의미에서 UML을 쓰게 된 것이다.
이 말을 한 줄로 줄이면, 다음과 같다.
UML은 표준화된 객체 지향 모델링 언어다.
표준화는 일상과 업무 상에서 매우 중요한 언어이다.
일정하고 신뢰롭게 흘러가게 할 수 있도록 변화를 가진다는 말이기 때문이다.
그럼, 모델링 언어라는 건 무슨 의미인가?
소프트웨어를 개발하는 것을 건축으로 친다면 도면을 그리는 일을 모델링이라고 할 수 있다.
어떻게 만들 건지, 무엇을 만들건지 기존에 규정하게 하기 위해 작성하는 것이라고 생각할 수 있다.
UML이 생성 되기 까지 거쳐간 언어가 많고 그 작성자들은 다음과 같다. 그냥 아 저것들의 장점을 통합했구나 하면서 보고 넘어가자
객체 지향 모델링 언어를 만든 분들 |
Rumbaugh(OMT) |
Booch |
Jacobson |
위의 분들이 만든 객체 지향 모델링 언어를 OMG(Object Management Group)에서 표준으로 지정했다고 한다.
UML의 구성 요소
개인적으로는 GoF 디자인 패턴과 갠시히 헷갈리더라
디자인 패턴은 생성, 구조, 행동이다.
공통점은 객체 지향에서 쓰이는 개념들이다.
차이점은 UML은 일종의 flow chart 처럼 프로그램을 어떻게 만들거냐에 대한 것이고,
디자인 패턴은 이런 패턴들을 가지고 문제를 해결해봐라고 특정 패턴을 나열한 것이다.
개발자들은 크게 신경 쓰지 않고 개발하는데, 시험볼땐 외워야만 하는게 너무 슬프고 하기 싫다는 생각이든다.
물론, 난 비개발자니까 시험만 잘보면 장땡 (feat. 정처기 삼수생)
사물(Things), 관계(Relationships), 다이어그램(diagram)[정처기 필기에 이거 물어볼 수도 있다.]
사물(Things)
다이어그램(diagram) 안에서 관계가 형성될 수 있는 대상들.
즉, 혼자 쓰이는 경우는 거의 없고 다이어그램으로 작성될 때, 하나의 개념으로서 존재하는 아이다.
구조사물(Structure Things)
시스템의 개념적, 물리적요소를 표현하기 위한 사물
표현하는 내용 : Class, Use Case, Component, Node
행위사물(Behavioral Things) - 행위 다이어그램과 헷갈리지 말자.
시간과 공간에 따른 요소들의 행위를 표현
표현하는 내용 : Interation, State Machine
그룹사물(Group Things)
요소들을 그룹으로 묶어서 표현
표현하는 내용 : Pakage
주해사물(Annotation Things)
- 잠깐 영어 공부 Annotaion : 주석, 주해의 뜻을 가지고 있으며, 문서 작성시 부가설명을 하는 것
- 잠깐 국어 공부 주해 : 본문의 뜻을 알기 쉽게 풀이함. 또는 그런 글.
위 단어의 뜻과 같이 부가적인 설명이나 제약 조건 등을 표현
표현하는 내용 : NOTE
관계(Relationships)
연관, 집합, 포함, 일반화, 의존, 실체화
연관관계(Association)
연관 관계는 사물이 서로 연결되어 있는 것을 말함
실선으로 이어져 있음
화살표가 한개임 - 하나의 사물이 다른 사물에 영향을 미치고 있을 때.
만약, 서로 영향을 미치면?
화살표 없이 실선으로만!
잠깐! 여기에서 이 관계도에서 하나의 내용을 추가해야함
그건 바로 다중도
다중도란? 얼마나 연관되어 있는지, 몇개나 연관되어 있는지 표현하는 것.
다중도 표기 | 다중도 의미 |
1 | 1개의 객체가 연관되어 있음 |
n | n개의 객체가 연관되어 있음 |
0..1 | 연관된 객체가 없거나 1개만 만족함 |
0..* 또는 (그냥)* | 연관된 객체가 없거나 다수일 수 있음 |
1..* | 연관된 객체가 적어도 1개 이상임 |
n..* | 연관된 객체가 적어도 n개 이상임 |
n..m | 연관된 객체가 적어도 n개에서 최대 m개임 |
위 내용을 보면 다중도에서 *은 다수를 말하고
.. 은 또는을 말한다.
n과 m은 실제로는 2,3,4와 같은 정수가 될 수 있다.
연관관계와 다중도를 같이 작성하면 다음과 같다.
주의해야할 점은, 사물이 다른 사물과 얼마나 연관이 있는지는 사물로부터 시작되는 부분이 아니라, 다른 사물과 닿았을 때에 표기한다.
화살표가 있다면 화살표 앞에 표기하게 된다.
위 내용을 보면 큐넷은 여러명의 수험생과 연관이 있다는 말이 된다.
그러니까, 제발 서버 관리 좀 잘해서 원하는 곳에서 시험 볼 수 있게 해줬으면 좋겠다.
돈 내고 아무대서나 봐야하는 설움이 언제쯤 끝날지...
집합관계(Aggregation) - 빈 마름모 / 사물이 사물을 포함 + 독립적
집합관계는 포함되어 있다는 것을 기억하는 게 좋다.
하나의 사물이 다른 사물을 포함하고 있다는 뜻인데, 이게 실제로 완전히 포함되었다라고 느끼기보단,
컴퓨터 구성품중 CPU가 본체(혹은 메인보드 위에) 속에 포함되어 있다와 같이 서로 다르지만, 함께하고 상위 사물이 있다고 느끼면 좋을 것으로 생각된다.
이 말을 책과 같이 하면, "포함하는 쪽과 포함되는 쪽은 서로 독립 적이다."
표현 방법은 마름모
포함관계(Composition) - 꽉찬 마름모 / 사물이 사물을 포함 + 종속적
집합관계의 특이한 형태
왜 이걸 포함관계라고 불러서, 연관관계랑 헷갈리게 하는지 ....
Comsition의 뜻 중 구성, 합성, 조립이 있어, 합성 관계라고 생각하는 게 조금 더 쉬우려나 싶다.
아까 집합관계 설명에서 서로 독립적이라고 말했었다.
즉, 메인보드위의 CPU는 떼어서 다른 곳에 쓸 수 있고, 메인보드 위에 다른 CPU를 꽂아도 된다.
서로 반드시 대응되는 관계는 아닌 것이다. (물론, 메인보드와 CPU가 다수일 때, 알맞지 않는 예시라도 이해해주시길 바랍니다.)
그럼 포함관계는 뭐가 다른가?
서로 독립되있지 않음이 다르다.
이를 책에서 말하길, 초함하는 사물 변화가 포함되는 사물에게 영향을 미치는 관계
이건 스마트폰과 내 지문으로 예시를 들어야한다.
스마트폰을 열 수 있는 방법은 많다. 그 중 지문도 있다.
지문이 바뀐다면 스마트폰을 열 수 없다.
사실, 반대로 스마트폰이 고장나도 지문이 먹히지 않는다.
그렇다면, 스마트폰을 열 수 있는 여러 방법 중 지문은 스마트폰 잠금해체 방법으로써 독립적일 수 없다.
(스마트폰이 지문을 포함하는 게 아니라, 스마트폰을 열 수 있는 방법 중 지문이 포함되었다라는 말입니다. 더 좋은 예시들이 있다면 언제든 댓글 주세요.)
이를 책과 같이 말하면,
포함하는 쪽과 포함되는 부분은 서로 독립될 수 없고 생명주기를 함께 한다.
포함되는 쪽에서 포함하는 쪽으로 속이 채워진 마름모를 연결하여 표현한다.
일반화관계 (Generaliztion) - 뭐가 더 추상적이냐 / 속빈 화살표 (연관관계와 유사 주의)
일반화 관계는 누가더 일반적인지를 표현하는 것이다.
일반적이다라는 말이 확 와 닿지 않을 수 있다.
상위 카테고리와 하위 카테고리가 있을 때, 상위 카테고리가 더 일반적인 것이라 보면 된다.예를 들면, 카누, 스타벅스 아메리카노, 메가커피 아메리카노는 모두 커피이다.커피가 더 일반적인 사물임을 표현하기 위해 일반화 관계를 쓰는 것이라 생각하면 좋을 것 같다.
이를 책에서 표현하길,
하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
더 일반적인 개념을 부모라 부르고, 더 구체적인 개념을 자식이라고 부른다.구체적의 반대는 추상적이다."중식이 먹고 싶다" - 추상적"짜장면이 먹고 싶다"- 구체적
의존관계(Dependency) - 소유관계는 아니지만, 영향을 미침 / 점선 화살표로 표현.
하나의 사물이 변하면 다른 사물이 영향을 받는 관계
서로 연관은 있는데, 필요에 의해서 서로에게 영향을 주는 관계를 말한다.
예를 들면, 할인 등급과 할인률의 관계가 있다.
쇼핑몰에서 물건을 많이 사서 회원 등급이 올라가면 할인률이 올라간다.
회원등급이 할인률을 변화시킨 것이다.
이벤트가 열려 할인률이 변해도 회원등급은 변하지 않는다.
하지만, 회원등급이 바뀌면 할인률도 바뀌게 된다.
점선으로 표현한다.
실체화관계(Realiation)
기능을 중심으로 이 기능을 수행할 수 있거나 해야만하는 것을 표현
스마트폰도 PC도 웹에 접속할 수 있다.
그러므로 스마트폰도 PC도 웹 접속 기능을 가지는 것이다.
다이어그램에 대해서는 다음에 작성하도록 하겠다.
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 애플리케이션 공격 기법 - 이해와 암기 (0) | 2023.04.04 |
---|---|
[정보처리기사 실기] DDOS 공격 (0) | 2023.04.03 |
정보처리기사 실기 - 소프트웨어 보안 핵심키워드로 암기하기 (0) | 2023.04.02 |
[정처기 실기] UML- 행위 다이어그램(Behavioral Diagram) 유스케이스, 시퀀스,커뮤니케이션, 상태, 활동, 상호작용, 타이밍 암기방법 (0) | 2023.03.29 |
[정처기 실기] UML - 구조적 다이어그램을 이해하고 외우는 방법 (0) | 2023.03.28 |
댓글