객체지향의 사실과 오해 -06 객체 지도

octofox·2021년 6월 5일
0

유일하게 변하지 않는 것은 모든 것이 변한다는 사실 뿐이다. -헤라클레토이스

여행 중에 길을 모른다고 가정해 보자.
길을 찾는 두가지 방법이 있는데, 첫 번째 방법은 지나가는 사람에게 길을 직접 물어보는 것이고 두 번째 방법은 지도에 표시된 길을 따라가는 방법이다.

첫번째 방법은 기능적이고 해결책 지향적인 접근법이다. 길을 가르쳐 주는 사람은 경로를 단계별로 상세히 설명해야한다.

이 방법은 일반적이지도, 재사용 가능하지도 않다.

반면 지도는 길을 찾는데 필요한 풍부한 컨텍스트가 포함되어있다.
구조적이고 문제 지향적 접근법.

지도는 길을 찾는데 필요한 구체적인 기능이 아니라 길을 찾을 수 있는 구조를 제공한다.

지도는 목적지가 변경되도 요구사항을 충족해준다.

지도는 안정적인 실세계 지형을 기반으로 한 추상모델이다.

자주 변경되는 기능이 아니라 안정적인 구조를 따라 역할, 책임, 협력을 구성하라.

기능 설계 대 구조 설계

소프트웨어를 개발하는 일차적인 이유는 사용자에게 훌륭한 기능을 제공하기 위해서다.
개발 초기 단계에는 사용자가 무엇을 원하는지 어떤 기능을 제공해야하는지에 초점을 맞추어야한다.

다만 성공적인 소프트웨어가 가진 공통적인 특징은 훌륭한 기능을 제공하는 동시에 사용자가 원하는 새로운 기능을 빠르고 안정적이게 추가할 수 있다는 것이다.

훌륭한 설계는 소프트웨어를 유지보수하기 쉽게 만든다.

불확실한 유지보수의 미래에 대비하는 좋은 방법은 변경을 수용할 수 있는 선택의 여지를 설계에 마련해 놓는 것이다.

변경의 비용을 낮추는 것이다.

두 가지 재료: 기능과 구조

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

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

profile
개발자라고 우기는 노답 소년

0개의 댓글