-
[객체지향의 사실과 오해] 기능과 구조의 통합Book/객체지향의 사실과 오해 2023. 3. 14. 16:11728x90
기능설계 VS 구조설계
- 설도메인 모델계는 기능(function) 측면의 설계와 구조(structure) 측면의 설계로 구성
- 기능 측면의 설계는 제품이 사용자를 위해 무엇을 할 수 있는지 초점
- 구조 측면의 설계는 제품의 형태가 어떠해야 하는지에 초점
- 설계는 기능과 구조 두가지 측면을 녹여 조화를 이루도록 하는 것
- 변경되는 요구사항에 유연하게 대처할 수 있는 안정적인 구조를 갖춰야함
- 객체지향은 객체의 구조에 집중하고 기능이 객체의 구조를 따르게 함
기능과 구조
- 사용자에게 제공할 기능과 기능을 담을 안정적인 구조
- 기능은 사용자가 자신의 목표를 달성하기 위해 사용할 수 있는 시스템의 서비스
- 구조는 시스템의 기능을 구현하기 위한 기반으로, 기능 변경을 수용할 수 있도록 안정적
- 기법
- 구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현
- 기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현
- 유스케이스 모델링 : 기능을 수집하고 표현하기 위한 기법
- 도메인 모델링 : 구조를 수집하고 표현하기 위한 기법
구조
도메인 모델
- 도메인 : 사용자가 프로그램을 사용하는 대상 분야
- 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태
- 이해관계자들이 바라보는 멘탈 모델(Mental Model)
- 멘탈 모델이란 사람들이 자기 자신, 다른 사람, 환경, 자신이 상호작용하는 사물들에 대해 갖는 모형
- 사용자 모델, 디자인 모델, 시스템 이미지를 포괄
- 설계자는 디자인 모델을 기반으로 만든 시스템 이미지가 사용자 모델을 반영하도록 해야함
- 객체지향을 이용하면 도메인에 대한 사용자 모델, 디자인 모델, 시스템 이미지 모두가 유사한 모습을 유지하도록 만드는 것이 가능
- 연결 완전성, 표현적 차이
표현적 차이
- 소프트웨어 객체와 현실 객체 사이의 의미적 거리(=의미적 차이)
- 은유를 통해 현실 객체와 소프트웨어 객체 사이의 차이를 최대한 줄이는 것이 핵심
- 도메인에 대해 생각하는 개념을 은유해야함 => 도메인 모델을 은유 => 도메인 객체를 은유
- 도메인을 이해하면 코드를 이해하기 쉬워짐
안전성
- 도메인 모델이 제공하는 구조가 안정적
- 사용자 모델에 포함된 개념과 규칙은 비교적 변경될 확률이 적기 때문에 사용자 모델을 기반으로 설계와 코드를 만들면 변경에 쉽게 대처할 수 있을 가능성이 커짐
기능
유스케이스
- 기능적 요구사항이란 시스템이 사용자에게 제공해야하는 기능의 목록을 정리한 것
- 사용자의 목표를 달성하기 위해 사용자와 시스템 간에 이뤄지는 상호작용의 흐름을 텍스트로 정리한 것
- 일차 액터 : 시스템의 서비스 중 하나를 요청하는 이해관계자, 하나의 목표를 가지고 유스케이스를 시작하는 액터
- 사용자들의 목표를 중심으로 시스템의 기능적 요구사항들을 이야기 형식으로 묶을 수 있음
특성
- 유스케이스는 사용자와 시스템 간의 상호작용을 보여주는 텍스트
- 하나의 시나리오가 아니라 여러 시나리오들의 집합
- 시나리오는 유스케이스 인스턴스
- 유스케이스는 단순한 피처(feature) 목록과 다름
- 피처는 시스템이 수행해야 하는 기능의 목록을 단순하게 나열한 것
- 단순히 기능을 나열하는 것이 아니라 연관된 기능들을 묶을 수 있음
- 유스케이스는 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 함
- 자주 변경되는 요소는 배제하고 시스템의 행위에 초점
- 사용자 인터페이스를 배제한 유스케이스 형식을 본질적인 유스케이스라고 함
- 유스케이스는 내부 설계와 관련된 정보를 포함하지 않음
- 사용자가 바라보는 시스템의 외부 관점만을 표현
- 유스케이스는 객체의 구조나 챔임에 대한 어떤 정보도 제공하지 않음
기능과 구조 통합
도메인 모델, 유스케이스
- 유스케이스에 정리된 시스템의 기능을 도메인 모델을 기반으로 한 객체들의 책임으로 분배해야함
- 책임-주도 설계 방법은 시스템의 기능을 역할과 책임을 수행하는 객체들의 협력 관계로 바라보게 함으로써 유스케이스와 도메인 모델을 통합
- 연결 완전성 : 도메인 모델링에서 사용한 객체와 개념을 프로그래밍 설계에서의 객체와 클래스로 매끄럽게 변활할 수 있는 것
- 가역성 : 코드에서 모델로의 매끄러운 흐름을 의미하는 것
- 도메인 모델을 기반으로 시스템의 기능을 구현
- 도메인 모델과 코드를 연관
728x90'Book > 객체지향의 사실과 오해' 카테고리의 다른 글
[객체지향의 사실과 오해] 객체지향 설계의 관점과 추상화 기법 (0) 2023.03.14 [객체지향의 사실과 오해] 책임의 자율성을 통한 협력의 품질 (1) 2023.03.14 [객체지향의 사실과 오해] 역할, 책임, 협력을 통한 객체지향 설계 이해 (0) 2023.03.13 [객체지향의 사실과 오해] 추상화의 2가지 차원을 바탕으로 이해한 타입(type) (1) 2023.03.10 [객체지향의 사실과 오해] 객체에 대해서 (0) 2023.03.09