안정적인 구조에 기능을 종속시켜라

MinHwi·2022년 11월 24일
0
  • 공부 내용 : 객체지향의 사실과 오해 6장
  • 공부 기간 : 2022년 11월 23일 수요일

기억하고 싶은 것

설계의 목적은 변화를 수용하는 여지를 남기기 위함이다. 기능이 안정적인 구조를 따라야 변경을 수용할 수 있는 소프트웨어가 된다. 요구사항에 비해 잘 변하지 않는 개념(멘탈 모델)을 표현하는 도메인 모델은 안정적인 구조를 제공한다. 사용자가 도메인에 기대하는 기능은 유스 케이스로 서술한다. 책임 주도 설계는 도메인 모델을 바탕으로 시스템의 책임을 객체에 분배하고, 기능을 바탕으로 책임을 파악한다.

질문

  1. 왜 기능이 구조를 따라야 하는가?
  2. 기능과 구조의 목표는 무엇인가?
  3. 구조는 어떻게 얻을 수 있으며, 이렇게 얻은 구조가 안정적인 이유는 무엇인가?
  4. 기능은 어떻게 표현하는가?
  5. 책임 주도 설계는 구조와 기능을 어떻게 사용하는가?
  6. 연결 완전성과 가역성은 무엇인가?

1. 왜 기능이 구조를 따라야 하는가?

기능은 자주 변경된다. 반면 구조는 기능에 비해 안정적이다. 안정적인 객체 구조는 변경을 수용할 수 있는 유연한 소프트웨어의 기반을 제공한다. 객체 지도는 빠르게 변화하는 기능을 수용할 수 있는 자리를 제공한다.

2. 기능과 구조의 목표는 무엇인가?

기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위를 표현한다. 구조는 사용자나 이해 관계자들이 도메인에 관해 생각하는 개념과 개념의 관계를 표현한다.

3. 구조는 어떻게 얻을 수 있으며, 이렇게 얻은 구조가 안정적인 이유는 무엇인가?

구조는 도메인 모델을 통해 얻을 수 있다. 도메인 모델은 소프트웨어에 대한 사용자, 설계자의 멘탈 모델을 반영한다. 객체지향은 도메인 모델을 기반으로 객체 구조를 설계하는데, 그 이유는 도메인 모델이 안정적이기 때문이다. 도메인 모델을 구성하는 개념은 비즈니스 정책이 바뀌거나 완전히 개편되지 않는 한 안정적으로 유지된다. 개념은 기능에 비해 변경될 여지가 훨씬 적다. 또 사용자와 설계자가 공유하므로 이해하기 쉬운 시스템을 만든다.

4. 기능은 어떻게 표현하는가?

유스케이스로 표현한다. 유스케이스는 사용자의 목표를 중심으로 시스템의 기능적인 요구사항을 시나리오로 묶어 체계를 만들 수 있다. 이때 유스케이스는 인터페이스와 내부 설계와 관련된 정보를 포함하지 않는다. 사용자 관점에서 시스템의 행위에 초점을 맞춘다.

유스케이스명: 중도 해지 이자액을 계산한다

일차 액터: 예금주

주요 성공 시나리오:
1. 예금주가 정기예금 계좌를 선택한다.
2. 시스템은 정기예금 계좌 정보를 보여준다.
3. 예금주가 금일 기준으로 예금을 해지할 경우 지급받을 수 있는 이자 계산을 요청한다.
4. 시스템은 중도 해지 시 지급받을 수 있는 이자를 계산한 후 결과를 사용자에게 제공한다.

확장.
3a. 사용자는 해지 일자를 다른 일자로 입력할 수 있다.

5. 책임 주도 설계는 구조와 기능을 어떻게 사용하는가?

책임 주도 설계 방법은 시스템의 기능을 역할과 책임을 수행하는 객체들의 협력으로 바라보게 한다. 유스케이스로부터 첫 번째 메세지와 사용자가 달성하려는 목표를, 도메인 모델로부터 기능을 사용할 수 있는 안정적인 구조를 제공받아 객체의 협력 공동체를 구성할 수 있다. 견고한 객체지향 애플리케이션을 개발하기 위해서는 사용자의 관점에서 시스템의 기능을 명시하고, 사용자와 설계자가 공유하는 안정적인 구조를 기반으로 기능을 책임으로 변환해야 한다.

6. 연결 완전성과 가역성은 무엇인가?

연결 완전성은 도메인 모델링에서 사용한 객체와 개념을 프로그래밍 설계에서의 객체와 클래스로 매끄럽게 변환할 수 있다는 특징이다. 가역성은 연결완전성의 역방향으로, 모델에서 코드로의 매끄러운 흐름을 의미하는 특징이다. 이는 객체지향이 도메인을 모델링하는 기법과 도메인을 프로그래밍하는 기법이 같기 때문이다.

profile
딩가딩가 백엔드 개발자

0개의 댓글