[정보처리기사 실기 정리] 8. 서버 프로그램 구현

전현준·2024년 4월 17일
0

정보처리기사 실기

목록 보기
9/12
post-thumbnail

1. 개발환경 구축


1. 개발 환경 구축

(1) 개발 환경 구축의 개념

  • 개발 환경 구성 시, 시스템 요구사항의 명확한 이해 필요

(2) 개발 도구의 분류

  • 빌드 도구 : 작성한 코드의 빌드 및 배포를 수행
  • 구현 도구 : 코드 작성과 디버깅, 수정 등과 같은 작업 지원
  • 테스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
  • 형상관리 도구 : 산출물에 대한 버전 관리를 위한 도구

(3) 개발환경 구성요소

  • 서버 하드웨어 개발 환경

    • 웹 서버 : 웹 브라우저에서 요청하는 HTML 문서나 오브젝트를 전송해주는 서비스
    • 웹 어플리케이션 서버 : 어플리케이션이 동작할 수 있는 환경 제공, Tomcat
    • 데이터베이스 서버 : 데이터가 저장되어 있는 서버
    • 파일 서버 : 파일을 저장하고 관리하기 위한 서버
  • 클라이언트 하드웨어 개발환경

    • 클라이언트 프로그램 : 설치를 하여 커뮤니케이션 하는 프로그램
    • 웹 브라우저 : 브라우저를 통해 사용자와 커뮤니케이션
    • 모바일 웹 : 모바일 디바이스에서 웹 브라우저를 통해 서비스 제공
    • 모바일 앱 : 모바일 디바이스에 설치되어 활용되는 어플리케이션
  • 소프트웨어 개발환경

    • 운영체제 : 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 SW
    • 미들웨어 : 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해줌
    • DBMS : 데이터베이스 관리 소프트웨어

  • 형상 관리 : 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항복의 변경 사항 관리
    • SW : 가시성, 추적성, 무결성 등의 품질 보증 보장
    • 형상 관리 목적
      • 무결성과 변경에 대한 추적성 확보
      • 프로젝트 변경이 발생 되었을 때 처리하는 매커니즘
      • 형상 관리대상 파악, 베이스라인 지정, 형상 관리, 접근 제어
  • 형상 관리 절차 : 품질 보증의 목적으로 수행
    • 형상 식별 : 형상 관리 대상을 정의 및 식별
    • 형상 통제 : 변경 요구 관리, 변경제어, 형상 관리 (형상통제위원회 운영)
    • 형상 감사 : 소프트웨어 베이스라인의 무결성 평가하는 활동
    • 형상 기록 : 소프트웨어 형상 및 변경 관리에 대한 각종 수행 결과 기록
  • 소프트웨어 형상 관리 도구 유형

    • 공유 폴더 방식 (RCS, SCCS) : 약속된 공유 폴더에 복사하는 방식
    • 클라이언트/ 서버 방식 (CVS, SVN) : 중앙에 버전 관리 시스템을 항시 동작
    • 분산 저장소 방식 (Git) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장
      • 로컬 저장소에서 Commit한 후, 원격 저장소로 Push하는 방식
  • 소프트웨어 형상 관리 도구별 특징

    • RCS : 파일의 수정을 한 사람만으로 제한하여, 파일의 수정을 동시에 할 수 없도록 잠금
    • CVS : 가장 오래된 형상 관리 도구 중의 하나, 중앙 집중형 서버 저장소
    • SVN : 중앙 집중형 클라이언트-서버 방식, CVS 단점 보완
      • CVS 지원, 바이너리 파일 관리, 롤백 기능 지원
    • Git : 형상 관리 시스템
      • 로컬 / 원격 형상 관리
      • 롤백 기능 지원 : 커밋 실패 시 롤백 가능

  • 백업
    • 백업은 중요한 데이터나 정보를 안전하게 보관하기 위한 데이터를 복제하는 기법
    • 백업의 유형
      • 전체 백업 : 데이터 전체에 대해 백업
      • 차등 백업 : 마지막 전체 백업 이후, 모든 데이터 백업
      • 증분 백업 : 정해진 시간을 기준으로 (제일 마지막에) 변경된 파일만 백업


2. 모듈 구현


1. 모듈 구현

(1) 재사용

  • 재사용은 이미 개발되어 그 기능, 성능 및 품질을 인정 받았던 SW의 전체 또는 일부를 사용
  • 재사용의 종류
    • 재공학 : 기존 소프트웨어를 재활용하는 소프트웨어 재사용 기법
    • 재개발 : 기존 시스템 내용을 참조하여 완전히 새로운 시스템 개발

(2) 모듈 구현

  • 모듈 : 하나의 완전한 기능을 수행할 수 있는 독립된 실체
    • 서브프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위
  • 모듈의 특징
    • 모듈의 독립성을 높이려면, 결합도는 낮게 응집도는 높게 만들어야함
  • 모듈화의 개념
    • 소프트웨어의 성능 향상, 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 분해
  • 모듈화 기법
    • 루틴 : 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
    • 메인 루틴 : 프로그램의 주요한 부분, 개략적인 동작 절차 표시
    • 서브 루틴 : 메인 루틴에 의해 필요할 때 마다 호출되는 루틴

(3) 소프트웨어 모듈 응집도

  • 응집도 : 모듈의 독립성을 나타내는 정도, 모듈 내부 구성요소 간 연관 정도
  • 응집도 유형우논시절 통순기 (우리가 논 시절의 통합짱은 순기다..)
    • 우연적 응집도 : 각 구성요소가 연관이 없을 경우의 응집도
    • 논리적 응집도 : 유사한 성격이나, 특정 형태의 요소들이 한 모듈에서 처리되는 응집도
    • 시간적 응집도 : 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우 응집도
    • 절차적 응집도 : 기능을 순차적으로 수행할 경우의 응집도
    • 통합적 응집도 : 입출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있는 경우 응집도
    • 순차적 응집도 : 모듈 내에서 한 활동으로 부터 나온 출력값을 다른 활동이 사용하는 응집도
    • 기능적 응집도 : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 응집도

(4) 소프트웨어 모듈 결합도

  • 결합도의 개념
    • 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성, 관련성 측정
    • 결합도 유형내공 외제 스자 (내부 공사는 외제를 쓰자!)
      • 내용 결합도 : 두 모듈이 내용적으로 직접 결합되어 있는 경우
      • 공통 결합도 : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때 결합도
      • 외부 결합도 : 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유
      • 제어 결합도 : 내부 논리 조직을 제어하기 위한 목적, 제어 신호를 이용하여 통신
      • 스탬프 결합도 : 모듈 간의 인터페이스로, 배열이나, 객체, 구조 등이 전달
      • 자료 결합도 : 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우

(5) 팬인 및 팬 아웃

  • 소프트웨어 구성요소인 모듈을 계층적으로 분석하기 위함
  • 팬 인은 높게, 팬 아웃은 낮게
  • 팬인
    • 모듈 자신을 기준으로 모듈에 들어오면 팬인
  • 팬 아웃
    • 모듈 자신을 기준으로 모듈에서 나가면 팬아웃


2. 모듈 테스트

(1) 모듈 테스트의 개요

  • 모듈 테스트는 화이브 박스 기법(내부 구조와 동작 검사)을 사용한다.
  • 대표적인 단위 테스트 도구인 xUnit을 활용

(2) 모듈 테스트 종류

  • xUnit은 jUnit, cppUnit, nUnit등 다양한 언어 지원
  • 함수나 클래스 같은 서로 다른 구성 원소를 테스트


3. 배치 프로그램 구현


1. 배치 프로그램

(1) 배치 프로그램의 개념

  • 배치 프로그램은 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶음
  • 정기적으로 반복 수행, 정해진 규칙에 따라 일괄 처리

(2) 배치 프로그램 유형

  • 이벤트 배치 : 사전에 정의해 둔 조건 충족 시 자동 실행
  • 온디맨드 배치 : 사용자의 명시적 요구가 있을 때마다 실행
  • 정기 배치 : 정해진 시점 (주로 야간)에 정기적 실행

(3) 배치 스케줄러

  • 배치 스케줄러는 일괄 처리를 위해 주기적으로 발생하는 작업을 지원하는 도구

  • 배치 스케줄러 종류

    • 스프링 배치 : 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 어플리케이션
    • 쿼츠 스케줄러 : 스프링 프레임워크에 플러그인 되어 수행하는 작업과 실행 스케줄을 정의하는 트리거 분리
  • Cron 표현식 : 작업이 실행되는 시간 및 주기 등을 설정 , 리눅스, 유닉스 / 쿼츠 로 구분함

    • 초, 분, 시간, 일, 월, 요일 , 연도 (생략 가능)
    • 표현식 특수문자 의미
      - * : 모든 수 / ? : 해당 항목 미사용 / - : 기간 설정 / , : 특정 기간 설정
      - / : 시작 시간과 반복 간격 설정 / L : 마지막 기간에 동작 / W : 가장 가까운 평일
profile
백엔드 개발자 전현준입니다.

0개의 댓글

관련 채용 정보