6장. 객체지도
길을 찾는 두 가지 방법.
1. 다른 사람에게 직접 길 물어보기.
- 구체적인 경로를 정확히 알기 어렵고 재사용이 불가능한 일회성 방법이다.
- '원하는 길'만 '한 번' 찾을 수 있는 기능이 있다. -> 요구사항이 바뀌면 그것을 수용 불가하다.
- 기능적이고 해결책 지향적인 접근법, 변경에 취약.
2. 지도 보기
- 지도는 실세계의 지형을 기반으로 만든 추상화 모델이기 때문에 길을 찾는데 필요한 모든 정보를 담고 있다.
- 길을 찾을 수 있는 '기능'이 아니라 길을 찾을 수 있는 '구조'를 제공한다.
- 다양한 목적으로 여러 번 재사용할 수 있다. 즉, 범용적이다.
- 지형은 쉽게 변하지 않기 때문에 과거의 지도를 조금만 수정하면 계속 사용할 수 있다.
- 구조적이고 문제지향적인 접근법, 변경에 안정적.
길을 물어보는 것이 전통적인 소프트웨어 개발 방법으로 기능 위주의 개발을 한 후 안정적 구조를 종속시킨다.
지도를 보는 것은 객체지향적인 소프트웨어 개발방법으로 안정적 구조를 구현한 후 기능을 종속시킨다.
기능 설게 vs 구조 설계
소프트웨어 설계에서,
기능 측면 설계 - 프로그램이 사용자를 위해 무엇을 할 수 있는지에 초점을 맞춤.
구조 측면 설계 - 프로그램의 형태가 어떠해야 하는지에 초점을 맞춤.
설계 - 기능과 구조를 잘 녹여 조화를 이루게 만드는 것이 목표.
훌륭한 기능이 훌륭한 소프트웨어를 만드는 충분조건이라면,
훌륭한 구조는 훌륭한 소프트웨어를 만드는 필요조건이다.
성공적인 sw의 공통적 특징 - 훌륭한 기능 제공은 기본이고 사용자의 새로운 요구 사향을 빠르고 안정적으로 추가 가능하도록 쉽게 확장 가능하다.
sw분야에서 예외가 없는 절대적인 규칙 - 요구사항이 항상 바뀌는 것. 개발자의 숙명
미래를 대비하는 가장 좋은 방법 - 변경 예측이 아닌 변경을 수용할 수 있는 선택의 여지를 미리 설계에 마련해 놓는 것.
그 방법이 바로 구조 중심의 설계를 하는 것이다.
'기능'이 구조를 따르도록 설계하면 기능이 변경되어도 구조는 그대로 유지된다.
객체지향의 두 가지 재료
안정적인 재료, 구조
도메인 모델 : 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태.
불안정한 재료, 기능
유스케이스 : 사용자의 목표를 달성하기 위해 사용자와 프로그램 간에 이루어지는 상호작용을 텍스트화 한 것.
유스케이스는 단지 기능적 요구사항을 사용자의 목표라는 문맥을 중심으로 묶기 위한 정리 기법일 뿐이다.
책임주도 설계
- 안정적인 구조에 자주 변경되는 불안정한 기능을 배치하여 기능의 변경에 대해 안정적인 소프트웨어를 구현할 수 있다.
- 변경에 유연한 소프트웨어를 만들기 위해서는 유스케이스에 정리된 시스템의 기능을 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야 한다. 바로 이 시점부터 앞에서 배웠던 책임주도 설계가 적용되는 것이다.
- 책임주도 설계는 시스템의 기능을 역할과 책임을 수행하는 객체들의 협력 관계로 바라보게 함으로써 유스케이스와 도메인 모델을 통합한다.
'Book Report' 카테고리의 다른 글
인공지능은 무엇이 되려 하는가 (12) | 2022.03.19 |
---|---|
객체지향의 사실과 오해 - 7장, 후기 (1) | 2022.03.15 |
객체지향의 사실과 오해 - 5장 (0) | 2022.03.06 |
객체지향의 사실과 오해 - 4장 (0) | 2022.03.05 |
마지막 몰입 (0) | 2022.02.25 |