[정리] 정보처리기사 실기 - 7장 : 서버 프로그램 구현

2022. 10. 6. 09:22·📘 certificate/📘⭕️ 정보처리기사

7장 : 서버 프로그램 구현(4과목)


1. 하드웨어 환경

  • 클라이언트와 서버로 구성
  • 클라이언트
    • PC
    • 스마트폰
  • 클라이언트 환경 구성
    • 서버에서 제공하는 서비스를 활용하기 위해 사용자와의 인터페이스를 제공하는 하드웨어
    • PC, 웹 브라우저 화면, 모바일 앱 등

 

  • 서버
  • 서버 환경 구성
종류 설명
웹 서버 서비스의 속도 향상을 위해 정적 파일들을 제공하는 웹 서버 애플리케이션이 설치되는 하드웨어
(정적 파일 : HTML, CSS, 이미지 등)
웹 애플리케이션 서버 동적 웹 서비스를 제공하기 위해 WAS와 서비스에 관련된 애플리케이션이 설치되는 하드웨어
데이터베이스 서버 mySQL, Oracle 등 데이터베이스가 설치되는 하드웨어
파일 서버 파일을 저장하고 공유하기 위한 파일 저장 하드웨어

2. 웹 서버 (Web Server)

  • 클라이언트로부터 직접 요청을 받아 처리하는 서버
  • 저용량의 정적 파일을 제공
  • 브라우저로 요청과 응답 을 처리하는 프로토콜인 HTTP/HTTPS를 지원
  • HTML, CSS 등 정적 파일을 저장하고 관리
  • 사용자가 적합한 권한을 갖고 접속하는지 확인하는 인증 기능을 지원

2-1. 웹 애플리케이션 서버 (Web Application Server)

  • 사용자에게 동적 서비스를 제공
  • 웹 서버로부터 요청
  • 웹 서버와 데이터베이스 서버 사이에서 인터페이스 역할

2-2. 서버의 개발

  • 서버의 개발이란, 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여, WAS에 탑재하는 것
  • 서버 개발을 위해 다양한 프레임워크들이 존재하고, 프레임워크들은 언어에 종속적

3. 소프트웨어 환경

  • 시스템 소프트웨어와 개발 소프트웨어로 구성
  • 시스템 소프트웨어
종류 특성 예시
운영체제 하드웨어 플랫폼과 공통 시스템 서비스 제공
(상세 소프트웨어 명세는 벤더(Vendor)에서 제공)
윈도우, 리눅스 등
JVM
(Java Virtual Machine)
Java 관련 응용 프로그램을 기동하기 위한 주체  
Web Server 정적 웹 서비스를 수행하는 미들웨어
정적 파일을 제공
Apache, Nginx, IIS, GWS 등
WAS 웹 애플리케이션을 수행하는 미들웨어 Tomcat, Undertow 등
DBMS 데이터베이스 소프트웨어 Oracle, mySQL 등

 

  • 개발 소프트웨어
종류 특성 예시
구현 도구 가장 많이 사용하는 도구
코드의 작성, 편집, 디버깅 등 수행
이클립스, 비쥬얼 스튜디오,
인텔리제이 등
테스트 도구 소프트웨어 품질을 높이기 위해 사용
코드 테스트, 테스트 결과 리포팅 및 분석 등 수행
xUnit, Spring Test 등
형상관리 도구 소스 코드, 산출물 등의 버전을 관리하기 위해 사용 CVS, Subversion, Git 등
요구사항 관리도구 고객의 요구사항을 수집, 분석, 추적하기 쉽게 지원 JFeature, OSRMT 등
설계/모델링 도구 논리적으로 기능을 결합하기 위해 UML 지원,
DB 지원 등 설계 및 모델링을 지원하는 도구
ArgoUML, DB Desinger 등
빌드 자동화 도구 소스코드 파일들을 컴파일 후 여러 모듈을 묶어 실행 파일로 만드는 과정
빌드를 포함하여 테스트 및 배포를 자동화하는 도구
Ant, Make, Maven, Gradle,
Jenkins 등

 


4. 프레임워크(Framework) 재확모역

  • 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체
  • 재사용이 가능하도록 소프트웨어 구성에 필요한 기본 뼈대 제공
  • 원하는 기능 구현에 집중하여 빠르게 개발할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 것
  • 서버 개발 프레임워크는 대부분 '모델-뷰-컨트롤러 패턴'을 기반
  • 예 : Java 개발에서의 Spring, Python 개발에서의 Django 등
  • 특성
    • 재사용성: 재사용 가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증이 가능함
    • 확장성: 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 필요함
    • 모듈화: 캡술화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어 품질을 향상시킴
    • 제어의 역흐름: 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킴

5. 개발 언어의 선정 기준

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

6. 소프트웨어 개발 보안

  • 목표
    • 기밀성: 인가된 사용자만 데이터에 접근할 수 있도록
    • 무결성: 인가된 사용자만 데이터를 수정할 수 있도록
    • 가용성: 인가된 사용자가 원할 때에는 언제라도 데이터를 사용할 수 있도록
  • 점검 항목
    • 세션 통제
    • 입력 데이터 검증 및 표현
    • 보안 기능
    • 시간 및 상태
    • 에러 처리
    • 코드 오류
    • 캡슐화
    • API 오용

7. API (Application Programming Interface)

  • 라이브러리를 사용할 수 있도록 미리 정의해 놓은 인터페이스

 8. 배치 프로그램 (Batch Program, 일괄 처리 프로그램)

  • 사용자와의 상호 작용 없이, 여러 작업들을 미리 정해진 순서에 따라 일괄적으로 처리하는 것
  • 대용량의 데이터가 주기적으로 교환되는 업무에 주로 사용
  • 주로 야간이나 새벽에 수행되도록 설정
  • 수행 주기에 따라, 
    • 정기 배치 : 정해진 기간에 정기적으로 수행
    • 이벤트성 배치 : 조건이 충족될 때만 수행
    • On-Demand 배치 : 요청 시 수행
  • 필수 요소
    • 대용량 데이터: 대용량 데이터 처리가 가능해야 함
    • 자동화: 심각한 오류를 제외하고 사용자의 개입 없이 동작해야 함
    • 견고성: 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 없어야 함
    • 안정성, 신뢰성: 문제 발생 시 추적이 가능해야 함
    • 성능: 주어진 시간 내에 처리 완료해야 하고 다른 애플리케이션 방해하면 안 됨

9. 배치 스케줄러 (Batch Scheduler)

  • 일괄 처리 작업이 설정된 주기에 맞춰, 자동으로 수행되도록 지원해주는 도구
  • 종류 : 스프링 배치(Spring Batch), Quartz

10. 형상관리 (SCM, Software Configuration Management)

  • 소프트웨어의 개발 과정에서 발생하는 산출물을 관리하는 활동
  • 변경사항의 파악, 제어, 담당자에게 통보 등 수행

10-1. 형상관리의 특징

  • 프로젝트 생명주기의 전 단계에서 수행하는 활동
  • 유지 보수 단계에서도 수행
  • 개발 비용을 줄이고, 문제점 요소를 최소화하는 것을 목적으로 함

10-2. 형상관리의 절차

과정 설명
형상 식별 형상관리의 대상 식별, 이름과 관리 번호 부여, 계층 구조로 구분하는 등의 베이스라인을 설정
형상 통제 변경 요구를 검토, 승인하여 적절히 통제함
형상 감사 베이스라인의 무결성을 평가하기 위해 확인, 검증 과정을 통해 공식적으로 승인하는 작업
형상 기록 제대로 잘 반영되고 있는지 보고하는 절차, 보고서를 작성

11. 공통 모듈

  • 정보 시스템의 구축 시, 자주 사용하는 기능들
  • 재사용이 가능하게 패키지로 제공하는 독립된 모듈

12. 재사용 (Reuse)

  • 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업
재사용 종류 설명
함수와 객체 재사용 클래스 또는 함수 단위로 구현한 소스코드를 재사용
컴포넌트 재사용 컴포넌트 단위로 재사용
컴포넌트의 인터페이스를 통해 통신함
애플리케이션 재사용 공통된 기능을 제공하도록 구현된 애플리케이션의 재사용

13. CBD (Component Based Development)

  • 재사용 가능한 컴포넌트 개발 또는 상용 컴포넌트를 조합하여, 응용 시스템을 구축하는 방법론

14. 소프트웨어 모듈 응집도 (Cohesion)

  • 모듈 내부 처리 요소 간 기능적 연관도를 나타내는 척도
  • 응집도가 높을수록 필요한 요소들로 구성되어 있음
  • 응집도가 낮을수록 관련이 적은 요소들로 구성되어 있음
유형 설명 정도
기능적 응집도 하나의 모듈에서 하나의 기능만 수행
구조도 최하위 모듈에서 많이 발견됨
높음
순차적 응집도 모듈의 결과 값을 다른 모듈의 입력 값으로 사용
예 : 행렬 입력 후, 그 행렬의 역행렬을 구해서 출력
 
통신적(교환적) 응집도 동일한 입력과 출력을 사용, 다른 기능을 수행
예 : 같은 입력 값을 이용하여 A를 계산한 후, B를 계산
절차적 응집도 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행
예 : Restart 루틴의 경우, 총계를 출력한 후 화면을 지우고 메뉴를 표시함
시간적 응집도 같은 시간대에 처리해야 하는 활동들을 한 모듈에서 수행
예 : 초기지 설정, 종료 처리 등
논리적 응집도 유사한 성격 또는 특정 형태로 분류되는 처리 요소들을 한 모듈에서 수행
예 : 오류 처리 등
우연적 응집도 관련 없는 작업을 한 모듈에 모은 경우
모듈화의 장점이 없고, 유지 보수가 어려움
낮음

15. 소프트웨어 모듈 결합도 (Coupling)

  • 모듈 간 연관도를 나타내는 척도
  • 결합도가 낮을수록 관련이 적어지고, 모듈의 독립성이 높아져 모듈 간 영향이 적어짐
유형 설명 정도
내용 결합도 모듈 내부의 변수 또는 제어 정보를 다른 모듈에서 사용 높음
공통 결합도 모듈 밖에서 선언되는 전역 변수를 사용  
외부 결합도 다수의 모듈이 모듈 밖의 데이터, 프로토콜, 인터페이스를 사용
제어 결합도 제어되는 값 뿐만 아니라 제어용 신호를 주고받음
스탬프 결합도 배열, 오프젝트, 스트럭처 등을 교환함 (변수 말고 다른 거(ex:구조) 교환하는 꼴)
자료 결합도 모듈들이 변수를 교환하여 상호 작용이 일어남 낮음

16. 테스트 케이스

  • 요구사항을 준수하는지 검증하기 위하여 테스트 조건을 명세한 것
  • 종류
    1. 명세 기반 기법 (BlackBox Test)
    2. 구조 기반 기법 (WhiteBox Test)
    3. 경험 기반 기법

17. DAO/DTO/VO

  • 영속 계층(Persistence Layer)에서 사용되는 특정 패턴을 통해 구현되는 Java Bean
종류 설명
DAO
(Data Access Object)
DB를 사용해 데이터를 조회, 조작하는 오브젝트
DB의 세부 내용을 노출하지 않고 특정 데이터 조작 기능을 제공함
DTO
(Data Transfer Object)
프로세스 사이에서 데이터를 전송하는 객체
많은 프로세스 간 데이터 전송 시 데이터를 모아 한 번만 호출함
가변 클래스임
(DTO는 데이터의 저장 및 회수만 가능하다는 점에서 DAO와 다르다.)
VO
(Value Object)
Entity를 의미하는 작은 객체
DTO와 비슷하지만, read only 속성을 가짐
불변 클래스임

18. 소프트웨어 테스트

  • 구현된 애플리케이션이나 시스템을 사용자의 요구사항이 만족되었는지 확인하기 위하여 기능 및 비기능 요소의 결함을 찾아내는 활동
  • 테스트 원칙
    1. 개발자가 자신이 개발한 프로그램 및 소스코드를 테스팅하지 않음
    2. 낚시의 법칙, 파레토의 법칙 등의 효율적인 결함 제거 법칙을 사용
      1. 낚시의 법칙: 낚시를 즐기는 사람들은 경험적으로 어느 자리에서 물고기가 많이 잡히는지 알고 있듯 소프트웨어의 결함도 특정 라이브러리, 모듈 등에서 많이 일어난다는 법칙
      2. 파레토 법칙: 전체 테스트 중 20%의 부분(코드)에서 80%의 영향력(오류)가 생김
    3. 완벽한 소프트웨어 테스팅은 불가능
    4. 테스트는 계획 단계부터 
    5. 살충제 패러독스: 동일한 테스트 케이스로 반복하여 테스트를 진행하다 보면 더 이상 결함을 찾을 수 없으므로 테스트 케이스에도 꾸준히 개선과 점검이이 필요함
    6. 오류-부재의 궤변: 오류를 발견하고 잘 제거한 코드라 하더라도 사용자의 요구사항을 만족하지 못하면 품질이 좋다고 할 수 없음

19. 디버그(Debug)와 디버거(Debugger)

  • 디버그 (Debug) : 컴퓨터 프로그램의 논리적인 오류(Bug)를 찾아내는 과정
  • 디버거 (Debugger) : 버그를 찾고 수정하기 위한 필수적인 도구
저작자표시 비영리 변경금지 (새창열림)
'📘 certificate/📘⭕️ 정보처리기사' 카테고리의 다른 글
  • [정리] 정보처리기사 실기 - 9장 : 소프트웨어 개발 보안 구축
  • [정리] 정보처리기사 실기 - 8장 : 애플리케이션 테스트 관리
  • [정리] 정보처리기사 실기 - 6장 : 프로그래밍 언어 활용
  • [정리] 정보처리기사 실기 - 5장 : 프로그래밍 언어 활용 ★★★
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[정리] 정보처리기사 실기 - 7장 : 서버 프로그램 구현
상단으로

티스토리툴바