✅ 통합 구현
◾️ 통합 구현
사용자의 요구 사항에 맞춰 송수신 모듈과 중계 모듈 간의 연계를 구현하늗 것.

◾️ 연계 메커니즘

- 연계 데이터 보안 적용 방식
- 전송 구간 보안
보안용 프로토콜 이용, 패킷이나 데이터를 암호화
- 데이터 보안
데이터 추출, 반영할 때 데이터를 암&복호화
◾️ XML ⭐️⭐️⭐️
eXtensible Markup Language
📌 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
- 원활한 데이터 연계를 위해 유니코드를 기반으로 송수신 시스템 간에 전송되는 데이터가 동일한 구조로 구성될 수 있도록 형태를 정의하는 역할을 함.
- HTML 호환 문제와 SGML 복잡성 해결
◽️ SOAP
Simple Object Access Protocol
📌 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약
- 메시지 형식과 처리 규약 지정
- 프록시, 방화벽 영향 X
- 최근에는 무거운 SOAP 대신 RESTful 프로토콜을 이용하기도 함
💡RESTful 프로토콜
HTTP와 REST(Representational State Transfer)의 원칙을 사용하여 구현되는 웹서비스로, HTTP로 자원을 관리하는 데 사용되는 웹서비스 API의 집합
◽️ WSDL
Web Service Description Languages
📌 웹서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어
- XML로 작성되며, UDDI의 기초가 됨.
- SOAP, XML과 결합하여 웹서비스 제공에 사용
✅ 서버 프로그램 구현
◾️ 아키텍처
◽️ SW 아키텍처
📌 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체
◽️ 아키텍처 패턴
📌 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식
-
레이어 패턴(Layers Pattern)
시스템을 계층으로 구분하는 패턴(고전)
ex) OSI 참조 모델

-
클라이언트-서버 패턴
하나의 서버 컴포넌트와 다수의 클라이언트로 구성되는 패턴

-
파이프-필터 패턴
데이터 스트림 절차의 각 단계를 필터로 캡슐화하여 파이프를 통해 전송하는 패턴
데이터 변환, 버퍼링, 동기화 등에 주로 사용
ex) UNIX의 쉘

-
MVC 패턴(Model-View-Controller)
서브 시스템을 model, view, controller로 구조화하는 패턴
controller가 요청을 받으면 핵심 기능과 데이터를 보관하는 model을 이용하여 view에 정보를 출력
ex) 대화형 어플리케이션

-
마스터 슬레이브 패턴
슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행하는 패턴
ex) 장애 허용 시스템, 병렬 컴퓨팅 시스템

-
브로커 패턴
사용자가 원하는 서비스를 브로커 컴포넌트에 요청하면 그에 맞는 컴포넌트와 연결해주는 패턴
ex) 분산 환경 시스템

-
피어-투-피어 패턴
피어끼리 데이터를 주고받는 구조의 패턴. 피어는 클라이언트가 될 수도, 서버가 될 수도 있음(유동적)
ex) 파일 공유 네트워크

-
이벤트-버스 패턴
소스가 채널에 메시지를 publish 하면 channel을 구독한 listener들이 이벤트를 처리하는 패턴
ex) 알림 서비스

-
블랙보드 패턴
모든 컴포넌트들이 공유데이터 저장소와 블랙보드 컴포넌트에 접근 가능한 패턴
ex) 음성 인식, 차량 식별, 신호 해석
- 블랙보드 : 솔루션의 객체를 포함하는 구조화된 전역 메모리
- 지식 소스 : 자체 표현을 가진 특수 모듈
- 제어 컴포넌트 : 모듈 선택, 설정 및 실행을 담당한다

-
인터프리터 패턴
프로그램 코드의 각 라인을 수행하는 방법을 지정하고, 기호마다 클래스를 갖도록 구성된 패턴
ex) 번역기, 컴파일러, 인터프리터

◾️ 객체지향 ⭐️ ⭐️ ⭐️
📌 각 요소들을 객체로 만든 후, 객체들을 조립해서 SW를 개발하는 기법
◽️ 객체지향 구성요소
- 객체
📌 데이터와 이를 처리하기 위한 함수를 묶어놓은 SW 모듈
- 데이터 : 객체가 가지고 있는 정보. 속성, 상태 등
- 함수 : 객체가 수행하는 기능
- 클래스
📌 공통된 속성과 연산을 갖는 객체의 집합.
객체 지향 프로그램에서 데이터를 추상화하는 단위
클래스에 속한 각각의 객체를 인스턴스라고 한다.
- 메시지
📌 객체 간 상호작용에 사용되는 수단. 객체의 동작이나 연산을 일으키는 외부 요구 사항
◽️ 객체지향의 특징
-
캡슐화(Encapsultaion)
외부에서의 접근을 제외하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것
-
상속(Inheritance)
상위 클래스의 모든 것을 하위 클래스가 물려받는 것
-
다형성(Polimorphism)
하나의 메시지에 대하여 각각의 객체가 고유한 방법으로 다르게 응답하는 것
-
연관성(Relationship)
두 개 이상의 객체가 상호참조하는 관계를 맺는 것
| 종류 | 의미 | 특징 |
|---|
is member of | 연관화 | 2개 이상의 객체가 상호 관련함을 의미 |
is instance of | 분류화 | 동일한 형을 갖는 객체를 모아 구성 |
is part of | 집단화 | 관련 있는 객체를 묶어 하나의 상위 객체 구성 |
is a | 일반화 | 공통 성질로 추상화한 상위 객체를 구성 |
| 특수화/상세화 | 상위 객체를 구체화 하여 하위 객체를 구성 |
◽️ 객체지향 분석 & 설계 ⭐️
- 객체 지향 분석(OOA)
사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업
클래스를 식별하기 위함
- 객체 지향 분석의 방법론
- 럼바우 방법(Rumbaugh) ⭐️
모든 SW 구성요소를 그래픽 표기법을 이용하여 아래 순서대로 모델링.
- 객체 모델링
UML의 객체 다이어그램 사용
- 동적 모델링
UML의 상태 다이어그램 사용
- 기능 모델링
자료흐름도(DFD) 사용. 자료 흐름을 중심으로 처리 과정 표현
- 부치 방법(Booch)
미시/거시 개발 프로세스 사용. 클래스 분석
- Jacobson 방법
유스케이스 강조
- Coad와 Yourdon 방법
E-R 다이어 그램을 사용하여 모델링
- Wirfts-Brock 방법
분석/설계간 구분이 X
- 객체 지향 설계 원칙
변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야할 원칙
설계 원칙의 종류는 아래 5가지 원칙의 앞글자를 따 SOLID 원칙이라 부름
- 단일 책임 원칙(SRP)
객체는 단 하나의 책임만
- 개방 폐쇄 원칙(OCP)
코드 변경 없이 기능 추가하도록 설계
- 리스코프 치환 원칙(LSP)
자식 클래스는 최소 부모 클래스의 기능은 수행
- 인터페이스 분리 원칙(ISP)
인터페이스와 의존 X
- 의존 역전 원칙(DIP)
의존관계는 추상성 높은 클래스와
◾️ 모듈
◽️ 모듈의 독립성 측정
📌 다른 모듈과의 과도한 상호작용을 배제하고 하나의 기능만을 수행하게 하여 독립성을 높여야 함. 독립성은 결합도, 응집도 등으로 측정 가능
-
결합도 6단계(내공외제스자)
모듈 간 상호작용 정도
- 내용 결합도 : 내부 자료를 직접 참조
- 공통 결합도 : 공유 영역을 여러 모듈이 사용
- 외부 결합도 : 외부 다른 모듈에서 참조
- 제어 결합도 : 다른 모듈의 논리적 흐름을 제어
- 스탬프(검인) 결합도 : 모듈 간 인터페이스에 배열 등의 자료구조를 전달
- 자료 결합도 : 모듈 간 인터페이스에 자료 요소만 이용
-
응집도 7단계(기순결절시논우)
모듈 내부 관련 정도
- 기능적 응집도 : 모든 기능 요소가 단일 문제
- 순차적 응집도 : 출력 데이터를 다음 활동의 입력 데이터로 사용
- 교환적 응집도 : 동일한 입출력으로 서로 다른 기능
- 절차적 응집도 : 다수의 기능이 순차적으로 수행
- 시간적 응집도 : 특정 시간에 처리되는 것을 모듈로 작성
- 논리적 응집도 : 유사한 기능끼리 묶음
- 우연적 응집도 : 관련 X
-
팬인 / 팬아웃
- Fan-In : 어떤 모듈을 제어하는 모듈의 수
- Fan-Out : 어떤 모듈에 의해 제어되는 모듈의 수
-
N-S 차트(Nassi-Schneiderman Chart)
논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
박스 다이어그램, Chapin Chart라고도 함.
◽️ 단위 모듈
한 가지 동작을 수행하는 기능을 모듈로 구현한 것
- 과정 : 단위 기능 명세 작성 -> 입출력 기능 구현 -> 알고리즘 구현
- IPC(Inter-Process Communication)
모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
- Shared Memory : 공유 메모리로 프로세스 간 통신
- Socket : 네트워크 소켓으로 통신
- Semaphores : 공유 자원 접근 제어
- Pipes&named Pipes : pipe 메모리 이용
- Message Queueing : 메시지 전달 방식
- 테스트 : Unit Test라고 부름
- 📌 테스트 케이스
구현된 SW가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서.
- ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스 구성 요소
식별자, 테스트 항목, 입력 명세, 출력 명세, 환경 설정, 특수 절차 요구, 의존성 기술
◽️ 공통 모듈 ⭐️
여러 프로그램에서 공통으로 사용할 수 있는 모듈
공통 모듈 구현은 기능을 명확히 이해하도록 명세 기법 준수가 필요
- 공통 모듈 명세 기법의 종류 ⭐️ (정명완일추)
- 정확성
- 명확성
- 완전성 : 시스템 구현에 필요한 모든 것을 기술
- 일관성 : 상호 충돌 X
- 추적성(Traceability) : 요구 사항의 출처, 관계 파악 가능
- 재사용
이미 개발된 기능을 새로운 시스템이나 기능 개발이나 유지에 사용하는 것
◽️ 코드 ⭐️
📌 자료의 분류, 조합, 집계, 추출을 용이하게 하기 위해 사용하는 기호
-
코드의 주요 기능 5가지(식분배간표)
-
코드의 종류 6가지
- 순차 코드 : 차례로 일련번호 부여. 구분 코드
ex) 1, 2, 3, 4
- 블록 코드 : 공통성 있는 것끼리 블록. 구분 코드
ex) 1001~1100 : 총무부, 1101~1200 : 관리부
- 10진 코드(Decimal) : 10진 분할. 도서 분류식 코드
ex) 1000: 공학, 1100 : SW 공학, 1110: SW 설계
- 그룹 분류 코드(Group Classification) : 대분류, 중분류, 소분류
ex) 1-01-001: 본사-총무부-인사계, 2-01-001: 지사-총무부-인사계
- 연상 코드(Mnemonic) : 명칭, 관계인는 숫자 등 이용
ex) TV-40 : 40인치 TV
- 표의 숫자 코드(Significant Digit) : 물리적 수치를 그대로 코드에 적용. 유효 숫자 코드라고도 함
ex) 120-720 : 두께, 폭이 120x720인 강판
- 합성 코드 : 2개 이상 조합
ex) KE-711 : 대한항공(연상) + 711기(순차)
◾️ 디자인 패턴 ⭐️
📌 모듈 간 관계 및 인터페이스 설계할 때 참조할 수 있는 전형적인 해결 방식
GOF의 디자인 패턴은 생성, 구조, 행위 패턴으로 나뉨
◽️ 생성 패턴(5)(Creational)
📌 클래스, 객체 생성과 참조 과정을 정의하는 패턴
- 추상 팩토리(Abstract Factory)
연관 객체 그룹을 생성하여 추상적으로 표현
연관 서브 클래스를 묶어 한번에 교체 가능
- 빌더(Builder)
인스턴스를 조합
- 팩토리 메소드(Factory Method)
서브클래스에서 처리하도록 분리하여 캡슐화
가상 생성자(Virtual Constructor) 패턴이라고도 함
- 프로토 타입(Prototype)
원본 객체 복제.
- 싱글톤(Singleton)
하나의 객체를 생성하여 어디서든 참조. 동시에 참조는 X
◽️ 구조 패턴(7)(Stuructural)
📌 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
- Adapter
인터페이스를 다른 클래스와 호환 가능하게 변환
- Bridge
구현부에서 추상층을 분리하여 기능, 구현을 두 개의 별도 클래스로 구현.
- Composite
복합 객체 안에 복합 객체가 포함되는 구조. 객체를 트리구조로 구성
- Decorator
객체간 결합을 통해 능동적으로 기능 확장
- Pacade(퍼싸드)
더 상위에 인터페이즈 구성 -> 서브 클래스 사용
서브 클래스 간 통합 인터페이스 Wrapper 객체 필요
- Flyweight
인스턴스 매번 생성 X, 공유 -> 가볍!
- Proxy
접근 어려운 객체와 연결하려는 객체 사이에서 인터페이스 역할
◽️ 행위 패턴(Behavioral)
📌 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배하는 과정을 정의하는 패턴
- 책임 연쇄(Chain of Responsibility)
요청을 처리하지 못하면 다음 객체가 연속해서 처리
- 커맨드
요청을 재이용 할 수 있도록 저장. 명령어를 추상/구체 클래스로 분리하여 저장
- 인터프리터(Interpreter)
언어에 문법 표현을 정의
- 반복자(Iterator)
접근 잦은 객체에 동일한 인터페이스
- 중재자(Mediator)
복잡한 상호작용을 캡슐화하여 객체로 정의
- 메멘토(Memento)
특정 시점에서 상태를 객체화 -> 시점으로 돌릴 수 있게 함
- 옵서버(Observer)
객체 상태가 변하면 다른 객체에 전달
- 상태(State)
객체 상태에 따라 동일한 동작을 다르게 처리
- 전략(Strategy)
동일한 알고리즘을 개별적으로 캡슐화하여 상호 교환
- 템플릿 메소드
상위에서 골격 정의, 하위에서 세부처리 구체화
- 방문자
처리 기능 분리 -> 방문하여 사용
- 방문자(Visitor)
◾️ 배치 프로그램
여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
◽️ 필수 요소 5가지(대자견안성)
- 대용량 데이터
- 자동화 : 사용자 개입없이
- 견고성 : 중단 X
- 안정성 : 오류 추적 가능하게
- 성능 : 다른 프로그램 수행 방해 X
◽️ 배치 스케줄러
배치 프로세싱 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구. 잡 스케줄러라고도 불린다.
- 종류
- 스프링 배치
Spring Source 사, Accenture 사 공동 개발
- Quartz
스프링 프레입워크로 개발되는 Batch program을 위한 기능을 제공하는 오픈 소스 라이브러리
- Cron
리눅스 기본 스케줄러 도구. crontab 명령어 이용