4 분 소요

2020 시나공 정보처리기사 필기책 참고

주의! 중요도가 낮은 항목(C)은 일부 제외

1. 개발 환경 구축 – B

- 개발 환경 구축의 개요

  • 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것
  • 응용 소프트웨어가 운영될 환경과 유사한 구조로 구축
  • 개발 프로젝트의 분석 단계의 산출물을 바탕으로 개발에 필요한 하드웨어와 소프트웨어를 선정
  • 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축

- 하드웨어 환경

  • 인터페이스 역할을 하는 클라이언트, 클라이언트와 통신하여 서비스를 제공하는 서버로 구성
  • 클라이언트에는 PC, 스마트폰 등이 있음
  • 서버는 사용 목적에 따라 웹 서버, 웹 애플리케이션 서버, DB 서버, 파일 서버 등이 있음
  • 웹 서버(Web Server)
    • 클라이언트로부터 직접 요청을 받아 처리하는 서버. 정적 파일들을 제공
    • Apache HTTP Server, Microsoft Internet Information Service, Google Web Server 등
  • 웹 애플리케이션 서버(WAS; Web Application Server)
    • 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행
    • 웹 서버와 DB서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할 수행
    • Apache Tomcat, IBM WebSphere, Oracle WebLogic 등
  • DB Server
    • DB와 이를 관리하는 DBMS를 운영하는 서버
    • MySQL Server, Oracle Server, Microsoft SQL Server 등
  • 파일 서버(File Server)
    • DB에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버
    • AWS S3 등

- Web Server의 기능

  • HTTP/HTTPS 지원 : 브라우저로부터 요청을 받아 응답할 때 사용되는 프로토콜
  • 통신 기록 : 처리한 요청들을 로그 파일로 기록하는 기능
  • 정적 파일 관리 : HTML, CSS, 이미지 등의 정적 파일들을 저장하고 관리하는 기능
  • 대역폭 제한 : 네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한하는 기능
  • 가상 호스팅 : 하나의 서버로 여러 개의 도메인 이름을 연결하는 기능
  • 인증 : 사용자가 합법적인 사용자인지를 확인하는 기능

- 소프트웨어 환경

  • 클라이언트 + 서버 운영을 위한 시스템 S/W + 개발에 사용되는 개발 S/W
  • 시스템 S/W : 운영체제, 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등
  • 개발 S/W : 요구사항 관리 도구, 설계/모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상관리 도구
    • 요구사항 관리 도구
      • 요구사항의 수집과 분석, 추적 등을 편리하게 도와주는 S/W
      • JIRA, IBM DOORS, inteGREAT, Reqtify, Trello 등
    • 설계/모델링 도구
      • UML을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 S/W
      • DB Designer, PlantUML, ArgoUML
    • 구현 도구
      • 개발 언어를 통해 애플리케이션의 실제 구현을 지원하는 S/W
      • Eclipse, IntelliJ IDEA, Visual Studio, Netbeans, Node.js 등
    • 빌드 도구
      • 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 S/W
      • Ant, Graddle, Maven, Jenkins 등
    • 테스트 도구
      • 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 S/W
      • CppUnit, JUnit, HttpUnit, NUnit, SpringTest 등
    • 형상 관리 도구
      • 산출물들을 버전별로 관리하여 품질 향상을 지원하는 S/W
      • GIT, CVS, Subversion, Mercurial

- 개발 언어의 선정 기준

  • 적정성, 효율성, 이식성, 친밀성, 범용성


2. 보안 및 API – B

- 소프트웨어 개발 보안의 개요

  • 보안 취약점을 최소화하여 보안 위협으로부터 안전한 S/W를 개발하기 위한 일련의 보안 활동
  • S/W 개발 보안은 데이터의 기밀성, 무결성, 가용성을 유지하는 것을 목표로 함
  • S/W 개발 보안 가이드를 참고하여 점검해야 할 보안 항목들을 점검

- 소프트웨어 개발 보안 점검 항목

  • 세션 통제
    • 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
    • 보안 약점에는 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출 등
  • 입력 데이터 검증 및 표현
    • 입력 데이터에 대한 유효검 검증체계를 갖추고, 검증 실패 시 이를 처리할 수 있도록 코딩
    • 보안 약점에는 SQL 삽입, 경로 조작 및 자원 삽입, 크로스사이트 스크립팅(XSS) 등
  • 보안 기능
    • 인증, 접근제어, 기밀성, 암호화 등의 기능을 의미
    • 보안 약점에는 적절한 인증 없는 중요기능 허용, 부적절한 인가 등
  • 시간 및 상태
    • 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활히 동작되도록 코딩
    • 보안 약점에는 검사 시점과 사용 시점(TOCTOU) 경쟁조건, 종료되지 않는 반복문 또는 재귀함수 등
  • 에러처리
    • 오류들을 사전에 정의하여 에러로 인해 발생할 수 있는 문제들을 예방
    • 오류 메시지를 통한 정보 노출, 오류 상황 대응 부재 등
  • 코드 오류
    • 코딩 중 실수하기 쉬운 Type 변환, 자원의 반환 등을 고려하며 코딩
    • 보안 약점에는 널 포인터 역참조, 부적절한 자원 해제 등
  • 캡슐화
    • 데이터와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것
    • 보안 약점에는 잘못된 세션에 의한 데이터 정보 노출, 제거되지 않고 남은 디버그 코드 등
  • API 오용
    • API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 고려하여 코딩
    • 보안 약점에는 DNS lookup에 의존한 보안결정, 취약한 API 사용

- API(Application Programming Interface)

  • 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스
  • 프로그래밍 언어에서 특정한 작업을 수행하기 위해 사용
  • 운영체제의 파일 제어, 화상 처리, 문자 제어 등의 기능을 활용하기 위해 사용
  • 개발에 필요한 여러 도구를 제공. 원하는 기능을 쉽고 효율적으로 구현 가능
  • 공개된 API를 Open API라고 함


3. 배치 프로그램 – B

- 배치 프로그램의 개요

  • 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리
  • 정기 배치 : 정해진 기간에 정기적으로 수행
  • 이벤트성 배치 : 조건이 충족될 때만 수행
  • On-Demand 배치 : 사용자 요청 시 수행
  • 필수요소 : 대용량 데이터, 자동화, 견고성, 안정성/신뢰성, 성능

- 배치 스케줄러

  • 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
  • 특정 업무를 원하는 시간에 처리할 수 있도록 지원. 잡스케줄러라고도 함
  • 스프링 배치
    • 스프링이 가지고 있는 다양한 기능들을 모두 사용할 수 있음
    • DB나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공
    • 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등
    • 구성 요소와 역할
      • Job : 수행할 작업 정의
      • Job Launcher : 실행을 위한 인터페이스
      • Step : Job 처리를 위한 제어 정보
      • Job Repository : Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장
  • Quartz
    • 응용 프로그램들의 일괄 처리를 위한 다양한 기능 제공. 오픈 소스 라이브러리
    • 요소들을 분리하여 일괄 처리 작업에 유연성 제공
    • 구성 요소와 역할
      • Scheduler : 실행 환경 관리
      • Job : 수행할 작업 정의
      • JobDetail : Job의 상세 정보
      • Trigger : Job의 실행 스케줄 정의

태그:

카테고리:

업데이트:

댓글남기기