티스토리 뷰

3장 통합구현(1/0/0)

XML 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업언어
SOAP 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약
WSDL 웹서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어

 

4장 서버 프로그램구현 (2/3/3) ★★★★★

 

모듈화 Modularity

시스템의 기능들을 모듈 단위로 나누는 것

 

추상화 Abstraction

전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것

과정추상화 / 데이터 추상화 / 제어 추상화 ( 제과자 )

 

단계적 분해

상위의 중요 개념으로부터 하위의 개념으로 구체화 시키는 분할기법

 

정보 은닉

모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법

 

협약에 의한 설계

컴포넌트를 설계할 때 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것

선행 조건 오퍼레이션이 호출되기 전에 참이 되어야 할 조건
결과 조건 오퍼레이션이 수행된 후 만족되어야 할 조건
불변 조건 오퍼레이션이 실행되는 동안 항상 만족 되어야할 조건

 

아키텍처 패턴 ★★★

아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제

레이어 패턴 시스템을 계층으로 구분하여 구성하는 패턴
클라이언트-서버 패턴 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
파이프-필터 패턴 데이터 스트림 절차의 단계를 필터로 캡슐화해 파이프를 통해 전송하는 패턴
모델--컨트롤러 패턴 MVC
Model View Controller

기타 패턴

마스터-슬레이브 패턴 슬레이브 컴포넌트에서 처리된 결과물을 돌려받는 방식의 패턴
브로커 패턴 브로커가 요청에 맞는 컴포넌트와 사용자를 연결
피어--피어 패턴 하나의 컴포넌트가 클라이언트가 될수도, 서버가 될수도 있는 패턴
이벤트-버스 패턴 채널에 발행과 구독. Subscribe, Publish.
블랙보드 패턴 모든 컴포넌트들이 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 패턴.
인터프리터 패턴 프로그램 코드의 각 라인을 수행하는 방법을 지정하고, 기호마다 클래스를 갖도록 구성된 패턴

객체 지향 ★★

각 요소들을 객체로 만든후 객체를 조립해서 소프트웨어를 개발하는 기법.

객체 데이터와 이를 처리하기 위한 함수를 묶어놓은 소프트웨어 모듈이다. 데이터를 가지며 상호작용의 수단으로 메시지를 사용한다.
클래스 공통된 속성과 연산을 갖는 객체의 집합. 클래스의 속한 각각의 객체를 인스턴스라고 함.
메시지 객체들 간의 상호작용에 사용되는 수단으로, 객체의 동작이나 연산을 일으키는 외부의 요구사항.
캡슐화
Encapsulation
외부에서 접근을 제한하기 위해 인터페이스를 제외한 세부내용을 은닉하는 것. 인터페이스가 단순해지고, 객체 간의 결합도가 낮아짐.
상속
Inheritance
상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것.
다형성 하나의 메시지에 대해 각각의 개체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력.

 

객체지향 분석 방법론 ★★★

Rumbaugh(럼바우) 방법 가장 일반적으로 사용되는 방법으로 분석 활동을 객체모델, 동적모델, 기능모델로 나누어 수행하는 방법
Booch(부치) 방법 미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석방법
Jacobson 방법 Use Case를 강조하여 사용하는 분석방법
CoadYourdon 방법 E-R다이어그램을 사용하여 개체의 활동들을 데이터 모델링하는데 초점을 둔 기법
Wirfs-Brock 방법 분석과 설계간의 구분이 없고 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법

 

럼바우 분석기법 ★★★★★

객체 모델링 = 정보 모델링
시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시
동적 모델링 상태다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링
기능 모델링 자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링

 

객체지향설계 원칙 [SOLID] ★★★

변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야할 원칠

단일 책임 원칙 SRP 객체는 단 하나의 책임만 가져야 한다는 원칙
개방-폐쇄 원칙 OCP 기존의 코드를 변경하지 않고 기능을 추가 할 수 있어록 설계해야 한다는 원칙
리스코프 치환 원칙 LSP 자식 클래스는 최소한 부모 클래스의 기능은 수행 할 수 있어야한다는 원칙
인터페이스 분리 원칙 ISP 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙
의존 역전 원칙 DIP 의존 관계 성립시 추상성이 높은 클래스와 의존 관계를 맺어야한다는 원칙

모듈 Module

모듈화를 통해 분리된 시스템의 각 기능

 

결합도 Copling [ 자스제외공내 ] 결합도 약한 순

자료 결합도
Data Copling
모듈간의 인터페이스가 자료 요소로만 구성될 때의 결합도
스탬프 결합도
Stamp Copling
모듈 간의 인터페이스로 배열이 레코드 등의 자료 구조가 전달될 때의 결합도
제어 결합도
Control Copling
어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도
외부 결합도
External Copling
어던 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도
공통 결합도
Common Copling
공유되는 공통 데이터 영역을 여러 모듈이 사용할 때의 결합도
파라미터가 아닌 모듈 밖에 선언된 전역 변수를 사용하여 전역 변수를 갱신하는 방식으로 상호작용하는 때의 결합도
내용 결합도
Content Copling
한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

 

응집도 Cohesion [ 기순교절 시논우 ] 응집도 강한순

기능적 응집도
Functional Cohesion
모듈 내부의 모등 기능 요소들이 단일 문제와 연관되어 수행 될 경우의 응집도
순차적 응집도
Sequential Cohesion
모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
교환적 응집도
Communication Cohesion
동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우의 응집도
절차적 응집도
Procedural Cohesion
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
시간적 응집도
Temporal Cohesion
특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
논리적 응집도
Logical Cohesion
유사한 성격을 갖거나 특정 형대로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
우연적 응집도
Coincidental Cohesion
모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

 

팬인(Fan-In) / 팬아웃(Fan-Out)

팬인 어떤 모듈을 제어하는 모듈의 수
팬아웃 어떤 모듈에 의해 제어되는 모듈의 수

 

N-S차트

논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법

GOTO나 화살표를 사용하지 않는다.

 

단위 모듈 Unit Module

한 가지 동작을 수행 하는 기능을 모듈로 구현한 것

 

IPC (Inter-Process Communication)

모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 언터페이스 집합

 

IPC 대표 메소드 5가지

Shared Memory 공유 가능한 메모리를 구성하여 다수의 프로세스가 통신하는 방식
Socket 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스간의 통신하는 방식
Semaphores 공유 자원에 대한 접근 제어를 통해 통신하는 방식
Pipes&named Pipes Pipe라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신하는 방식
Pipe는 하나의 프로세스가 이용 중이라면 다른 프로세스는 접근 할 수 없음
Message Queueing 메시지가 발생하면 이를 전달하는 방식으로 통신하는 방식

 

단위 모듈 테스트

모듈이 정해진 기능을 정확히 수행하는 지 검증하는 것

 

테스트 케이스 (Test Case)

소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서

 

공통 모듈

여러 프로그램에서 공통으로 사용할 수 있는 모듈

 

공통 모듈 명세서 기법의 종류 [정명완일추] ★★★★★

정확성 시스템 구현시 해당 기능이 필요하다는 것을 알 수 있도록 정확히 작성함
명확성 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성함
완전성 시스템 구현을 위해 필요한 모든 것을 기술함
일관성 공통 기능들 간 상호 충돌이 발생하지 않도록 작성함
추적성 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성함

 

재사용 Reuse

이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업

함수와 객체 / 컴포넌트 / 애플리케이션

 

코드 Code ★★★★★

자료의 분류, 조합, 집계, 추출을 용이하게 하게 하기 위해 사용하는 기호

식별 기능 데이터 간의 성격에 따라 구분이 가능함
분류 기능 특정 기준이나 동일한 유형에 해당하는 데이터를 그룹화 할 수 있음
배열 기능 의미를 부여하여 나열할 수 있음
표준화 기능 다양한 데이터를 기준에 맞추어 표현할 수 있음
간소화 기능 복잡한 데이터를 간소화할 수 있음

코드의 종류

순차 코드
Seauence Code
자료의 발생 순서, 순서코드, 일련번호 코드
블록 코드
Block Code
코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고 각 블록내에서 일련번호를 부여
1001~1100 총무부 1101~1200 영업부
10진 코드
Decimal Code
0~9까지 10진 분할하고 다시 그 가각에대해 10진 분할 하는 방법
1000 공학 1100 소프트웨어
그룹 분류 코드
Group
Classification Code
대분류, 중분류, 소분류
1-01-001 본사-총무부-인사계
연상코드
Mnemonic Code
항목의 명칭이나 약호와 관계있는 숫자나 문자, 기호 이용
TV-40 : 40인치
표의 숫자코드
Significant Digit Code
성질, 길이, 넓이 부피, 지름, 높이 등의 물리적 수치
120-70-1500 두께**길이
합성 코드
Combined Code
필요한 기능을 하나의 코드로 수행하기 어려운 경우 2개이상의 코드를 조합
KE-711 대한항공711

 

디자인 패턴 ★★★★★

모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제 생성패턴 / 구조패턴 / 행위 패턴

 

생성 패턴 [ 추빌팩프싱 ]

클래스나 객체의 생성과 참조 과정을 정의하는 패턴

추상 팩토리
Abstract Factory
인터페이스를 통해 서로 의존하는 객체들의 그룹으로 생성, 추상적으로 표현.
빌더 Builder 분리된 인스턴스를 건축하듯이 조합해 객체를 생성
팩토리 메소드
Factory Method
상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브클래스가 담당함.
프로토타입 Porototype 원본을 만들어놓고 원본 객체를 복사해서 사용하는 패턴
싱글톤 Singleton 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 해서 생성된 객체를 어디에서든지 참조할 수 있도록 만든 패턴

 

구조 패턴 [ 어브컴데퍼플프 ]

클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴

어댑터 Adapter 호환성이 없는 클래스들을 다른 클래스가 이용할 수 있도록 변환
브리지 Bridge 구현부에서 추상층을 분리해 서로가 독립적으로 확장
컴포지트 Composite 복합 객체와 단일 객체를 구분없이
데코레이터 Decorator 객체 간의 결합을 통해 기능을 확장
퍼싸드 Facade 복잡한 기능의 서브클래스의 상위에 인터페이스를 생성해 간편하게 기능을 사용
플라이웨이트
Flyweight
인스턴스를 공유해 메모리를 절약
프록시 Proxy 접근이 어려운 객체들 사이에서 인터페이스 역할

행위 패턴 [ 책커인반 중메옵상 전템방]

클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴

책임 연쇄
Chain of Responsibility
객체가 둘 이상 존재해 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴
커맨드
Command
요청에 사용되는 명령어를 추상 클래스와 구체 클래스로 분리해 단순화
인터프리터
Interpreter
언어에 문법 표현을 정의하는 패턴
반복자Iterator 접근이 잦은 객체에 동일한 인터페이스를 사용하도록 하는 패턴
중재자
Mediator
수많은 객체 간의 복잡한 상호작용을 캡슐화 해 객체로 정의하는 패턴
메멘토Memento 특정 시점의 객체의 상태를 Crtl+z와 같은 되돌리기 기능으로 해당 시점으로 돌리는 기능을 제공
옵서버
Observer
한 객체의 상태가 변화하면 변화한 상태를 다른 객체에게 전달. 일대 다의 의존성을 정의. Publish, Subscribe
상태
State
객체의 상태에 따라 동일한 동작을 다르게 처리
전략
Strategy
동일한 계열의 알고리즘을 개별적으로 캡슐화해, 상호교환 할 수 있게 정의. 알고리즘.
템플릿 메소드
Template Method
상위 클래스에서 골격을 정의, 하위 클래스에서 세부처리를 구체화 함.
방문자
Visitor
각 클래스 들의 데이터 구조에서 처리 기능을 분리해 별도의 클래스로 구성.

 

배치 프로그램

여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램

 

배치 스케줄러

일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구

스프링 배치
Spring Batch
Spring Source사와 Accenture사가 2007년 공동 개발한 오픈 소스 프레임 워크. 로그 관리, 추적, 트랜잭션 관리, 작업처리 통계, 재시작 기능 제공
Quartz 스프링 프레임워크로 개발되는 오픈 소스 라이브러리로 수행할 작업과 수행시간을 관리하는 요소들을 분리해 일괄처리 작업에 유연성을 제공
Cron 리눅스의 기본 스케줄러 도구 / crontab명령어를 통해 작업예약
() 분 시 일 월 요일 () 명령어

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함