02. 현행 시스템 분석
: 사용하고 있는 소프트웨어 및 하드웨어는 무엇인지, 네트워크 구성은 어떻게 되어 있는지 파악하는 활동
: 여러가지 소프트웨어 구성요소와 특성 중에서 외부에 드러나는 특성, 구성요소간의 관계 표현하는 시스템의 구조나 구조체
: 1은 유스케이스 뷰, 4는 논리 뷰, 구현 뷰, 프로세스 뷰, 배포 뷰
: 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션
계층화 패턴
- 시스템을 레이어로 구분
- 서로 마주 보는 두개의 계층 사이에서만 상호작용
클라이언트-서버 패턴
- 하나의 서버와 다수의 클라이언트
- 사용자가 클라이언트를 통해 서버에 서비스 요청시 서버는 클라이언트에 서비스 제공
- 서버는 클라이언트로 부터의 요청을 대기
파이프 필터 패턴
- 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능
- 서브 시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복
- 필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장 용이
브로커 패턴
- 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용
- 컴포넌트들은 원격 서비스 실행을 통해 상호작용이 가능
- 브로커 컴포넌트는 컴포넌트 간 통신 조정 역할
- 서버는 자신의 기능들을 브로커에 넘겨주며(Publish), 클라이언트가 브로커에 서비스를 요청하면 브로커는 자신의 레지스트리에 있는 적합한 서비스로 리다이렉션(Redirection)
: 아키텍처 접근법이 품질 속성에 미치는 영향을 판단하고 아키텍처의 적합성을 평가하는 모델
: 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
개발에 이용시 효율성, 유지보수성, 운용성이 높아지며 프로그램의 최적화에 도움
구성요소 : 패턴 이름, 문제 및 배경, 솔루션, 사례, 결과, 샘플코드
유형 : 생성, 구조, 행위
종류
Builder
: 생성과 표기를 분리하여 복잡한 객체 생성 Prototype
: 원형 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용Fatory Method
: 상위 클래스에서 객체 생성 인터페이스 정의, 하위 클래스에서 인스턴스 생성Abstract Factory
: 동일한 주제의 다른 팩토리를 묶음Singleton
: 한 클래스에 한 객체만 존재하도록 제한Bridge
: 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리Decorator
: 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴Facade
: 복잡한 시스템에 대하여 단순한 인터페이스 제공Flyweight
: 여러 개의 가상 인스턴스 제공, 클래스의 경량화 목적Proxy
: 실체 객체에 대한 대리 객체로 정보은닉 역할, 접근제어 용도Composite
: 객체들의 관계를 트리구조로 구성하여 부분-전체 계층을 표현, 복합 객체와 단일 객체를 동일하게 취급Adapter
: 기존의 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스 생성Mediator
: 객체들 통신을 통제하는 중재자Interpreter
: 구문을 나누고 해석을 맡는 클래스 각각 작성, 여러 형태 언어 구문 해석 가능, 문법 자체를 캡슐화Iterator
: 내부구조 노출 X, 복합 객체의 원소를 순차적으로 접근 가능하개 해줌Template
: 일부분을 서브 클래스로 캡슐화하여 상위 작업의 구조는 바꾸지 않으면서 서브 클래스로 작업의 일부분 수행Observer
: 한 객체 상태 변화 시 의존하는 다른 객체들에 연락이 가고 자동으로 내용 갱신, '일대다' 의존State
: 객체 상태를 캡슐화하여 클래스화, 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경Visitor
: 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스 생성, 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴Command
: 실행될 기능을 캡슐화, 요구사항을 객체로 캡슐화Strategy
: 알고리즘을 각각 하나의 클래스로 캡슐화, 행위를 클래스로 캡슐화하여 필요시 서로 교환Memento
: 객체의 정보를 저장할 필요가 있을 때 적용, Undo 기능 개발 시 사용Chain of Responsibility
: 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결계층 | 설명 | 프로토콜 |
---|---|---|
응용 계층 | 사용자와 네트워크 간 응용서비스 연결 | HTTP, FTP |
표현 계층 | 데이터 형식 설정과 부호교환, 암/복호화 | JPEG, MPEG |
세션 계층 | 연결 접속 및 동기제어 | SSH, TLS |
전송 계층 | 신뢰성 있는 통신 보장 데이터 분할과 재조립, 오류제어 흐름제어 등 | TCP, UDP |
네트워크 계층 | 단말간 데이터 전송을 위한 최적 경로 제공 | IP, ICMP |
데이터 링크 계층 | 데이터 전송, 오류 제어 | 이더넷 |
물리 계층 | 0과1 비트 정보 변환 | RS-232C |
: 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용 프로그램