티스토리 뷰
728x90
객체 지향은 자주 변경되는 기능이 아닌 안정적인 구조를 기반으로 시스템을 구조화함
구조 설계
소프트웨어 제품 설계의 두가지 측면
- 기능: 제품이 사용자를 위해 무엇을 할 수 있는지에 초점
- 구조: 제품의 형태가 어떠해야 하는지에 초점
요구사항 변경과 대비
- 소프트웨어 분야에서 예외가 없는 유일한 규칙은 요구사항이 항상 변경된다는것
- 설계가 어려운 이유는 오늘의 기능이 내일 변경될지도 모르는 요구사항을 수용할 수 있는 코드를 창조해야하지 때문
- 미래에 대비하는 가장 좋은 방법은 변경을 예측하는것이 아닌 수용할 수 있는 설계를 하는것
- 자주 변경되지 않는 객체 구조를 바탕으로 시스템 기능을 객체간의 책임으로 분배해야 함
기능과 구조
- 구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현 (도메인 모델링)
- 기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템 행위로 표현 (유스케이스 모델링)
도메인 모델
- 사용자가 프로그램을 사용하는 대상 분야를 도메인이라고 함
- 도메인모델이란 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 필요한 부분만 단순화해 구조화한 형태
멘탈 모델
- 멘탈 모델이란 자신이 상호작용하는 사물들에 대해 갖는 모형을 의미
- 제품을 설계할 때 제품에 관한 모든것이 사용자들이 제품에 대해 가지고 있는 멘탈 모델과 일치해야 함
- 도메인 모델과 코드 설계가 일치해야 함
안정적인 재료: 구조(도메인)
도메인을 담을수 있는 객체지향
- 최종 코드는 사용자가 도메인을 바라보는 관점을 반영해야함. (도메인 모델을 기반으로 설계해야함)
- 객체지향을 사용하면 도메인 구조와 최대한 유사하게 코드를 구조화 할 수 있음
- 코드의 구조가 도메인의 구조를 반영하면 도메인에 대한 이해를 바탕으로 코드를 이해하기 쉬움
- 도메인에 포함된 개념과 규칙은 비교적 변경될 확률이 적기 때문에 도메인 모델을 기반으로 코드를 만들면 변경에 쉽게 대처 가능
객체 지도
- 안정적인 구조를 제공하는 도메인 모델을 기반으로 소프트웨어 구조를 설계하면 변경에 유연하게 대응 가능
- 도메인 모델은 기능 구현시 참조할수 있는 궁극적인 지도
불안정한 재료: 기능
- 사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 글로 정리한것을 유스케이스라고함
- 산발적으로 흩어져있는 기능에 사용자 목표라는 문맥을 제공함으로써 기능이 유기적인 관계를 가지게됨
유스케이스 예
도서 예약 유즈케이스 시나리오:
- 도서 예약:
- 주요 목적: 회원이 원하는 도서를 예약한다.
- 사전 조건:
- 회원은 시스템에 로그인되어 있어야 한다.
- 도서가 현재 대출 중이거나 예약 중이 아닌 상태여야 한다.
- 주요 흐름:
- 회원은 도서관 홈페이지나 어플리케이션에 로그인한다.
- 회원은 도서 검색을 통해 예약하고자 하는 도서를 찾는다.
- 도서 상세 페이지에서 예약 버튼을 클릭한다.
- 시스템은 도서가 예약 가능한지 확인하고, 예약이 가능하면 예약을 완료한다.
- 예약이 완료되면 회원에게 예약 확인 메시지를 표시하고, 해당 도서의 예약 상태를 "예약 중"으로 변경한다.
- 대안 흐름:
- 4단계에서 도서가 이미 예약 중이거나 대출 중이라면, 시스템은 해당 정보를 회원에게 알리고 예약을 거부한다.
유스케이스 특성
- 유스케이스는 사용자와 시스템간의 상호작용을 보여주는 ‘텍스트’
- 상호작용을 이야기 흐름으로 표현한 것
- 다이어그램이 중요한것이 아님
- 유스케이스는 하나의 시나리오가 아닌 여러 시나리오들의 집합
- 유스케이스는 단순히 기능을 나열하는것이 아닌 이야기를 통해 연관된 기능들을 함께 묶을 수 있음
- 유스케이스는 사용자 인터페이스(UI)와 관련된 세부 정보를 포함하면 안됨
- 유스케이스는 내부 설계와 관련된 정보를 포함하지 않음
- 유스케이스는 단지 사용자가 바라보는 시스템의 외부 관점만을 표현함
재료 합치기: 기능과 구조의 통합
- 도메인모델은 안정적인 구조를 개념화하기 위해, 유스케이스는 불안정한 기능을 서술하기 위해 가장 일반적으로 사용되는 도구
- 유스케이스에 정리된 시스템의 기능을 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야 함
728x90
'독서 > 객체지향의 사실과 오해' 카테고리의 다른 글
chapter7. 함께 모으기 (1) | 2023.12.22 |
---|---|
chapter5. 책임과 메시지 (1) | 2023.12.22 |
chapter4. 역할, 책임, 협력 (1) | 2023.12.22 |
chapter3. 타입과 추상화 (0) | 2023.12.22 |
chapter2. 이상한 나라의 객체 (0) | 2023.12.22 |
댓글