개발공부/정보처리기사

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

햄❤️ 2023. 4. 15. 19:17
728x90

 

정보처리기사 수제비 2022 실기 문제집을 요약하며 공부했습니다! 😁 

 

 

8-1. 개발환경 구축

8-1-1. 개발 환경 구축

 

📌 개발 도구 분류

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

 

📌 서버 하드웨어 개발 환경

  • 웹서버: HTTP를 이용한 요청/응답을 처리, 웹 상의 정적 콘텐츠 처리(Css, Js, Image), Apache 웹 서버, Nginx 등
  • 웹 애플리케이션 서버: 동적 콘텐츠(Servlet, JSP) 처리, Tomcat 존재
  • 데이터베이스 서버: 데이터의 수집, 저장을 위한 용도로 사용. 주요 DBMS로 MySql, Oracle 존재
  • 파일서버: 파일 저장 하드웨어로 물리 저장장치를 활용한 서버. HDD, SSD 등의 장치 존재 

 

📌 소프트웨어 개발 환경

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

 

📌 형상 관리

- 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동

✏️ 형상관리 절차

  • 형상 식별: 형상 관리 대상을 정의 및 식별하는 활동 
  • 형상 통제: 형상 항목의 버전관리를 위한 형상통제위원회 운영. 변경 요구 관리, 변경제어, 형상 관리 등 통제 지원
  • 형상 감사: 소프트웨어 베이스라인의 무결성 평가
  • 형상 기록: 변경 관리에 대한 각종 수행 결과를 기록. 형상결과 보고서 작성

✏️ 형상관리 도구 유형

  • 공유 폴더 방식(RCS, SCCS): 약속된 위치의 공유 폴더에 복사하는 방식
  • 클라이언트/서버 방식(CVS, SVN): 중앙에 버전 관리 시스템을 항시 동작시키는 방식
  • 분산 저장소 방식(Git 등): 로컬 저장소, 원격 저장소로 분리되어 분산 저장하는 방식

 


 

8-2. 공통 모듈 구현

8-2-1. 공통 모듈 구현

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

📌모듈화 개념 및 기법 

- 모듈화: 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법

✏️ 모듈화 기법

  • 루틴: 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임.
  • 메인 루틴: 프로그램의 주요한 부분. 전체의 개략적인 동작 절차 표시. 서브루틴을 호출
  • 서브 루틴: 메인 루틴에 의해 필요할 때 마다 호출되는 루틴

 

📌 소프트웨어 모듈 응집도

 - 응집도(Cohesion): 모듈의 독립성을 나타내는 정도로,  모듈 내부 구성요소 간 연관 정도. 하나의 모듈이 하나의 기능을 수행할수록 응집도가 높음

 

📌 응집도 유형 ⭐️ 

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

 

📌 결합도 유형 ⭐️

결합도: 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성. 결합도가 낮을 수록 품질이 좋다.

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

 

📌 팬인(Fan-In) 및 팬아웃(Fan-Out)

- 팬인: 어떤 모듈을 제어하는 모듈의 수. 자신을 기준으로 모듈에 들어오면 팬인. 팬인이 높으면 관리 비용 증가- 팬아웃: 어떤 모듈에 의해 제어되는 모듈의 수. 자신을 기준으로 모듈을 나가면 팬아웃. 팬아웃이 높으면 단순화 검토 필요

 

📌 공통 모듈 테스트

✏️ 공통 모듈 테스트 종류

  • 화이트박스 테스트: 응용 프로그램의 내부 구조와 동작을 검사. 소스코드를 보면서 테스트 수행
  • 메서드 기반 테스트: 공통 모듈의 외부에 공개된 메서드 기반의 테스트
  • 화면 기반 테스트: 화면 단위로 단위 모듈을 개발 후 화면에 직접 데이터 입력하여 테스트 수행
  • 테스트 드라이버/스텁 사용: 화면 혹은 하위모듈이 구현되지 않은 경우 사용. 드라이버는 하위 모듈은 있지만 상위 모듈이 없을때 사용, 스텁은 상위 모듈은 있지만 하위모듈이 없을때 사용

 


8-3. 서버 프로그램 구현

8-3-1. 서버 프로그램 구현

📌 구현절차

  1. DTO(Data Transfer Object), VO(Value Object) 구현: 데이터베이스에 저장하는 객체 구현
  2. SQL문 구현: VO에서 정의한 객체 정보에 맞춰 정보가 저장될 테이블 정보 생성
  3. 데이터 접근 객체(DAO; Data Access Object) 구현
  4. 서비스 클래스 구현
  5. 컨트롤러 클래스 구현
  6. 입/출력 검증(Validation) 로직 구현

 

 


 

8-4. 배치 프로그램 구현

8-4-1. 배치 프로그램

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

📌 배치 프로그램 유형

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

 

📌 배치 스케쥴러

- 배치 스케쥴러: 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구

✏️종류

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

 

📌 크론 표현식

- 쿼츠 크론 표현식

  • 초 - 분 - 시간 - 일 - 월 - 요일 - 연도(생략 가능)
  • * : 모든 수
  • ? : 해당 항목 미사용
  • / : 시작 시간과 반복간격 설정
  • L : 마지막 기간에 동작
  • W : 가장 가까운 평일에 동작
  • # : 몇번째 주, 요일 설정

 

 

728x90