ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정보처리기사 실기 요약[서버프로그램 구현 - Chapter4](정처기)
    정보처리기사 2021. 6. 2. 21:05
    반응형

    정보처리기사 실기 정리는 제가 직접 수기로 작성하여 요약한 내용이기 때문에 조금의 오타가 있을 수 있습니다.

    Chapter10 - 프로그래밍 언어 활용

    Chapter11 - 응용 SW 기초 기술 활용

    Chapter2 - 데이터 입출력 구현

    본 3파트는 학교 OS, DB 수업과 코딩 테스트를 준비하면서 다른 과목들의 암기 시간을 늘리기 위해 정리(암기)하지 않고 갔습니다.

    하지만 양이 많고, 가장 중요하면서 최소 4문제 이상 나오는 파트이기 때문에 준비를 잘해야하는 파트입니다.

    시간이 된다면 추후에 추가하겠습니다.

     

    서버프로그램 구현

    Chapter 4

    개발 환경 구축
    고객이 요청한 시스템의 구현을 진행하기 위한 준비 단계, 구현 시스템이 운영될 환경과 같은 환경 구축을 해야함

    개발 도구 선정 과정
    목표 시스템의 환경 분석 - 구현 도구 선정 - 빌드 도구 선정 - 형상관리 도구 선정 - 테스트 도구 선정

    구현 도구
    구현 및 개발도구
    프로젝트 진행시 개발자가 가장 많이 사용하게 되는 도구로 코드 작성 및 디버깅을 지원하는 도구이자 환경
    IDE : 구현 도구, 개발 과정에서 사용되는 도구들, 코딩, 디버깅, 빌드, 컴파일 등 다양한 작업을 제공해 주는 소프트웨어

    구현 도구 선정 기준
    적정성 , 효율성, 이식성, 친밀성, 범용성

    빌드 도구
    개발자가 작성ㅎ나 소스코드 파일을 컴파일, 테스팅, 정적 분석 등을 진행해 실행 가능한 소프트웨어로 자동 생성해 주는 도구
    종류 : Gradle, Maven, Ant

    형상 관리 도구
    프로젝트와 관련된 모든 변경사항을 관리하는 도구
    종류 : CVS, SVN, Git, Perforce

    테스트 도구
    단순하고 반복적인 테스트 작업을 위해 코드 분석, 테스트 케이스 작성, 테스트에 대한 리포팅 및 분석ㅇ르 통해 테스트 효율성을 향상시키는 도구
    종류 : xUnit, Spring Test

    테스트 수행 도구
    테스트 자동화 : 기능 테스트등 테스트 도구를 활용해 자동화를 위한 테스트 효율성 높힘
    정적 분석 : 원시 코드를 분석해 잠재적인 오류를 분석, 코딩 표준, 런타임 검증
    동적 분석 : 프로그램 수행 중 발생하는 오류의 검출을 통한 오류 검출(Avalanche, Valgrind)
    성능 테스트 : 가상 사용자를 인위적으로 생성해 시스템 처리 능력 측정(JMeter, AB, OpenSTA)
    모니터링 : 시스템 자원 상태 확인 및 분석 지원 도구(Nagios, Zenoss)

    시스템 환경
    1. 프로그램 개발을 위한 개발 환경 2. 테스트를 위한 테스트 환경 3. 실제 운영되는 운영 환경과 백업 환경

    클라이언트 환경
    사용자와의 인터페이스를 제공하는 하드웨어. PC,모바일 같은 것들

    서버 환경
    웹서버 : 클라이언트에서 요청하는 서비스 속도 향상을 위해 정적 파일들을 제공하는 웹 서버 어플리케이션이 설치되는 HW
    웹 애플리케이션 서버 : 동적 웹 서비스를 제공하기위해 Tomcat, Undertow, IIS 등 미들웨어인 WAS와 서비스에 관련된 애플리케이션이 설치되는 HW
    DB서버 : MySql, Oracle, MS-SQL등 데이터베이스가 설치되는 HW
    파일 서버

    클라이언트 서버 구조 : 클라이언트가 서비스 요청을 하면 서비스 제공자인 서버가 작업을 분리해 주는 분산 애플리케이션 구조이자 네트워크 아키텍쳐
    웹 서버 : 웹문서(HTML, XML, SGML,CSS 등등)으로 이루어지고, 웹 서버(웹 문서를 사용자에게 제공하는 프로그램, Apache, IIS 등)
    웹 프로그래밍 : Server Side Scripting Language(ASP, JSP, PHP, Python .. ) , 웹 프로그램, WAS(웹 애플리케이션 서버, 웹 서버와 DB 서버 사이에서 연동하며 인터페이스 역할을 하는 서버)

    응용 서버 플랫폼
    LAMP : 리눅스 OS에서 웹 개발을 위해 묶어 놓은 것
    WAMP : 윈도우 OS에서 웹 개발을 위해 묶어 놓은 것

    미들웨어
    클라이언트와 DB 사이에 매개체 역할, 데이터 관리, 애플리케이션 서비스, 메시징, 인증 및 API 관리를 주로 처리

    Web Server
    정적 웹 서비스를 수행하는 미들웨어, 웹 브라우저 화면에서 정적 파일 제공, 클라이언트가 요청하는 HTML문서나 각종 리소스 전달
    종류 : Apache, Nginx, microsoft IIS

    WAS
    클라이언트 요청 중 웹 애플리케이션을 동작하도록 지원하는 미들웨어, 웹 서버와 JSP/Servlet 애플리케이션 수행을 위한 엔진으로 구성
    종류 : Tomcat, Undertow, JEUS, Weblogic, Webshpere

    개발 소프트웨어 종류
    - 요구사항 관리 도구(JFeature, Trello, JRequisite)
    - 설계/모델링 도구(ArgoUML, DB Designer, StarUML)
    - 구현 도구(Eclipse, IntelliJ, VS Code)
    - 테스트 도구(JUnit, JMeter SpringTest, CppUnit)
    - 형상 관리 도구(CVS, Git, Subversion, SVN)

    형상 관리 활동
    형상 식별 : 형상 관리 대상 구분, 관리 목록 번호 부여, 베이스라인의 기준을 정하는 활동 
    버전 관리 : 진화 그래프 등을 통해 SCI 버전 부여 및 갱신
    형상 통제 : 변경 제어 or 변경 관리, 식별된 형상항목의 변경 요구 검토, 승인하여 적절히 통제해 현재 베이스라인에 잘 반영될 수 있도록 조정하는 작업
    형감 감사 : SCI 무결성을 평가하여 공식적 승인
    상태 보고 : 개발자와 유지보수 담당자에게 변경항 공지

    응집도 : 모듈 안에 요소들이 기능적으로 관련된 정도
    우논시절통순기
    우연적 : 서로 관련 없는 요소로만 구성
    논리적 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성
    시간적 : 특정 시간에 처리되는 것을 모아
    절차적 : 모듈이 다수의 관련 기능을 가질때 모듈 내부 기능 요소들이 그 기능을 순차적으로 수행
    통신적 : 동일한 입 출력하는 것들의 소작업이 모인경우
    순차적 : 한 모듈 내부에 한 기능 요소에 의해 출력 자료가 다음 기능 요소의 입력 자료로 제공되는 경우
    기능적 : 모듈 내부의 모든 기능 요소들이 한 문제와 연관되어 수행되는 경우

    결합도 : 두 모듈간 상호 의존도
    자스제외공내
    자료 : 모듈 간의 인터페이스 자료 요소로만 구성된 경우
    스탬프 : 두 모듈이 동일한 자료구조를 조회하는 경우
    제어 : 어떤 모듈이 다른 모듈의 내부 논리 조작을 제어하기 위해 제어신호로 통신하는 경우
    외부 : 외부로 선언한 변수를 다른 모듈에서 참조할 경우
    공통 : 공통 자료 영영을 사용하는 경우
    내부 : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 조회하도록 설계된 경우

    재사용 범위에 따른 분류
    함수와 객체, 컴포넌트, 애플리케이션

    재사용 방식 발전 방향
    소스 재사용 - 재사용 메서드 - 재사용 객체 - 디자인 패턴 - 프레임워크

    컴포넌트 4가지 특징
    독립적 동작, (구현, 명세화, 패키지화, 배포가능), 하나 이상 클래스로 구성, 인터페이스를 통해서만 접근 가능

    공통 모듈 작성 원칙
    정확성 : 실제 시스템 구현시 필요한지 여부를 알 수 있도록 정확히 작성
    명확성 : 해당 기능에 대한 일관된 이해와 하나로 해석될 수 있도록 작성
    완전성 : 시스템 구현 시 요구사항과 필요 모든 것을 기술
    일관성 : 모듈 사이에 충돌이 발생하지 않도록 작성
    추적성 : 기능에 대한 유의 사항의 출처와 관련 시스템 등 유기적 관계에 대한 식별이 가능하도록 작성

    프로세스
    주어진 목적을 위해 수행되는 일련의 절차
    개발 프로세스 : 수행해야 할 개발과 품질 보증 작업들이 해당
    관리 프로세스 : 비용, 품질, 기타 목표를 맞추기 위한 계획 및 제어 작업

    프로세스의 구성요소
    프로세스 책임자
    프로세스 맵 : 상위 프로세스와 하위 프로세스의 체계를 도식화해 전체 업무를 청사진으로 표현
    프로세스 Task 정의서 : 기대하는 결과물을 산출하기 위해 Task들이 어떻게 운영되어야 하는지에 대한 문서
    프로세스 성과 지표
    프로세스 조직
    경영자의 리더쉽

    프레임워크
    틀, 규칙, 법칙을 의미, 작업에 대한 규칙을 정하는 일
    프로그래밍에서특정 OS를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임을 뜻함

    프레임워크 특징
    1. 모듈화 : 인터페이스에 대한 캡슐화를 통해 모듈화를 강화, 설계와 구현의 변경에 따르는 영향을 극소화해 SW품질 향상
    2. 재사용성 : 반복적으로 사용할 수 있는 컴포넌트(재사용 가능한 최소 단위)를 정의해  재사용성을 높임
    3. 확장성 : 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 함
    4. 제어의 역흐름 : 프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성을 통해 애플리케이션이 확장한 메소드를 호출하면서 제어가 프레임워크로부터 애플리케이션으로 역으로 흐르게함

    데이터 저장 또는 영속 계층
    아래 3가지는 영속 계층에서 사용되는 특정 패턴을 통해 구현되는 Java Bean(데이터를 표현하는 것을 목적, Java의 재사용 가능한 클래스로 반복적인 작업을 효율적)이다.
    DAO : DB의 데이터를 접근하는 트랜잭션 객체, 데이터를 조회하거나 조작하는 기능을 담당
    DTO : 프로세스 사이에서 데이터를 전송하는 객체를 의미하는 계층 간 데이터 교환을 위한 Java Beans, 스스로 데이터 저장 및 회수 기능 이외에 아무기능 X
    VO : 간단한 독립체를 의미하는 작은 객체

    서버 프로그램 개발 절차
    I/O 오브젝트(DTO/VO) 결정 - Data 준비 - SQL 작성 - 데이터 접근 객체(DAO) 구현 - Java 시큐어 코딩 가이드에 의한 보안 취약성 제거하는 코드 구현 - 컨트롤러 클래스 구현

    소프트웨어 테스트 원칙
    개발자가 자신이 개발한 프로그램 및 소스코드 테스팅하지 않는다
    낚시의 법칙 : 소프트웨어 결함도 특정 기능, 모듈, 라이브러리에서 결함이 많이 발견된다는 것
    파레토의 법칙 : 전체 결함의 80%는 전체 기능에서 20%에 집중되어 있다
    완벽한 테스팅은 불가능하다
    테스트는 계획 단계부터 해야한다
    살충제 패러독스 : 동일한 테스트 케이스로만 반복 실행하면 더이상 새로운 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 점검하고 개선해야한다.
    오류-부재 궤변 : 사용자의 요구사항을 만족하지 못하면 품질이 높다고 할 수 없다.

    배치
    ETL(데이터 추출, 변환, 적재) 과정을 일정 시간과 순서, 조건에 따라 수행하는 작업

    배치 프로그램 필수요소
    대용량 데이터, 자동화 , 견고함, 안정성, 성능

    배치 스케줄러
    스프링 배치 : 스프링 프레임워크 기반으로 DI, AOP, 서비스 추상화의 Spring Framework 3대 요소를 모두 사용할 수 있는 대용량 처리 제공 스케쥴러
    Job과 Step을 기준을 배치를 쉽게 수행, 대용량 데이터는 Chunk 지향 처리를 통해 편리하게 ETL 작업을 수행할 수 있음
    주요 컴포넌트 : Job Repository, Job Launcher, Job, JPA, Step, Item, Chunk, Item Reader, Item Processor, Item Writer

    쿼트 스케줄러 : 스프링 프레임워크 기반을 응용 애플리케이션의 배치 처리를 위한 스케줄러로 실행 작업과 실행 스케줄을 정의하는 트리거를 분리해 유연성을 제공하는 오픈소스 라이브러리 
    원하는 시간에 원하는 기능을 실행해 주는 쿼트 스케줄러는 기능을 안정적으로 실행할 수 있고 길행할 시간을 매우 유연하게 지정할 수 있음
    구성요소 : Scheduler, Job, JobDetail, Trigger

    크론 표현식 : 유닉스 계열의 운영체제에서 작업 스케줄링 프로세스, 서버 프로그램의 배치 스케줄러를 개발할 때도 크론 표현식 사용
    "초 분 시 일 월 요일 년도"
    ex)
    "0 0/5 * ?" : 매 5분 간격으로 실행
    "10 0/5 * ?" :10초후 5분 간격으로 실행
    "0 0 2 * * ?" : 매일 오전 2시에 실행
    "0 0 2 ? * WED" : 매주 수요일 오전 2시 실행
    "0 5 10 ? * MON-FRI" : 주중 오전 10:5에 실행
    "0 30 10-12 ? * WED,SAT" : 매주 수요일, 토요일 10:30, 11:30, 12:30에 실행
    "0 0/30 7-9 15,25 * ?" : 매월 15일, 25일 오전 7시부터 오전 10시 사이에 30분 간격으로 실행

    반응형
Designed by Tistory.