[객사오] 객체지향 설계 (4)

Hashswim·2024년 8월 20일
0

유일하게 변하지 않는 것은 모든 것이 변한다는 사실뿐이다

기능설계와 구조설계

소프트웨어 제품의 설계에는 사용자를 위해 무엇을 할 수 있는지에 포커스를 가지는 기능 측면과
제품의 형태가 어떠해야 하는지에 포커스를 맞추는 구조 측면이 있다.

사용자가 만족할 수 있는 훌륭한 기능을 제공하는 동시에 예측 불가능한 요구사항 변경에 유연하게 대처할수 있는 안정적인 구조를 제공해야한다.
하지만, 미래의 변경을 예측하고 변경에 맞추어 설계를 한다면 불필요하게 복잡한 설계를 초래하므로 미래의 변경을 수용할 수 있는 구조를 설계해 미래의 변경을 대비하도록 설계해야한다.

구조 측면

구조를 수집하고 표한하기 위한 기법을 도메인 모델링이라 한다.

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

도메인 모델링은 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 구조화한 형태로, 소프트웨어가 목적하는 영역 내의 개념과 개념간의 관계, 다양한 규칙이나 제약등을 주의 깊게 추상화 한것이다.

단순한 다이어그램 UML이 아니라 이해관계자들이 바라보는 멘탈 모델
-> 사용자가 시스템 구조를 바라보는 관점인 동시에 소프트웨어 안에 구현된 코드 자체

소프트웨어 객체와 현실 객체의 표현적 차이를 줄여야 한다.

도메인 모델은 실제 사용자의 관점 구조이므로 변경이 적다. 도메인 모델을 기반으로 설계를 하면 안정적이 구조를 만들어 낼 수 있다..!

기능 측면

기능을 수집하고 표현하기 위한 기법을 유스케이스 모델링이라 한다.

기능적 요구사항은 사용자에게 제공해야 하는 기능의 목록이다.

시스템과 사용자간의 상호작용 관점에서 바라보며 상호작용의 흐름을 텍스트로 정리한 것이 유스케이스

유스케이스의 특징
1. 유스케이스는 시스템과 사용자간의 상호작용을 보여주는 텍스트 -> 다이어그램 그리기에 시간을 쏟지 말자
2. 하나가 아닌 여러 시나리오들의 집합
3. 단순한 피처 목록이 아닌 여러 피처들을 포함하는 시나리오를 제공
4. 인터페이스와 관련한 세부 정보를 포함하지 말아야 한다.
5. 내부 설계와 관련 정보를 포함하지 않아야 한다.

유스케이스는 설계 기법이나 객체지향 기법이 아닌 사용자가 바라보는 외부관점 만을 표현한다.

책임 주도 설계

  1. 시스템의 기능을 시스템의 책임으로 변경
  2. 커다란 시스템의 책임을 시스템안에 작은 규모의 객체들이 수행해야 할 작은 규모의 책임으로 세분화
  3. 협력을 완성하는데 필요한 메시지를 식별하며 객체들에게 책임을 할당해 나간다.

유스케이스는 사용자에게 제공할 기능을 시스템의 책임으로 보게 하며 객체 간의 안정적 구조에 책임을 분배할 시작점을 제공하고 도메인 모델은 기능을 수용하기 위해 은유할 수 있는 안정적인 구조를 제공한다.

객체지향의 장점은 도메인 모델링하기 위한 기법과 도메인을 프로그래밍하기 위해 사용하는 기법이 동일..!

0개의 댓글