본문 바로가기

2021 정보처리기사/4과목: 프로그래밍 언어 활용

[정보처리기사 4과목] 서버 프로그램 구현 (1)

728x90
반응형

 

[정보처리기사 4과목 필기 예상 키워드] 목록으로 돌아가기
과목: 4. 프로그래밍 언어 활용
챕터: 1장 서버 프로그램 구현
키워드: 서버 프로그램 구현(1)
 #개발환경구축
#서버개발
#보안 및 API

 

 

개발환경구축

개요

개발 환경 구축은 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어를 구축하는 것을 의미한다.

 

✔ 응용 소프트웨어가 운영될 환경과 유사한 구조로 구축

✔ 개발 프로젝트 분석 단게의 산출물을 바탕으로 개발에 필요한 하드웨어와 소프트웨어 선정

✔ 하드웨어와 소프트웨어의 성능, 편의성, 라이선스 등 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축

 

 

 

 

 

하드웨어 환경

사용자와의 인터페이스 역할을 하는 클라이언트(Client), 그리고 클라이언트와 통신하여 서비스를 제공하는 서버로 구성

 

✔ 클라이언트 = PC, 스마트폰 등

✔ 웹 서버, 웹 어플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 나뉨

 

웹 서버(Web Server)   저용량의 정적파일(HTML, CSS, 이미지 등) 파일 등을 제공
웹 어플리케이션 서버(WAS)   동적 서비스(ex.상품 인기순 정렬)를 위한 데이커 가공, 웹서버-파일서버간 인터페이스역할
데이터베이스 서버(DB Server)   데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
파일 서버(File Server)   서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버

 

 

 

소프트웨어 환경

클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성

 

시스템 소프트웨어: OS, 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등

개발 소프트웨어: 요구사항 관리 도구, 설계/모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상관리 도구 등

 

 

요구사항 관리 도구   요구사항 수집 분석 추적을 편리하게 도와주는 소프트웨어
  > JIRA, IBM DOORS, InteGREATE, Reqtify, Trello 등
설계/모델링 도구   UML 지원, 개발 전 과정에서 설계/모델링을 돕는 소프트웨어
  > DB Designer, PlantUML, ArgoUML 등
구현 도구   개발 언어를 통해 어플리케이션의 실제 구현을 지원하는 소프트웨어
  > Eclipse, InteliJ IDEA, VSC, Netbeans, Node.js 등
빌드 도구   소스 빌드 및 배포, 라이브러리 관리를 지원
  > Ant, Gradle, Maven, Jenkins 등
테스트 도구   모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
  > CppUnit, Junit, HttpUnit, NUnit, SpringTest 등
형상 관리 도구   산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어
  > GIT, CVS< Subversion, Mercurial 등

 

 

 

 

 

 

 

 

서버 개발

개요

웹 어플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 어플리케이션 서버(WAS)에 탑재하는 것을 의미

 

✔ 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할 수행

✔ Java, JavaScript, Python, PHP, Ruby 등이 있다

✔ 각 프로그래밍 언어에는 해당 언어로 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 있다

 

 

*프레임워크(Framework):

'뼈대', '골조' 등을 의미하는 것으로 소프트웨어에서 특정 기능을 수행하기 위해 필요한 클래스/인터페이스를 모아둔 집합체를 의미

 

 

 

 

 

서버 개발 프레임워크

서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어를 의미

 

✔ 지원하는 프로그래밍 언어가 제한적이므로 선정할 수 있는 프레임워크도 제한적

✔ 대부분 모델-뷰-컨트롤러(MVC) 패턴을 기반으로 개발

 

Spring   JAVA 기반, 전자정부 표준 프레임워크 기반 기술
Node.js   JavaScript 기반, 비동기 입출력 처리와 이벤트 위주의 높은 처리 성능(실시간)
Django   Python 기반, 컴포넌트 재사용+플러그인화 강조로 신속한 개발 가능
Codeigniter   PHP 기반, 인터페이스 간편, 서버 자원 적게 사용
Ruby on Rails   Ruby 기반, 트스트 웹 서버 지원, DB작업 단순화+자동화 개발 코드 길이가 짧음, 신속한 개발

 

 

 

 

 

 

서버 프로그램 구현

응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발 후 모듈을 통합하는 방식으로 구현

 

✔ 모듈화를 통해 분리된 시스템의 각 기능들로, 서브 루틴, 서브 시스템, 소프트웨어 내의 프로그램, 작업 단위와 같은 의미로 사용

 

✔ 모듈 개발 시 기능적 독립성을 고려하여 다른 모듈과의 과도한 상호작용 배제함으로써 특정 모듈의 수정이 다른 모듈들에게 영향을 미치지 않아야 함

 

✔ 모듈의 독립성은 결합도(Coupling)과 응집도(Cohesion)에 의해 측정되며 독립성을 높이려면 모듈 결합도를 약하게 하고 응집도를 강하게 하며 모듈의 크기를 작게 만들어야 함

 

✔ 공통 모듈은 여러 프로그램에서 재사용(Reuse)할 수 있는 모듈을 의미, 자주 사용되는 계산식이나 매번 필요한 사용자 인증 같은 기능들이 공통 모듈로 구성될 수 있다. 

 

 

루틴   기능을 가진 명령들의 모임
메인루틴   프로그램 실행의 큰 줄기가 되는 것
서브루틴   메인 루틴에 의해 필요할 때마다 호출되는 루틴

 

 

 

 

 

 

보안 및 API

보안의 개요

소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동을 의미

 

✔ 보안은 데이터의 기밀성, 무결성, 가용성을 유지하는 것을 목표로 함

 

 

소프트웨어 개발 보안 점검 항목
세션 통제   세션-세션 연결로 인해 발생하는 정보 관리
입력데이터 검증 및 표현   검증 실패시 이를 처리할 수 있도록 코딩하는 것
보안기능   인증,접근제어,기밀성,암호화 등의 기능
시간 및 상태   동시수행/멀티프로세서 환경에서 시스템이 원활히 동작하도록 코딩하는 것
에러처리   발생가능 오류를 사전에 정의하여 문제 예방
코드 오류   형 변환, 자원 반환 등을 고려하여 코딩하는 것
캡슐화   속성과 함수를 하나의 객체로 묶어 코딩하는 것

 

 

 

 

 

API(Application Programming Interface)

응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해놓은 인터페이스

리모컨과 비교하면 이해가 쉽다. 리모컨으로 TV의 채널을 바꾸기 위해서는 채널 변경 버튼을 눌러야 하고, 소리를 조절하기 위해서는 볼륨 조절 버튼을 눌러야 하는 등 제조사가 미리 정해둔 방법을 이용해야 한다. 여기서 TV를 조작하기 위해 제조사가 미리 정해둔 방법이 바로 API에 해당된다.

 

 

✔ 프로그래밍 언어에서 특정 작업을 수행하기 위해 사용되거나 운영체제의 파일 제어, 화상 처리, 문자 제어 등의 기능을 활용

✔ 개발에 필요한 여러 도구를 제공하기 때문에 이를 이용하면 원하는 기능을 쉽고 효율적으로 구현할 수 있음

✔ Windows API, 단일 유닉스 규격(SUS), Java API, 웹 API 등이 있으며 누구나 무료로 사용할 수 있게 공개된 API를 Open API라고 한다.

 

 

 

 

 

 

 

 

 

 

 

 


 

정보처리기사 3과목 필기 (상시업뎃)

2021년 정보처리기사 공부를 위해 각 과목/챕터 별 Best 키워드를 정리해 놓은 글입니다. 시나공 문제집의 기출빈도와 중요도를 기준으로 정리된 키워드들이며, 순서와 관계 없이 

y-oni.tistory.com

 

참고: 시나공 정보처리기사 필기 (저자: 강윤석, 김용갑, 김우경, 김정준 | 출판사: 길벗), 유튜브 주간컴공TV

728x90