[정처기 실기] 「1」 | 소프트웨어 구축 - (1.4) 인터페이스 구현, 객체지향 구현

728x90

[정처기 실기] 1」 | 소프트웨어 구축 - (1.4) 인터페이스 구현, 객체지향 구현

> 「1」 소프트웨어 구축

「2」 데이터베이스 구축

「3운영체제

「4네트워크

「5정보보안

「6」 신기술 용어

 

1. 소프트웨어 공학 개념

2. 프로젝트 계획 / 분석

3. 소프트웨어 설계

4. 화면 설계

5. 서버 프로그램 구현

> 6. 인터페이스 구현

> 7. 객체지향 구현

8. 애플리케이션 테스트 관리

9. 소프트웨어 유지보수

10. 제품 소프트웨어 패키징

6. 인터페이스 구현

인터페이스 개요

인터페이스 시스템

서로 다른 시스템이나 장치 간 정보나 신호를 주고받을 수 있게 도와주는 시스템

○ 인터페이스 시스템의 구성

  - 송신 시스템

  - 수신 시스템

  - 중계 서버

 

연계 시스템 분류와 데이터 식별

○ 송수신 데이터 식별

  - 전문 공통부 : 인터페이스 ID, 서비스 코드, 접속 IP

  - 전문 개별부 : 업무처리에 필요한 데이터를 포함

  - 전문 종료부 : 전송 데이터의 끝을 표시하는 문자 포함

 

인터페이스 설계서 확인

인터페이스 설계서 구성

○ 인터페이스 목록 : 연계 업무와 연계에 참여하는 송수신 시스템의 정보, 연계 방식과 통신 유형에 대한 정보

○ 인터페이스 정의서 : 데이터 송신 시스템과 수신시스템 간 속성과 제약조건을 상세히 포함

 

인터페이스 기능 구현

내 / 외부 모듈 연계 방식

○ EAI(Enterprise Application Integration) 

  - 기업 내 다른 플랫폼 / 애플리케이션들을 연결, 통합하는 솔루션

  - EAI 구축 유형

    : Point-to-Point - 미들웨어 없이 직접 애플리케이션끼리 연결

    : Hub & Spoke - 중앙 허브를 통한 중앙 집중적 연결

    : Message Bus(ESB 방식) - 미들웨어 사용

    : Hybrid - 내부 Hub & Spoke, 외부 Message Bus

○ ESB(Enterprise Service Bus)

  - 웹 서비스 중심의 표준화된 데이터 버스를 이용하여 다양한 애플리케이션을 유연하게 통합하는 플랫폼

  - 프로토콜 변환, 서비스 중심의 메시지 라우팅 기능 제공

 

인터페이스 연계 기술

○ DB Link

DB Connection

○ JDBC

○ API / OpenAPI

○ Web Service

○ Hyper Link

○ Socket

 

인터페이스 전송 데이터

JSON(JavaScript Object Notation) : 이름과 값의 쌍

XML(eXtensible Markup Language) : 구조화한 문서를 표현하고 전송

○ YAML(YAML Ain't Markup Language) : 데이터 직렬화 언어

○ CSV(Comma Separated Values) : 콤마로 데이터 구분

 

인터페이스 구현

AJAX(Asynchronous JavaScript and XML) : 비동기 방식, 페이지 일부만도 새로고침 가능

○ SOAP(Simple Object Access Protocol)

  - HTTP, HTTPS, SMTP를 통한 XML 기반 메시지 교환 프로토콜, SOA 개념을 실현하는 기술

  - SOAP 구성

    : SOAP(Simple Object Access Protocol)

    : WSDL(Web Services Description Language) - 웹 서비스 기술언어, 서비스의 기술적 세부사항 기술

    : UDDI(Universal Description, Discovery and Integration) - 비즈니스 업체 목록 등록을 위한 XML 규격

  - SOAP 보안 프로토콜

    : SAML - 인증 / 권한 관리

    : XKMS - 키 관리

    : XACML - 접근 제어

○ REST

  - HTTP URI를 통한 자원 명시와 HTTP Method를 통한 CRUD Operation 적용

  - 자원 기반 구조(ROA) 구현

  - REST 구성요소 

    : 자원(Resource) - URI를 통해 식별

    : 행위(Method) - GET, POST, PUT, DELETE

    : 표현(Representation) - 데이터 표현

  - RESTful : REST의 원리를 따르는 시스템

 

인터페이스 보안

○ 인터페이스 보안 취약점 분석

  - 인터페이스를 통한 데이터 변조, 탈취

  - 패킷 공격 기법 

    : 스니핑(Sniffing) - 패킷을 가로채는 행위

    : 스푸핑(Spoofing) - IP 주소나 다른 식별자를 위장

○ 인터페이스 보안 기능 적용

  - 네트워크 영역 : 트래픽에 대한 암호화 설정, IPSec, SSL, S-HTTP, TLS

  - 애플리케이션 영역 : 시큐어 코딩 가이드

  - DB 영역 : 민감 데이터를 암호화

 

인터페이스 구현 검증

인터페이스 검증

○ 인터페이스 구현 검증 도구

  - xUnit : 다양한 언어 지원

  - STAF : 서비스 호출 / 컴포넌트 재사용 등

  - FitNesse : 웹 기반 테스트 프레임워크

  - NTAF : FitNesse의 장점과 STAF의 장점을 통합  

  - Selenium : 웹 애플리케이션 테스트 프레임워크

  - watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크

  인터페이스 구현 감시 도구

  - APM(Application Performance Management)을 사용하여 동작상태 감시

  - 종류 : 스카우터(Scouter), 제니퍼(Jennifer)

 

인터페이스 오류 처리

○ 인터페이스 오류 발생 알림 : 화면, SMS 발송, 이메일 발송

○ 인터페이스 오류 발생 확인 : 로그 확인, 오류 테이블 확인, 감시 도구로 확인

7. 객체지향 구현

객체지향 설계

객체지향(OOP, Object Oriented Programming)

○ 현실 세계의 유형, 무형의 모든 대상을 객체로 나누고, 객체의 행동(Method)과 고유한 값(Attribute)을 정의하여 설계하는 방법

○ 객체지향의 구성요소

  - 클래스(Class) : 속성과 연산을 정의해서 만든 객체들의 집합, 데이터 추상화 단위

  - 객체(Object)

    : 클래스의 인스턴스, 고유 식별자, 하나의 독립된 존재

    : 상태(state) - 객체가 가질 수 있는 조건, 속성 값에 의해 정의됨

    : 행위(method) - 객체가 반응할 수 있는 메시지 집합

  - 속성(Attribute) : 객체들이 가지고 있는 고유한 데이터

  - 메서드(Method) : 작업을 수행하기 위한 명령문의 집합

  - 메시지(Message) : 객체에게 어떤 행위를 하도록 지시

○ 객체지향 언어의 특징

  - 캡슐화(Encapsulation) : 속성(Attribute)과 메서드(Method)를 하나로 묶은 것

  - 정보은닉(Information Hiding) : 내부 데이터에 직접 접근할 수 없도록 제한

  - 상속(Inheritance) : 상위 클래스의 속성과 메서드를 하위 클래스가 물려받는 것

  - 다형성(Polymorphism) : 하나의 메시지에 대해 여러 가지 방법으로 응답

  - 추상화(Abstraction) : 실체의 핵심적인 개념만을 추출

○ 객체지향 설계 원칙(SOLID)

  - 단일 책임 원칙(SRP) : 한 클래스는 하나의 책임만을 가져야 함, 완전한 캡슐화

  - 개방 폐쇄 원칙(OCP) : 확장에 열려 있고, 수정에 닫혀 있어야 함

  - 리스코프 치환 원칙(LSP) : 자식 클래스는 언제나 자신의 부모 클래스를 대체

  - 인터페이스 분리 원칙(ISP) : 사용하지 않는 인터페이스는 구현하지 말아야 함

  - 의존성 역전 원칙(DIP) : 변화가 거의 없는 것에 의존(추상성이 높은 상위 클래스에 의존)

 

디자인 패턴

○ 객체지향 프로그래밍 설계를 할 때 자주 발생하는 문제들에 대해 재사용할 수 있도록 만들어놓은 패턴 모임

○ 디자인 패턴 구조

  - 패턴의 이름과 유형

  - 문제 / 배경

  - 솔루션

  - 사례

  - 결과

  - 샘플 코드

○ GoF 디자인 패턴

  - 생성 패턴 : 객체 생성과 관련한 패턴

    : Abstract Factory - 구체적인 클래스에 의존 X, 연관되거나 의존적인 객체들이 조합된 인터페이스 제공

    : Builder - 객체를 조립하여 생성, 동일한 객체 생성 절차에서 다른 표현 결과를 제공

    : Factory Method - 상위 클래스는 객체 생성 인터페이스 정의, 서브 클래스는 클래스 결정하도록 분리

    : Prototype - 원본 / 원형 객체를 복제하는 방식으로 객체 생성

    : Singleton - 클래스에서 하나의 객체만 생성 가능, 어디든 참조 가능하지만 동시 참조 불가

  - 구조 패턴 - 객체를 조합해서 더 큰 구조를 만드는 패턴

    : Adapter - 비호환 인터페이스에 호환성 부여하도록 변환

    : Bridge - 구현부에서 추상층 분리 후, 각자 독립적으로 변형 / 확장 가능

    : Composite - 트리 구조로 부분 / 전체 계층을 표현, 복합 / 단일 객체를 구분 없이 사용

    : Decorator - 상속 사용 X, 객체 간 결합을 통해 객체 기능을 동적으로 추가 / 확장

    : Facade - 상위에 인터페이스 구성, 서브클래스를 단순한 인터페이스로 구현

    : Flyweight - 인스턴스를 공유하여 메모리 절약(클래스 경량화)

    : Proxy - 접근이 힘든 객체를 연결하는 인터페이스 역할(대리 객체 수행)

  - 행위 패턴 : 알고리즘이나 책임 분배에 관련된 패턴

    : Chain of Reasponsibility - 처리 가능한 객체가 둘 이상 존재

    : Command - 요청 명령어들을 추상 / 구체 클래스로 분리 후 단순화 / 캡슐화

    : Interpreter - 언어에 문법 표현 정의

    : Iterator - 접근이 빈번한 객체에 동일 인터페이스 사용

    : Mediator - 객체들 간 복잡한 상호작용을 캡술화하여 객체로 정의 후 중재

    : Memento - 객체를 이전의 특정 시점의 상태로 저장 / 복원(캡슐화 유지)

    : Observer - 상태 변화 시 상속된 객체들에 변화를 전달

    : State - 상태에 따라 동일한 동작을 다르게 처리

    : Strategy - 동일 계열 알고리즘을 개별적으로 캡슐화하여 상호 교환

    : Template Method - 상위 클래스에서 공통 사용 메서드를 정의, 하위 클래스마다 세부 사항 개별 구현

    : Visitor

      - 처리 / 연산 기능을 분리하여 별도의 클래스 생성, 클래스 메서드가 각 클래스를 방문하여 특정 작업 수행

      - 객체 구조 변경 X, 새로운 연산 기능만 추가

 

 

 

 

 

 

 

 

 

출처 | 흥달쌤

728x90