정보처리기사

[정보처리기사] 소프트웨어 구축 (5)

hminor 2023. 7. 5. 16:44

인터페이스 구현

  • 인터페이스 시스템
    • 개념
      • 서로 다른 시스템, 장치 사이에서 정보나 신호를 주고받을 수 있도록 도움을 주는 시스템
    • 구성
      • 송신
        • 연계할 데이터를 생성해, 연계 테이블 또는 파일 형태로 송신하는 시스템
      • 수신
        • 수신할 데이터를 데이터 형식에 맞게 저장하고 활용하는 시스템
      • 중계
        • 송/수신 시스템 사이에서 데이터를 송수신하고 현황을 모니터링 하는 시스템
  • 송수신 데이터 식별
    • 개념
      • 송수신 시스템 사이에서 교환되는 데이터는 규격화된 표준 형식에 따라 전송
    • 송수신 전문 구성
      • 전문 공통부
        • 인터페이스 표준 항목을 포함
      • 전문 개별부
        • 업무처리에 필요한 데이터를 포함(실제 사용할 데이터)
      • 전문 종료부
        • 전송 데이터의 끝을 표시하는 문자 포함
  • 인터페이스 설계서 구성
    • 목록
      • 연계 업무와 연계에 참여하는 송수신 시스템의 정보, 연계 방식과 통신 유형 등에 대한 정보
    • 인터페이스 정의서
      • 데이터 송신 시스템과 수신 시스템 간의 속성과 제약조건 등을 상세히 포함
  • 내.외부 모듈 연계 방식
    • EAI(Enterprise Application Integration) → Integration (통합)
      • 개념
        • 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션
      • EAI 구축 유형
        • Point to Point
          • 중간에 미들웨어를 두지 않고 각 애플리케이션 간 Point to Point 형태로 연결
          • 솔류션 구매 없이 통합
        • Hub & Spoke
          • 단일 접점이 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
          • 모든 데이터 전송 보장
          • 확장, 유지 보수 용이
          • 허브 장애 시 전체 영향
        • Message Bus(ESB 방식)
          • 애플리케이션 사이 미들웨어(버스)를 두어 처리
          • 미들웨어를 통한 통합
          • 어댑터가 각 시스템과 버스를 두어 연결하므로 뛰어난 확장성, 대용량 처리 가능
        • Hybrid
          • 그룹 내에는 Hub & Spock방식, 그룹 간 Message Bus 방식을 사용
    • ESB(Enterprise Service Bus)
      • 다양한 시스템과 연동하기 위한 멀티 프로토콜 지원
      • 버스를 통해 이기종 애플리케이션을 유연하게 통합하는 핵심 플랫폼
  • 인터페이스 연계 기술
    • Link
      • 데이터베이스에 제공하는 DB Link 객체를 이용
      • 수신 시스템에서 DB Link를 생성하고 송신 시스템에서 해당 DB Link를 직접 참조하는 방식
    • DB Connection
      • 수신 시스템의 WAS에서 송신 시스템 DB로 연결하는 DB Connection Pool을 생성 후 연계 프로그램에서 해당 DB Connection Pool명을 이용
    • JDBC(Java Database Connectivity)
      • 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하는 송신 시스템
    • API/ Open API
      • 송신 시스템의 애플리케이션 프로그래밍 인터페이스 프로그램
      • API 명, 입출력 파라미터 정보가 필요
    • Web Service
      • SOAP: UDDI에서 WSDL을 받아서 통신을 하기 위한 프로토콜
      • UDDI: ex) 도서관
      • WSDL: ex) 설명서
    • Hyper Link
      • 웹 어플리케이션에서 하이퍼링크를 이용
    • Socket
      • 통신을 위한 소켓을 생성해 포트를 할당하고 클라이언트의 통신 요청 시 클라이언트와 연결하고 통신하는 네트워크 기술
  • 인터페이스 전송 데이터
    • JSON(Javascript Object Notation)
      • JavaScript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맥
      • JSON 데이터는 이름과 값의 쌍으로 이루어진다.
    • XML(eXtensible Markup Language)
      • 웹에서 구조화한 문서를 표현하고 전송하도록 설계한 마크업 언어
      • 다양한 표현이 가능하고, 확장성이 뛰어나며 간단하다
      • HTML처럼 데이터를 보여주는 목적이 아닌 데이터를 저장하고 전달할 목적으로 만들어짐
      • 태그를 더욱 확장해서 사용가능
        • ex) <dog></dog>
    • YAML(YAML Ain’t Markup Language)
      • 구성 파일 작성에 자주 사용되는 데이터 직렬화 언어
    • CSV(Comma Separated Values)
      • 몇 가지 필드를 쉼표로 구분한 텍스트 데이터 및 텍스트 파일
  • 인터페이스 구현
    • AJAX(Asynchronous JavaScript and XML)
      • 개념
        • 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신
      • 비동기 방식
        • 웹 페이지를 리로드하지 않고 데이터를 불러오는 방식
    • SOAP(Simple Object Access Protocol)
      • 개념
        • HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크상에서 교환하는 프로토콜
        • SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다.
        • DCOM이나 CORBA의 호환성과 보안 문제로 등장
        • SOA(서비스 지향 어플리케이션) 개념을 실현하기 위한 기술.
      • 구성
        • SOAP
        • UDDI
          • 인터넷에서 전 세계의 비즈니스 업체 목록에 자신의 목록을 등록하기 위한, XML 기반의 구격
        • WSDL(Web Services Description Language)
          • 웹 서비스 기술언어 또는 기술된 정의 파일의 총칭으로 XML로 기술
    • REST
      • 개념
        • HTTP URI를 통해 자원을 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미.
        • ROA(자원 기반 구조)의 개념으로 구현.
        • 여기서 잠시 용어 정리😉
          • URI vs URL
            • URI는 식별하고
            • URL은 위치를 가르킨다*.*
          • SOAP vs REST
            • 공통점
              • 서로 데이터를 주고 받고 하는 기능은 같다.
            • 차이점
              • SOAP은 SOA로 표준이 있지만 구현이 힘들다.
              • REST는 ROA로 표준이 따로 없지만, 구현이 편하다.
      • REST 구성요소
        • 자원(Resource), URI
          • 서버에 존재하는 데이터의 총칭
          • 모든 자원은 고유의 URI를 가지며 클라이언트는 URI를 지정하여 해당 자원에 대해 CRUD 명령을 수행한다.
        • 행위(Verb), Method
          • 클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다.
          • HTTP 프로토콜에서는 GET, POST, PUT, DELETE 같은 Method를 제공
        • 표현(Representation)
          • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 나타낼 수 있다.
  • 인터페이스 보안
    • 인터페이스 보안 취약점 분석
      • 인터페이스의 보안 취약점을 분석
        • 인터페이스 각 구간의 구현 현황을 분석
        • 인터페이스 각 구간의 보안 취약점을 분석
      • 분석된 보안 취약점을 근거로 인터페이스 보안 기능을 적용
        • 네트워크 구간에 보안 기능을 적용
          • SSL, HTTPS, S-HTTP, IPSec
        • 애플리케이션에 보안 기능을 적용
          • 시큐어 코딩 가이드
        • 데이터베이스에 보안 기능을 적용
          • 민감 데이터를 암호화, 익명화 등을 통해 데이터 자체 보안 방안도 고려
  • 인터페이스 검증
    • 인터페이스 구현 검증 도구
      • xUnit
        • 다양한 언어를 지원하는 단위 테스트 프레임워크
      • STAF(Software Testing Automation Framework)
        • 소프트웨어 테스트 자동화 프레임워크
        • 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
      • NTAF(NHN Testing Automation Framework)
        • 네이버 오픈소스
        • FitNesse의 장점과 STAF의 장점을 통합한 네이버의 테스트 자동화 프레임워크
      • FitNesse
        • 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
      • Selenium
        • 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
      • watir(Web Application Testing in Ruby)
        • Ruby를 사용하는 웹 애플리케이션 테스트 프레임워크
    • 인터페이스 검증 감시 도구
      • 개념
        • 데이터 이동시 감시하는 도구
        • APM(Application Performance Management)을 사용하여 동작상태 감시
      • 종류
        • 스카우터(Scouter)
        • 제니퍼(Jennifer)

객체지향 구현

  • 객체지향(OOP, Object Oriented Programming)
    • 개념
      • 현실 세계의 유/무형의 모든 대상을 객체로 나누고, 객체의 행동과 고유한 값을 정의하여 설계하는 방법
    • 객체지향 구성요소(클객메메인속)
      • 클래스
        • 유사한 종류의 유/무형의 존재를 속성과 연산을 정의해서 만든 틀
      • 객체
        • 자신 고유의 데이터를 가지며 클래스에서 정의한 행위를 수행
      • 메서드
        • 객체가 가지고 있는 속성들을 변경할 수 있는 하나의 연산
      • 메시지
        • 객체에게 어떤 행위를 하도록 지시
      • 인스턴스
        • 클래스에 속한 각각의 객체
      • 속성
        • 객체들이 가지고 있는 고유한 데이터를 단위별로 정의한 것
    • 객체지향 언어의 특징
      • 캡슐화
      • 상속
      • 다형성
        • 오버로딩
        • 오버라이딩
      • 추적성
      • 정보은닉
      • 관계
    • 객체지향 설계원칙(SOLID)
      • 단일 책임 원칙(SRP, Single Responsibility Principle)
        • 한 클래스는 하나의 책임만을 가져야한다.
      • 개방 폐쇄 원칙(OCP, Open-Closed Principle)
        • 확장에는 열려 있고, 수정에는 닫혀 있어야 한다.
        • 기존의 코드를 변경하지 않으면서 기능을 추가로 구현할 수 있도록 설계
      • 리스코프 치환 원칙(LSP, Liskov Substiution Principle)
        • 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다.
      • 인터페이스 분리 원칙(ISP, Interface Segregation Principle)
        • 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
        • 자신이 사용하지 않는 인터페이스 떄문에 영향을 받아서는 안된다.
      • 의존성 역전 원칙(DIP, Dependency Inversion Principle)
        • 의존 관계를 맺을 때 자주 변화하는 것보다, 변화가 거의 없는 것에 의존해야 한다.
        • 구체적인 클래스보다 인터페이스나 추상 클래스와 의존 관계를 맺어야 한다.
  • 디자인 패턴
    • 디자인 패턴(Design Pattern) 개념
      • 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들에 대해 재사용할 수 있도록 만들어놓은 패턴들의 모음
    • GoF 디자인 패턴
      • 개념
        • 개발 영역에서 디자인 패턴을 구체화하고 체계화시킴
      • Gof 디자인 패턴 분류
        • 생성 패턴: 객체 생성에 있어 프로그램 구조에 영향을 크게 주지 않는 유연성 제공
          • Builder
            • 복합 객체의 생성과 표현을 분리하여 동일한 생성 절차에서도 다른 표현 결과를 만들어낼 수 있음
            • ex) new User.Builder(10).name(’xx’).pwd(’123’).age(20)
          • Prototype
            • 원본 객체를 복사함으로써 객체를 생성
            • java의 clone()을 이용해 생성하고자 하는 객체에 clone에 대한 Override를 해준다.
          • Factory Method
            • 객체 생성을 서브클래스로 위임하여 캡슐화 함
          • Abstract Method
            • 구체적인 클래스에 의존하지 않고, 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
          • Singleton
            • 어떤 클래스의 인스턴스는 하나임을 보장하고 어디서든 참조할 수 있도록 함
              • getInstance로 오직 하나만 생성
        • 구조 패턴: 클래스나 객체를 조합해서 더 큰 구조를 만드는 패턴
          • Bridge
            • 구현부에서 추상층을 분리하여 각자 독립적으로 확장할 수 있게 함
          • Decorator
            • 주어진 상황 및 용도에 따라 어떤 객체에 다른 객체를 덧붙이는 방식
          • Facade
            • 서브 시스템에 있는 인터페이스 집합에 대해 하나의 통합된 인터페이스를 제공
            • 서브 시스템의 가장 앞쪽에 위치
          • Flyweight
            • 크기가 작은 여러 개의 객체를 매번 생성하지 않고 가능한 공유할 수 있도록 하여 메모리를 절약함
          • Proxy
            • 접근이 어려운 객체로 의 접근을 제어하기 위해 객체의 대리나 대체글을 제공
          • Composite
            • 객체들의 관계를 트리 구조로 구성
            • 하나 이상의 유사한 객체를 구성으로 설계된 객체로 모두 유사한 기능을 나타냄
          • Adapter
            • 110v, 220v 를 변환할 수 있는 것처럼 클래스의 인터페이스를 다른 인터페이스로 변환하여 다른 클래스에서 사용 가능하도록 함
        • 행위 패턴: 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
          • 행 메 인이 템옵 스테 비커 스트 메체
          • Mediator
            • 중재자
            • 한 집합에 속해있는 객체들의 상호작용을 캡슐화하여 새로운 객체로 정의
          • Interpreter
            • 특정 언어의 문법 표현을 정의함
          • Iterator
            • 반복자
            • 내부를 노출하지 않고 접근이 잦은 어떤 객체의 원소를 순차적으로 접근할 수 있는 동일한 인터페이스 제공
          • Template Method
            • 상위클래스는 알고리즘의 골격만을 작성하고 구체적인 처리는 서브클래스로 위임함
          • Observer
            • 객체 상태가 변할 때 관련 객체들이 그 변화를 통지받고 자동으로 갱신될 수 있게 함
          • State
            • 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용
          • Visitor
            • 객체의 원소에 대해 수행할 연산을 분리하여 별도의 클래스로 구성함
            • 객체지향 원직(SOLID) 중 하나인 개방-폐쇄 원칙(OCP)을 적용하는 방법
          • Command
            • 요청을 객체의 형태로 캡슐화하여 재사용하거나 취소할 수 있도록 저장함
          • Strategy
            • 동일 계열의 알고리즘군을 정의하고 캡슐화하여 상호교환이 가능하도록 함
          • Memento
            • 객체가 특정 상태로 다시 되돌아올 수 있도록 내부 상태를 실체화
          • Chain of Responsibility
            • 요청을 받는 객체를 연쇄적으로 묶어 요청을 처리하는 객체를 만날 때까지 객체 Chain을 따라 요청을 전달함