개발 환경 구축
개발 환경 구축: 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것.
하드웨어 환경: 클라이언트, 서버로 구성
- 클라이언트: PC, 스마트폰
- 서버
- 웹 서버(Web Server): 클라이언트로 부터 직접 요청을 받아 처리. 저용량의 정적 파일들을 제공
- 웹 어플리케이션 서버(WAS): 사용자에게 동적 서비스를 제공하기 위해 웹 서버로 부터 요청을 받아 작업을 수행. 웹 서버와 데이터베이스 서버 또는 파일 서버 사이에서 인터페이스 역할 수행
- 데이터베이스 서버(DB Server): 데이터베이스와 DBMS를 관리
- 파일 서버(File Server): 파일들을 저장
웹 서버의 기능
- HTTP/HTTPS 지원: 브라우저로부터 요청을 받아 응답
- 통신 기록: 처리한 요청들을 로그 파일로 기록
- 정적 파일 관리: HTML, CSS 등의 정적 파일들을 저장하고 관리
- 대역폭 제한: 네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한
- 가상 호스팅: 하나의 서버로 여러 개의 도메인 이름을 연결
- 인증: 합법적인 사용자인지를 확인
소프트웨어 환경: 시스템 소프트웨어와 개발 소프트웨어로 구성
- 시스템 소프트웨어: 클라이언트와 서버 운영. 운영체제, DBMS...
- 개발 소프트웨어: 요구사항 관리 도구, 설계-모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상 관리 도구...
<개발 언어의 선정 기준>
적정성(개발하려는 소프트웨어의 목적에 적합해야)
효율성(코드의 작성 및 구현이 효율적이여야)
이식성(다양한 시스템 및 환경에 적용이 가능해야)
친밀성(개발 언어에 대한 개발자들의 이해도와 활용도가 높아야)
범용성(다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야)
모듈
모듈: 모듈화를 통해 분리된 시스템의 각 기능. 단독으로 컴파일 가능.
jooona.tistory.com/111?category=845669
팬인: 어떤 모듈을 제어(호출)하는 모듈의 수
팬아웃: 어떤 모듈에 의해 제어(호출)하는 모듈의 수
공통 모듈
공통 모듈: 여러 프로그램에서 공통적으로 사용할 수 있는 모듈
공통 모듈 구현 시 명세 기법
- 정확성: 시스템 구현 시 해당 기능이 필요하다는 것을 정확히 작성
- 명확성: 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성
- 완전성: 시스템 구현을 위해 필요한 모든 것을 기술
- 일관성: 공통 기능 간 상호 충돌이 발생하지 않도록 작성
- 추적성: 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성
재사용: 비용과 개발 시간을 절약하기 위해 이미 개발된 기능들을 파악하고 재구성하여 새로운 시스템 또는 기능 개발에 사용하기 적합하도록 최적화
DBMS 접속
DBMS 접속: 사용자가 데이터를 사용하기 위해 응용 시스템을 이용하여 DBMS에 접근하는 것을 의미.
- JDBC(Java DataBase Connectivity): java 언어로 다양한 종류의 데이터베이스에 접속하고 SQL문을 수행할 때 사용되는 표준 API
- ODBC(Open DataBase Connectivity): 데이터베이스에 접근하기 위한 표준 개방형 API
- MyBatis: JDBC 코드를 단순화하여 사용할 수 있는 SQL Mapping 기반 오픈 소스 접속 프레임워크
동적 SQL: 다양한 조건에 따라 SQL 구문을 동적으로 변경하여 처리할 수 있는 SQL 처리 방식
정적 SQL | 동적 SQL | |
SQL 구성 | 커서(Cursor)를 통한 정적 처리 | 문자열 변수에 담아 동적 처리 |
개발 패턴 | 커서의 범위 안에서 반복문을 활용하여 SQL 작성 | NVL 함수 없이 로직을 통해 SQL 작성 |
실행 속도 | 빠름 | 느림 |
사전 검사 | 가능 | 불가능 |
<웹 응용 시스템의 구조>
웹 응용 프로그램 <--> 웹 서버 <--> WAS <--> DBMS
- 사용자는 웹 응용 프로그램을 이용해 웹 서버에 접속하여 데이터를 주고 받음
- 웹 서버는 사용자가 대용량의 데이터를 요청하면 WAS에 해당 요청을 전달
- WAS는 수신한 요청을 트랜잭션 언어로 변환하여 DBMS에 전달
서버 개발
서버 개발: 서버 프로그램을 제작하여 WAS에 탑재. Java, JavaScript, Python, PHP, Ruby등이 사용.
서버 개발 프레임워크: 서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어.
대부분 모델-뷰-컨트롤러 패턴을 기반
- Spring: Java 기반. 전자정부 표준 프레임워크의 기반 기술.
- Node.js: Java Script 기반.
- Django: Python 기반.
- Codeigniter: PHP 기반.
- Ruby on Rails: Ruby 기반.
프레임워크의 특성
- 모듈화: 캡슐화를 통해 모듈화를 강화.
- 재사용성: 재사용 가능한 모듈들을 제공.
- 확장성: 다형성을 통한 인터페이스 확장이 가능
- 제어의 역흐름: 개발자가 관리하고 통제해야 하는 객체들의 제어 권한을 프레임워크에 넘겨서 생산성 향상
서버 개발 과정
DTO/VO, SQL, DAO, Service, Controller를 구현하는 과정을 통해 이루어짐.
DTO(Data Transfer Object)/VO(Value Object) 구현: 데이터 교환을 위해 사용할 객체를 만드는 과정. 알고리즘 등의 로직은 구현하지 x. 변수와 데이터를 저장하고 반환하는 메소드(get, set)만 구현
SQL 구현: 데이터의 삽입, 변경, 삭제 등의 작업을 수행할 SQL을 생성
DAO(Data Access Object) 구현: 데이터베이스에 접근하고 SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현
Service 구현: 사용자의 요청에 응답하기 위한 로직을 구현
Controller 구현: 사용자의 요청에 적절한 서비스를 호출하여 그 결과를 사용자에게 반환하는 코드를 구현
배치 프로그램
배치 프로그램: 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리.
- 정기 배치: 일, 주, 월과 같이 정해진 기간에 정기적으로 수행
- 이벤트성 배치: 특정 조건을 설정해두고 조건이 충족될 때만 수행
- On-Demand 배치: 사용자 요청 시 수행
--> 대용량 데이터, 자동화, 견고성, 안정성/신뢰성, 성능
배치 스케쥴러: 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
- 스프링 배치
- Quartz
- Cron
* 이 글은 시나공 정보처리기사 실기 책을 토대로 작성되었습니다.
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 7장 - 애플리케이션 테스트 관리 (0) | 2021.04.14 |
---|---|
[정처기 실기] 6장 - 화면 설계 (0) | 2021.04.14 |
[정처기 실기] 4장 - 통합 구현 (0) | 2021.04.14 |
[정처기 실기] 3장 - 데이터 입,출력 구현 (0) | 2021.04.14 |
[정처기 실기] 2장 - 요구사항 확인 (1) | 2021.04.14 |