[정처기 실기] 「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, 새로운 연산 기능만 추가
출처 | 흥달쌤
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 실기] 「1」 | 소프트웨어 구축 - (1.6) 소프트웨어 유지보수, 제품 소프트웨어 패키징 (0) | 2024.03.28 |
---|---|
[정처기 실기] 「1」 | 소프트웨어 구축 - (1.5) 애플리케이션 테스트 관리 (0) | 2024.03.28 |
[정처기 실기] 「1」 | 소프트웨어 구축 - (1.3) 서버 프로그램 구현 (1) | 2024.03.27 |
[정처기 실기] 「1」 | 소프트웨어 구축 - (1.2) 소프트웨어 설계, 화면 설계 (0) | 2024.03.27 |
[정처기 실기] 「1」 | 소프트웨어 구축 - (1.1) 소프트웨어 공학 개념, 프로젝트 계획 / 분석 (1) | 2024.03.26 |