Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mariadb
- Python
- 기초100제
- go
- Vue.js
- 알고리즘
- golang
- 오블완
- 스프링
- Spring
- 코드업
- Git
- H2 설치
- 티스토리챌린지
- 객사오
- Gradle
- Postman
- spring security
- MySQL
- Codeup
- springboot
- java
- GitHub
- Spring Boot
- 클린코드
- JPA
- thymeleaf
- 클린 코드
- 롬복
- 파이썬
Archives
- Today
- Total
nyximos.log
[객체지향의 사실과 오해] 6. 객체 지도 본문
지도 : 구조적이고 문제 지향적인 접근법, 범용적
기능이 아닌 구조를 기반으로 모델을 구축하는 것이 범용적이고 이해하기 쉽고 유연하다.
안정적인 구조를 기반으로 역할, 책임, 협력을 구성하라
훌륭한 설계자는 예측 불가능한 요구사항 변경에 유연하게 대처할 수 있는 안정적인 구조를 제공한다.
기능과 구조
기능 : 사용자의 목표를 만족시키기위해 책임을 수행하는 시스템의 행위
구조 : 사용자나 이해 관계자들이 도메인에 관해 생각하는 개념과 개념간의 관계로 표현
구조
도메인 모델
도메인 : 사용자가 프로그램을 사용하는 대상 분야
모델 : 대상을 추상화하고 단순화한 것
도메인 모델
- 이해관계자들이 바라보는, 소트프웨어에 대한 멘탈모델
- 사용자모델/디자인모델/시스템이미지를 포괄&추상화한 소프트웨어모델
설계자는 디자인 모델을 기반으로 만든 시스템 이미지가 사용자 모델을 정확하게 반영하도록 노력해야한다.
도메인 모습을 담을 수 있는 객체지향
최종 제품 : 사용자의 관점 반영해야 한다.
최종 코드 : 사용자가 도메인을 바라보는 관점을 반영해야 한다.
표현적차이
소프트웨어 객체와 현실 객체 사이의 의미적 거리
은유를 통해 표현적 차이를 줄여야한다.
도메인 모델 : 객체를 생성하기위해 은유해야하는 것
불완전한 기능을 담는 안정적인 도메인 모델
불안정한 재료 : 기능
유스케이스
사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것
사용자들의 목표를 중심으로 시스템의 기능적인 요구사항들을 이야기 형식으로 묶을 수 있음
유스케이스의 특성
- 사용자와 시스템 간의 상호작용을 보여주는 ‘텍스트’다
- 여러 시나리오의 집합이다.
- 단순한 feature 목록과 다르다.
- 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 한다.
- 내부 설계와 관련된 정보를 포함하지 않는다.
유스케이스는 설계 기법도, 객체지향 기법도 아니다
유스케이스는 사용자가 바라보는 시스템의 외부 관점만 표현한다.
사용자가 시스템을 통해 얻을수있는 것, 어떻게 상호작용하는지
재료 합치기 : 기능과 구조의 통합
도메인 모델, 유스케이스, 그리고 책임-주도 설계
- 도메인모델
- 안정적인 구조 제공
- 유스케이스
- 불안정한 기능을 서술하기 위해
- 사용자에게 제공할 기능을 시스템의 책임으로 보게함
- 책임 주도 설계
- 시스템의 기능을 책임으로 바꿈
- 시스템의 커다란 책임은 시스템의 작은 객체들이 수행할 작은 책임으로 세분화됨
- 우리는 도메인 모델에 포함된 개념을 은유하는 소프트웨어 객체를 선택해야한다.
- 협력을 완성하는데 필요한 메시지를 식별하면서 객체들에게 책임을 할당한다.
- 협력에 참여하는 객체를 구현하기 위해 클래스를 추가하고 속성과 메서드를 구현하면 시스템 기능이 완성된다.
기능 변경을 흡수하는 안정적인 구조
- 도메인 모델이 안정적인 이유
- 도메인 모델을 고성하는 개념은 대체로 안정적으로 유지됨
- 도메인 모델을 구성하는 개념간 관계는 비즈니스 규칙 기반이라서 정책이 안바뀌는 이상 안정적으로 유지됨
- 연결완전성 : 도메인을 모델링하기 위한 기법과 도메인을 프로그래밍하기 위해 사용하는 기법이 동일, 변환도 매끄러움
- 가역성 : 모델 → 코드, 코드 → 모델 흐름이 매끄러움
- 도메인 모델 : 사람들의 머릿속에 들어있는 공유된 멘탈 모델이다.
유연한 객체지향 시스템 만드려면 : 안정된 도메일 모델을 기반으로 시스템 기능 구현 + 도메인 모델과 코드 밀접하게 연관
'Books' 카테고리의 다른 글
[객체지향의 사실과 오해] 7. 함께 모으기 (0) | 2024.11.16 |
---|---|
[객체지향의 사실과 오해] 5. 책임과 메시지 (0) | 2024.11.13 |
[객체지향의 사실과 오해] 4. 역할, 책임, 협력 (0) | 2024.11.12 |
[객체지향의 사실과 오해] 3. 타입과 추상화 (0) | 2024.11.11 |
[객체지향의 사실과 오해] 2. 이상한 나라의 객체 (0) | 2024.11.10 |