정처기 실기 용어정리 (4장)

모래사우르스
|2024. 10. 9. 00:15

하드웨어 환경 : 클라이언트와 서버로 구성된다.

 

서버의 종류

WWDF(서버가 음식을 쏟더니 이렇게 말했다. W..What Da-Fuck) - Web Server / WAS(Web Application Server) / DB Server / File Server

웹 서버 : 정적 파일들을 제공.

WAS : 동적 서비스를 제공하거나 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행.

DB 서버 : DB와 DBMS 운영

파일 서버 : DB에 저장하기 비효율적이거나 서비스 제공이 목적인 파일들을 저장함

 

웹 서버의 기능

H 정통 대 가인(정통 Himnae맨 vs() 가인) - HTTP 지원 / 통신 기록 / 정적 파일 관리 / 대역폭 제한 / 가상 호스팅 / 인증

 

개발 언어의 선정 기준

이친 범 효적( 인 호()에서 파버릴거야) - 이식성 / 친밀성 / 범용성 / 효율성 / 적정성

이식성 : 다양한 시스템 및 환경에 적용이 가능해야 함

친밀성 : 개발자들의 이해도와 활용도가 높아야 함

범용성 : 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 함

효율성 : 작성 및 구현이 효율적이어야 함

적정성 : 목적에 적합해야 함

 

소프트웨어 아키텍처 : 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체

 

소프트웨어 아키텍처의 기본 원리

모추단닉 - 모듈화 / 추상화 / 단계적 분해 / 정보 은닉

모듈화(Modluarization) : 시스템의 기능들을 모듈 단위로 나누는 것

추상화(Abstraction) : 전체적인 개념을 설계한 후 구체화시켜나가는 것 (과데제 - 과정(흐름) / 데이터 / 제어(이벤트))

단계적 분해(Stepwise Refinement) : 상위 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법

정보 은닉(Information Hiding) : 모듈 내부에 포함된 절차와 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법

 

상위설계 : 예아(Yeah-) - 예비 설계, 아키텍처 설계

하위설계 : 상모 - 상세 설계, 모듈 설계

 

품질 평가 요소의 종류

시비아 - 시스템 / 비즈니스 / 아키텍처

시스템 측면 : 용사 가보 확성기 -  변경 용이성 / 사용성 / 가용성 / 보안 / 확장성 / 성능 / 기능성

비즈니스 측면 : 시비예목공 - 시장 적시성 / 비용과 혜택 / 예상 시스템 수명 / 목표 시장 / 공개 일정 (대충 이건 안 외워도 감으로 알수 있음)

아키텍처 측면 : 개정완구변시 - 개념적 무결성 / 정확성 / 완결성 / 구축 가능성 / 변경성 / 시험성

 

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

선결불 - 선행 조건 / 결과 조건 / 불변 조건

 

아키텍처 패턴

레클파모 마브 피벤블인 - 레이어 패턴 / 클라이언트-서버 패턴 / 파이프-필터 패턴 / 모델-뷰-컨트롤러 패턴 / 마스터-슬레이브 패턴 / 브로커 패턴 / 피어-투-피어 패턴 / 이벤트-버스 패턴 / 블랙보드 패턴 / 인터프리터 패턴

 

레이어(Layer) 패턴 : 시스템을 계층으로 구분하여 구성하는 패턴. 하위 계층은 서비스 제공자, 상위 계층은 클라이언트가 된다.

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

파이프-필터(Pipe-Filter) 패턴 : 서브시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브시스템으로 넘겨주는 과정을 반복하는 패턴.

모델-뷰-컨트롤러(MVC) 패턴 : 서브시스템을 모델, 뷰, 컨트롤러로 구조화하는 패턴.

마스터-슬레이브(Master-Slave) 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 수행되는 패턴. (병렬)

브로커(Broker) 패턴 : 브로커 컴포넌트에 요청하면 요청에 맞는 컴포넌트와 사용자를 연결해주는 패턴. (분산)

피어-투-피어(Peer-To-Peer) 패턴 : 피어 컴포넌트가 클라이언트가 될 수도, 서버가 될 수도 있는 패턴. (파일 공유)

이벤트-버스(Event-Bus) 패턴 : 이벤트 메시지를 발행하면 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리하는 패턴. (알림)

블랙보드(Blackboard) 패턴 : 모든 컴포넌트들이 블랙보드 컴포넌트에 접근이 가능한 패턴. (음성 인식, 차량 식별)

인터프리터(Interpreter) 패턴 : 코드의 각 라인을 수행하는 방법을 지정하고, 기호마다 클래스를 갖도록 구성된 패턴. (번역)

 

객체지향의 구성요소

객클메 - 객체 / 클래스 / 메세지

 

객체지향의 특징

캡 다 연상(틴 아메리카의 여자친구는 다 연상이다.) - 캡슐화 / 상속 / 다형성 / 연관성

 

객체(Object) : 데이터와 함수를 묶어놓은 소프트웨어 모듈.

클래스(Class) : 공통된 속성과 연산을 갖는 객체의 집합.

메시지(Message) : 객체들 간의 상호작용을 하는데 사용되는 수단.

캡슐화(Encapsulation) : 외부에서의 접근을 제한하기 위해 세부 내용을 은닉하는 것.

다형성(Polymorphism) : 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력.

연관성(Relationship) : 두 개 이상의 객체들이 상호 참조하는 관계

상속(Inheritance) : 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것.

 

연관성의 종류

연 일집분 (관이는 행동반경이 일집뿐(분)이다.) - 연관화 / 일반화 / 집단화 / 분류화

연관화 : is member of (연관이는 멤(mem) 우는 매미가 싫다.)

일반화 : is a (a는 알파벳의 1(일)번째 숫자.)

집단화 : is part of (파트 타임 근무자들이 집단으로 무단결근을 했다.)

분류화 : is instance of (인스턴트(스) 음식은 쓰레기 음식으로 분류되었다.)

 

객체지향 분석의 방법론

RBJCW (Red Black Jack Coke is Wonderful) - Rumbaugh / Booch / Jacobson / Coad-Yourdon / Wirfs-Brock

럼바우 방법 : 모든 소프트웨어 구성요소를 그래픽 표기법을 이용해 모델링하는 기법. (객동기 - 객체->동적->기능)

                      객체(Object, Information) 모델링 : 정보 모델링

                      동적(Dynamic) 모델링 : 상태 다이어그램을 이용

                      기능(Functional) 모델링 : 자료 흐름도(DFD)를 이용

 

부치 방법 : 미시적, 거시적 프로세스 사용. (미시 거시 부치)

Jacobson 방법 : 유스케이스를 강조하여 사용. (Ja유~)

Coad-Yourdon 방법 : E-R 다이어그램을 사용. (CYER. QWER 아님)

Wirfs-Brock 방법 : 고객 명세서를 평가, 분석과 설계의 구분 없이 연속적으로 수행. (고객님이 저의 Wife가 되셨어요.)

 

객체지향 설계 원칙

SOLID - SRP / OCP / LSP / ISP / DIP

단일 책임(Single Responsible) 원칙 : 객체는 단 하나의 책임만 가져야 한다는 원칙

개방-폐쇄(Open-Closed) 원칙 : 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야한다는 원칙

리스코프 치환(Liscov Subsitution) 원칙 : 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다는 원칙

(리스코프씨가 아이들에게 말했다. "요즘 애들은.. 쯧쯧. 최소한 니네 부모 발끝만큼은 해야하지 않겠니? 에효 쯧쯧.")

인터페이스 분리(Interface Seperate) 원칙 : 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야한다는 원칙

의존 역설(Dependence Inversion) 원칙 : 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙

 

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

 

모듈의 독립성 : 결합도(Coupling), 응집도(Cohesion)

 

결합도

내공외제스자 - 내용(Content) / 공통(공유)(Common) / 외부(External) / 제어(Control) / 스탬프(Stamp) / 자료(Data)

(->오른쪽으로 갈수록 결합도 낮아짐)

내용 결합도 : 직접 참조하거나 수정

공통(공유) 결합도 : 전역변수 사용

외부 결합도 : 외부의 다른 모듈에서 참조

제어 결합도 : 제어 요소 전달

스탬프 결합도 : 자료구조 전달

자료 결합도 : 인터페이스가 자료 요소로만 구성

 

응집도

우논시절통순기 - 우연적(Coincidental) / 논리적(Logical) / 시간적(Temporal) / 절차적(Procedural) / 통신(교환)적(Communication) / 순차적(Sequential) / 기능적(Functional)

(->오른쪽으로 갈수록 응집도 높아짐)

우연적 응집도 : 내부 구성 요소들이 서로 관련 없음

논리적 응집도 : 요소들이 유사한 성격을 가짐

시간적 응집도 : 특정 시간에 처리되는 기능들이 모임

절차적 응집도 : 순차적으로 수행

통신(교환)적 응집도 : 동일한 입출력을 사용하여 다른 기능을 수행

순차적 응집도 : 출력 데이터를 다음 활동의 입력 데이터로 사용

기능적 응집도 : 요소들이 단일 문제와 연관

 

팬인(Fan-In) : 어떤 모듈을 제어하는 모듈의 수

팬아웃(Fan-Out) : 어떤 모듈에 의해 제어되는 모듈의 수

 

N-S 차트(Nassi-Schneiderman Chart) : 논리의 기술에 중점을 둔 도형식 표현 방법.

 

단위 모듈(Unit Module) : 한 가지 동작을 수행하는 기능을 모듈로 구현한 것

 

IPC(Inter-Process Communication) : 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합

 

IPC의 대표 메소드 5가지

3S PM(3She 오후(PM)에 Internet PC 통신을 하자.) - Shared Memory / Socket / Semaphores / Pipes&named Pipes / Message Queueing

Shared Memory : 공유가능한 메모리를 구성하여 다수의 프로세스가 통신

Socket : 소켓을 이용

Semaphores : 공유 자원에 대한 접근 제어

Pipes&named Pipes : 선입선출 형태 (프로세스 동시 접근 X)

Message Queueing : 메시지 전달

 

단위 모듈 테스트 : 모듈이 정해진 기능을 정확히 수행하는지 검증

 

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

 

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

 

공통 모듈 명세 기법의 종류

정명완일추 - 정확성 / 명확성 / 완전성 / 일관성 / 추적성

정확성(Correctness) : 정확히 작성

명확성(Clarity) : 중의적으로 해석되지 않도록 작성

완전성(Completeness) : 모든 것을 기술함

일관성(Consistency) : 공통 기능 간 상호 충돌이 발생하지 않도록 작성

추적성(Traceability) : 출처, 관계를 파악할 수 있도록 작성

 

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

 

재사용 규모에 따른 분류

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

컴포넌트 : 명백한 역할을 가지고 독립적으로 존재할 수 있는 시스템의 부분. 넓은 의미에서는 재사용되는 모든 단위라고 볼 수 있음. 인터페이스를 통해서만 접근 가능함.

 

코드의 주요 기능

배 분간 표식(분간하기 위해 표식을 그려놨다.) - 배열 기능 / 분류 기능 / 간소화 기능 / 표준화 기능 / 식별 기능

 

코드의 종류

순블연 그표합10(한맛 랙 공, 그 표치면 10개다.) - 순차 코드 / 블록 코드 / 연상 코드 / 그룹 분류 코드 / 표의 숫자 코드 / 합성 코드 / 10진 코드

순차(Sequence) 코드 : 순서대로

블록(Block) 코드(=구분 코드) : 공통성이 있는 것끼리 블록으로 구분

연상(Mnemonic) 코드 : 관계있는 숫자나 문자, 기호 사용 (ex. TV-40 <- 40인치 TV)

그룹 분류(Group Classification) 코드 : 대분류, 중분류, 소분류 등으로 구분

표의 숫자(Significant Digit) 코드 : 물리적 수치를 적용 (ex. 120-720-1500 <- 두께x폭x길이가 120x720x1500인 강판)

10진(Decimal)코드 : 10진 분할을 필요한 만큼 반복

 

디자인 패턴 : 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제

생구행 - 생성 / 구조 / 행위

 

생성 패턴(Creational Pattern)

프로빌더 싱글 팩토리(프로틴 먹는 보디빌더는 아직 싱글이라 애인을 생성하기 위해 팩토리에서 일한다.) - 프로토타입 / 빌더 / 싱글톤 / 추상 팩토리 / 팩토리 메소드

프로토타입(Prototype) : 원본 객체를 복제하는 방법으로 객체 생성.

빌더(Builder) : 인스턴스를 건축하듯 조합.

싱글톤(Singleton) : 하나의 객체를 생성하면 어디서든 참조할 수 있지만 여러 프로세스가 동시에 참조하진 못함.

추상 팩토리(Abstract Factory) : 인터페이스를 통해 그룹으로 생성하여 추상적으로 표현.

팩토리 메소드(Factory Method) (=가상 생성자 패턴) : 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화.

 

구조 패턴(Structural Pattern)

어브컴데 퍼플프 - 어댑터 / 브리지 / 컴포지트 / 데코레이터 / 퍼싸드 / 플라이웨이트 / 프록시

어댑터(Adapter) : 호환성이 없는 클래스들의 인터페이스를 변환해줌

브리지(Bridge) : 서로가 독립적으로 확장할 수 있도록 구성

컴포지트(Composite) : 복합 객체와 단일 객체를 구분 없이 다룸

데코레이터(Decorator) : 기능 확장, 부가적인 기능 추가를 위해 객체 덧붙이는 방식 사용

퍼싸드(Facade) : 서브 클래스들의 기능 간편화. Wrapper 객체 필요

플라이웨이트(Flyweight) : 인스턴스 공유로 메모리 절약

프록시(Proxy) :대리자. 외부에서 세부적인 내용을 숨김

 

행위 패턴(Behavioral Pattern)

(줄임말은 걍 위에 두 패턴만 외우는게 편할듯 행위 패턴 너무 많아서.. 위에 포함되지 않는 건 다 행위 패턴인걸로)

책임 연쇄(Chain of Responsibility) : 요청이 해결될 때까지 고리를 따라 책임이 넘어감

커맨드(Command) : 명령어들을 단순화함

인터프리터(Interpreter) : SQL이나 통신 프로토콜 개발 등에 사용

반복자(Iterator) : 접근이 잦은 객체에 대해 동일한 인터페이스 사용

중재자(Mediator) : 상호작용을 캡슐화

메멘토(Memento) : 해당 시점의 상태로 돌릴 수 있는 기능을 제공

옵서버(Observer) : 상태 변화 시 변화된 상태를 전달

상태(State) : 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용

전략(Strategy) : 알고리즘을 캡슐화

탬플릿 메소드(Template Method) : 상위 클래스에서 골격을 정의, 하위 클래스에서 구체화

방문자(Visitor) : 처리 기능을 분리 후 방문

 

통합 개발 환경(IDE; Integrated Development Environment) : 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 환경

이비엑안I - 이클립스(PHP) / 비주얼 스튜디오(Basic) / 엑스 코드(AppleScript) / 안드로이드 스튜디오 / IDEA(Kotlin)

(괄호 안에 든 것은 지원 언어. 근데 일단 겹치지 않는 것들만 적어놓았음. 지원 언어 더 많음.)

(이비인후과에 가서 스레이 찍었더니 과에 가라고 했다. I인 나는 사람을 또 만나야하는 것이 두렵다.)

 

빌드 도구 : 소스 코드 파일들을 컴퓨터에서 실행할 수 있는 제품 소프트웨어로 변환하는 과정 또는 결과물

AMG - Ant / Maven / Gradle

Ant : 자바 공식 빌드 도구

Maven : 의존성 설정하여 라이브러리 관리. 규칙, 표준 존재. (Ant의 업그레이드)

Gradle : 안드로이드 스튜디오 공식 빌드 도구. Groovy 기반. (Ant, Maven의 업그레이드)

 

서버 개발 : 웹 어플리케이션의 로직을 구현할 서버 프로그램을 제작하여 WAS에 탑재하는 것

 

서버 개발 프레임워크 : 다양한 것들을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어

SNDCR (어제 SNL도 보고 DC 영화도 보고 그랬R) - Spring / Node.js / Django / Codeigniter / Ruby on Rails

Spring : JAVA 기반. 전자정부 표준 프레임워크

Node.js : JavaScript 기반. 입출력이 많을 때 적합

Django : Python 기반. 플러그인화 강조

Codeigniter : PHP 기반. 인터페이스 간편

Ruby on Rails : Ruby 기반. 작업 단순화, 자동화

 

서버 개발 과정

CSDSD (Candy Soda Soda) - Controller / Service / DAO / SQL / DB

Controller : 사용자 요청에 적절한 서비스 호출 후 결과 반환

Service : 사용자 요청에 응답

DAO(Data Access Object) : DB에 접근

SQL : 데이터의 삽입, 삭제, 변경 수행.

DTO/VO(Data Transfer Object)/(Value Object) : 데이터 교환을 위해 사용할 객체를 만드는 과정(거의 전 과정에서 사용됨)

 

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

 

배치 프로그램의 필수 요소

안자성 대견(물건 배치하려고 했는데 너가 안자성 대견해~) - 안정성 / 자동화 / 성능 / 대용량 데이터 / 견고성

대용량 데이터 : 대량의 데이터 처리

자동화 : 사용자의 개입 없이 수행

견고성 : 중단되지 않고 수행

안정성 : 오류 발생 시 추적 가능

성능 : 다른 응용 프로그램의 수행을 방해하지 않음. 시간 내 처리 완료되어야 함.

 

배치 스케줄러(Batch Scheduler) (=Job Scheduler) : 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원.

 

배치 스케줄러의 종류

SQC (에 로즈 쿼츠옥수수(corn 아님)를 따서 배치하는 스케줄을 세웠다.) - Spring / Quartz / Cron

Spring Batch : Spring Source랑 Accenture가 공동 개발

Quartz : 유연성을 제공

Cron : 리눅스의 기본 스케줄러. crontab 명령어로 작업 예약 가능

 

crontab 명령어 작성 방법

[분][시][일][월][요일]/~~

* * * * */root/com.sh

 

매일 오후 1시 30분에 실행할 경우

30 13 * * * /root/com.sh

 

매일 0:30에 3시간마다 실행할 경우

30 */3 * * * /root/com.sh

 

매월 20일 18~23시 사이 매분마다 실행할 경우

* 18-23 20 * * /root/com.sh

 

4, 9, 11월의 25일 23시 30분에 실행할 경우

30 23 25 4,9,11 * /root/com.sh

 

crontab 명령어 작성법은 그렇게 어렵진 않은데 아마 헷갈릴 수 있으니 시험 보기 전에 잘 보기.

 

'TIL > 기타' 카테고리의 다른 글

정처기 실기 용어정리 (6장)  (1) 2024.10.11
정처기 실기 용어정리 (5장)  (0) 2024.10.10
정처기 실기 용어정리 (3장)  (0) 2024.10.01
정처기 실기 용어정리 (2장)  (0) 2024.10.01
정처기 실기 용어정리 (1장)  (1) 2024.09.18