06. 객체 지도

2023. 5. 31. 09:59북리뷰/객체지향 사실과 오해

728x90

기능이 아니라 구조를 기반으로 모델을 구축하는 편이 좀 더 범용적이고 이해하기 쉬우며 변경에 안정적

 

# 기능 설계 VS 구조 설계

기능 설계 : 제품이 사용자를 위해 무엇을 할 수 있는가

구조 설계 :  제품의 형태가 어떠해야 하는가

훌륭한 기능은 충분조건, 훌륭한 구조는 필요조건

우리는 미래를 예측할 수 없다, 단지 대비할 수 있을 뿐

훌륭한 SW는 좋은 기능을 제공하면서 변경에 유연

좋은 설계는 병결할 수 있는 여지를 남겨 놓는 설계

변경의 여지를 남겨 놓는 가장 좋은 방법은 자주 변경되는 기능이 아닌 안정적인 구조를 중심으로 설계하는 것

 

# 객체지향 설계 기법

구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현 : 도메인 모델링

기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현 : 유스케이스 모델링

 

## 도메인 모델

도메인 : 사용자가 프로그램을 사용하는 대상 분야

모델 : 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태

도메인 모델 : 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태.

소프트웨어가 목적하는 영역 내의 개념 간 관계, 규칙, 제약 등을 추상화한 것

이해관계자들이 바라보는 멘탈 모델(사물 간 상호작용 모형)

제품 설계시 사용자들이 해당 제품에 가지고 있는 멘탈 모델과 정확하게 일치해야

훌륭한 디자인이란 사용자가 예상하는 방식에 따라 정확하게 반응하는 제품을 만드는 것

도메인 모델은 사용자 모델, 디자인 모델, 시스템 이미지를 포괄하도록 추상화한 SW 모델

최종 제품은 사용자의 관점을 반영해야 한다.

즉, 도메인 모델의 세 측면을 모두 모델링할 수 있는 유사한 모델링 페더라임을 사용해야함. 객체지향 모델링이 거의 유일함

결론적으로, 안정적인 구조를 제공하는 도메인 모델을 기반으로 SW구조를 설계하면 변경에 유연하게 대응할 수 있는 탄력적인 SW를 만들 수 있음. 

 

# 유스케이스

기능적 요구사항 : 시스템이 사용자에게 제공해야 하는 기능의 목록을 정리한 것

시스템은 사용자의 목표를 만족시키기 위해 사용자와 상호작용을 진행

유스케이스 : 사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것

유스케이스는 시스템의 이해관계자들 간의 계약을 행위 중심으로 파악

 

## 유스케이스 특징

- 텍스트 기반

- 상호작용의 흐름

- 여러 시나리오들의 집합

- 피처 목록과 다름

- 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야

- 내부 설계와 관련된 정보를 포함하지 않는다

- 설계 기법도, 객체지향 기법도 아님

 

안정적인 도메인 모델을 기반으로 시스템 기능을 구현해야. 도메인 모델과 코드를 밀접하게 연관시키기 위해 노력해야.

728x90

'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글

07. 함께 모으기, 추상화 기법  (0) 2023.05.31
05. 책임과 메시지  (0) 2023.05.30
04. 역할, 책임, 협력  (0) 2023.05.30
03. 타입과 추상화  (0) 2023.05.29
02. 이상한 나라의 객체  (0) 2023.05.29