시스템 설계(Architecture Design)

상위문서 : 시스템 개발 방법론 

필수참고문서 : 


목차

1. 개요
2. 시스템 설계 원리
3. 시스템 설계 표현
4. 아키텍처 유형
4.1. 중앙저장소
4.2. MVC
4.3. 클라이언트 서버
4.4. P2P
4.5. 3 계층
4.6. 4 계층
4.7. 파이브 필터


1.개요

2.시스템 설계 원리

시스템 설계는 분석에서 했던 작업들을 좀 더 구체적이고 실제 시스템에 가깝게하는 작업이다. 요구와 설계의 차이를 매꾸기 위하여 설계 작업은 궁극적으로 다음과 같은 작업이 필요하다.

  • 컴포넌트 발견 
  • 설계안의 선택
  • 설계 도면의 작성

설계 수준
설계 수준이란 양파를 생각하면된다. 소프트웨어는 겉의 양파껍질을 벗겨내면 또 양파껍질이 나오듯이 그런 구조의 설계를 가지고 있다. 그리고 공부하는 사람은 눈물이 난다.
객체지향 시스템의 설계는 UML로 4개로 볼 수 있다.
패키지 다이어그램-> 패키지 내부 클래스 다이어그램->클래스 다이어그램->순서 다이어그램, 액티비티 다이어그램

좋은 설계란?
복잡성 최소화 : 시스템이 덜 복잡할 수록 입력을 덜 요구하고 더욱 빠른 결과를 내는 것이 가능하다.
편리한 유지 관리 
느슨한 결합 : 소프트웨어의 모듈 간 연결을 최소화하도록 설계를 하여야 한다. 또한 패키지 사이, 클래스 사이에 결합되는 것을 최소로 하기 위하여 클래스 인터페이스의 추상화 , 클래스 안에 있는 정보를 감추는 정보 은닉 원리 등을 적용한다.
유연한 구조 


3. 시스템 설계 표현

시스템 설계의 표현은 패키지 다이어그램으로 표현한다. 패키지란 클래스의 모음을 말한다. 정리하면 이렇다.
데이터+매소드=클래스+클래스=패키지

4. 아키텍처 유형

현대 시스템은 매우 복잡해서 시스템을 잘 분할하는 것이 관건이다. 개발이 시작되면 잘못된 분활을 수정하거나 서브시스템의 인터페이스를 바로잡는 것이 매우 어렵기 때문이다. 이러한 문제를 해결하기 위해서 아키텍처 유형이라는 것이 있다. 이 문서에서는 잘 알려진 유형 7개를 소개한다.

4.1. 중앙 저장소

저장소 유형은 서브시스템이 중앙 저장소라 불리는 단일 데이터 구조를 접근하고 수정한다. 서브시스템은 상대적으로 독립적이며 저장소를 통하여만 상호작용을 한다. 중앙 저장소를 잘 정의하면 서브 시스템의 추가가 용이하다. 이러한 유형은 급여 시스템이나 은행 시스템에서 사용된다. 다만 중앙 저장소의 단점은 중앙 저장소에서 성능과 변경이라는 관점에서 병목 현상이 발생할 수 있다는 것이며 서브시스템과 저장소사이의 결합이 매우 강하여 다른 서브시스템에 영향을 주지 않고 저장소를 변경하기는 것이 매우 어렵다. 

4.2. MVC

MVC는 모델 뷰 컨트롤러라고 불린다. 서브시스템을 세가지 타입으로 분류하는데 도메인 지식을 보관하고 있는 모델 서브시스템과 이를 사용자에게 보여주는 서브시스템 사용자와의 인터랙션 순서를 관리하는 제어 서브시스템이 있다. 모델 서브시스템은 시스템의 여러 뷰나 제어 서브시스템과 의존되지 않도록 즉, 독립적으로 작동하도록 개발된다.
모델 서브시스템 : 도메인의 데이터를 보관
뷰 서브시스템 : 사용자에게 보여주는 층
제어 서브시스템 : 사용자와의 상호 작용을 관리

이렇게 분리하는 이유는 뷰 서브시스템과 제어 서브시스템이 모델 서브시스템보다 자주 수정을 하면 쉽고 빠르게 변경이 가능하기 때문이다.

4.3. 클라이언트 서버

서버가 클라이언트라 불리는 다른 서브시스템들에게 서비스를 제공하는 유형이다.
클라이언트 : 사용자로부터 입력을 받아 범위를 체크하고 거기에 따른 파일 또는 데이터베이스에서 데이터를 요구(트랜잭션이라고 한다.)
서버 : 요구를 수행하고 데이터의 일관성을 보장한다.

4.4. P2P

P2P 혹은 pear to pear는 클라이언트 서버 유형을 일반화한 것이다. 각 서브시스템이 클라이언트 또는 서버로 동작할 수 있다. 예전 성교육 담당이였던 프루나 선생이 이런 유형이다. 파일 공유 프로그램을 컴퓨터에 설치하면 여러분의 컴퓨터가 서버이자 클라이언트가 되는 것이다. P2P의 단점은 클라이언트 서버 시스템보다 설계가 어렵다는 것인데 데드락의 가능성과 제어 구조를 복잡하게 할 수 있기 때문이다.

4.5. 3 계층

3 계층은 서브시스템을 세 개의 층으로 구성한다.
  • 인터페이스 층 - 윈도우, 룰 체킹, 웹 페이지 등 사용자와 관련된 경계 객체를 포함
  • 응용 로직 층 - 애플리케이션에서 요구되는 처리, 룰 체킹, 통지 등을 구현하는 제어 및 엔티티 객체를 포함한다.
  • 저장 층 - 데이터베이스에 지속하여 저장하는 객체의 스토리지, 검색 , 질의를 구현한다.
쉽게 말해서
한국인<->번역기<->만국공통어<->번역기<->일본인
한국인,일본인 = 인터페이스 층
번역기 = 응용 로직 층
만국공통어 = 저장 층
이다. 여기서 미국인을 추가하고 싶으면 번역기만 설치하면된다. 근대 영어가 만국공통어 아니였나...

4.6. 4 계층

위 3계층에서 인터페이스 층을 프레젠테이션 클라이언트 층과 프레젠테이션 서버층으로 분리한 것이다. 
예를들어
소시민<->은행사이트<->은행DB<->은행 사이트<->은행원

이렇게 소시민은 은행사이트에 접속하여 대출,조회 등을 할 수 있지만 사이트 수정같은 것은 못한다. 하지만 은행원은 가능하다.
소시민= 프레젠테이션 클라이언트
은행원 = 프레젠테이션 서버
이렇게 구성된 계층에서 소시민은 은행원의 뒷통수를 치거나 보안을 뚤지 않는 이상 은행원이 수행할 수 있는 기능을 불가능하다. 

4.7. 파이프 필터

이 유형은 서브시스템이 입력 집합으로부터 데이터를 받아 다른 서브시스템에 결과를 출력해 준다.
파이브 필터에서는 
서브시스템= 필터
서브시스템 사이의 관계= 파이프
라고 한다. 대표적인 예로는 유닉스 쉘이 있다.
유닉스 쉘은 커널<->운영체제(쉘)<->UI

on 2017년 6월 12일 월요일 | A comment?
0 responses to “시스템 설계(Architecture Design)”

Leave a Reply

최근 많이 본 글