본문 바로가기
정보처리기사

정보처리기사 실기 [4. 서버 프로그램 구현 / 패턴]

by 하겐모아 2023. 7. 11.

CH02 연계 메커니즘 구성

 

📢 주요연계기술

 

# 직접연계

📌 DB링크 : 데이터베이스에서 제공하는 DB링크 객체를 이용

📌 API

> 송신 시스템의 DB에서 데이터를 읽어서 제공하는 애플리케이션 프로그래밍 인터페이스 프로그램

> 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수있게 만든 인터페이스이고, 응용프로그램에서 데이터를 주고받기 위한 방법을 의미한다.

📌 JDBC (Java Database Connectivity)

> 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 DB와 연결

> 데이터베이스에서 자료를 조회하거나 업데이트하기 위해서 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API

 

#간접연계

📌EAI (연계솔루션) 

> 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션

📌 소켓

> 소켓을 생성하여 포트를 할당하고, 클라이언트의 요청을 연결하여 통신

> 네트워크를 경유하는 프로세스 간 통신의 접속점으로 클라이언트와 서버 프로그램 사이에 데이터를 송수신할 수 있는 기술

> IP/address와 Port넘버가 합쳐진 , 네트워크상에서 서버 프로그램과 클라이언트 프로그램이 통신 할 수 있도록 해주는 교환 기술

 

 

📢웹 서비스 유형

📌 SOAP(Simple Object Access Protocol) : HTTPS , SMTP등을 사용하여 XML기반의 메시지를 네트워크 상태에서 교환하는 프로토콜

 

📌 WSDL(Web Service Description Language) : 웹 서비스명, 제공위치, 메시지 포맷 등 웹 서비스에 대한 상세 정보가 기술된 XML 형식으로 구현 되어 있는 언어

 

📌 UDDI (Universal Description , Discovery and Intergration) : 웹  서비스에 대한 정보인  WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근,검색이 가능한 레지스트

 

#디자인패턴

 

📢 생성패턴

📌 빌더(builder) : 복잡한 인스턴스를 조립해 만드는 구조, 건축가가 블록을 조립하는 모습

📌 프로토타입(prototype) : 원복 객체를 복사한 후 필요한 부분만 수정, 복제품 만들기

📌 팩토리매소드 (Factory Method) : 상위 클래스에서 인터페이스 정의, 하위 클래스에서 인스턴스 생성, 부품부터 완성품까지 통째로 찍어내는 캡슐화공장

📌 추상팩토리(Abstract factory) : 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스 제공, 서로 다른 부품을 조립만 하는 조립 공장

📌 싱글톤 (Singleton) : 전역 변수 사용하지 않고 객체 하나만 생성, 그 객체는 어디서든 참조가능, 하나뿐인

 

📢 구조패턴

📌 브릿지(Bridge) : 기능 계층과 구현 계층을 연결, 두 섬을 연결하는 다리

📌 데코레이터(Decorator) : 기존에 구현되어 있는 클래스에 필요한 기능 추가해 나감, 덧붙이는 방식

📌 퍼싸드(Facade) : 복잡한 시스템에 단순한 인터페이스 제공, 간편하게 사용가능 외부(Facade)리모컨

📌 플라이웨이트(Flyweight) : 메모리 절약, 클래스의 경량화, 부담을 가볍게(Flyweight)하다,

📌 프록시(Proxy) : 실제 객체에 대한 대리 객체, 대리해서 처리해줌

📌 컴포지트(composite) : 객체들의 관계를 트리 구조로 여러 객체로 구성, 폴더와 파일을 합성(Composite) 

📌 어댑터(Adapter) : 중간에서 맞춰주는 역활, 변압기

 

📢 행위패턴

📌 미디에이터 (중재자)(Mediator) : 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴, 중간에 통제

📌 인터프리터(Interpreter) : 언어의 다양한 해석, 번역가

📌 이터레이터 (Iterator) 반복자 : 자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록하는 패턴, 같은 명령의 반복

📌 템플릿 메서드 (Template Method) : 큰 틀을 묶는것, 상위 클래스-추상 , 하위클래스-구체

📌 옵저버 (Observer) : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락, 상태를 전달

📌 스테이트(State) : 상태에 따라 다르게 처리할 수 있도록 행위 내용 변경, 

📌 비지터(Visitor) : 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업 수행, 여기저기 방문, 객체 구조 변경 없으면서 기능만 따로 추가

📌 커맨드(Command) : 명령이 들어오면 그에 맞는 서브 클래스 선택되어 실행, 각 종 명령어 모음

📌 스트레티지 (전략)(Strategy) : 알고리즘 군 정의, 행위를 클래스로 캡슐화해 동적으로 행위 자유롭게 변환

📌 메맨토(Memento) : Undo(작업취소) 기능 개발, 그때로 돌아가는것

📌 체인 오브 Chain of Responsibility : 정적으로 어떤 기능에 대한 처리의 연결이 하드 코딩 되어 있을 때, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 디자인

 

📢 객체지향 분석

> 사용자의 요구사항과 관련된 객체, 속성, 연산,관계 등을 정의하여 모델링하는 작업

 

📢 객체지향 분석의 방법론

📌 럼바우 방법

> 분석 활동을 객체 모델, 동적모델,기능 모델로 나누어 수행함

📌 부치(Booch) 방법

> 미시적 갭라 프로세스와 거시적 개발 프로세를 모두 사용함

📌 Coad와 Yourdon 방법

> E-R다이어그램을 사용하여 객체의 행위를 모델링함

📌 Wirfs-Brock 방법

> 분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적을 수행함

 

📢 객체지향  설계 원칙 SOLID

📌 단일 책임 원칙(SRP)

> 객체는 단 하나의 책임만 가져야 한다는 원칙

📌 개방 폐쇄 원칙 (OCP)

> 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계

📌 리스코프 치환 원칙 (LSP)

> 지식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다는 원칙

📌 인터페이스 분리 원칙 (ISP)

> 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙

📌 의존 역전 원칙 (DIP)

> 의존 관계 성립시 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙

 

📢 응집도

📌 우연적(Coincidental)

> 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

📌 논리적 (Logical)

>  유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도

📌 시간적 (Temporal)

> 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도

📌 절차적 (Procedural)

> 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도

📌 통신적(교환적)(Communication)

> 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도

📌 순차적 (Sequential)

> 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도

📌 기능적 (Functional)

> 모듈 내부의 모든 기능 요소들이 단일 문제와  연관되어 수행될 경우의 응집도

 

📢 결합도

📌 내용 (Content)

> 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 작접 참조하거나 수정할 때의 결합도

> 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도

📌 공통(Common)

> 공유되는 공통 데이터 영역을 여러 모듈이  사용할 때의 결합도

> 파라미터가 아닌 모듈 밖에 선언되어있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도

📌 외부(External)

> 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도

> 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도

📌 제어 (Control)

> 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도

> 단순 처리할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우의 결합도

📌 스탬프 (Stamp)

> 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도

📌 자료 (Data)

> 모듈간의 인터페이스가 자료 요소로만구성될 때의 결합도

> 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈간의 상호작용이 일어나는 경우의 결합도