2023. 5. 31. 09:59ㆍ북리뷰/객체지향 사실과 오해
기능이 아니라 구조를 기반으로 모델을 구축하는 편이 좀 더 범용적이고 이해하기 쉬우며 변경에 안정적
# 기능 설계 VS 구조 설계
기능 설계 : 제품이 사용자를 위해 무엇을 할 수 있는가
구조 설계 : 제품의 형태가 어떠해야 하는가
훌륭한 기능은 충분조건, 훌륭한 구조는 필요조건
우리는 미래를 예측할 수 없다, 단지 대비할 수 있을 뿐
훌륭한 SW는 좋은 기능을 제공하면서 변경에 유연
좋은 설계는 병결할 수 있는 여지를 남겨 놓는 설계
변경의 여지를 남겨 놓는 가장 좋은 방법은 자주 변경되는 기능이 아닌 안정적인 구조를 중심으로 설계하는 것
# 객체지향 설계 기법
구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현 : 도메인 모델링
기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현 : 유스케이스 모델링
## 도메인 모델
도메인 : 사용자가 프로그램을 사용하는 대상 분야
모델 : 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태
도메인 모델 : 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태.
소프트웨어가 목적하는 영역 내의 개념 간 관계, 규칙, 제약 등을 추상화한 것
이해관계자들이 바라보는 멘탈 모델(사물 간 상호작용 모형)
제품 설계시 사용자들이 해당 제품에 가지고 있는 멘탈 모델과 정확하게 일치해야
훌륭한 디자인이란 사용자가 예상하는 방식에 따라 정확하게 반응하는 제품을 만드는 것
도메인 모델은 사용자 모델, 디자인 모델, 시스템 이미지를 포괄하도록 추상화한 SW 모델
최종 제품은 사용자의 관점을 반영해야 한다.
즉, 도메인 모델의 세 측면을 모두 모델링할 수 있는 유사한 모델링 페더라임을 사용해야함. 객체지향 모델링이 거의 유일함
결론적으로, 안정적인 구조를 제공하는 도메인 모델을 기반으로 SW구조를 설계하면 변경에 유연하게 대응할 수 있는 탄력적인 SW를 만들 수 있음.
# 유스케이스
기능적 요구사항 : 시스템이 사용자에게 제공해야 하는 기능의 목록을 정리한 것
시스템은 사용자의 목표를 만족시키기 위해 사용자와 상호작용을 진행
유스케이스 : 사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것
유스케이스는 시스템의 이해관계자들 간의 계약을 행위 중심으로 파악
## 유스케이스 특징
- 텍스트 기반
- 상호작용의 흐름
- 여러 시나리오들의 집합
- 피처 목록과 다름
- 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야
- 내부 설계와 관련된 정보를 포함하지 않는다
- 설계 기법도, 객체지향 기법도 아님
안정적인 도메인 모델을 기반으로 시스템 기능을 구현해야. 도메인 모델과 코드를 밀접하게 연관시키기 위해 노력해야.
'북리뷰 > 객체지향 사실과 오해' 카테고리의 다른 글
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 |