포스트

정보처리기사 실기 / Viii - 서버 프로그램 구현


실기 시험 준비

수제비 2023 참조





C1. 개발환경 구축


i. 개발환경 구축

A. 개발환경 구축의 개념

  • 개발환경 구성 시 구현될 시스템 요구사항의 이해가 필요



B. 개발 도구의 분류

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



C. 개발환경 구성요소

1. 하드웨어 개발환경

  • 웹 서버
    • HTTP를 이용한 요청/응답을 처리
    • 정적 콘텐츠 처리
    • WEB-WAS-DB 3계층 구조
    • WAS : 사용자 요청 스레드 처리, DB에 접속하여 SQL 쿼리에 대한 결괏 값 반환하는 서버
  • 웹 애플리케이션 서버
    • 동적 콘텐츠 처리
  • 데이터베이스 서버
    • 데이터의 수징, 저장을 위한 용도
  • 파일 서버
    • 파일 저장 하드웨어, 물리 저장 장치를 활용한 서버
  • 클라이언트 프로그램
    • 설치를 통해 사용자와 커뮤니케이션하는 프로그램
  • 웹 브라우저
    • 웹 서비스의 형태, 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 소통
  • 모바일 앱
    • 모바일 디바이스에 설치되어 활용되는 애플리케이션
  • 모바일 웹
    • 모바일상 웹 브라우저를 통해 서비스 제공


2. 소프트웨어 개발 환경

  • 운영체제 : 서버의 하드웨어를 사용자 관점에서 편리하게 사용하기 위한 소프트웨어
  • 미들웨어 : 컴퓨터-컴퓨터 간 연결을 쉽고 안전하게 관리를 도와주는 소프트웨어
  • DBMS : 사용자와 데이터베이스 사이에서 관리
  • JVM : 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경 제공
  • 컨테이너 : JSP와 서블릿을 실행


3. 형상 관리

  • 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항 관리를 위한 활동
  • 형상 관리 절차
    • 형상 식별 : 형상 관리 대상을 정의 및 식별
    • 형상 통제 : 형상 항목의 버전 관리를 위한 형상통제위원회 운영
    • 형상 감사 : 소프트웨어 베이스라인의 무결성 평가
    • 형상 기록 : 소프트웨어 형상 및 변경 관리에 대한 각종 수행결과 기록
  • 형상통제위원회(CCB)
    • 형상 관리에 대한 주요 방침을 정하고 산출물 검토 후 의사결정 수행 조직
  • 소프트웨어 형상 관리 도구 유형
    • 공유 폴더 방식(RCS, SCCS) : 개발 완료 파일은 약속된 위치의 공유 폴더에 복사하는 방식
    • 클라이언트/서버 방식(CVS, SVN) : 중앙에 버전 관리 시스템을 항시 동작시킴
    • 분산 저장소 방식(Git) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장
  • 소프트웨어 형상 관리 도구별 특징
    • CVS(Concurrent Versions System) : 서버-클라이언트 구조, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 도구
    • SVN(Subversion) : 중앙 집중형, 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있는 도구
    • RCS(Revision Control System) : 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식
    • Bitkeeper : 중앙 통제 방식, 대규모 프로젝트에서 빠른 속도를 내도록 개발
  • Git : 분산형 버전 관리 시스템, 대형 프로젝트에서 효과적
  • Clear Case : 복수 서버, 복수 클라이언트 구조, 서버가 부족할 때 필요한 서버를 하나씩 추가





C2. 공통 모듈 구현


i. 공통 모듈 구현

A. 재사용

1. 재사용 개념

  • 목표 시스템의 개발 시간 및 비용 절감을 위해 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업


2. 재사용 종류

  • 재공학 : 기존 소프트웨어를 버리지 않고 기능을 개선하거나 새로운 소프트웨어로 재활용
  • 재개발 : 기존 시스템 내용을 참조하여 완전히 새로운 시스템 개발


3. 재사용 규모에 따른 분류

  • 함수와 객체 재사용 : 클래스나 함수 단위 소스 코드 재사용
  • 컴포넌트 재사용 : 컴포넌트 수정 없이 인터페이스를 통해 통신하는 방식으로 재사용
  • 애플리케이션 재사용 : 공통기능을 제공하는 애플리케이션과 기능 공유로 재사용



B. 공통 모듈 구현의 개념

1. 모듈의 개념

  • 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체


2. 모듈 특징

  • 독립성, 단독 컴파일, 재사용 가능


3. 모듈화 개념 및 기법

  • 소프트웨어 성능 향상, 복잡한 시스템 수정, 재사용, 관리 용이하게 모듈로 분해 설계 구현 기법
  • 루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령 모임
  • 메인 루틴 : 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
  • 서브 루틴 : 메인 루틴에 의해 필요할 때마다 호출됨


4. 공통 모듈 구현의 개념

  • 개발에서 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법



C. 소프트웨어 모듈 응집도

  • 모듈의 독립성을 나타내는 정도, 모듈 내부 구성요소 간 연관 정도

1. 응집도 유형

  • 우연적 응집도(Coincidental) : 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
  • 논리적 응집도(Logical) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
  • 시간적 응집도(Temporal) : 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
  • 절차적 응집도(Procedural) : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 통신적 응집도(Communication) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있는 경우의 응집도
  • 순차적 응집도(Sequential) : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
  • 기능적 응집도(Functional) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도
  • 위에서 아래로 낮은 응집도 → 높은 응집도



D. 소프트웨어 모듈 결합도

  • 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간 상호의존성

1. 결합도 유형

  • 내용 결합도(Content) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
  • 공통 결합도(Common) : 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 참조, 갱신하는 식으로 상호작용하는 경우 결합도
  • 외부 결합도(External) : 두 개의 모듈이 외부에서 도입된 데이터를 공유할 경우의 결합도
  • 제어 결합도(Control) : 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 통신하는 경우 결합도
  • 스탬프 결합도(Stamp) : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
  • 자료 결합도(Data) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도
  • 위에서 아래로 결합도 낮음 → 결합도 높음



E. 팬인 및 팬아웃

  • 소프트웨어의 구성요소인 모듈을 계층적으로 분선하기 위함
  • 팬인(Fan-In) : 모듈 자신을 기준으로 모듈이 들어옴
  • 팬아웃(Fan-Out) : 모듈 자신을 기준으로 모듈에서 나감
  • 그래프를 볼 때는 위에서 아래로




ii. 공통 모듈 테스트

  • 화이트박스 기법을 활용한 개별 공통 모듈에 대한 디버깅
  • 화이트 박스 기법 : 프로그램 로직을 이해하고, 내부 구조와 동작을 검사

1. 공통 모듈 테스트 종류

  • JUnit : 자바용 단위 테스트 도구
  • CppUnit : 자바의 JUnit을 C++로 구현한 단위 테스트 도구
  • HttpUnit : 웹 브라우저 없이 웹사이트 테스트를 수행하는 단위 테스트 도구





C3. 배치 프로그램 구현


i. 배치 프로그램

  • 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법

A. 배치 프로그램 유형

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



B. 배치 스케줄러

  • 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구

1. 배치 스케줄러 종류

  • 스프링 배치 : 스프링 프레임워크의 3개 요소를 모두 사용할 수 있는 대용량 처리 제공 스케출러 배치 애플리케이션
  • 쿼츠 스케줄러 : 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러





우선 뒷부분 배치 표현식은 날렸다.

나올 확률이 적을 뿐더러 저거 말고 이번 과목에서 집중해야할 부분이 있기 때문이다.

이번 과목은 띄엄띄엄 한 번씩 출제되는 과목이라는데, 보통 이런 과목은 굵직한 개념에서 한 문제 정도 출제되는 것 같더라.

그래서 굵직한 걸 추리면

소프트웨어 형상 관리 도구별 특징
모듈 응집도 유형
모듈 결합도 유형
팬인 팬아웃배치 프로그램 유형

정도가 될 거 같다.

다음 연달아 나오는 세 개의 과목에서 출제율이 높고, 중요한 내용이 많기 때문에 이번 과목은 넘기자.

이 블로그는 저작권자의 CC BY 4.0 라이센스를 따릅니다.