정보처리기사

정보처리기사 - 4장 서버 프로그램 구현

ToMakeSure 2023. 4. 16. 14:59
반응형

[ 소프트웨어 아키텍처 ]

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

 

[ 소프트웨어 아키텍처 설계의 기본 원리 ]

 - 모듈화 : 성능향상 , 시스템의 수정 및 재사용 , 유지관리 등이 용이하도록 시스템 기능들을 모듈 단위로 나누는 것

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

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

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

 

[ 아키텍처 패턴 ] 

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

 

[ 아키텍처 패턴의 종류 ]

 - 레이어 패턴 : 시스템을 계층으로 구분하여 구성하는 고전적인 방법 / 상위 계층은 하위 계층에 대한 서비스 제공자, 하위 계층은 상위 계층의 클라이언트가 된다.
 - 클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴 / 사용자가 클라이언트를 통해 서버에 요청하면 클라이언트가 응답을 받아 사용자에게 제공하는 방식 

 - 파이프-필터 패턴 : 데이터 스트림 절차의 각 단계를 필터로 캡슐화하여 파이프를 통해 전송하는 패턴 ex ) UNIX의 쉘

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

 

[ 객체지향 ] 

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

 

[ 객체지향의 구성요소 ]

 - 객체 : 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈

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

 - 메시지 :  객체들 간의 상호작용에 사용되는 수단으로 객체의 동작이나 연산을 일으키는 외부의 요구사항

 

[ 객체지향의 특징 ]

 - 캡슐화 : 외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것

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

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

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

[ 객체지향 분석 ]

 - 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업

 

[ 객체지향 분석의 방법론 ]

 - Rumbaugh ( 럼바우 ) 방법 , Booch ( 부치 ) 방법 , Jacobson 방법 , Coad와 Yourdon 방법 , Wirfs-Brock 방법 

 

[ 럼바우의 분석 기법 ] 

 - 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법

 - 분석활동은 객체 모델링 -> 동적 모델링 -> 기능 모델링 순으로 이루어진다.

 

[ 모듈 ] 

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

 - 모듈의 독립성은 결합도와 응집도에 의해 측정

 

[ 단위 모듈 ]

 - 소프트웨어 구현에 필요한 여러 동작 중 한가지 동작을 수행하는 기능을 모듈로 구현한 것 

 

[ 결합도 ] 

 - 모듈 간에 상호 의존하는 정도 / 결합도가 약할수록 품질이 높다.

 - ( 결합도 약함 ) 자료 - 스탬프 - 제어 - 외부 - 공통 - 내용 ( 결합도 높음 )

 

[ 응집도 ] 

 - 모듈의 내부 요소들이 서로 관련되어 있는 정도 / 응집도가 강할수록 품질이 높다

 - ( 응집도 강함 ) 기능적- 순차적 - 교환적 - 절차적 - 시간적 - 논리적 - 우연적 ( 응집도 약함 )

 

[ 팬인 / 팬아웃 ] 

 - 팬인 : 어떤 모듈을 제어하는 모듈의 수 

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

 

[ N-S 차트 ] 

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

 

[ 공통 모듈 ]

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

 

[ 공통 모듈 명세 기법의 종류 ] 

 - 정확성 : 시스템 구현 시 해당 기능이 필요하다는것을 알 수 있도록 정확히 작성함

 - 명확성 : 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성함

 - 완전성 : 시스템 구현을 위해 필요한 모든것을 기술함

 - 일관성 : 공통기능들 간 상호 충돌이 발생하지 않도록 작성함

 - 추적성 : 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성함

 

[ 재사용 ( Reuse ) ]

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

 

[ 코드 ] 

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

 

[ 코드의 주요 기능 ] 

 - 간소화기능 / 식별기능 / 분류기능 / 배열기능 / 표준화기능  ( 간,식,분,배,표 )

 

[ 코드의 종류 ]

 - 순차 코드 / 블록 코드 / 10진 코드 / 그룹 분류 코드 / 연상 코드 / 표의 숫자 코드 / 합성 코드

 

[ 디자인 패턴 ] 

 - 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제

 

[ 생성 패턴 ]

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

 - 추상팩토리 : 인터페이스를 통해 서로 연관 , 의존하는 객체들의 그룹으로 생성하여 추상적으로 표현함 

 - 빌더 : 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성함

 - 팩토리 메소드 : 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴 , 상위클래스는 인터페이스 정의 , 서브클래스는 실제 생성

 - 프로토타입 : 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴

 - 싱글톤 : 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만 여러 프로세스가 동시에 참조할 수는 없음

 

[ 구조 패턴 ] 

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

 - 어댑터 : 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴

 - 브리지 : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴 / 기능과 구현을 두 개의 별로 클래스로 구현

 - 컴포지트 : 객체들을 트리 구조로 구성하여 디렉터리 안에 디렉터리가 있듯이 복합 객체안에 복합 객체가 포함되는 구조를 구현 할 수 있다.

 - 데코레이터 : 임의의 객체에 부가적인 기능을 추가하기 위해 다를 객체들을 덧붙이는 방식

 - 퍼싸드 : 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴 / 서브 클래스 사이의 통합 인터페이스를 제공하는 Wrapper객체가 필요

 - 플라이웨이트 : 인터페이스가 필요할 때마다 매번 생성하지 않고 가능한 공유해서 사용함으로써 메모리 절약하는 패턴

 - 프록시 : 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴

 

[ 행위 패턴 ]

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

 - 책임 연쇄 : 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 개체가 처리하지 못하면 다음 객체로 넘어가능 형태 패턴

 - 커맨드 : 요청을 객체형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남김

 - 인터프리터 : 언어에 문법 표현을 정의하는 패턴

 - 반복자 : 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴 

 - 중재자 : 수많은 객체들 간의 복잡한 상호작용을 캡술화하여 객체로 정의하는 패턴

 - 매멘토 : 특정 시섬에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴 / ctrl + z 같은 되돌리기 기능을 개발할때 주로 이용

 - 옵서버 : 한 객체의 상태가 변화하면 객체에 상속되어 있는 다를 객체들에게 변화된 상태를 전달하는패턴

 - 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴 

 - 방문자 : 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성 / 분리된 처리 기능은 각 클래스를 방문하여 수행함

 

[ API ] 

 - 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스를 의미한다

 - 누구나 무료로 사용할 수 있게 공개된 API를 Open API라고 한다.

 

[ 배치 프로그램 ] 

 - 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일관적으로 처리하도록 만든 프로그램

 

[ 배치 프로그램의 필수 요소 ] 

 - 대용량 데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 함

 - 자동화 : 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 함

 - 견고성 : 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 함

 - 안정성/신뢰성 : 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 함

 - 성능 : 다른 응용 프로그램을 방해하지 않고 지정된 시간 내에 처리가 안료되어야 함

 

[ 배치 스케룰러 ]

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

반응형