티스토리 뷰

안녕하세요 강정호입니다. 오늘은 객체지향적 분석 설계에서 "레이어를 사용한 논리적 아키텍쳐"에 대해서 공부해볼게요



소프트웨어 아키텍쳐란?


  • 성능, 수정 가능성 및 보안 등과 같은 시스템 품질의 중요 요소
  • 아키텍쳐는 소프트웨어 시스템을 구성하는 중요한 결정들의 모음 또는 구성요소이다.
  • 시스템을 구성하고 있는 구조요소와 그것들의 인터페이스


논리적 아키텍쳐란?
  • 논리적 구조는 소프트웨어 클래스를 패키지, 서브 시스템 및 레이어(정적보기)로 대규모 조직화 한 것
  • 이러한 요소가 서로 다른 물리적 플랫폼 간에 배포되는 방법에 대한 결정이 없기 때문에 논리적 아키텍쳐라고 한다.


레이어 아키텍쳐란?


  • 시스템의 주요 관점에서 응집력 있는 responsibility를 갖는 클래스, 패키지 및 서브시스템을 큰 크기로 묶어 놓은 것.
  • 계층은 상위 계층이 하위 계층의 서비스를 호출하도록 구성됩니다.

레이어의 유형
  • 프레젠테이션 레이어 : 보여지는 부분을 담당하는 모듈
    1. 외부 객체(사람, 다른 시스템)에게 정보를 제공하는 경계 개체
    2. 유저 인터페이스
  • 어플리케이션 로직 레이어(Application Logic Layer)
    1. 어플리케이션 요구사항을 충족하는 도메인 개념(예: 판매)을 나타내는 소프트웨어 객체.
  • 기술 서비스 레이어(Technical Service Layer) : APP이 구동되는 기반 시설
    1. 데이터베이스와의 인터페이스 또는 오류 로깅과 같은 지원 기술 서비스를 제공하는 범용 객체 및 하위 시스템.
    2. 이러한 서비스는 대개 응용 프로그램 독립적이며 여러 시스템에서 재사용할 수 있습니다.


Presentaion, Application, Technical Layer 그림 예시



레이어 디자인을 위한 가이드(**시험문제)


- SOC(Seperation of Concerns) : 기능들을 모듈화 하는 것. 수정이 가능해지고 결국 유지보수성이 좋아진다.


- 시스템의 대규모 논리적 구조를 명확하고 일관된 책임을 지닌 분리된 계층으로 조직하는 것.


- 하위 계층은 하위 수준 및 일반 서비스이고 상위 계층은 응용 프로그램과 관련이 있다.


- 협업 및 결합은 상위 계층에서 하위 계층으로 이루어진다. 낮은 계층에서 높은 계층으로의 연결을 피할 수 있다.


- 시스템의 논리적 구조는 서로 구별되는 계층들로 조직화되고, 이 계층들은 연관된 책임을 갖는다. 예를 들어 하위 계층은 일반적인 서비스를 제공하고 상위 계층은 보다 어플리케이션 종속적인 서비스를 제공한다.


- 따라서 명확하며 응집력 있도록 관심 분리를 이용하여 계층들을 조직.


** 하위 계층일수록 독립적, 상위 계층일수록 종속적



레이어 사용의 장점


- SOC는 결합도와 의존도를 낮추고, 응집도와 명확성을 높인다.

- 관련된 복잡성은 캡슐화되고 분해 가능하다.

- 일부 레이어(UI, 응용 프로그램, 도메인)를 새 구현으로 바꿀 수 있다.

- 일부 레이어(도메인, 기술 서비스)를 배포할 수 있다.

- 팀별 개발은 논리적인 세분화에 도움을 준다.



일반적인 정보시스템의 논리 아키텍쳐 계층 구조


밑으로 갈 수록 의존성이 낮아진다. Business Infra, Tech Service는 공통모듈로서 의존성이 낮다. 



Mixing views of Architecture


왼쪽의 아키텍쳐는 물리, 논리 아키텍쳐가 섞여 있다. 오른쪽 아키텍쳐는 logical 아키텍쳐로만 구성하여 기본적인 이해가 쉽다.



Model - View 분리 원칙


1. 비 UI 객체와 UI 객체를 직접적으로 연결하지 마라.

2. UI 객체에 어플리케이션 로직을 적용하지 말아라.



**시험문제


FURPS가 무엇인가?

Functionality 

Usability

Reliability

Performance

Supportability



댓글