이안의 평일코딩

정보처리기사 실기 요약 정리 - 4. 서버 프로그램 구현 본문

Certificate/정보처리기사 실기

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

이안92 2020. 10. 30. 14:00
반응형

이 글은 수제비 정보처리기사 실기 책을 요약정리한 것으로 저작권은 건기원에 있습니다.

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와 일치하는 배치 설계서를 확인

반응형
Comments