[SWAD] Ep.6 OOD(1)

GLICO·2024년 10월 25일

SWAD

목록 보기
6/12

Contents

  • Overview of OOD
  • Logical Architecture
  • Designing Objects

Overview of OOD

OOA to OOD Iteratively

Analysis : Do the right thing

  • 요구사항/OOA에서는 시스템이 "올바른 일을 수행하는 것(What)"에 중점을 둠

Design : Do the thing right

  • 설계 작업에서는 "그 일이 올바르게 동작하도록(How)"하는데 중점을 둠

Transition from OOA to OOD iteratively

  • UP에서 각 iteration마다, 요구사항/OOA에서 설계/구현으로의 전환이 일어남
  • 반복적이면서 점진적으로 분석 및 설계를 수정해서 개선해 나감
    OOA <--> OOD

Logical Architecture

Logical Architecture

논리적 아키텍처

  • 소프트웨어 클래스들을 package, subsystem, layer와 같은 큰 단위로 구성한 것
    실제 어떻게 배치(deploy)할 것인가는 결정하지 않고 논리적인 수준에서 구조를 고민.
  • Package diagram으로 논리적 아키텍처를 시각화할 수 있음

계층을 이용한 설계

계층(Layer)

  • 응집된 책임을 가지며 클래스, 패키지 또는 서브시스템을 그룹화 한 것

기본 아이디어

  • 큰 규모의 시스템을 계층들로 조직화하고 각 계층은 연관된 책임을 가짐
    응집력을 갖도록 관심 영역을 분리
  • 더 높은 계층이 더 낮은 계층의 서비스를 호출할 수 있도록 계층들이 구성됨

장점

  • 관심 분리, 하위 수준과 상위 수준의 서비스 분리 => 재사용성 증가
  • 일부 계층만 새로운 구현으로 대체할 수 있음 => 모듈성 증가
  • 팀 단위 분할 개발이 용이해짐

Typical Layers in OO system

OO System에서 일반적인 계층

  • 사용자 인터페이스 계층 (최상위, presentation 계층 이라고도 함)
    actor와의 입출력을 담당
  • 응용 로직과 도메인 계층 (domain 계층)
    요구사항을 충족하는 도메인 개념을 나타내는 소프트웨어 객체
  • 기술적 서비스 계층 (technical service 계층)
    범용 객체, 데이터베이스 연결, 오류의 로깅 서비스와 같이 기술적 서비스를 제공하는 객체나 서브시스템

우리는 도메인 계층에 집중하여 볼 것임.

Package Diagram

패키지 다이어그램

  • 어떤 구성요소라도 그룹으로 조직화되면 시각화할 수 있음

Notatoins

  • Tier = Logical layer
  • Vertical Layers
  • Horizontal Partition
    한 계층 내에서 병렬적인 서브시스템/패키지를 수평으로 표현
  • Dependency (의존 관계)
    패키지(A)에서 다른 패키지(B)에 있는 요소를 사용하면 A는 B를 의존한다고 함.
    표기는 패키지 A에서 B로 점선 화살표로 표기

SSD와 System Operations의 연관

Layered logical architecture와의 연관성

  • UI 계층의 객체는 UI 계층에서 도메인 계층으로 요청을 전달 / 위임 (System operation)
  • UI 계층에서 도메인 계층으로 보내는 메시지는 SSD에 나타난 메시지와 동일

패키지 다이어그램 가이드라인

도메인 계층의 클래스 이름은 도메인 모델에서 따온다

도메인 모델 내에서는 하나의 개념이지만, 설계 모델에서는 소프트웨어 클래스이다. 이 둘은 다르지만, 소프트웨어 클래스는 도메인 모델에서 영감을 얻는다.

논리적 모델과 물리적 모델을 섞어 그리지 않는다

  • 실제로 어떤 DB를 사용하는지(물리) 고려하지 않는다.

모델-뷰 분리 원칙 (Model-view Separation)

  • 모델은 도메인 게층의 객체를 의미
  • 모델(도메인) 객체는 뷰(UI) 객체에 대한 직접적인 지식을 가져선 안됨

모델-뷰 분리 이유

  • 유지보수
    UI는 자주 변하나 도메인/데이터는 상대적으로 덜 변함.
  • 관심의 분리
    UI 개발은 사용자 관점에서 편의성을 최대화 하는데 초점
  • 싱글 모델-멀티 뷰
    하나의 데이터로 여러 가지 다른 모습으로 사용자에게 보여주는 상황이 많음
    모델과 뷰를 분리하면 모델은 변경하지 않고 뷰만 변경하면 됨

Designing Objects

Object model의 종류

  • Static model(정적 모델)은 패키지, 클래스 이름, 속성, 오퍼레이션 등의 정의를 설계하는데 도움이 됨

  • Dynamic model(동적 모델)은 로직, 코드, 메소드 등을 설계하는데 도움이 됨

  • 반복적으로 수행해서 개선해 나감

Static and Dynamic object modeling

  • 가장 흔하게 사용되는 정적 객체 모델링 방법은 class diagram
  • 동적 객체 모델리을 통해, 실제로 어떤 객체가 어떻게 상호작용하는지에 대한 정확한 세부 정보 파악

Static UML tools

  • Class diagram, Package diagram, Deployment diagram

Dynamic UML tools

  • Interaction diagram (sequence diagram)
  • State diagram
  • Activity diagram

Recap.

Design : Do the thing right

  • 설계 작업에서는 "그 일이 올바르게 동작하도록" 하는데 중점을 둠

논리적 아키텍처

  • 소프트웨어 클래스들을 package, subsystem, layer와 같은 큰 단위로 구성한 것 (in a static view)

Package Diagram

  • 그룹(package)으로 조직화 된 논리적 아키텍처를 시각화 하는데 사용

Designing Objects

  • Static model : 패키지, 클래스 이름, 속성, 오퍼레이션 등의 정의를 설계
  • Dynamic model : 로직, 코드, 메소드 등을 설계
profile
Its me Glico

0개의 댓글