250x250
반응형
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

재 현

6. 객체 지도 본문

Book

6. 객체 지도

본명은이점례 2021. 11. 3. 16:12
728x90

기능이 아니라 구조 중심 설계

  • 기능 : 사용자를 위해 무엇을 할 수 있는 지, 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현

  • 구조 : 제품의 형태가 어떠해야 하는 지, 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현한다

훌륭한 기능 + 훌륭한 구조 = 훌륭한 소프트웨어

좋은 설계는 사용자가 만족할 수 있는 기능을 제공하는 동시에 예측 불가능한 요구사항 변경에 유연하게 대처할 수 있는 안정적인 구조를 제공하는 설계다

안정적인 재료 : 구조

도메인 모델

도메인이란 사용자가 프로그램을 사용하는 대상 분야를 일컫는다. 모델은 대상을 추상화한 것이다.

사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태이다

어플리케이션은 도메인 모델을 기반으로 설계돼어야 한다. 이는 도메인 모델이란 사용자들이 도메인을 바라보는 관점이며, 설계자가 시스템의 구조를 바라보는 관점인 동시에 소프트웨어 안에 구현된 코드의 모습 그 자체이기 때문이다

표현적 차이

소프트웨어 객체와 현실 객체 사이의 의미적 거리를 가리킨다.

  • 소프트웨어 객체는 현실 객체의 특성을 토대로 구축된다.
  • 표현적 차이가 중요한 이유는 소프트웨어를 이해하고 수정하기 쉽게 만들어주기 때문이다
  • 코드의 구조가 도메인의 구조를 반영하기 때문에 도메인을 이해하면 코드를 이해하기 수월하다

불안정한 재료 : 기능

유스케이스

사용자와 시스템 간의 상호작용 흐름

  • 다이어그램에 집착하지말라 중요한 건 텍스트다
  • 유스케이스는 시나리오의 집합이다
  • 단순히 기능을 나열하는 것이 아니라 이야기를 통해 기능을 묶는다
  • 사용자 관점에서 시스템의 행위에 초점을 맞춘다
  • 내부 설계와 관련된 정보를 포함하지 않는다

단지 사용자가 시스템을 통해 무엇을 얻고 어떻게 상호작용 할 수 있는 지만 기술된다. 유스케이스는 설계 기법도, 객체지향 기법도 아닌 힌트이다

재료 합치기 : 기능과 구조의 통합

도메인 모델, 유스케이스, 그리고 책임-주도 설계

도메인 모델은 안정적인 구조를 개념화하기 위해, 유스케이스는 불안한 기능을 서술하기 위해 사용되는 도구다. 변경에 유연한 소프트웨어를 만들기 위해서는 유스케이스에 정리된 시스템의 기능을 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야 한다. 책임-주도 설계는 이 책임을 객체들의 협력으로 바꾸면서 처리한다

  1. 유스케이스 : 시스템이 사용자에게 제공할 기능을 시스템의 책임으로 바꾼다
  1. 시스템에 할당된 거대한 책임은 세분화한다(협력)
  1. 도메인 모델 : 개념을 은유하는 소프트웨어 객체를 선택한다
  1. 협력을 완성하는 데 필요한 메시지를 식별하면서 객체들에게 책임을 할당해 나간다
  1. 협력에 참여하는 객체를 구현하기 위해 클래스를 추가하고 속성과 함께 메서드를 구현하면 시스템의 기능이 완성된다.

728x90

'Book' 카테고리의 다른 글

객체지향의 사실과 오해  (0) 2021.11.05
5. 책임과 메시지  (0) 2021.10.29
4. 역할, 책임, 협력  (0) 2021.10.26
3. 타입과 추상화  (0) 2021.10.20
2. 이상한 나라의 객체  (0) 2021.10.20