해당 게시글은 정보처리기사-실기 시험 Chapter 8.[서버 프로그램 구현]의 용어 관련 개념정리 요약글이다.
개발환경 구축
▶ 개발 도구 분류
- 빌드 도구 : 작성한 코드의 빌드 및 배포를 수행하는 도구 (Gradle, Maven, Ant)
- 구현 도구 : 코드의 작성과 디버깅, 수정 등과 같이 작업시 사용되는 도구 (Eclipse, InteliJ, VS Code)
- 테스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 (xUnit)
- 형상 관리 도구 : 산출물에 대한 버전관리를 위한 도구 (Git, SVN, CVS)
▶ 서버 하드웨어 개발 환경
- 웹 서버 : HTTP를 이용한 요청/응답 처리, 웹 상의 정적 콘텐츠 처리, Apache 웹 서버
- 웹 애플리케이션 서버 : 동적 콘텐츠(Servlet, JSP)를 처리, Tomcat
- 데이터베이스 서버
- 파일 서버
▶ 형상관리(Configuration Management)
소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
▷ 형상 관리의 절차
- 형상 식별 : 형상 관리 대상 정의 및 식별
- 형상 통제 : 형상 항목 버전 관리를 위해 변경 여부와 변경 활동 통제
- 형상 감사 : 소프트웨어 베이스라인의 무결성 평가, 베이스라인 변경 시 요구사항과 일치하는지 검토
* 베이스 라인 : 개발과정의 각 단계별 산출물에 대한 변화를 통제하는 시점의 기준 - 형상 기록 : 형상 및 변경관리에 대한 각종 수행결과 기록
▷ 소프트웨어 형상 관리 도구
- 공유 폴더 방식(RCS, SCCS) : 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
- 클라이언트/서버 방식(CVS, SVN) : 중앙에 버전 관리 시스템을 향시 동작시키는 방식
- 분산 저장소 방식(Git) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
* CVS : 서버와 클라이언트로 구성, 다수의 인원이 동시에 운영체제로 접근 가능
* SVN(Subversion) : 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와줌
* RCS : 소스 파이릐 수정을 한 사람 만으로 제한
* Bitkeeper : SVN과 비슷, 대규모 프로젝트에서 빠른 속도 내도록 개발된 형상 관리 도구
공통 모듈 구현
▶ 모듈(Module)
하나의 완전한 기능을 수행 할 수 있는 독립된 실체
▷ 모듈화(Modularity)
소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 시스템을 분해하고 추상화하는 기법
▷ 모듈화 기법
- 루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
- 메인 루틴, 서브 루틴
▶ 응집도(Cohesion)
모듈의 독립성을 나타내는 정도, 모듈 내부 구성요소 간 연관 정도
▷ 응집도 유형
- 우연적 응집도(Coincidental Cohesion) : 모듈 내부의 구성요소가 각 연관이 없을 경우
- 논리적 응집도(Logical Cohesion) : 유사한 성격, 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
- 시간적 응집도(Temporal Cohesion) : 특정 시간에 처리 되어야 하는 활동들
- 절차적 응집도(Procedural Cohesion) : 모듈이 다수의 관련 기능을 갖고, 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
- 통신적 응집도(Communication Cohesion) : 동일한 입력과 출력을 사용해 다른 기능을 수행하는 활동들이 모임
- 순차적 응집도(Sequential Cohesion) : 모듈 내 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
- 기능적 응집도(Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
▶ 결합도(Coupling)
모듈 내부가 아닌 외부의 모듈과의 연관도, 모듈 간의 상호의존성, 모듈 간의 관련성
▷ 결합도 유형
- 내용 결합도(Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
- 공통 결합도(Common Coupling) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 갱신하는 식으로 상호작용하는 경우
- 외부 결합도(External Coupling) : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우
- 제어 결합도(Control Coupling) : 어떻게 처리를 해야 한다는 제어요소가 전달되는 경우
- 스탬프 결합도(Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우
- 자료 결합도(Data Coupling) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우
▶ 공통 모듈
▷ 공통 모듈 구현 절차
DTO/VO -> SQL -> DAO -> Service -> Controller -> View
* DAO(Data Access Object) : 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체
* DTO(Data Transfer Object) : 프로세스 사이에서 데이터를 전송하는 객체
* VO(Value Object) : 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가지는 객체
▷ 공통 모듈 테스트
IDE 도구를 활용하여 개별 공통 모듈에 대한 디버깅을 수행
* 통합 개발 환경(IDE, Intergrated Development Enviroment) : 개발에 필요한 다양한 틀을 하나의 인터페이스로 통합하여 제공하는 환경(Eclipse, VS Code, InteliJ, IDEA 등)
▷ 공통 모듈 테스트 종류
- 화이트박스 테스트 : 소스 코드를 보면서 테스트 케이스를 다양하게 만들어 테스트
- 메소드 기반 테스트 : 공통 모듈의 외부에 공개된 메소드 기반 테스트
- 화면 기발 테스트 : 화면 단위로 단위모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트
- 테스트 드라이버/테스트 스텁 활용 테스트 : 기능을 테스트 할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우
* 테스트 드라이버 : 하위 모듈은 있지만 상위 모듈은 없는 경우
* 테스트 스텁 : 상위 모듈은 있지만 하위 모듈은 없는 경우
▷ 팬인(Fan-In) / 팬 아웃(Fan-Out)
시스템 복잡도를 최적화하기 위해 팬 인은 높게, 팬 아웃은 낮게 설계하는 것이 바람직함
- 팬 인 : 모듈 자신을 기준으로 들어오면 팬 인
- 팬 아웃 : 모듈 자신을 기준으로 나가면 팬 아웃
▷ JUnit
자바 프로그래밍 언어용 단위 테스트 도구
배치 프로그램 구현
▶ 배치 프로그램
일련의 작업들을 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
▷ 배치 프로그램 유형
- 이벤트 배치 : 사전에 정의해 둔 조건 충족시 자동으로 실행
- 온디맨드(사용자의 명시적 요구) 배치 : 사용자의 명시적 요구가 있을 때마다 실행
- 정기 배치 : 정해진 시간에 정기적으로 실행
▷ 배치 스케줄러
일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
▷ 배치 스케줄러 종류
- 스프링 배치 : 오픈 소스 프레임워크
- 쿼츠 스케줄러 : 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공(오픈 소스 라이브러리)
▷ Corn 표현식
- 리눅스/유닉스 크론 표현식 : 분-시-일 월-요일-연도
- 쿼츠 크론 표현식 : 초-분-시-일 월-요일-연도
댓글