순서
CH01 개발환경 구축
CH02 공통 모듈 구현
CH03 서버 프로그램 구현
CH04 배치 프로그램 구현
<CH01 개발환경 구축>
개발 도구 분류
- 빌드 도구 : 작성한 코드의 빌드 및 배포를 수행하는 도구(Ant, Maven, Gradle)
- 구현 도구: 코드의 작성과 디버깅, 수정 등과 같이 작업시 사용되는 도구(Eclipse, InteliJ, VS)
- 테스트 도구: 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구(xUnit, PMD, Sonar)
- 형상 관리 도구: 산출물에 대한 버전관리를 위한 도구(Git, SVN, CVS)
개발환경 구축 절차
- 프로젝트 요구사항 분석
- 필요 도구 설계
- 개발언어 선정
- 구현도구 선정
- 빌드, 테스트 도구 선정
개발환경 구성 요소
개발환경 | 구분 | |
---|---|---|
하드웨어 개발 환경 | 서버 하드웨어 개발환경 | 웹 서버 (Web Server) |
웹 애플리케이션 서버 (WAS; Web Application Server | ||
데이터베이스 서버 (DB Server) | ||
파일 서버 (File Server) | ||
클라이언트 하드웨어 개발환경 | 클라이언트 프로그램 | |
웹 브라우저 | ||
모바일 앱 | ||
모바일 웹 | ||
소프트웨어 개발환경 | 운영체제 | |
미들웨어 | ||
DBMS |
서버 하드웨어 개발환경
- 웹 서버: HTTP를 이용한 요청/응답을 처리(Apache 웹서버, 구글 웹서버)
- 웹 애플리케이션 서버(WAS): 동적 콘텐츠를 처리하고 제공하기 위해 사용(Tomcat, Jeus, Resin)
- 데이터베이스 서버: 데이터의 수집, 저장을 위한 용도로 사용(MySQL, Oracle, MS-SQL)
- 파일 서버: 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버(HDD, SSD)
소프트웨어 개발환경
- 운영체제: 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
- 미들웨어: 웹 서버, JVM과 같은 개발 환경의 구성요소로 활용
- DBMS: 데이터의 저장 및 활용을 위해 DBMS를 설치
서버 개발 프레임워크
프레임워크(Framework)
소프트웨어의 구체적인 부부에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 틀이다.
특징[모재확역]
- 모듈화 (Modularity): 인터페이스에 의한 캡슐화를 통해 모듈화를 강화, 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어의 품질을 향상시킨다.
- 재사용성 (Reusability): 프레임워크가 제공하는 인터페이스는 반복적으로 사용할 수 있는 컴포넌트를 정의할 수 있게 하여 재사용성을 높여 준다. 또한 재사용성은 소프트웨어의 품질을 향상시킬 뿐만 아니라, 개발자의 생산성도 높여준다.
- 확장성 (Extensibility): 프레임워크는 다형성(polymorphism)을 통해 애플리케이션이 프레임워크의 인터페이스를 넓게 사용할 수 있게 한다. 또한 애플리케이션 서비스와 특성을 변경하고 프레임워크를 애플리케이션의 가변성으로부터 분리함으로써 재사용성의 이점을 얻게 한다.
- 제어의 역행 (loC; Inversion of Control): 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성을 통해 애플리케이션이 확장한 메소드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 반대로 흐르게 한다.
형상 관리(Configuration Management)
소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
- 형상 관리 절차: 형상식별(대상정의) → 형상 통제(버전관리) → 형상 감사(무결성 평가) → 형상 기록(보고서 작성)
소프트웨어 형상 관리 도구 유형
- 공유 폴더 방식: 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식(RCS, SCCS)
- 클라이언트/서버 방식: 중앙에 버전 관리 시스템을 항시 동작시키는 방식(CVN, SVN)
- 분산 저장소 방식: 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식(Git)
소프트웨어 형상 관리 도구별 특징
- CVS(Concurrent Versions System): 서버와 클라이언트로 구성되어 있고, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상 관리 도구
- SVN(Subversion): 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
- RCS(Revision Control System): 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일 수정을 동시에 할 수 없도록 팡리 잠금 방식으로 형상을 관리하는 도구
- Bitkeeper: 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구
- Git: 속도에 중점을 둔 분산형 버전 관리 시스템, 대형 프로젝트에서 효과적이고 유용함
- Clear Case: 복수 서버, 복수 클라이언트 구조, 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음
<CH02 공통 모듈 구현>
모듈(Module)
하나의 완전한 기능을 수행할 수 있는 독립된 실체
- 모듈화(Modularity): 프로그램 개발 시 생산성과 최적화, 관리에 용이하게 기능 단위로 분할하는 기법
- 원리: 정보은닉, 분할과 정복, 데이터 추상화, 모듈 독립성
- 응집도(Cohesion):
- 모듈의 독립성을 나타내는 정도,
- 모듈 내부 구성요소 간 연관 정도,
- 높을수록 좋다
[우논시절통순기]
단계 | 종류 | 설명 |
---|---|---|
1단계 | 우연적 응집도(Coincidental Cohesion) | 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소(우연적으로 같이 존재)로만 구성된 경우 |
2단계 | 논리적 응집도(Logical Cohesion) | 유사한 성격을 갖는 처리 요소들로 하나의 모듈이 형성되는 경우 |
2단계 | 시간적 응집도(Temporal Cohesion) | 특정 시간에 처리되는 기능을 모아 하나의 모듈로 작성할 경우 |
3단계 | 절차적 응집도(Procedural Cohesion) | 모듈 내부 구성 요소들이 특정 기능을 순차적으로 수행할 경우 |
4단계 | 통신적 응집도(Communication Cohesion) | 동일 입출력 사용, 서로 다른 기능을 수행하는 요소들이 모였을 경우 |
5단계 | 순차적 응집도(Sequential Cohesion) | 모듈의 출력 데이터를 그 다음 모듈의 입력 데이터로 사용할 경우(파이프 구조) |
6단계 | 기능적 응집도(Functional Cohesion) | 모듈 내부의 모든 기능이 단일 문제와 연관될 경우 |
- 결합도(Coupling):
외부 모듈과 연관도
모듈 간의 상호의존성,
모듈간의 관련성을 측정하는 척도,
낮을 수록 좋다
[내공외제스자]
단계 | 종류 | 설명 |
---|---|---|
1단계 | 내용 결합도(Content Coupling) | 한 모듈이 다른 모듈의 내부 기능 및 데이터를 직접 참조하거나 수정 |
2단계 | 공통 결합도(Common Coupling) | 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때 |
3단계 | 외부 결합도(External Coupling) | 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때 |
4단계 | 제어 결합도(Control Coupling) | 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어, 다른 모듈에서 흐름을 제어 |
5단계 | 스탬프 결합도(Stamp Coupling) | 두 모듈이 동일한 자료 구조를 조회함 |
6단계 | 자료 결합도(Data Coupling) | 호출시 매개변수로 데이터를 넘겨주고, 동작이 끝나면 처리 결과를 돌려줌 |
공통 모듈
전체 프로그램의 기능 중 특정 기능을 처리할 수 있는 실행 코드
팬인(Fan-In)과 팬아웃(Fan-Out)
- Fan-In: 어떤 모듈을 제어하는 모듈의 수/ 모듈 자신을 기준으로 모듈에 들어올 때
- Fan-Out: 어떤 모듈에 의해 제어되는 모듈의 수/ 모듈 자신을 기준으로 모듈에서 나갈 때
- 시스템 복잡도를 최적화 = 팬인은 높게, 팬아웃은 낮게
공통 모듈 테스트
IDE 도구를 활용하여 개별 공통 모듈에 대한 디버깅을 수행
- IDE(통합 개발 환경: Integrated Development Environment): 개발에 필요한 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 환경
ex) Eclipse, VSC, Android Studio
공통 모듈 테스트 케이스 종류
- 화이트박스 테스트: 소스 코드를 보면서 테스트 케이스를 다양하게 만들어 테스트
- 메서드 기반 테스트: 공통 모듈의 외부에 공개된 메서드 기반 테스트
- 화면 기반 테스트: 화면 단위로 단위모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트
- 테스트 드라이버/테스트 스텁 활용 테스트: 기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우
- 테스트 드라이버(Test Driver): 하위 모듈을 있지만 상위 모듈은 없는 경우 사용
- 테스트 스텁(Test Stub): 상위 모듈은 있지만 하위 모듈은 없는 경우
- Junit: 자바 프로그래밍 언어용 단위테스트 도구
<CH03 서버 프로그램 구현>
구현 절차
- 백엔드: DTO/VO → SQL → DAO → Service → Controller → 화면구현
- DTO(Data Transfer Object): 프로세스 사이에서 데이터를 전송하는 객체
- VO(Value Object): 고정 클래스를 가지는 객체
- DAO(Data Access Object): 데이터베이스에 추상 인터페이스를 제공하는 객체
<CH04 배치 프로그램 구현>
배치 프로그램(Batch Program)
사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
유형
- 이벤트 배치: 사전에 정의해 둔 조건 충족시 자동으로 실행
- 온디맨드 배치: 사용자의 명시적 요구가 있을 때마다 실행
- 정기 배치: 정해진 시점에 정기적으로 실행
배치 스케줄러(Batch Scheduler)
일괄 처리(Batch Processing)작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원하는 도구
종류
- 스프링 배치(Spring Batch)
- Spring Source 사와 Accenture사의 공동 작업으로 2007년에 탄생한 배치 기반 오픈소스 프레임워크
- 쿼츠 스케줄러(Quartz Scheduler)
- Spring Framework에 플러그인(Plug-in)되어 수행하는 Job과 실행 스케줄을 정의하는 Trigger를 분리하여 유연성을 제공하는 오픈 소스 스케줄러
Corn 표현식

크론 표현식을 통해 배치 수행 시간을 시간 및 주기 등으로 설정
- 리눅스/유닉스 크론 표현식: 분, 시간, 일, 월, 요일, 연도
- 쿼츠 크론 표현식: 초, 분, 시간, 일, 월, 요일, 연도
요약작성 참고 https://dustink.tistory.com/158
https://velog.io/@hammii/정보처리기사실기-8.-서버-프로그램-구현
실기 암기 테스트: https://arakene.tistory.com/entry/정보처리기사-실기-8과목-서버-프로그램-구현
배치 스케줄러 참고 https://shlee1990.tistory.com/824
'Computer Science > 정보처리기사' 카테고리의 다른 글
[정보처리기사-실기] 10장 애플리케이션 테스트 관리 (0) | 2022.05.01 |
---|---|
[정보처리기사-실기] 9장 소프트웨어 개발 보안 구축 (0) | 2022.04.30 |
[정보처리기사-실기] 7장 SQL 응용 (0) | 2022.04.28 |
[정보처리기사-실기] 6장 프로그래밍 언어 활용 (0) | 2022.04.27 |
[정보처리기사-실기] 5장 인터페이스 구현 (0) | 2022.04.26 |
댓글