김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • KMU_WINK
  • 로컬저장소
  • GitHubDesktop
  • 원격저장소
  • local저장소
  • 깃허브데스크탑
  • Remote저장소
  • ㄱ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[Object Oriented S/E] Chapter 10 - Object Interaction Modeling
• 독서/Object Oriented Software Engineering

[Object Oriented S/E] Chapter 10 - Object Interaction Modeling

2023. 6. 2. 02:52

# 범위

251 page ~

# 내용

## 10.1 WHAT ARE DESIG PATTERNS?

  • [10.1 디자인 패턴은 자주 만나게 되는 설계 문제에 대한 해결책의 추상화이다]
  • 디자인 패턴을 통해서 비슷한 디자인 문제를 해결할 수 있다.

## 10.2 WHY DESIGN PATTERNS?

  • 패턴은 재사용 가능한 요소이다.
  • 패턴을 결합하여 크고 복잡한 디자인 문제를 해결 할 수 있다.
  • 패턴은 팀 구성원간의 의사소통을 향상시킨다.
  • 패턴은 소프트웨어 시스템의 동작과 구조를 증가시킨다.
  • 결과적으로 패턴은 소프트웨어의 생산성과 퀄리티를 향성시키며, COST와 TIME을 감소시킨다.

## 10.3 SITUATION-SPECIFIC AND RESPONSIBILITY-ASSIGNMENT PATTERNS

두개이상의 패턴을 무한히 결합하여 문제를 해결할 수 있다.

싱글톤,생성패턴, 등등에 대한 설명

## 10.4 PATTERN SPECIFICATION ( 패턴 규격 )

  • 이름과 종류
  • 사양
  • 디자인
  • 이점 및 문제
  • 지침
  • 관련 패턴
  • 용도

## 10.5 THE CONTORLLER PATTERN

  • 사용자 인터페이스와 비즈니스 객체(로직)이 서로 영향을 미치지 않고 독립적으로 변경 될 수 있는 소프트웨어 시스템을 설계하는 방법

### 10.5.1 A Motivating Example

  • 1. presenatation과 business objects간의 Tight coupling
  • Checkout GUI가 Loan object를 만들고 isAvailable()함수를 호출하고 set Available(false)함수를 호출하는데 이러한 것은 긴밀한 결합을 만든다.
  • 긴밀한 결합은 객체의 변경이 프레젠테이션의 변경을 필요로 할 수 있다.( 그반대의 경우도 해당 ) 좋지 않다는 뜻이다.
  • 2. 프레젠테이션은 actor의 요청을 처리해야한다.
  • backgroud의 processing이 필요한 actor의 요청을 프레젠테이션에서 처리하는데 이렇게 하면 안된다.
  • 프레젠테이션은 유저 인터페이스를 보여주는 역할을 하기 때문에 엑터의 프로세스를 수행할 책임이 없다.
  • 모든 측면에서 동시에 다루기 보다는 관심의 분리가 필요하다.
  • actor의 요청을 처리하는 것은 프레젠테이션이 아닌 비즈니스 객체에서 할당되어야 한다.
  • 3. 프레젠테이션에 너무 많은 책임이 할당 됐다.
  • 높은 응집력 원칙에 위배된다.

 

### 10.5.2 What is a Controller?

  • 프레젠테이션과 비즈니스 객체를 분리시킨다. 
  • 그리하여 하나의 변경사항이 다른 하나에 영향을 미치지 않는다.
  • 소프트웨어의 유지보수성을 향상시킬 수 있다.

 

### 10.5.3 Applying the Controller Pattern

  • 프레젠테이션과 비즈니스 객체사이에 컨트롤러를 배치시킨다.
  • 프레젠테이션에서의 비즈니스 로직이 제거되고 컨트롤러에 할당된다.
  • 1. 변화를 위한 설계, 체크아웃 컨트롤러의 인터페이스와 상호 작용 동작이 변경되지 않는다면 비즈니스 로직이나 비즈니스 객체의 변경이 프레젠테이션에 영향을 끼치지 않는다.
  • 2. 서로의 역할에 따른 관심사의 분리를 수행할수 있다.
  • 3. 높은 응집력

### 10.5.4 Types of Controller

  • use Case Controller, Facade Controller

### 10.5.5 Keeping Track of Use Case State ( Use Case 상태 추척 )

  • 일부 비즈니스 프로세스는 상태 의존적일 수 있다.
  • 시스템의 순서가 꼬일 수 있다.
  • 그렇기 때문에 actor request에 대한 상태를 알 수 있도록 추적하는 것이 중요하다.
  • 파사드 패턴은 저수준 객체들을 깔끔하게 감싼 고수준 객체를 만들는 과정이다. 복잡한 클라이언트 인터페이스를 숨길 수 있다.
  • 파사드 컨트롤러가 전체 시스템에 대한 actor request를 처리하는 책임이 있다. 파사드 컨트롤러는 적은 use case와 시스템이 확장되지 않을때 사용한다.

### 10.5.6 Bloated Controller ( 비대해진 컨트롤러 )

  • 컨트롤러는 높은 응집력, 고나심사 분리, 변화를 위한 설계, 정보 은닉의 장ㅈ머을 가지지만, 제대로 사용하지 않으면 과도한 책임이 부과되어 컨트롤러가 비대해진다.

### 10.5.7 Comparing Differnet Designs

  • 변화를 위한 설계
  • 관심사의 분리
  • 높은 응집력
  • 낮은 커플링
  • 정보 은닉
  • 단순하게 유지하기

### 10.5.8 컨트롤러 패턴을 적용해야 할때

  • use case senario를 작성할때
  • 기존 시나리오를 수정할때
  • 시나리오 테이블을 구성할때
  • 설계 시퀀스 다이어그램을 작성할 때
  • 설계 시퀀스 다이어그램을 수정하여 적용

### 10.5.9 컨트롤러 사용 지침

  • [10.1 Use cas가 소수이고, 앞으로 확장될일이 없으면 퍼사드 컨트롤러를 사용한다.]
  • [10.2 컨트롤러 overloading을 피해라 ]
  • [10.3 컨트롤러, 비즈니스 객체 및 기타 리소스 관리 객체에 처리할 책임을 적절히 할당해라]

 

저작자표시 (새창열림)

'• 독서 > Object Oriented Software Engineering' 카테고리의 다른 글

[Object Oriented S/E] Chapter 9 - Object Interaction Modeling  (1) 2023.05.12
[Object Oriented S/E] Chapter 8 - Actor System Interaction Modeling  (0) 2023.05.12
[Object Oriented S/E] Chapter 7 - Deriving Use Cases from Requirements  (0) 2023.05.04
[Object Oriented S/E] Chapter 6 - Architectural Design  (0) 2023.04.28
[Object Oriented S/E] Chapter 5 - Domain Modeling  (0) 2023.04.13
    '• 독서/Object Oriented Software Engineering' 카테고리의 다른 글
    • [Object Oriented S/E] Chapter 9 - Object Interaction Modeling
    • [Object Oriented S/E] Chapter 8 - Actor System Interaction Modeling
    • [Object Oriented S/E] Chapter 7 - Deriving Use Cases from Requirements
    • [Object Oriented S/E] Chapter 6 - Architectural Design
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바