RSM 전체 서문
표지
1. 소프트웨어 모델링이란?
2. 무엇을 모델링할 것인가?
3. 소프트웨어 모델링과 소프트웨어 개발 주기
4. 무엇을 알아야 하는가?
5. 구성 및 당부사항
1권. 핵심개념들
1장. 실체 I
시작하기 전에
1. 실체
2. 객체
3. 값
1-2에 대한
4. 링크
궁금한 거 물어보기
마치기 전에
2장. 실체 II
시작하기 전에
1. 객체와 값의 그래픽(UML) 표현
2. 링크
3. 링크의 그래픽 표현
4. 객체 다이어그램 작성
5. 연습 문제
3장. 실체 III
시작하기 전에
1. 목적적 존재
2. 전체와 부분
3. 정체성
4. 상태
5. 식별자
6. 연습 문제
궁금한 거 물어보기
한 번 더 생각해 볼 것들
마치기 전에
4장. 개념 I
시작하기 전에
1. 개념
바로 바로 답하기
생각해 보고 답하기
2. 분류와 일반화
궁금한 거 물어보기
한 번 더 생각해 볼 것들
마치기 전에
5장. 개념 II
시작하기 전에
1. 그래픽 표현
2. 연관(Association)
3. 연습 문제
마치기 전에
6장. 개념 III
시작하기 전에
1. 컴포지션(Composition)과 어그리게이션(Aggregation)
실전 모델링
생각해 보고 답하기
2. 추상개념과 구체개념
3. 일반화(generalization)
4. 차이에 대하여
5. 연습 문제
생각해 보고 답하기 2
한 번 더 생각해 볼 것들
마치기 전에
7장. 속성
시작하기 전에
1. 속성
바로 바로 답하기
실전 모델링
궁금한 거 물어보기
2. 속성 구분
3. 식별자
실전 모델링 2
궁금한 거 물어보기 2
4. 그래픽 표현
바로 바로 답하기 2
마치기 전에
8장. 행위 I
9장. 행위 II
10장. 컬레보레이션
출력 가능한 pdf 버전은 아래 링크에서 다운받을 수 있습니다.
http://rsmer.tistory.com/75
[RSM 1권 핵심개념] 4장 개념 I 시작하기 전에
[RSM 1권 핵심개념] 4장 개념 I 1. 개념
[RSM 1권 핵심개념] 4장 개념 I 바로 바로 답하기
생각해 보고 답하기
1. 소프트웨어개발자가 도메인에서 생성 개념과 사용 개념을 구분해야 하는 이유를 설명합니다.
2. 사용개념과 생성개념이 집합을 이룬다는 것은 어떤 의미인가?
사용을 하려면 사용의 대상들이 결정되어야 합니다. 대상들이 결정되면 그 결정에 의해 집합이 형성됩니다.
회원들이 있는데 이들 중에서 서평작성을 위해 사용되는 서평작성자들은 집합을 형성합니다. 회원이라는 전체집합의 부분집합이 됩니다.
생성개념은 설계도 인데 이 설계도를 통해서 실체들이 생성되고, 생성될 실체들은 생성개념에 해당하는 집합에 요소가 됩니다.
생성개념은 설계도로 실체들이 모두 생성된 것이 아니기 때문에 암시적으로 생성될 실체들의 집합을 이룬다는 것입니다. 생성되는 모든 실체는 생성개념에 해당하는 집합에 포함됩니다.
개념은 대응하는 실체들을 갖게 됩니다. 실체들은 하나의 개념으로 묶이기 때문에 집합의 의미를 갖습니다. 이런 의미에서 “모든 개념은 실체들의 집합이다”라고 할 수 있습니다.
[RSM 1권 핵심개념] 4장 개념 I 시작하기 전에
[RSM 1권 핵심개념] 4장 개념 I 1. 개념
바로 바로 답하기
1. 실체는 ( ) 관점과 ( ) 관점으로 이해되고 개념화되어야 합니다.
( ) 관점에서 개념은 집합입니다.
( ) 관점에서 개념은 설계도입니다.
2. 다음은 실체와 개념의 대응 관계입니다. 빈 칸에 해당하는 개념을 한글이름과 영문이름을 함께 작성합니다.
|
실체 |
개념 |
|
객체 |
( ) |
|
링크 |
( ) |
3. 특성에 대한 생성개념은?
4. 값에 대한 생성개념은?
[RSM 1권 핵심개념] 1장. 실체(Instance) I (5.0) 시작하기 전에
[RSM 1권 핵심개념] 1장. 실체 I (5.0) 1절. 실체
[RSM 1권 핵심개념] 1장. 실체 I (5.0) 2절. 객체
[RSM 1권 핵심개념] 1장. 실체 I (5.0) 3절. 값
[RSM 1권 핵심개념] 1장. 실체 I (5.0) 1-2절에 대한
[RSM 1권 핵심개념] 1장. 실체 I (5.0) 4절. 링크
궁금한 거 물어보기
1. 값도 행위를 갖는다고 했는데 어떤 행위를 갖는가?
값은 객체의 양적상태를 나타내기 위한 것으로 양적상태를 알려주는 것이 중요한 행위입니다. 값과 관련된 중요한 또 다른 행위는 연산입니다. 기본형에 있어서 이런 행위들은 프로그래밍 언어에서 기본적으로 제공합니다.
이런 이유로 값의 행위는 프로그래머에게 잘 드러나지 않습니다. 아마도 이런 질문이 나오는 것은 이런 이유에서 일 것입니다.
문자열의 경우 프로그래밍 언어에서 제공하는 연산자들로 부족하기 때문에 다양한 행위를 제공합니다. 기본형이지만 행위를 갖는 예를 생각하기에 가장 쉬운 것이 문자열과 관련된 행위들 인 것 같습니다.
값에 있어 행위가 직접적으로 드러나는 것은 그룹값에 해당하는 데이터값입니다. 데이터값은 사용자가 정의해서 사용하는 것이기에 사용자에게 직접적으로 드러납니다.
데이터값의 경우에는 그룹값에 속하는 값들을 사용해서 얻어야 하는 결과가 있을 때나 그룹값들 사이에 필요한 연산이 있을 때 그것을 행위로 갖습니다.
[RSM 1권 핵심개념] 10장 컬레보레이션 시작하기 전에
[RSM 1권 핵심개념] 10장 컬레보레이션 1. 전체와 부분
[RSM 1권 핵심개념] 10장 컬레보레이션 2. 컬레보레이션
[RSM 1권 핵심개념] 10장 컬레보레이션 실전 모델링
[RSM 1권 핵심개념] 10장 컬레보레이션 한 번 더 생각해 볼 것들
[RSM 1권 핵심개념] 10장 컬레보레이션 3. 컬레보레이션과 다른 개념들과의 관계
[RSM 1권 핵심개념] 10장 컬레보레이션 4. 연관의 일반화
[RSM 1권 핵심개념] 10장 컬레보레이션 5. 인터페이스
[RSM 1권 핵심개념] 10장 컬레보레이션 6. 의존
[RSM 1권 핵심개념] 10장 컬레보레이션 7. 그래픽 표현
[RSM 1권 핵심개념] 10장 컬레보레이션 생각해 보고 답하기
[RSM 1권 핵심개념] 10장 컬레보레이션 한 번 더 생각해 볼 것들 2
마치기 전에
컬레보레이션은 대단히 중요한 모델링 요소임에도 불구하고 지금까지 소외되어 왔습니다. 우리는 컬레보레이션의 원래의 자리를 찾아주고 지금까지 배워왔고, 이 장에서 새롭게 배운 것들을 모두 컬레보레이션 중심으로 통합했습니다.
가장 중요한 것인데 다른 개념들을 다 설명하고 난 이후에나 설명할 수 있다는 것이 안타깝습니다. 마지막까지 멈추지 않고 학습해 오신 분들에게 이 장은 큰 선물이 될 것입니다.
컬레보레이션을 마지막으로 1권 핵심개념들을 마칩니다.
2권. 행위형식화에서는 지금까지 익힌 핵심개념들을 바탕으로 행위를 형식화하는 방법을 다룹니다.
[RSM 1권 핵심개념] 10장 컬레보레이션 시작하기 전에
[RSM 1권 핵심개념] 10장 컬레보레이션 1. 전체와 부분
[RSM 1권 핵심개념] 10장 컬레보레이션 2. 컬레보레이션
[RSM 1권 핵심개념] 10장 컬레보레이션 실전 모델링
[RSM 1권 핵심개념] 10장 컬레보레이션 한 번 더 생각해 볼 것들
[RSM 1권 핵심개념] 10장 컬레보레이션 3. 컬레보레이션과 다른 개념들과의 관계
[RSM 1권 핵심개념] 10장 컬레보레이션 4. 연관의 일반화
[RSM 1권 핵심개념] 10장 컬레보레이션 5. 인터페이스
[RSM 1권 핵심개념] 10장 컬레보레이션 6. 의존
[RSM 1권 핵심개념] 10장 컬레보레이션 7. 그래픽 표현
[RSM 1권 핵심개념] 10장 컬레보레이션 생각해 보고 답하기
한 번 더 생각해 볼 것들
1. 연관과 의존은 어떻게 프로그래밍 되는가?
연관은 멤버 변수로, 의존은 멤버 함수의 매개 변수가 되거나 지역변수가 될 수 있습니다.
하지만 구현 방법은 다양할 수 있기 때문에 이러한 기준은 틀릴 수 있습니다. 링크의 개념에 충실해서 생각해야 합니다.
연결한 그 객체를 꼭 사용해야 한다면 연관이고, 그렇지 않으면 의존입니다.
꼭 그 객체이어야 한다면 다른 객체로 대체될 수 없고, 영속성을 갖는 경우에는 어디선가는 찾아야 합니다.
2. 논리적 데이터모델로 사용할 수 있는 객체모델에는 어떤 관계들이 표현될 수 있을까?
의존은 행위와만 관계되기 때문에 의존을 제외한 나머지 관계들이 모두 표현될 수 있습니다.
3. UML에는 다양한 의존이 존재합니다.
객체모델링에서 먼저 의존이라는 용어를 사용했고, 그 이후에 UML에서 객체모델링의 의존을 포함해서 그 의미 범위를 확장했습니다.
UML의 의존은 다양한 구체적인 의존이 존재합니다. 그 중에 객체모델링의 의존도 포함하고 있습니다.
UML에서는 객체모델링의 의존을 의존의 한 종류인 사용(usage)으로 구분하고 있습니다.
이 장에서 다루고 있는 의존은 UML의 사용을 의미합니다.
[RSM 1권 핵심개념] 10장 컬레보레이션 시작하기 전에
[RSM 1권 핵심개념] 10장 컬레보레이션 1. 전체와 부분
[RSM 1권 핵심개념] 10장 컬레보레이션 2. 컬레보레이션
[RSM 1권 핵심개념] 10장 컬레보레이션 실전 모델링
[RSM 1권 핵심개념] 10장 컬레보레이션 한 번 더 생각해 볼 것들
[RSM 1권 핵심개념] 10장 컬레보레이션 3. 컬레보레이션과 다른 개념들과의 관계
[RSM 1권 핵심개념] 10장 컬레보레이션 4. 연관의 일반화
[RSM 1권 핵심개념] 10장 컬레보레이션 5. 인터페이스
[RSM 1권 핵심개념] 10장 컬레보레이션 6. 의존
[RSM 1권 핵심개념] 10장 컬레보레이션 7. 그래픽 표현
생각해 보고 답하기
1. 연관일까 의존일까?
아래 그림에서 HelloWorld와 Color 사이에 연관 관계가 성립할까? 의존 관계가 성립할까?
어떤 관계가 성립하는지와 그 이유에 대해서 설명합니다.
[RSM 1권 핵심개념] 10장 컬레보레이션 시작하기 전에
[RSM 1권 핵심개념] 10장 컬레보레이션 1. 전체와 부분
[RSM 1권 핵심개념] 10장 컬레보레이션 2. 컬레보레이션
[RSM 1권 핵심개념] 10장 컬레보레이션 실전 모델링
[RSM 1권 핵심개념] 10장 컬레보레이션 한 번 더 생각해 볼 것들
[RSM 1권 핵심개념] 10장 컬레보레이션 3. 컬레보레이션과 다른 개념들과의 관계
[RSM 1권 핵심개념] 10장 컬레보레이션 4. 연관의 일반화
[RSM 1권 핵심개념] 10장 컬레보레이션 5. 인터페이스
[RSM 1권 핵심개념] 10장 컬레보레이션 6. 의존
7절. 그래픽 표현
7.1 컬레보레이션
컬레보레이션은 점선 타원으로 표현합니다.
점선으로 된 타원 안에 컬레보레이션 이름을 작성합니다.
컬레보레이션과 컬레보레이션에 참여하는 부분들 사이에는 연관을 작성합니다.
그림 10.4
그림 10.4에서 Observing 컬레보레이션에 TaskQueue가 subject의 역할로, SlidingBar가 observer의 역할로 참여합니다.
컬레보레이션에 참여하는 객체들의 상호작용을 표현하는 것과 같이 객체에 역할을 표현해야 할 때가 있습니다. 객체에 역할을 포함하고자 할 경우에는 그림 10.5와 같이 객체 이름 뒤에 ‘/’를 작성하고 역할 이름을 작성하면 됩니다.
그림 10.5
7.2 연관의 일반화
UML에서는 링크의 전체집합과 부분집합사이의 관계를 표현하기 위해 'subsets'와 'union'이라는 제약사항을 제공합니다.
그림 10.6
그림 10.6에서 files는 items의 부분집합임을 {subsets items}로 표현하고 있습니다. 또한 subfolders가 items의 부분집합임도 표현하고 있습니다.
items는 합집합인데 합집합이라는 것은 부분집합의 합이니 계산해서 구할 수 있습니다. files와 subfolders를 기반으로 구할 수 있습니다. 합집합은 항상 파생됩니다.
7.3 인터페이스
인터페이스는 클래스 기호를 사용해서 표현할 수 있습니다. 클래스 기호를 사용할 때는 클래스와 구분하기 위해서 <<interface>>라는 키워드를 사용합니다.
그림 10.7은 클래스 기호로 표현된 인터페이스입니다.
그림 10.7
인터페이스는 외부(client)에 공개되는 것이기 때문에 인터페이스의 속성과 오퍼레이션의 가시성(visibility)은 public이어야 합니다. 가시성은 명시적으로 표현하지 않아도 됩니다.
7.4 실현
실현은 명세를 어떻게 실제로 구현할 것인가를 나타냅니다.
컬레보레이션은 행위를 실현하고,
클래스는 인터페이스를 실현합니다.
유스케이스는 시스템 수준에서의 목적행위이기 때문에 유스케이스와 컬레보레이션 사이에는 실현 관계가 성립합니다.
실현에 대한 그래픽 표현은 일반화 표현과 유사합니다. 일반화의 실선 대신 대시 선을 사용하면 됩니다.
그림 10.8에서 열감지센서 클래스는 센서 인터페이스를 실현하고, 전자경보기 클래스는 알람 인터페이스를 실현합니다.
그림 10.8
7.5 인터페이스와 실현의 대안적 표현
하나의 다이어그램에 클래스들과 인터페이스들이 많으면 키워드만으로 구분하기가 쉽지 않습니다. 그림 10.9와 같이 인터페이스를 막대사탕모양의 아이콘을 사용해서 표현하고 실현관계는 인터페이스와 클래스 사이에 실선으로 표현합니다.
7.6 의존
의존은 의존하는 클래스에서 의존되는 클래스로 화살표 방향을 갖는 대시 선으로 작성됩니다.
그림 10.10에서 HelloWorld라는 클래스가 Color와 Graphics라는 클래스에 의존합니다.
그림 10.10
그림 10.10을 보면 HelloWorld 클래스가 어떻게 drawString 할 것인지를 알 수 있습니다.
HelloWorld 클래스는 Graphics 클래스의 객체이면 아무 객체나 매개변수로 받고, Color 객체이면 아무 객체나 생성하거나 구해서 drawString을 합니다.
[RSM 1권 핵심개념] 10장 컬레보레이션 시작하기 전에
[RSM 1권 핵심개념] 10장 컬레보레이션 1. 전체와 부분
[RSM 1권 핵심개념] 10장 컬레보레이션 2. 컬레보레이션
[RSM 1권 핵심개념] 10장 컬레보레이션 실전 모델링
[RSM 1권 핵심개념] 10장 컬레보레이션 한 번 더 생각해 볼 것들
[RSM 1권 핵심개념] 10장 컬레보레이션 3. 컬레보레이션과 다른 개념들과의 관계
[RSM 1권 핵심개념] 10장 컬레보레이션 4. 연관의 일반화
[RSM 1권 핵심개념] 10장 컬레보레이션 5. 인터페이스
6절. 의존
연관의 인스턴스인 링크를 동아줄로 비유한 것처럼 연관은 객체들을 강하게 연결합니다. 연결이 어느 정도 지속된다는 것입니다. 특별한 경우에는 영속되기도 합니다.
강하게 연결해 놓는 이유는 연결된 이후에 다른 객체들이 아닌 이전에 연결해 놓았던 바로 그 객체들을 사용하겠다는 것입니다.
사용할 객체가 꼭 그 객체일 필요가 없는 경우도 있을 수 있습니다. 필요할 경우에 그 일을 해 줄 수 있는 객체이기만 하면 됩니다.
|
우리는 일시적이고 약한 결합에 대한 링크에 대한 생성개념을 의존(dependency)이라고 합니다. |
6.1 의존은 구조와는 상관없이 행위수행만을 위한 관계입니다.
우리가 직접적으로 인식할 수 있는 구조는 실체들 사이의 연결입니다. 실체들 사이의 직접적인 연결은 연관으로 표현되기 때문에 연관은 구조적 관계를 대표합니다.
어떤 집에는 가족 별로 숟가락과 젓가락이 정해져 있고, 꼭 자신의 숟가락과 젓가락을 가지고 밥을 먹습니다. 이 가족은 숟가락과 젓가락을 연관시켜놓고 있는 것입니다.
어떤 집에는 가족 별로 숟가락과 젓가락을 구분하지 않고 사용합니다. 이 가족은 숟가락과 젓가락을 의존시켜놓고 있는 것입니다.
소프트웨어에서는 생성 비용이 무시할 정도로 작기 때문에 숟가락들과 젓가락들을 모아 놓을 필요도 없습니다. 필요하면 생성해서 쓰면 됩니다.
의존은 연결된 대상들이 서로에 대한 관련 정보를 갖지 않아야 합니다. 그래야 필요로 할 때 어떤 것인지 상관없이 사용할 수 있습니다.

