정보처리기사/실기 정리

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

CUBE 2021. 10. 5. 20:51

8. 서버 프로그램 구현

 

개발 도구

 

  • 빌드 도구
  • 구현 도구
  • 테스트 도구
  • 형상 관리 도구

 

 

서버 하드웨어 개발 환경

 

  • 웹 서버: HTTP를 이용한 요청/응답 처리, 웹 상의 정적 콘텐츠 처리, Apache 등
  • 웹 애플리케이션 서버: 동적 콘텐츠를 처리하기 위해 사용, Tomcat 등
  • 데이터베이스 서버: 데이터의 수집, 저장을 위한 용도로 사용, MySQL 등
  • 파일 서버: 파일 저장 하드웨어로 물리 저장장치를 활용한 서버, HDD 등

 

 

클라이언트 하드웨어 개발 환경

 

  • 클라이언트 프로그램
  • 웹 브라우저
  • 모바일 앱
  • 모바일 웹

 

 

형상 관리

 

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

 

 

베이스라인

 

개발 과정의 각 단계의 산출물을 검토, 처리 등 변화를 통제하는 시점의 기준

 

 

형상 관리의 절차

 

  • 형상 식별: 형상 관리 대상을 정의 및 식별
  • 형상 통제: 형상 항목의 버전 관리를 위해서 변경 활동을 통제하는 활동
  • 형상 감사: 소프트웨어 베이스라인의 무결성 평가
  • 형상 기록: 형상 및 변경관리에 대한 각종 수행 결과를 기록

 

 

형상통제위원회

 

형상 관리에 대한 주요 방침을 정하고 산출물을 검토하는 조직

 

 

소프트웨어 형상 관리 도구

 

1. 공유 폴더 방식

매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식

  • RCS: 파일의 수정을 한 사람만으로 제한

 

2. 클라이언트/서버 방식

중앙에 버전 관리 시스템을 항시 동작시키는 방식

  • CVS: 서버와 클라이언트로 구성, 다수의 인원이 동시에 운영체제로 접근 가능
  • SVN: 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구

 

3. 분산 저장소 방식

로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식

  • Git: 속도에 중점을 둔 분산형 버전 관리 시스템, 대형 프로젝트에서 효과적이고 유용

 

 

Bitkeeper

 

SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내는 형상 관리 도구

 

 

모듈

 

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

 

 

모듈화

 

소프트웨어의 성능을 향상시키거나 디버깅, 통합 등을 용이하도록 시스템을 분해하는 기법

 

 

모듈화 기법

 

  • 루틴: 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
  • 메인 루틴: 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
  • 서브 루틴: 메인 루틴에 의해 필요할 때마다 호출되는 루틴

 

 

응집도

 

모듈의 독립성을 나타내는 정도 (높을수록 좋음)

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

 

 

결합도

 

모듈 내부가 아닌 외부의 모듈과의 연관도 (낮을수록 좋음)

  • 내용 결합도(가장 높음): 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
  • 공통 결합도: 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 갱신하는 식으로 상호작용하는 경우
  • 외부 결합도: 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우
  • 제어 결합도: 어떻게 처리를 해야한다는 제어요소가 전달되는 경우
  • 스탬프 결합도: 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우
  • 자료 결합도: 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우

 

 

공통 모듈의 구현 절차

 

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

  • DAO: 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체
  • VO: 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가지는 객체
  • DTO: 프로세스 사이에서 데이터를 전송하는 객체

 

 

팬인(Fan-In)과 팬아웃(Fan-Out)

 

팬인: 어떤 모듈을 제어하는 모듈의 수, 모듈 자신을 기준으로 들어오면 팬인

팬아웃: 어떤 모듈에 의해 제어되는 모듈의 수, 모듈 자신을 기준으로 나가면 팬 아웃

 

 

배치 프로그램

 

사용자와의 상호작용 없이 일련의 작업들을 정기적으로 반복 수행하거나 일괄 처리하는 방법

 

 

배치 스케줄러

 

일괄처리하기 위해 반복적인 작업을 지원하는 도구

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

 

 

Cron 표현식

 

  • 리눅스/유닉스 크론 표현식: 분-시간-일-월-요일-연도
  • 쿼츠 크론 표현식: 초-분-시간-일-월-요일-연도

 

 

추가

 

  • JUnit: 자바 프로그래밍 언어용 단위 테스트 도구
  • MyBatis: 자바의 관계형 DB 프로그래밍을 좀 더 쉽게할 수 있게 도와주는 개발 프레임워크
  • 0 0 12 * * ? : 스케줄러를 매일 12시에 실행한다

 

 

Next

9. 소프트웨어 개발 보안 구축