CS/CS

[4장] 서버 프로그램 구현

JWonK 2023. 7. 16. 21:00
728x90
반응형

※ 모듈화


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

 

- 모듈화는 모듈 간 결합도의 초소화와 응집도를 최대화 하는 것이 목표

 

 

 

※ 추상화


: 전체적이고 포괄적인 개념을 설계한 후 구체화시켜 나가는 것

 

유형 내용
괴정 추상화 자세한 수행 과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법
자료 추상화 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
제어 추상화 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는 방법

 

 

 

※ 정보 은닉


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

 

 

 

※ 아키텍처 패턴


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

 

[레이어 패턴]

  • 시스템을 계층으로 구분하여 구성되는 패턴

 

[클라이언트-서버 패턴]

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

 

[파이프-필터 패턴]

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

 

[모델-뷰-컨트롤러 패턴]

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

 

[마스터-슬레이브 패턴]

  • 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행하는 패턴

 

[브로커 패턴]

  • 브로커 컴포넌트가 사용자를 연결해주는 패턴

 

[이벤트-버스 패턴]

  • 소스가 특정 채널에 이벤트 메시지를 발행하면(Publish)하면, 해당 채널을 구독(Subscribe)한 리스너(Listener)들이 메시지를 받아 이벤트를 처리하는 패턴

 

[인터프리터 패턴]

  • 프로그램 코드의 각 라인을 수행하는 방법을 지정하고, 기호마다 클래스를 갖도록 구성된 패턴

 

 

 

※ 캡슐화


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

 

 

 

※ 상속


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

 

 

 

※ 다형성 


: 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

 

 

 

※ 객체지향 분석의 방법론


  • Rumbaugh(럼바우) 방법 : 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행
  • Jacobson 방법 : 유스케이스(Use Case)를 강조하여 사용
  • Coad와 Yourdon 방법 : E-R 다이어그램을 사용

 

 

 

※ 럼바우의 분석 기법


: 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법, 객체 모델링 기법(OMT, Object-Modeling Technique)라고도 함

 

  • 객체 모델링 → 동적 모델링 → 기능 모델링 순으로 이루어진다

 

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

 

 

 

※ 결합도


: 모듈 간에 상호 의존하는 정도, 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다.

 

[아래로 갈수록 결합도 약해짐]

  • 내용 결합도 : 내부 자료 직접 참조
  • 공통 결합도 : 공유되는 공통 데이터 영역을 영역을 여러 모듈이 사용할 때의 결합도
  • 외부 결합도 : 어떤 모듈에서 선언한 데이터를 참조할 때
  • 제어 결합도 : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 전달하는 결합도
  • 스탬프 결합도 : 자료구조
  • 자료 결합도 : 자료 요소로만 구성될 때

 

 

 

 

※ 응집도


: 모듈의 내부 요소들이 서로 관련되어 있는 정도

 

[아래로 갈수록 응집도 약해짐]

  • 기능적 응집도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
  • 순차적 응집도 : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그다음 활동의 입력 데이터로 사용할 경우의 응집도
  • 교환적 응집도 : 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
  • 절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 시간적 응집도 
  • 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우
  • 우연적 응집도

 

 

 

※ IPC [Inter-Process Communication]


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

 

[IPC의 대표 메소드 5가지]

  • 공유 메모리
  • 소켓
  • 세마포어
  • 파이프와 네임드 파이프
  • 메시지 큐잉

 

 

 

※ 코드의 주요 기능


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

 

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

 

 

 

※ 디자인 패턴


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

 

GOF의 디자인 패턴은 생성 / 구조 / 행위로 구분

 

 

 

※ 생성 패턴


  • 추상 팩토리
    • 구체적인 클래스에 의존X, 인터페이스를 통해 서로 연관하는 객체들의 그룹으로 추상화
  • 빌더
    • 인스턴스를 건축하듯이 조합하여 객체 생성
  • 팩토리 메서드
    • 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화
    • 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브 클래스에서 구현
  • 프로토타입
    • 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
  • 싱글톤
    • 하나의 객체를 생성하면 어디서든 참조 가능

 

 

 

※ 구조 패턴


  • 어댑터
    • 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용하 수 있도록 변환해주는 패턴
  • 브리지
    • 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
  • 컴포지트
    • 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용
  • 데코레이터
    • 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
  • 퍼싸드
    • 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 핸턴, Wrapper 객체 필요
  • 플라이웨이트
    • 인스턴스가 필요할 때마다 매 번 생성하는 것이 아닌 가능한 공유해서 사용함으로써 메모리 절약
  • 프록시
    • 접근이 어려운 객체와 여기에 연결하는 객체 사이에서 인터페이스 역할을 수행하는 패턴

 

 

 

※ 행위 패턴


  • 책임 연쇄
    • 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태
  • 커맨드
    • 요청을 객체의 형태로 캡술화하여 재이용하거나 취소
  • 인터프리터
    • 언어에 문법 표현을 정의하는 패턴
  • 반복자
    • 자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
  • 중재자
    • 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
    • 의존성을 줄여 결합도를 감소시킬 수 있다
  • 메멘토
    • 특정 시점에서의 객체 내부 상태를 객체화함으로써 해당 시점으로 되돌릴 수 있음, Ctrl + Z
  • 옵서버
    • 한 객체 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
  • 상태
    • 객체의 상태에 따라 동일한 동작을 다르게 처리해야할 때 사용
  • 전략
    • 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의
  • 템플릿 메소드
    • 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화
  • 방문자
    • 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성

 

 

 

※ API [Application Programming Interface]


: 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스

 

 

 

※ 배치 프로그램


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

 

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

요소 설명
대용량 데이터 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야함
자동화 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 함
견고성 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 함
안정성/신뢰성 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 함
성능 - 다른 응용 프로개름의 수행을 방해하지 않아야 함
- 지정된 시간 내에 처리가 완료되어야 함
728x90
반응형

'CS > CS' 카테고리의 다른 글

[2장] 데이터 입출력 구현  (0) 2023.07.17
[1장] 요구사항 확인  (0) 2023.07.17
[5, 6장] 인터페이스 구현 / 화면 설계  (0) 2023.07.16
[12장] 제품 소프트웨어 패키징  (0) 2023.07.16
[11장] 응용 SW 기초 기술 활용 (2)  (1) 2023.07.16