구조적(정적) 모델링 - 클래스 다이어그램, CRC카드
정적 단계의 작업
내부 구조를 클래스 관점에서 표현
유스케이스에서 나타낸 인터랙션 밑에 깔린 자료들이 어떻게 구성되고 표현되는지 설명
● 클래스 찾기
도메인 안에 있는 개념적 엔티티를 파악
개념적 엔티티 : 시스템에서 정보를 처리해야 할 대상, 자료를 보관하고 처리하는 동작
클래스가 무엇이냐에 따라 시스템의 골격과 내부 인터랙션이 달라짐
● 속성 찾기
클래스로 추상화된 엔티티가 가지는 자료
● 관계와 연관찾기
클래스는 혼자서만 존재 할 수 X
다른 엔티티와 어떻게 연관되어 있으며 모델 안에서 기술된 관계로 반영
클래스 다이어그램
정적모델링의 결정체
클래스 + 클래스 안의 내용 + 클래스들 사이의 관계 나타냄
프로그램의 구조를 잘 나타내고 있어 코딩 작업 근간
- 클래스 내부 정의
- 오퍼레이션 정의
- 클래스 사이의 인터렉션에 사용되는 인터페이스 정의
- 클래스 사이의 관계를 나타낸 연관
클래스 : 시스템 안에 자료를 담고 있는 단위
구조적(정적) 모델
시스템 내부의 관점, 특히 구조라는 관점의 뷰
어떤 구성요소가 있고 이들이 어떤 관계를 맺고 있는지 표현시간이 흐르더라도 변하지 않는 정적 구조
새로운 문제 도메인의 중요한 클래스 발견
시스템을 구성하는 빌딩 블록 보여줌
객체 지향 시스템의 기본 빌딩 블록 = 클래스
구조적 모델의 층
구조적 모델은 시스템의 빌딩 블록을 찾아내고 이를 계층구조로 잘 정리하는 작업
구성요소인 클래스를 찾고, 이런 클래스들이 어떤 내부 부품이 있고 클래스간에 어떤 연관이 있는지 파악
클래스 다이어그램 작성 목적
- 시스템 구성 요소 문서화
- 클래스 사이의 연관, 일반화, 집합 관계 표시
- 클래스의 기능, 특히 속성과 오퍼레이션 나타냄
- 시스템 클래스 구조
- 클래스들이 클래스 라이브러리와 어떻게 협력하는지
- 클래스 인터페이스
- 시스템 안에 어떤 객체 존재
클래스와 속성
> 클래스
시스템이 처리해야할 자료와 그 자료와 관련된 오퍼레이션을 정의한 작은 모듈
- 사물 : 눈에 보이는 실세계의 개체
- 역할 : 사람이나 기관의 역할
- 사건 : 특정한 시각에 일어난 사건(이벤트)
- 인터랙션 : 거래나 계약
- 명세 : 구체적인 인스턴스의 공유하는 특성
> 속성
클래스로 추상화된 모든 개체들에 의하여 소유된 특성 하나하나
● 목적
완전성 - 클래스가 갖는 모든 정보 소유
완전 분할 - 각 속성이 클래스 각각의 측면을 나타냄
배타적 독립 - 속성들이 각각 독립적인 값을 보관
● 속성 찾기
서술적 속성 : 어떤 것의 고유 특성
명명 속성 : 개체를 부르는데 사용
참조 속성 : 관련된 클래스를 지칭하는 링크 제공
● 속성 타입
빌트인 자료형 : 불리언, 스트링, 정수, 실수... 문제 역역에 있는 자료형
도메인 특수 자료형 : currency, mailingaddress ... 프로그래밍 언어에 정의된 기본형
클래스와 속성의 검토
● 대상 검토
도메인에서 마땅히 해야할 일 = 책임에 비추어 검토
● 추상화
OR 검토 - 혼합되어 있는 개념은 별도의 클래스로 분리
단순한 리스트인지 검토 - 여러 개의 객체를 의미없이 모아놓은 것 아닌지 (좋은 추상 X)
● 의미없는 속성, 통일되지 않은 클래스
관계
> UML 관계
- 연관 : 객체 사이의 관계
- 일반화 : 상속 관계
- 의존 : 컴파일 의존 관계
● 연관
연관에 참여하는 두 클래스의 추가 데이터를 갖는 클래스
연관에 참여하는 두 클래스 中 어느 곳에도 속하지 X 데이터 갖는 속성
선으로 표시 / 이름, 역할, 다중도 표시
- 다중도
연관에 참여하는 양 끝에 있는 클래스
1 기본값
1..* 하나 이상
0..1 없거나 1이상
* = 0..* 다수
- 회귀연관
같은 클래스의 인스턴스 사이에 존재하는 연관
+) 집합연관, 복합연관
● 집합연관 (하얀 다이아몬드)
하나의 객체가 독립적인 객체 여러 개로 구성되는 경우
다른 클래스의 인스턴스를 자신의 속성으로 가짐
부분 인스턴스 개수는 다중도로 표시
전체 개념 클래스 - 다이아몬드
반대쪽 - 부분개념, 전체의 구성요소
● 복합(합성)연관 (검정 다이아몬드)
전체 개념의 클래스의 인스턴스가 삭제될 때 부분 개념도 삭제(공동운명체)
집합 관계보다 더 강한 관계
단독으로 사용 불가능하며 반드시 슈퍼클래스와 함께 사용
● 상속
프로그램을 쉽게 확장할 수 있도록 도와주는 수단
객체 지향 패러다임 구현
정보를 공개하고 재사용하는 개념
클래스의 속성과 동작을 공유하는 다른 점이 동시에 있을 때
a-kind-of로 해석
슈퍼클래스, 서브클래스
일반화 : 하위 클래스의 공통 특성을 추상화 하여 상위 클래스로 정의 ↑
상세화 : 상위 클래스의 공통 특성을 추상화 하여 하위 클래스에서 실체화 하는 관계 ↓
오퍼레이션 (함수)
객체를 생성하고 소멸시키고, 속성을 접근하고, 링크시키고, 조건에 의해 선택 반복 처리하고, 자료를 변환시킴
구조적 모델링에서는 일상적인 오퍼레이션 표현다른 객체와 협력하에 이루어지는 경우가 많음
● 기본적인 오퍼레이션
정보은닉 때문에 감추어진 것을 접근할 수 있도록 도와줌
● 조건 체크
객체가 가지는 속성값이 특정한 값인지 체크하는 작업
● 탐색과 조작
흔히 발생하는 작업 중에 원하는 인스턴스 찾아냄
● 입출력
객체 안에 값을 외부에서 입력받아 저장
객체 안의 값을 화면이나 프린터에 보내야 하는 경우
클래스 다이어그램
클래스 다이어그램 작성법
● 반복적인 과정
개념적 모델링 - 간단히 중요한 클래스의 존재와 관계만 표현
명세적 모델링 - 구현에 필요한 자료구조, UI, 데이터베이스, 통신에 필요한 클래스 포함
● 클래스 찾기
문제정의에서 사물의 이름은 (명사, 명사구) 클래스일 가능성 높음
● 클래스로 적당하지 않은 것 배제
중복 클래스 - ex) 고객과 구매자, 구매이력과 구매기록
관계 없는 클래스 - 문제의 범위 벗어나는 클래스 ex) 시스템 구축 비용
불확실한 클래스 - 너무 광범위하고 불확실한 것 ex) 보안
CRC 카드
클래스가 어떤 책임을 가져야 하는가, 자료의 소유권과 자료를 처리하는 권한, 책임이 어떤 클래스에 있는가를 따져 봐야함
=> 이를 찾아내는 데 사용하는 카드 CRC
클래스의 이름, 클래스의 책임, 협력하는 클래스로 구성
> 장점
- 개발자와 사용자와의 대화유도
- 클래스 검토에 유용
> 적용대상
- 개발초기
'전공 ✏️ > 시스템 분석 설계' 카테고리의 다른 글
아키텍처 설계 - 패키지 다이어그램, 유형, 디자인 패턴 (1) | 2022.12.20 |
---|---|
동적 모델 - 시퀀스, 커뮤니케이션, 상태 다이어그램 (0) | 2022.12.20 |
기능적 모델링 - 유스케이스, 액티비티 다이어그램 (0) | 2022.10.24 |
요구 분석 - 비즈니스 프로세스 분석 방법, 요구 취합 방법 (0) | 2022.10.23 |
프로젝트 계획 - 타당성 분석, 비용, 소모인력 산정 (0) | 2022.10.22 |