ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [객체지향의 사실과 오해] 6. 객체 지도
    책/객체지향의 사실과 오해 2023. 1. 23. 09:36
    반응형

    이번 장에서 설명하는 내용

    도메인 모델이란 특정 목적에 필요한 지식을 선택적으로 단순화하고, 구조화한 형태이다.

    유스케이스란 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것이다.

    도메인 모델과 유스케이스를 사용하여 설계를 한다면 유지보수하기 쉽고 유연한 객체지향 시스템이 된다.


     

     

     

    1. 설계


    좋은 설계란 미래의 변경을 예측하고 설계에 반영을 하는 것보단, 변경을 수용할 수 있는 설계를 만드는 것이다.

    설계의 중요한 목표는 설계를 변경할 때의 시간을 낮추는 것이다.

     

    전통적인 설계는 기능 중심 설계로 특정 기능을 작은 기능으로 나누는 방식이다. 이것은 작은 기능으로 나누어도 서로 밀접한 연관이 있기 때문에 기능이 변경될 경우 코드를 수정하는데 많은 시간을 소비해야한다. 하지만 객체지향적 설계는 자주 변경되지 않는 객체 구조를 바탕으로 특정 기능을 객체 간의 책임으로 나눠준다. 이러면 기능이 변경되더라도 객체 구조는 유지되기 때문에 코드를 수정하는데 적은 시간이 걸리게 된다.


     

     

     

    2. 구조


    도메인 = 사용자가 프로그램을 사용하는 대상 분야

    모델 = 대상을 추상화하고 단순화해서 표현하는 것

     

    최종 제품은 사용자의 관점을 반영해야 한다는 것과 같이 최종 코드는 사용자가 도메인을 바라보는 관점을 반영해야한다.

    객체지향을 사용하면 사용자들이 이해하고 있는 도메인의 구조와 최대한 유사하게 코드를 구조화할 수 있다.

     

    도메인 모델을 기반으로 코드를 작성하는 이유는 코드를 수정하기 쉽게 만들어주고, 도메인 모델이 제공하는 구조가 상대적으로 안정적이다. 그리고 안정적인 구조를 만들면 변경에 유연한 소프트웨어를 만들 수 있게 된다.


     

     

     

    3. 기능


    소프트웨어는 사용자가 원하는 목표를 달성하기 위해 다양한 기능을 제공해야 한다. 설계에서도 이런 점을 고려해야 하는데, 사용자와 시스템 간에 이루어지는 상호작용의 흐름을 유스케이스라고 한다.

     

    유스케이스 예시

    [유스케이스 특징]

    • 사용자와 시스템 간의 상호작용을 보여주는 시스템이다.
      다이어그램에 시간을 쏟기 보다는 중요한 것을 유스케이스에 담는게 중요하다.
    • 하나의 시나리오가 아니라 여러 시나리오의 집합이다
      위 사진을 보면 소비자가 로그인을 해서 다양한 아이템을 구매해서 다양한 결제 방식을 설정할 수 있다.
    • 단순한 피처 목록이 아닌 시스템의 기능에 대해 의사소통할 수 있는 문맥을 얻을 수 있다.
      결제를 할 때, 실제 코드에서는 복잡한 과정을 거치지만, 여기서는 '결제를 한다'라는 큰 내용으로 이해만 해도 충분하다.

     

    [유스케이스 설계 주의 사항]

    • 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 한다.
      유스케이스도 자주 변경될 수 있기 때문에 구체적인 내용을 명시하지 않는 것이 좋다.
    • 유스케이스는 내부 설계와 관련된 정보를 포함하지 말아야 한다.

     

    유스케이스는 단지 사용자가 시스템을 통해 어떤 것을 얻고, 어떻게 상호작용할 수 있는 지에 대해 기술해야 한다. 그래서 사용자의 목표를 중심으로 정리하는 기법으로 사용하면 좋다.


     

     

     

    4. 기능과 구조의 통합


    객체 설계는 시스템에 책임을 주는 것부터 시작한다. 시스템에 책임을 주면 적당한 객체에 맞게 적절한 책임을 분배하는데, 어떤 객체를 선택할 것에는 도메인 모델 개념을 사용한다. 도메인 모델을 통해 객체를 선택하여 협력을 완성했으면 객체들에게 책임을 분배한다. 마지막으로 객체를 구현하기 위해 클래스와 메서드를 만들면 시스템의 기능이 완성된 것이다.

     

    여기서 지난번에 배운 책임 주도 설계 방법은 유스케이스와 도메인 모델을 통합 시켜주는데, 시스템의 기능을 역할과 책임을 수행하는 객체들의 협력 관계로 바라볼 수 있도록 만든다.

     

    안정적인 도메인 모델을 기반으로 설계를 하게 된다면 비즈니스가 바뀌지 않는한 안정적으로 유지할 수 있기 때문에 도메인과 코드를 밀접하게 연관시키기 위해 노력하는 것이 좋다.


     

     

     

    반응형

    댓글

Designed by Tistory.