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

2026. 7. 17. 01:08·정보처리기사

https://ss-o.tistory.com/110#google_vignette
위 글 참고
현재 내가 보려고 만든 markdown노트를 그대로 올렸더니 조금 깨짐 현상이 있어서 수정중

개발 환경 구축

개발 도구 분류
  • 구현 도구: 코드 작성과 디버깅 및 수정 작업
  • 테스트 도구: 코드의 기능과 품질 향상(xUnit, PMD, Findbugs, Cppcheck, Sonar)
  • 형상관리 도구: 코드와 산출물에 대한 버전 관리
  • 빌드 도구: 코드의 빌드와 배포 수행(Gradle, Maven, Ant)
서버 하드웨어 개발 환경
Client Web Server WAS DB
Client 하드웨어 개발 환경 웹상의 정적 콘텐츠
HTTP를 이용한
요청/응답
동적 콘텐츠 데이터 수집 및 관리
소프트웨어 개발 환경
운영체제 미들웨어 DBMS
하드웨어와 사용자 인터페이스 컴퓨터와 컴퓨터를 연결
쉽고 안전하게 프로그램 사용
사용자 DB 사이 위치
  • JVM: 시스템 메모리를 관리하고 자바 기반 Application을 위해 실행 환경 제공
형상 관리(SCM: Software Configuration Management)
  • 소프트웨어 개발 과정에서 ==소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동==
  • 소프트웨어 변경의 원인을 알아내고 제어하며 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보
  • 형상 관리는 소프트웨어 ==개발의 전 단계에 적용==되는 활동이며 유지보수 단계에서도 수행
  • 형상 관리는 소프트웨어 개발의 전체 비용을 줄이고 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 함
형상 관리 기능의 종류
  • 형상 식별: 형상 관리 대상에 이름과 관리 번호를 부여하고 ==계층(tree) 구조==로 구분하여 수정 및 추척이 용이하도록 함
  • 버전 제어: 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고 이를 위해 ==특정 절차와 도구를 결합==하는 작업
  • 형상 통제(변경 관리): 식별된 형상 항목에 대한 변경 요구를 검토하여 ==현재의 기준선(baseline)이 잘 반영될 수 있도록 조정==하는 작업
  • 형상 감사: ==기준선의 무결성을 평가==하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
  • 형상 기록(상태 보고): 형상의 식별, 통제, 감사 작업의 결과를 기록 관리하고 보고서를 작성하는 작업
    (단답형)
  • 베이스라인: 개발 과정의 각 단계에서 나온 산출물들의 변화를 통제하는 시점

공통 모듈 구현

  • 모듈: 하나의 소프트웨어 또는 하드웨어 단위
    • 소프트웨어 설계에서 기능 단위로 분해하여 추상화되어 재사용 및 공유가 가능한 단위
  • 모듈화: ==모듈을 통해 소프트웨어의 성능을 향상시키고 디버깅, 수정, 통합을 용이하게 하는 설계 기법==
    • 모듈화 기법: 루틴: 메인 루틴, 서브루틴
공통 모듈
  • 기능을 분할하고 추상화하여 성능 향상 및 유지 보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법
  • 공통 모듈 구현 비용
    • 모듈 개수 증가 -> 통합 비용 증가
    • 모듈 개수 감소 -> 개발 비용 증가
==결합도와 응집도==
  • 결합도: 상호의존의 정도, 결합도가 약해야 품직이 상승
    • 내공외제스자(>>>)
    • 내용(content, 직접 참조/다른 모듈에서 사용) < 공통(common, 공유되는 공통 데이터 영역을 여러 모듈이 사용) < 외부(external, 외부의 다른 모듈에서 참조) < 제어(control, 다른 모듈에서 흐름을 제어) < 스탬프(stamp, 동일한 자료구조를 조회) < 자료(data, 매개 변수 데이터/완전 분리된 데이터)
  • 응집도: 정보은닉, 응집도가 강할수록 품질이 좋음
    • 기순교절시논우(>>>)
    • 기능(단일 문제) > 순차(나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용) > 교환(통신, 동일한 입출력을 사용하여 서로 다른 기능을 수행) > 절차(다수의 기능을 순차적으로 수행) > 시간(특정 시간에 처리되는 것이 모인 모듈) > 논리(유사한 성격) > 우연(서로 관련 없는 요소)

공동 모듈 구현 절차

DTO/VO -> SQL -> DAO -> Service -> Controller -> View

  • DTO(Data Transfer Object): 프로세스 사이에서 데이터 전송
  • VO(Value Object): 고정 클래스가 가지는 Object
  • DAO(Data Access Object): 특정 타입의 DB의 추상 인터페이스를 제공하는 객체
MVC(Model View Controller) 패턴
생성 패턴 구조 패턴 행위 패턴
객체의 생성과 관련된 패턴 클래스나 객체들을
조합하여 더 큰 구조로
만들 수 있게 해주는 패턴
클래스나 객체들이 서로
상호작용하는 방법이나
책임 분배 방법을 정의하는패턴
- 추상 팩토리
- 빌더
- 팩토리 메소드
- 프로토타입
- 싱글톤
- 어댑터
- 브리지
- 컴포지트
- 데코레이터
- 퍼싸드
- 플라이웨이트
-프록시
- 커맨드
- 인터프리터
- 반복자
- 중재자
- 메멘토
- 옵저버
- 전략
- 템플릿 메소드
- 방문자
  • 추상 팩토리(Abstract Factory)
    • 동일한 주제의 다른 팩토리를 묶어줌
    • 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
  • 팩토리 메소드(Factory Method)
    • 생성할 객체의 클래스를 국한하지 않고 객체를 생성
    • 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패턴
  • 싱글톤(Singleton)
    • 한 클래스에 한 객체만 존재하도록 제한
    • 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
  • 컴포지트(Composite)
    • 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있음
    • 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴
  • 퍼싸드(Facade)
    • 많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공
  • 프록시(Proxy)
    • 접근 조절, 비용 절감, 복잡도 감솔르 위해 접근이 힘든 객체에 대한 대역(대리)를 제공함
  • 커맨드(Command)
    • 위의 명령어를 각각 구현하는 것보다는 위 그림처럼 하나의 추상 클래스에 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 것
    • 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
  • 옵저버(Observer)
    • 어떤 클래스에 변화가 일어났을 때 이를 감지하여 다른 클래스에 통보해주는 것
    • 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 패턴
  • 템플릿 메소드(Template Method)
    • 상위 클래스에서는 추상적으로 표현하고 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴
    • 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴

      팬 인 팬 아웃

  • 소프트웨어의 구성 요소인 모듈을 계층적으로 분석하기 위해서 팬 인, 팬 아웃 활용
  • 팬 인: 해당 모듈로 들어가는 모듈의 수(제어하는 수)
  • 팬 아웃: 해당 모듈에서 나가는 모듈의 수(제어되는 수)
공통 모듈 테스트: 화이트 박스 테스트 // IDE 도구를 활용하여 디버깅 진행
  • 화이트박스 검사: 내부 구조와 동작을 검사
  • 블랙박스: 내부코드를 보지 않고 입력값에 목표 결과값이 나오는지 등을 확인(요구사항 확인)

배치 프로그램

  • 사용자와 상호작용 없이 일련의 작업을 작업 단위로 묶어 정기적으로 반복 수행하는 일괄 처리 방법

  • 배치 스케쥴러: 일괄처리를 위해 주기적으로 발생시키는 작업 지원 도구

  • 스프링 배치: 대용량 처리를 제공하는 스케쥴러

  • 쿼츠 스케쥴링: 플러그인을 통해 유연성을 제공하는 오픈 소스 기반 스케쥴러

  • Cron 표현식: 스케쥴러를 실행시키기 위해 작업이 실행되는 주기를 설정하는 표현식

  • 유형: 이벤트 배치, 온디멘드 배치, 정기 배치

    • 온디멘드 배치: 사용자의 명시적 요구가 있을 때마다 실행하는 방법
    • 정기 배치: 정해진 시점에 실행하는 배치
배치 프로그램이 가지는 필수 요소
  • 배치 프로그램: 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식
  • 업무의 효율성과 비효율적인 시스템의 과부하를 줄이기 위해 사용
  • 대용량 데이터: 대용량 데이터를 처리할 수 있어야 함
  • 자동화: 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 함
  • 견고성: 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 함
  • 안정성: 어떤 문제가 생겼는지 언제 발생했는지 등을 추적할 수 있어야 함

'정보처리기사' 카테고리의 다른 글

[정보처리기사 실기] 데이터 입출력 구현  (0) 2026.07.17
[정보처리기사] 정보처리기사 필기 후기 및 실기 시험 준비  (0) 2026.07.06
'정보처리기사' 카테고리의 다른 글
  • [정보처리기사 실기] 데이터 입출력 구현
  • [정보처리기사] 정보처리기사 필기 후기 및 실기 시험 준비
chanhuy
chanhuy
  • chanhuy
    차늬
    chanhuy
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • algorithm (9)
      • Python (2)
      • database (8)
      • csts (3)
      • Operating System (0)
      • 오픈소스SW (1)
      • Git & Github (4)
      • 프로젝트 회고 (3)
      • 정보처리기사 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    recursion
    pl/sql
    Reduction
    dynamic programming
    greedy
    D&C
    graph algorithms
    오픈소스SW
    index
    시간복잡도
    Python
    프로젝트후기
    algorithm
    알고리즘
    backtracking
    Git
    COMMIT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
chanhuy
[정보처리기사 실기] 서버 프로그램 구현
상단으로

티스토리툴바