230919 TIL #194 정처기 실기 - #6 서버프로그램 구현 - 1

김춘복·2023년 9월 18일
0

TIL : Today I Learned

목록 보기
194/550

Today I Learned

오늘은 정보처리기사 실기 내용 중 서버 프로그램 구현에 대해 공부했다.


서버 프로그램 구현 - 1

소프트웨어 아키텍처

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

소프트웨어 아키텍쳐 설계의 기본 원리

  1. 모듈화 - A
    시스템의 기능들을 모듈 단위로 나누어 유지관리, 재사용이 용이하게 하는 것.
    모듈 간 결합도의 최소화와 모듈 내 응집도의 최대화가 목표이다.

  2. 추상화
    전체적이고 포괄적인 개념을 설계한 후 세분화해 구체화 시켜 나가는 것.

  • 종류 : 과정 추상화, 자료 추상화, 제어 추상화
  1. 단계적 분해
    상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법. 하향식 설계 전략

  2. 정보은닉
    한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법.
    모듈의 독립적 수행이 가능하다. 하나의 모듈이 변경되어도 다른 모듈에 영향을 주지 않는다.

협약(Contract)에 의한 설계

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

  • 명세에 포함될 조건 : 선행조건, 결과조건, 불변조건

아키텍처 패턴

아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
SW 시스템 구조를 구성하기위한 기본적인 윤곽을 제시.
서브시스템들과 그 역할이 정의되어 있다.

레이어패턴

시스템을 계층으로 구분해 구성하는 고전적인 방법의 패턴
하위계층은 상위계층에 대한 서비스 제공자가 되고, 상위계층은 하위계층의 클라이언트가 된다.
마주보는 두 계층사이에서만 상호작용이 이루어진다.

클라이언트-서버 패턴

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

파이프-필터 패턴 - B

데이터 스트림 절차의 각 단계를 필터로 캡슐화해 파이프로 전송하는 패턴
서브시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복

모델-뷰-컨트롤러(MVC) 패턴

서브 시스템을 모델,뷰,컨트롤러로 구조화하는 패턴
컨트롤러가 사용자의 요청을 받으면 핵심기능과 데이터를 보관하는 모델을 이용해 뷰에 정보를 출력하는 구조.

기타 패턴

  • 마스터-슬레이브 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행한다. 막대한 연산이 필요한 작업을 수행하기 위해 여러대의 컴퓨터를 병렬로 연결하고자 하는 상황에 적합하다. 병렬 컴퓨팅 시스템

  • 인터프리터 패턴 : 프로그램 코드의 각 라인을 수행하는 방법을 지정하고 기호마다 클래스를 갖도록 구성된 패턴. 번역이나 프로그래밍 언어 개발에 적합. 번역기, 컴파일러, 인터프리터


객체지향

소프트웨어의 각 요소를 객체(Object)로 만든 후 객체들을 조립해 SW를 개발하는 기법

객체지향의 구성요소

  • 객체
    데이터(객체가 가지고있는 속성, 상태)와 함수(객체가 수행하는 기능)으로 구성

  • 클래스 - B
    공통된 속성과 연산을 갖는 객체의 집합.
    하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하며 데이터를 추상화 하는 단위로 사용된다.

  • 메시지 - B
    객체들 간의 상호작용에 사용되는 수단. 객체의 동작이나 연산을 일으키는 외부의 요구사항.
    객체에게 어떤 행위를 하도록 지시하는 명령

객체지향의 특징

  • 캡슐화 - B
    외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부내용을 은닉하는 것.
    인터페이스가 단순화되고, 재사용성이 높아지고, 변경 발생시 파급효과가 적고, 정보은닉과 관련있다.

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

  • 다형성
    하나의 메시지를 각각의 객체가 고유한 방법으로 응답하는 것.
    상속받은 여러 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질

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

객체지향 설계 원칙 - A

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

객체지향 분석(OOA)

소프트웨어를 개발하기 위한 비즈니스를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석하는 기법

객체지향 분석 방법론

  • 럼바우 : 분석 활동을 객체모델, 동적모델, 기능모델로 나누어서 수행
  • 부치 : 미시,거시적 개발 프로세스를 모두 사용하며 클래스와 객체들을 분석 및 식별해 클래스의 속성과 연산을 정의한다.
  • Jacobson : 유스케이스(Use case)를 강조
  • Coad와 Yourdon 방법 : E-R 다이어그램을 사용해 객체의 행위를 모델링.
  • Wirfs-Brock 방법 : 분석과 설계간 구분이 없다.

럼바우 분석 기법 - A

Rumbaugh. 모든 소프트웨어 구성요소를 그래픽 표기법을 이용해 모델링하는 기법.
객체 모델링 기법(OMT)라고도 한다.
분석활동은 객체모델링 -> 동적모델링 -> 기능모델링 순으로 이루어진다.

객체 모델링(Object Modeling)

= 정보 모델링. 시스템에서 요구되는 객체를 찾아내 속성과 연산 식별 및 객체들간의 관계를 규정해 표시하는 모델링. ex) ER 다이어그램(ERD)

동적 모델링(Dynamic Modeling)

상태 다이어그램을 이용해 시간의 흐름에 따른 객체들 간의 제어흐름, 상호작용, 동작 순서 등 동적인 행위를 표현하는 모델링 ex) 상태변화도(STD), 사건추적도

기능 모델링(Functional Modeling)

다수의 프로세스들 간의 자료흐름을 중심으로 처리 과정을 표현한 모델링
ex) 자료흐름도(DFD)

profile
Backend Dev / Data Engineer

0개의 댓글