일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바스크립트
- spring
- 자스코테
- 국비IT
- Java의정석
- javascript
- 정보처리기사실기정리
- 자바스크립트 코딩테스트
- Oracle
- typescript
- php
- 정보처리기사실기요약
- 정보처리기사정리
- ReactNative
- 정보처리기사요약
- react
- 리액트네이티브
- 국비코딩
- 평일코딩
- 이안의평일코딩
- CSS
- VUE
- 코딩테스트
- 타입스크립트
- 정보처리기사실기
- 리액트
- 정보처리기사
- 오라클
- 자바의정석
- 스프링
- Today
- Total
이안의 평일코딩
정보처리기사 실기 요약 정리 - 4. 서버 프로그램 구현 본문
4. 서버 프로그램 구현
1) 개발환경 구축
개발환경 구축
=> 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스를 확인
개발 도구의 분류 (빌구테형: 잘못을 빌구 테형을 당함)
빌드 도구: 작성한 코드의 빌드 및 배포를 수행하는 도구
구현 도구: 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
테스트 도구: 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
형상 관리 도구: 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
클라이언트 하드웨어 개발환경
클라이언트 프로그램: 설치를 통해 사용자와 커뮤니케이션하는 프로그램(Visual Basic, C#, Delphi 등)
웹 브라우저: 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
모바일 앱: 모바일 디바이스에 설치되어 활용되는 애플리케이션(앱 스토어, 안드로이드 마켓 등을 통해 다운로드 가능)
모바일 웹: 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스를 제공
개발환경을 구성하는 서버
웹 서버: HTTP를 이용한 요청/응답을 처리, 웹상의 정적 콘텐츠(CSS, Javascript, Image) 처리 (Apache, IIS, Google Web Server)
웹 애플리케이션 서버: 동적 콘텐츠(Servlet, JSP)를 처리하기 위해 사용 (Tomcat, Weblogic, Jeus, Resin)
데이터베이스 서버: 데이터의 수집, 저장을 위한 용도로 사용 (MySql, Oracle, MS-SQL, DB2)
파일 서버: 파일 저장 하드웨어로 물리 저장장치를 활용한 서버
소프트웨어 개발환경
=> 운영체제, 미들웨어, DBMS
미들 웨어(Middle Ware)
=> 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 이에 대한 관리를 도와주는 소프트웨어
형상 관리
=> 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동
베이스 라인
=> 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준
형상 관리의 절차 (식통감기: 식후 통증 감기)
=> 형상 식별, 형상 통제, 형상 감사, 형상 기록
형상 관리 도구 Git의 주요 명령어
실행 동작 | Git |
저장소 생성 | git init |
저장소 복제 | git clone |
커밋 | git commit |
변경 내용 확인 | git diff |
추가 | git add |
이동 | git mv |
삭제 | git rm |
브랜치 생성 | git branch |
병합 | git merge |
원격 저장소 반영 | git push |
설정 확인 | git config |
2) 공통 모듈 구현
모듈(Module)
=> 크게 독립된 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는 용어
모듈화(Modularity)
=> 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
모듈화 기법 중 루틴
=> 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령어들의 모임
응집도(Cohesion) : 응집도가 높을 수록 좋은 품질
=> 모듈의 독립성을 나타내는 개념으로 모듈 내부 구성요소 간 연관 정도
응집도의 유형 (우논시절 통순기: 우리가 논 시절의 통합짱은 순기다)
우연적 응집도 - 논리적 응집도 - 시간적 응집도 - 절차적 응집도 - 통신적 응집도 - 순차적 응집도 - 기능적 응집도
결합도(Coupling) : 결합도가 낮을 수록 좋은 품질
=> 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성
결합도의 유형 (내공 외제 스자: 내부 공사는 외제를 스자)
내용 결합도 - 공통 결합도 - 외부 결합도 - 제어 결합도 - 스탬프 결합도 - 자료 결합도
MVC 패턴 역할
모델(Model): 애플리케이션이 무엇을 할 것인지를 정의
뷰(View): 모델, 컨트롤러가 보여주려고 하는 것들을 화면에 처리
컨트롤러(Controller): 모델이 어떻게 처리할지를 알려주는 역할
팬인(Fan-In) 및 팬아웃(Fan-Out)
팬인: 모듈 자신을 기준으로 모듈에 들어오면 (위에서 들어오는 갯수)
팬아웃: 모듈 자신을 기준으로 모듈에서 나가면 (밑으로 나가는 갯수)
공통 모듈 테스트
=> 통합개발환경(IDE:Integrated Development Environment)도구를 활용하여 개별 공통 모듈에 대한 디버깅(Debugging)을 수행하고 화이트 박스(White Box)기법을 활용, 대표적인 단위테스트 도구인 JUnit을 활용하여 테스트 코드를 구현한다
공통 모듈 테스트의 종류 (화메 화드스: 화요일엔 메화드레스)
화이트박스 테스트, 메서드 기반 테스트, 화면 기반 테스트, 테스트 드라이버, 테스트 스텁
화이트박스(White Box) 테스트
=> 응용프로그램의 내부구조와 동작을 검사하는 소프트웨어 테스트 방식
JUnit 주요 어노테이션
@Test: 테스트 메서드를 선언
@Before: @Test 실행 전 실행되는 코드를 작성
@After: @Test 실행 후 실행되는 코드를 작성
@BeforeClass: @Test 메서드보다 먼저 딱 한 번 수행되어야 할 경우 지정
@AfterClass: 단위 테스트 맨 마지막에 수행되어야 할 경우 지정
@Ignore: 테스트에서 제외할 메서드 선언
Assert 메서드 설명
assertEquals(a,b); 객체 a와 b가 일치함을 확인
assertEquals(a,b,c); 객체 a와 b가 일치함을 확인 a: 예상 값, b: 결괏값, c: 오차 범위
assertSame(a,b); 객체 a와 b가 같은 객체임을 확인
assertTrue(a); 조건 a가 참인지 여부를 확인
assertNotNull(a); 객체 a가 null이 아님을 확인
assertArrayEquals(a,b); 배열 a와 b가 일치함을 확인
3) 서버 프로그램 구현
서버 프로그램 세부 구현 프로세스 (디스 다씨클: 디스 당해서 다크써클이 생김)
DTO/VO -> SQL문 -> DAO -> Service -> Controller
DTO(Data Transfer Object), VO(Value Object) 구현
public void setId(String id){ // 회원 아이디 설정 setter
this.id = id;
}
public String getId(){ // 회원 아이디 getter
return id;
}
Mybatis (ORM; Object Relation Mapping 도구 중 하나)
=>객체 지향 언어인 자바의 관계형 DB 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임워크
SQL을 구현한 XML id를 호출하여 조작을 수행하는 데이터 접근 객체(DAO; Data Access Object) 구현
public int selectJoin(joinVO vo) throws Exception {
return sqlSession.selectJoin("com.ian.sql.selectJoin", joinVO);
// 회원가입 데이터 조회 프로토타입
}
<!--호출 대상 XML-->
<mapper namespace="com.ian.sql">
<!-- 회원 이름을 통해 회원 테이블 조회 -->
<select id="selectJoin"
parameterType="comian.vo.JoinVO"
resultType="com.ian.vo.JoinVO">
SELECT * FROM CUSTOMER WHERE(name=#{name})
</select>
</mapper>
DAO vs DTO vs VO
DAO(Data Access Object): 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터 조작
DTO(Data Transfer Object): 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장, 회수 외에 다른 기능 없음
VO(Value Object): 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가짐
서비스(Service) 클래스 구현
@Service
public class JoinService implements IMemberService{
@Autowired
JoinDAO dao;
@Override
public void insertJoin(JoinVO join){
JoinVO member = dao.selectJoin(join);
dao.insertJoin(member);
}
}
4) 배치 프로그램 구현
배치 프로그램(Batch Program)
=> 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방법
배치 프로그램의 유형 (이온정: 이온정수기)
이벤트 배치, 온디맨드 배치, 정기 배치
배치 프로그램의 유형
스프링 배치(Spring Batch): 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러
쿼츠 스케줄러(Quartz Scgheduler): 스프링 프레임워크에 플러그인되어 수행하는 작업(Job)과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러
Cron 표현식
순서 | 필드 이름 |
1 | 초(Seconds) |
2 | 분(Minutes) |
3 | 시간(Hours) |
4 | 일(Day) |
5 | 월(Months) |
6 | 요일(Week) |
7 | 연도(Year)(생략가능) |
Cron 표현식 특수문자 의미
기호 | 의미 |
* | 모든 수 |
? | 해당 항목을 미사용 |
- | 기간 설정 |
. | 특정 기간 설정 |
/ | 시작시간과 반복간격 설정 |
L | 마지막 기간에 동작 |
W | 가장 가까운 평일에 동작 |
# | 몇 번째 주, 요일 설정 |
예1) 0 0 12 * * * -> 매일 12시에 실행
예2) 0 0/5 14 * * * -> 매일 14시에 시작해서 5분 간격으로 실행
예3) * /1 * * * * -> 매 1분마다 실행
예4) 0 0 20 ? * MON-FRI -> 월~금 20시 0분 0초에 실행
배치 설계서
=> 배치 프로그램 설계 단계에서는 프로그램 관리 대장의 ID와 일치하는 배치 설계서를 확인
'Certificate > 정보처리기사 실기' 카테고리의 다른 글
정보처리기사 실기 요약 정리 - 6. 화면 설계 (0) | 2020.11.17 |
---|---|
정보처리기사 실기 요약 정리 - 5. 인터페이스 구현 (0) | 2020.10.30 |
정보처리기사 실기 요약 정리 - 3. 통합 구현 (0) | 2020.10.29 |
정보처리기사 실기 요약 정리 - 2. 데이터 입출력 구현 (0) | 2020.10.29 |
정보처리기사 실기 요약 정리 - 1. 요구사항 확인 (0) | 2020.10.28 |